drm: save edid color characteristics in wlr_output

This commit is contained in:
Félix Poisot 2025-10-28 14:58:37 +00:00
parent 47d0a90274
commit 8f7d763ad1
2 changed files with 13 additions and 0 deletions

View file

@ -83,6 +83,17 @@ void parse_edid(struct wlr_drm_connector *conn, size_t len, const uint8_t *data)
output->model = di_info_get_model(info);
output->serial = di_info_get_serial(info);
const struct di_color_primaries *color_characteristics = di_info_get_default_color_primaries(info);
if (color_characteristics->has_primaries) {
output->default_primaries_value = (struct wlr_color_primaries) {
.red = { .x = color_characteristics->primary[0].x, .y = color_characteristics->primary[0].y },
.green = { .x = color_characteristics->primary[1].x, .y = color_characteristics->primary[1].y },
.blue = { .x = color_characteristics->primary[2].x, .y = color_characteristics->primary[2].y },
.white = { .x = color_characteristics->default_white.x, .y = color_characteristics->default_white.y },
};
output->default_primaries = &output->default_primaries_value;
}
const struct di_supported_signal_colorimetry *colorimetry = di_info_get_supported_signal_colorimetry(info);
bool has_bt2020 = colorimetry->bt2020_cycc || colorimetry->bt2020_ycc || colorimetry->bt2020_rgb;
if (conn->props.colorspace != 0 && has_bt2020) {