[PATCH 15/18] drm/i915: Initialize Gen8 pipe gamma correction

Shashank Sharma shashank.sharma at intel.com
Thu Aug 6 09:38:24 PDT 2015


From: Kausal Malladi <kausalmalladi at gmail.com>

This patch initializes gamma color correction proeprty
for Gen8 and higher platforms.

It does the following :
1. Load pipe Gamma color correction capabilities for BDW/SKL/BXT
2. Attach the color properties to CRTC

Signed-off-by: Shashank Sharma <shashank.sharma at intel.com>
Signed-off-by: Kausal Malladi <kausalmalladi at gmail.com>
---
 drivers/gpu/drm/i915/intel_color_manager.c | 30 +++++++++++++++++++++++++++++-
 drivers/gpu/drm/i915/intel_color_manager.h |  3 +++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_color_manager.c b/drivers/gpu/drm/i915/intel_color_manager.c
index 5fa575b..bc77ab5 100644
--- a/drivers/gpu/drm/i915/intel_color_manager.c
+++ b/drivers/gpu/drm/i915/intel_color_manager.c
@@ -475,11 +475,39 @@ int get_chv_pipe_gamma_capabilities(struct drm_device *dev,
 	return 0;
 }
 
+int get_gen9_pipe_gamma_capabilities(struct drm_device *dev,
+		struct drm_palette_caps *palette_caps, struct drm_crtc *crtc)
+{
+	struct drm_property_blob *blob = NULL;
+
+	/*
+	 * This function exposes best capability for DeGamma and Gamma
+	 * For BXT, the DeGamma LUT has 512 entries
+	 * and the best Gamma capability has 512 entries
+	 */
+	palette_caps->version = GEN9_PALETTE_STRUCT_VERSION;
+	palette_caps->num_samples_before_ctm =
+		GEN9_SPLITGAMMA_MAX_VALS;
+	palette_caps->num_samples_after_ctm =
+		GEN9_SPLITGAMMA_MAX_VALS;
+
+	blob = drm_property_create_blob(dev, sizeof(struct drm_palette_caps),
+			(const void *) palette_caps);
+
+	if (blob)
+		return blob->base.id;
+
+	return 0;
+}
+
 int get_pipe_gamma_capabilities(struct drm_device *dev,
 		struct drm_palette_caps *palette_caps, struct drm_crtc *crtc)
 {
 	if (IS_CHERRYVIEW(dev))
 		return get_chv_pipe_gamma_capabilities(dev, palette_caps, crtc);
+	if (IS_BROADWELL(dev) || IS_GEN9(dev))
+		return get_gen9_pipe_gamma_capabilities(dev,
+				palette_caps, crtc);
 	return -EINVAL;
 }
 
@@ -491,7 +519,7 @@ void intel_attach_color_properties_to_crtc(struct drm_device *dev,
 	struct drm_crtc *crtc;
 	int capabilities_blob_id;
 
-	if (IS_CHERRYVIEW(dev)) {
+	if (IS_CHERRYVIEW(dev) || IS_BROADWELL(dev) || IS_GEN9(dev)) {
 		crtc = obj_to_crtc(mode_obj);
 
 		palette_caps = kzalloc(sizeof(struct drm_palette_caps),
diff --git a/drivers/gpu/drm/i915/intel_color_manager.h b/drivers/gpu/drm/i915/intel_color_manager.h
index b2ee847..78de1a2 100644
--- a/drivers/gpu/drm/i915/intel_color_manager.h
+++ b/drivers/gpu/drm/i915/intel_color_manager.h
@@ -35,6 +35,9 @@
 #define CHV_DEGAMMA_MAX_VALS			65
 #define CHV_10BIT_GAMMA_MAX_VALS		257
 
+#define GEN9_PALETTE_STRUCT_VERSION		1
+#define GEN9_SPLITGAMMA_MAX_VALS		512
+
 /* Gamma correction */
 #define CHV_GAMMA_DATA_STRUCT_VERSION		1
 #define CHV_10BIT_GAMMA_MAX_VALS		257
-- 
1.9.1



More information about the dri-devel mailing list