Multi Segment Gamma Mode is added in Gen11+ platforms. Added a property interface to enable that. Signed-off-by: Uma Shankar <uma.shankar@xxxxxxxxx> --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_color.c | 23 +++++++++++++++++++++++ include/uapi/drm/i915_drm.h | 14 ++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 02231ae..f20d418 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1736,6 +1736,7 @@ struct drm_i915_private { struct drm_property *force_audio_property; struct drm_property *gamma_mode_property; + struct drm_property *multi_segment_gamma_mode_property; /* hda/i915 audio component */ struct i915_audio_component *audio_component; diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c index 9d43d19..399d63d 100644 --- a/drivers/gpu/drm/i915/intel_color.c +++ b/drivers/gpu/drm/i915/intel_color.c @@ -149,6 +149,26 @@ static bool crtc_state_is_legacy_gamma(const struct intel_crtc_state *crtc_state drm_object_attach_property(&crtc->base.base, prop, 0); } +void +intel_attach_multi_segment_gamma_mode_property(struct intel_crtc *crtc) +{ + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = to_i915(dev); + struct drm_property *prop; + + prop = dev_priv->multi_segment_gamma_mode_property; + if (!prop) { + prop = drm_property_create(dev, DRM_MODE_PROP_BLOB, + "Multi-segment Gamma", 0); + if (!prop) + return; + + dev_priv->multi_segment_gamma_mode_property = prop; + } + + drm_object_attach_property(&crtc->base.base, prop, 0); +} + /* * When using limited range, multiply the matrix given by userspace by * the matrix that we would use for the limited range. @@ -953,4 +973,7 @@ void intel_color_init(struct intel_crtc *crtc) INTEL_INFO(dev_priv)->color.gamma_lut_size); intel_attach_gamma_mode_property(crtc); + + if (INTEL_GEN(dev_priv) >= 11) + intel_attach_multi_segment_gamma_mode_property(crtc); } diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h index aa2d4c7..8f1974e 100644 --- a/include/uapi/drm/i915_drm.h +++ b/include/uapi/drm/i915_drm.h @@ -1842,6 +1842,20 @@ struct drm_i915_query_topology_info { __u8 data[]; }; +/* + * Structure for muti segmented gamma lut + */ +struct multi_segment_gamma_lut { + /* Number of Lut Segments */ + __u8 segment_cnt; + /* Precison of LUT entries in bits */ + __u8 precision_bits; + /* Pointer having number of LUT elements in each segment */ + __u32 *segment_lut_cnt_ptr; + /* Pointer to store exact lut values for each segment */ + __u32 *segment_lut_ptr; +}; + #if defined(__cplusplus) } #endif -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx