output: add pre-blending color transform

This commit is contained in:
Simon Ser 2026-06-04 16:00:12 +02:00
parent 03712270ef
commit 97b945beee
3 changed files with 42 additions and 0 deletions

View file

@ -78,6 +78,7 @@ enum wlr_output_state_field {
WLR_OUTPUT_STATE_POST_COLOR_TRANSFORM = 1 << 12,
WLR_OUTPUT_STATE_IMAGE_DESCRIPTION = 1 << 13,
WLR_OUTPUT_STATE_COLOR_REPRESENTATION = 1 << 14,
WLR_OUTPUT_STATE_PRE_COLOR_TRANSFORM = 1 << 15,
};
enum wlr_output_state_mode_type {
@ -162,6 +163,8 @@ struct wlr_output_state {
struct wlr_drm_syncobj_timeline *signal_timeline;
uint64_t signal_point;
// Pre-blending color transform
struct wlr_color_transform *pre_color_transform;
// Post-blending color transform
struct wlr_color_transform *post_color_transform;
@ -277,6 +280,7 @@ struct wlr_output {
struct {
struct wl_listener display_destroy;
struct wlr_output_image_description image_description_value;
struct wlr_color_transform *pre_color_transform;
struct wlr_color_transform *post_color_transform;
struct wlr_color_primaries default_primaries_value;
} WLR_PRIVATE;
@ -619,6 +623,13 @@ void wlr_output_state_set_wait_timeline(struct wlr_output_state *state,
*/
void wlr_output_state_set_signal_timeline(struct wlr_output_state *state,
struct wlr_drm_syncobj_timeline *timeline, uint64_t dst_point);
/**
* Set the pre-blending color transform for an output.
*
* The color transform is applied before blending output layers.
*/
void wlr_output_state_set_pre_color_transform(struct wlr_output_state *state,
struct wlr_color_transform *tr);
/**
* Set the post-blending color transform for an output.
*