mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-06 13:29:45 -05:00
drm: save edid color characteristics in wlr_output
This commit is contained in:
parent
47d0a90274
commit
8f7d763ad1
2 changed files with 13 additions and 0 deletions
|
|
@ -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->model = di_info_get_model(info);
|
||||||
output->serial = di_info_get_serial(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);
|
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;
|
bool has_bt2020 = colorimetry->bt2020_cycc || colorimetry->bt2020_ycc || colorimetry->bt2020_rgb;
|
||||||
if (conn->props.colorspace != 0 && has_bt2020) {
|
if (conn->props.colorspace != 0 && has_bt2020) {
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ struct wlr_output {
|
||||||
char *description; // may be NULL
|
char *description; // may be NULL
|
||||||
char *make, *model, *serial; // may be NULL
|
char *make, *model, *serial; // may be NULL
|
||||||
int32_t phys_width, phys_height; // mm
|
int32_t phys_width, phys_height; // mm
|
||||||
|
const struct wlr_color_primaries *default_primaries; // may be NULL
|
||||||
|
|
||||||
// Note: some backends may have zero modes
|
// Note: some backends may have zero modes
|
||||||
struct wl_list modes; // wlr_output_mode.link
|
struct wl_list modes; // wlr_output_mode.link
|
||||||
|
|
@ -268,6 +269,7 @@ struct wlr_output {
|
||||||
struct wl_listener display_destroy;
|
struct wl_listener display_destroy;
|
||||||
struct wlr_output_image_description image_description_value;
|
struct wlr_output_image_description image_description_value;
|
||||||
struct wlr_color_transform *color_transform;
|
struct wlr_color_transform *color_transform;
|
||||||
|
struct wlr_color_primaries default_primaries_value;
|
||||||
} WLR_PRIVATE;
|
} WLR_PRIVATE;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue