mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-02-06 04:06:11 -05:00
Merge branch 'color-pipeline' into 'master'
Draft: Apply output color transform in KMS See merge request wlroots/wlroots!5083
This commit is contained in:
commit
7b02490f00
12 changed files with 290 additions and 20 deletions
25
include/backend/drm/color.h
Normal file
25
include/backend/drm/color.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#ifndef BACKEND_DRN_COLOR_H
|
||||
#define BACKEND_DRN_COLOR_H
|
||||
|
||||
#include <wlr/util/addon.h>
|
||||
|
||||
struct wlr_drm_backend;
|
||||
struct wlr_drm_crtc;
|
||||
struct wlr_color_transform;
|
||||
|
||||
struct wlr_drm_crtc_color_transform {
|
||||
struct wlr_color_transform *base;
|
||||
struct wlr_addon addon; // wlr_color_transform.addons
|
||||
bool failed;
|
||||
struct wlr_color_transform_lut_3x1d *lut_3x1d;
|
||||
float matrix[9];
|
||||
bool has_matrix;
|
||||
};
|
||||
|
||||
struct wlr_drm_crtc_color_transform *drm_crtc_color_transform_import(
|
||||
struct wlr_drm_backend *backend, struct wlr_drm_crtc *crtc,
|
||||
struct wlr_color_transform *base);
|
||||
|
||||
void drm_crtc_color_transform_unref(struct wlr_drm_crtc_color_transform *tr);
|
||||
|
||||
#endif
|
||||
|
|
@ -15,6 +15,8 @@
|
|||
#include "backend/drm/properties.h"
|
||||
#include "backend/drm/renderer.h"
|
||||
|
||||
struct wlr_drm_crtc_color_transform;
|
||||
|
||||
struct wlr_drm_viewport {
|
||||
struct wlr_fbox src_box;
|
||||
struct wlr_box dst_box;
|
||||
|
|
@ -74,6 +76,7 @@ struct wlr_drm_crtc {
|
|||
bool own_mode_id;
|
||||
uint32_t mode_id;
|
||||
uint32_t gamma_lut;
|
||||
uint32_t ctm;
|
||||
|
||||
// Legacy only
|
||||
int legacy_gamma_size;
|
||||
|
|
@ -152,9 +155,12 @@ struct wlr_drm_connector_state {
|
|||
struct wlr_drm_syncobj_timeline *wait_timeline;
|
||||
uint64_t wait_point;
|
||||
|
||||
struct wlr_drm_crtc_color_transform *crtc_color_transform;
|
||||
|
||||
// used by atomic
|
||||
uint32_t mode_id;
|
||||
uint32_t gamma_lut;
|
||||
uint32_t ctm;
|
||||
uint32_t fb_damage_clips;
|
||||
int primary_in_fence_fd, out_fence_fd;
|
||||
bool vrr_enabled;
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ struct wlr_drm_crtc_props {
|
|||
uint32_t vrr_enabled;
|
||||
uint32_t gamma_lut;
|
||||
uint32_t gamma_lut_size;
|
||||
uint32_t ctm;
|
||||
|
||||
// atomic-modesetting only
|
||||
|
||||
|
|
|
|||
|
|
@ -108,4 +108,9 @@ void wlr_color_primaries_to_xyz(const struct wlr_color_primaries *primaries, flo
|
|||
void wlr_color_transfer_function_get_default_luminance(enum wlr_color_transfer_function tf,
|
||||
struct wlr_color_luminances *lum);
|
||||
|
||||
/**
|
||||
* Apply a color transfer function's EOTF⁻¹ operation.
|
||||
*/
|
||||
float wlr_color_transfer_function_eval_inverse_eotf(enum wlr_color_transfer_function tf, float x);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue