All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] Add Plane Color Properties
@ 2017-11-07 12:06 Uma Shankar
  2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
                   ` (10 more replies)
  0 siblings, 11 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: ville.syrjala, maarten.lankhorst

This patch series adds properties for plane color features. It adds
properties for degamma used to linearize data, CSC used for gamut
conversion, and gamma used to again non-linearize data as per panel
supported color space. These can be utilize by user space to convert
planes from one format to another, one color space to another etc.

Usersapce can take smart blending decisions and utilize these hardware
supported plane color features to get accurate color profile. The same
can help in consistent color quality from source to panel taking
advantage of advanced color features in hardware.

These patches just add the property interfaces and enable helper functions.

This series adds Intel Gen9 specific plane gamma feature. We can build up
and add other platform/hardware specific implementation on top of this series

Note: This is just to get a design feedback whether these interfaces look ok. 
Based on community feedback on interfaces, we will implement IGT tests to validate
plane color features. This is un-tested currently. 

v2: Dropped legacy gamma table for plane as suggested by Maarten. Added Gen9/BDW plane
    gamma feature and rebase on tot.

Uma Shankar (7):
  drm: Add Plane Degamma properties
  drm: Add Plane CTM property
  drm: Add Plane Gamma properties
  drm: Define helper function for plane color enabling
  drm/i915: Enable plane color features
  drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms
  drm/i915: Load plane color luts from atomic flip

 drivers/gpu/drm/drm_atomic.c              |   30 +++++++++++
 drivers/gpu/drm/drm_atomic_helper.c       |   12 +++++
 drivers/gpu/drm/drm_mode_config.c         |   35 +++++++++++++
 drivers/gpu/drm/drm_plane.c               |   45 +++++++++++++++++
 drivers/gpu/drm/i915/i915_drv.h           |   10 ++++
 drivers/gpu/drm/i915/i915_pci.c           |    5 +-
 drivers/gpu/drm/i915/i915_reg.h           |   24 +++++++++
 drivers/gpu/drm/i915/intel_atomic_plane.c |    4 ++
 drivers/gpu/drm/i915/intel_color.c        |   78 +++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_display.c      |    4 ++
 drivers/gpu/drm/i915/intel_drv.h          |   10 ++++
 drivers/gpu/drm/i915/intel_sprite.c       |    4 ++
 include/drm/drm_color_mgmt.h              |    5 ++
 include/drm/drm_mode_config.h             |   28 +++++++++++
 include/drm/drm_plane.h                   |   27 ++++++++++
 15 files changed, 320 insertions(+), 1 deletion(-)

-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [RFC 1/7] drm: Add Plane Degamma properties
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 15:43   ` [Intel-gfx] " Emil Velikov
  2017-11-07 17:49   ` Brian Starkey
  2017-11-07 12:06 ` [RFC 2/7] drm: Add Plane CTM property Uma Shankar
                   ` (9 subsequent siblings)
  10 siblings, 2 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: Uma Shankar, ville.syrjala, maarten.lankhorst

Add Plane Degamma as a blob property and plane
degamma size as a range property.

v2: Rebase

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/drm_atomic.c        |   12 ++++++++++++
 drivers/gpu/drm/drm_atomic_helper.c |    6 ++++++
 drivers/gpu/drm/drm_mode_config.c   |   14 ++++++++++++++
 include/drm/drm_mode_config.h       |   11 +++++++++++
 include/drm/drm_plane.h             |   10 ++++++++++
 5 files changed, 53 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 7e0e7be..30853c7 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -713,6 +713,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 {
 	struct drm_device *dev = plane->dev;
 	struct drm_mode_config *config = &dev->mode_config;
+	bool replaced = false;
+	int ret;
 
 	if (property == config->prop_fb_id) {
 		struct drm_framebuffer *fb = drm_framebuffer_lookup(dev, NULL, val);
@@ -758,6 +760,12 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 	} else if (plane->funcs->atomic_set_property) {
 		return plane->funcs->atomic_set_property(plane, state,
 				property, val);
+	} else if (property == config->plane_degamma_lut_property) {
+		ret = drm_atomic_replace_property_blob_from_id(dev,
+					&state->degamma_lut,
+					val, -1, &replaced);
+		state->color_mgmt_changed |= replaced;
+		return ret;
 	} else {
 		return -EINVAL;
 	}
@@ -816,6 +824,9 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 		*val = state->zpos;
 	} else if (plane->funcs->atomic_get_property) {
 		return plane->funcs->atomic_get_property(plane, state, property, val);
+	} else if (property == config->plane_degamma_lut_property) {
+		*val = (state->degamma_lut) ?
+			state->degamma_lut->base.id : 0;
 	} else {
 		return -EINVAL;
 	}
@@ -953,6 +964,7 @@ static void drm_atomic_plane_print_state(struct drm_printer *p,
 	drm_printf(p, "\tcrtc-pos=" DRM_RECT_FMT "\n", DRM_RECT_ARG(&dest));
 	drm_printf(p, "\tsrc-pos=" DRM_RECT_FP_FMT "\n", DRM_RECT_FP_ARG(&src));
 	drm_printf(p, "\trotation=%x\n", state->rotation);
+	drm_printf(p, "\tcolor_mgmt_changed=%d\n", state->color_mgmt_changed);
 
 	if (plane->funcs->atomic_print_state)
 		plane->funcs->atomic_print_state(p, state);
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 71d712f..ba924cf 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3395,6 +3395,10 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
 
 	state->fence = NULL;
 	state->commit = NULL;
+
+	if (state->degamma_lut)
+		drm_property_blob_get(state->degamma_lut);
+	state->color_mgmt_changed = false;
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
 
@@ -3439,6 +3443,8 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
 
 	if (state->commit)
 		drm_crtc_commit_put(state->commit);
+
+	drm_property_blob_put(state->degamma_lut);
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
 
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index cda8bfa..118f6ac 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -348,6 +348,20 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.modifiers_property = prop;
 
+	prop = drm_property_create(dev,
+			DRM_MODE_PROP_BLOB,
+			"PLANE_DEGAMMA_LUT", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.plane_degamma_lut_property = prop;
+
+	prop = drm_property_create_range(dev,
+			DRM_MODE_PROP_IMMUTABLE,
+			"PLANE_DEGAMMA_LUT_SIZE", 0, UINT_MAX);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.plane_degamma_lut_size_property = prop;
+
 	return 0;
 }
 
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 0b4ac2e..6ee2df6 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -718,6 +718,17 @@ struct drm_mode_config {
 	struct drm_property *gamma_lut_size_property;
 
 	/**
+	 * @plane_degamma_lut_property: Optional Plane property to set the LUT
+	 * used to convert the framebuffer's colors to linear gamma.
+	 */
+	struct drm_property *plane_degamma_lut_property;
+	/**
+	 * @plane_degamma_lut_size_property: Optional Plane property for the
+	 * size of the degamma LUT as supported by the driver (read-only).
+	 */
+	struct drm_property *plane_degamma_lut_size_property;
+
+	/**
 	 * @suggested_x_property: Optional connector property with a hint for
 	 * the position of the output on the host's screen.
 	 */
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index 069c4c8..d112c50 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -123,6 +123,14 @@ struct drm_plane_state {
 	 */
 	bool visible;
 
+	/* @degamma_lut:
+	 *
+	 * Lookup table for converting framebuffer pixel data before apply the
+	 * color conversion matrix @ctm. See drm_plane_enable_color_mgmt(). The
+	 * blob (if not NULL) is an array of &struct drm_color_lut.
+	 */
+	struct drm_property_blob *degamma_lut;
+
 	/**
 	 * @commit: Tracks the pending commit to prevent use-after-free conditions,
 	 * and for async plane updates.
@@ -132,6 +140,8 @@ struct drm_plane_state {
 	struct drm_crtc_commit *commit;
 
 	struct drm_atomic_state *state;
+
+	bool color_mgmt_changed : 1;
 };
 
 static inline struct drm_rect
-- 
1.7.9.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 2/7] drm: Add Plane CTM property
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
  2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 17:39   ` Brian Starkey
  2017-11-07 12:06 ` [RFC 3/7] drm: Add Plane Gamma properties Uma Shankar
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: Uma Shankar, ville.syrjala, maarten.lankhorst

Add a blob property for plane CSC usage.

v2: Rebase

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/drm_atomic.c        |   10 ++++++++++
 drivers/gpu/drm/drm_atomic_helper.c |    3 +++
 drivers/gpu/drm/drm_mode_config.c   |    7 +++++++
 include/drm/drm_mode_config.h       |    6 ++++++
 include/drm/drm_plane.h             |    8 ++++++++
 5 files changed, 34 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 30853c7..45aede5 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -766,6 +766,14 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 					val, -1, &replaced);
 		state->color_mgmt_changed |= replaced;
 		return ret;
+	} else if (property == config->plane_ctm_property) {
+		ret = drm_atomic_replace_property_blob_from_id(dev,
+					&state->ctm,
+					val,
+					sizeof(struct drm_color_ctm),
+					&replaced);
+		state->color_mgmt_changed |= replaced;
+		return ret;
 	} else {
 		return -EINVAL;
 	}
@@ -827,6 +835,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 	} else if (property == config->plane_degamma_lut_property) {
 		*val = (state->degamma_lut) ?
 			state->degamma_lut->base.id : 0;
+	} else if (property == config->plane_ctm_property) {
+		*val = (state->ctm) ? state->ctm->base.id : 0;
 	} else {
 		return -EINVAL;
 	}
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index ba924cf..d3154e0 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3398,6 +3398,8 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
 
 	if (state->degamma_lut)
 		drm_property_blob_get(state->degamma_lut);
+	if (state->ctm)
+		drm_property_blob_get(state->ctm);
 	state->color_mgmt_changed = false;
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
@@ -3445,6 +3447,7 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
 		drm_crtc_commit_put(state->commit);
 
 	drm_property_blob_put(state->degamma_lut);
+	drm_property_blob_put(state->ctm);
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
 
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 118f6ac..bccc70e 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -362,6 +362,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.plane_degamma_lut_size_property = prop;
 
+	prop = drm_property_create(dev,
+			DRM_MODE_PROP_BLOB,
+			"PLANE_CTM", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.plane_ctm_property = prop;
+
 	return 0;
 }
 
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 6ee2df6..3bf7fc6 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -727,6 +727,12 @@ struct drm_mode_config {
 	 * size of the degamma LUT as supported by the driver (read-only).
 	 */
 	struct drm_property *plane_degamma_lut_size_property;
+	/**
+	 * @plane_ctm_property: Optional CRTC property to set the
+	 * matrix used to convert colors after the lookup in the
+	 * degamma LUT.
+	 */
+	struct drm_property *plane_ctm_property;
 
 	/**
 	 * @suggested_x_property: Optional connector property with a hint for
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index d112c50..7fcc51e 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -132,6 +132,14 @@ struct drm_plane_state {
 	struct drm_property_blob *degamma_lut;
 
 	/**
+	 * @ctm:
+	 *
+	 * Color transformation matrix. See drm_plane_enable_color_mgmt(). The
+	 * blob (if not NULL) is a &struct drm_color_ctm.
+	 */
+	struct drm_property_blob *ctm;
+
+	/**
 	 * @commit: Tracks the pending commit to prevent use-after-free conditions,
 	 * and for async plane updates.
 	 *
-- 
1.7.9.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 3/7] drm: Add Plane Gamma properties
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
  2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
  2017-11-07 12:06 ` [RFC 2/7] drm: Add Plane CTM property Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 12:06 ` [RFC 4/7] drm: Define helper function for plane color enabling Uma Shankar
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: ville.syrjala, maarten.lankhorst

Add plane gamma as blob property and size as a
range property.

v2: Rebase

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/drm_atomic.c        |    8 ++++++++
 drivers/gpu/drm/drm_atomic_helper.c |    3 +++
 drivers/gpu/drm/drm_mode_config.c   |   14 ++++++++++++++
 include/drm/drm_mode_config.h       |   11 +++++++++++
 include/drm/drm_plane.h             |    9 +++++++++
 5 files changed, 45 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 45aede5..41946d2 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -774,6 +774,12 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 					&replaced);
 		state->color_mgmt_changed |= replaced;
 		return ret;
+	} else if (property == config->plane_gamma_lut_property) {
+		ret = drm_atomic_replace_property_blob_from_id(dev,
+					&state->gamma_lut,
+					val, -1, &replaced);
+		state->color_mgmt_changed |= replaced;
+		return ret;
 	} else {
 		return -EINVAL;
 	}
@@ -837,6 +843,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
 			state->degamma_lut->base.id : 0;
 	} else if (property == config->plane_ctm_property) {
 		*val = (state->ctm) ? state->ctm->base.id : 0;
+	} else if (property == config->plane_gamma_lut_property) {
+		*val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
 	} else {
 		return -EINVAL;
 	}
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index d3154e0..1d2566d 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3400,6 +3400,8 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
 		drm_property_blob_get(state->degamma_lut);
 	if (state->ctm)
 		drm_property_blob_get(state->ctm);
+	if (state->gamma_lut)
+		drm_property_blob_get(state->gamma_lut);
 	state->color_mgmt_changed = false;
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
@@ -3448,6 +3450,7 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
 
 	drm_property_blob_put(state->degamma_lut);
 	drm_property_blob_put(state->ctm);
+	drm_property_blob_put(state->gamma_lut);
 }
 EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
 
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index bccc70e..94c4420 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -369,6 +369,20 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.plane_ctm_property = prop;
 
+	prop = drm_property_create(dev,
+			DRM_MODE_PROP_BLOB,
+			"PLANE_GAMMA_LUT", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.plane_gamma_lut_property = prop;
+
+	prop = drm_property_create_range(dev,
+			DRM_MODE_PROP_IMMUTABLE,
+			"PLANE_GAMMA_LUT_SIZE", 0, UINT_MAX);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.plane_gamma_lut_size_property = prop;
+
 	return 0;
 }
 
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 3bf7fc6..e55aaed 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -733,6 +733,17 @@ struct drm_mode_config {
 	 * degamma LUT.
 	 */
 	struct drm_property *plane_ctm_property;
+	/**
+	 * @plane_gamma_lut_property: Optional Plane property to set the LUT
+	 * used to convert the colors, after the CTM matrix, to the common
+	 * gamma space chosen for blending.
+	 */
+	struct drm_property *plane_gamma_lut_property;
+	/**
+	 * @plane_gamma_lut_size_property: Optional Plane property for the size
+	 * of the gamma LUT as supported by the driver (read-only).
+	 */
+	struct drm_property *plane_gamma_lut_size_property;
 
 	/**
 	 * @suggested_x_property: Optional connector property with a hint for
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index 7fcc51e..01d9ea7 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -140,6 +140,15 @@ struct drm_plane_state {
 	struct drm_property_blob *ctm;
 
 	/**
+	 * @gamma_lut:
+	 *
+	 * Lookup table for converting pixel data after the color conversion
+	 * matrix @ctm.  See drm_plane_enable_color_mgmt(). The blob (if not
+	 * NULL) is an array of &struct drm_color_lut.
+	 */
+	struct drm_property_blob *gamma_lut;
+
+	/**
 	 * @commit: Tracks the pending commit to prevent use-after-free conditions,
 	 * and for async plane updates.
 	 *
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 4/7] drm: Define helper function for plane color enabling
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (2 preceding siblings ...)
  2017-11-07 12:06 ` [RFC 3/7] drm: Add Plane Gamma properties Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 12:06 ` [RFC 5/7] drm/i915: Enable plane color features Uma Shankar
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: ville.syrjala, maarten.lankhorst

Define helper function to enable Plane color features
to attach plane color properties to plane structure.

v2: Rebase

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/drm_plane.c  |   45 ++++++++++++++++++++++++++++++++++++++++++
 include/drm/drm_color_mgmt.h |    5 +++++
 2 files changed, 50 insertions(+)

diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 19404e3..e9f2dab 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -144,6 +144,51 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 }
 
 /**
+ * drm_plane_enable_color_mgmt - enable color management properties
+ * @plane: DRM Plane
+ * @plane_degamma_lut_size: the size of the degamma lut (before CSC)
+ * @plane_has_ctm: whether to attach ctm_property for CSC matrix
+ * @plane_gamma_lut_size: the size of the gamma lut (after CSC)
+ *
+ * This function lets the driver enable the color correction
+ * properties on a plane. This includes 3 degamma, csc and gamma
+ * properties that userspace can set and 2 size properties to inform
+ * the userspace of the lut sizes. Each of the properties are
+ * optional. The gamma and degamma properties are only attached if
+ * their size is not 0 and ctm_property is only attached if has_ctm is
+ * true.
+ */
+void drm_plane_enable_color_mgmt(struct drm_plane *plane,
+				uint plane_degamma_lut_size,
+				bool plane_has_ctm,
+				uint plane_gamma_lut_size)
+{
+	struct drm_device *dev = plane->dev;
+	struct drm_mode_config *config = &dev->mode_config;
+
+	if (plane_degamma_lut_size) {
+		drm_object_attach_property(&plane->base,
+				config->plane_degamma_lut_property, 0);
+		drm_object_attach_property(&plane->base,
+				config->plane_degamma_lut_size_property,
+				plane_degamma_lut_size);
+	}
+
+	if (plane_has_ctm)
+		drm_object_attach_property(&plane->base,
+				config->plane_ctm_property, 0);
+
+	if (plane_gamma_lut_size) {
+		drm_object_attach_property(&plane->base,
+				config->plane_gamma_lut_property, 0);
+		drm_object_attach_property(&plane->base,
+				config->plane_gamma_lut_size_property,
+				plane_gamma_lut_size);
+	}
+}
+EXPORT_SYMBOL(drm_plane_enable_color_mgmt);
+
+/**
  * drm_universal_plane_init - Initialize a new universal plane object
  * @dev: DRM device
  * @plane: plane object to init
diff --git a/include/drm/drm_color_mgmt.h b/include/drm/drm_color_mgmt.h
index 03a59cb..155a9ba 100644
--- a/include/drm/drm_color_mgmt.h
+++ b/include/drm/drm_color_mgmt.h
@@ -37,4 +37,9 @@ void drm_crtc_enable_color_mgmt(struct drm_crtc *crtc,
 int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
 				 int gamma_size);
 
+void drm_plane_enable_color_mgmt(struct drm_plane *plane,
+				 uint plane_degamma_lut_size,
+				 bool plane_has_ctm,
+				 uint plane_gamma_lut_size);
+
 #endif
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 5/7] drm/i915: Enable plane color features
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (3 preceding siblings ...)
  2017-11-07 12:06 ` [RFC 4/7] drm: Define helper function for plane color enabling Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 12:06 ` [RFC 6/7] drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms Uma Shankar
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: ville.syrjala, maarten.lankhorst

Enable and initialize plane color features.

v2: Rebase and some cleanup

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h    |   10 ++++++++++
 drivers/gpu/drm/i915/intel_color.c |   12 ++++++++++++
 drivers/gpu/drm/i915/intel_drv.h   |    9 +++++++++
 3 files changed, 31 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index fe93115..6c91b5f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -744,6 +744,11 @@ struct drm_i915_display_funcs {
 
 	void (*load_csc_matrix)(struct drm_crtc_state *crtc_state);
 	void (*load_luts)(struct drm_crtc_state *crtc_state);
+	/* Add Plane Color callbacks */
+	void (*load_plane_csc_matrix)(const struct drm_plane_state
+				      *plane_state);
+	void (*load_plane_luts)(const struct drm_plane_state
+				*plane_state);
 };
 
 #define CSR_VERSION(major, minor)	((major) << 16 | (minor))
@@ -890,6 +895,11 @@ struct intel_device_info {
 		u16 degamma_lut_size;
 		u16 gamma_lut_size;
 	} color;
+
+	struct plane_color_luts {
+		u16 plane_degamma_lut_size;
+		u16 plane_gamma_lut_size;
+	} plane_color;
 };
 
 struct intel_display_error_state;
diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
index b8315bc..f2481f1 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -641,6 +641,18 @@ int intel_color_check(struct drm_crtc *crtc,
 	return -EINVAL;
 }
 
+void intel_plane_color_init(struct drm_plane *plane)
+{
+	struct drm_i915_private *dev_priv = to_i915(plane->dev);
+
+	/* Enable color management support when we have degamma & gamma LUTs. */
+	if (INTEL_INFO(dev_priv)->plane_color.plane_degamma_lut_size != 0 &&
+	    INTEL_INFO(dev_priv)->plane_color.plane_gamma_lut_size != 0)
+		drm_plane_enable_color_mgmt(plane,
+		INTEL_INFO(dev_priv)->plane_color.plane_degamma_lut_size,
+		true, INTEL_INFO(dev_priv)->plane_color.plane_gamma_lut_size);
+}
+
 void intel_color_init(struct drm_crtc *crtc)
 {
 	struct drm_i915_private *dev_priv = to_i915(crtc->dev);
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 00b4886..eb90d11 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -445,6 +445,14 @@ struct intel_plane_state {
 	 */
 	int scaler_id;
 
+	/*
+	 * Use reduced/limited/broadcast rbg range, compressing from the full
+	 * range fed into the crtcs.
+	 */
+	bool limited_color_range;
+	/* Gamma mode programmed on the plane */
+	uint32_t gamma_mode;
+
 	struct drm_intel_sprite_colorkey ckey;
 };
 
@@ -2018,6 +2026,7 @@ int intel_plane_atomic_check_with_state(const struct intel_crtc_state *old_crtc_
 int intel_color_check(struct drm_crtc *crtc, struct drm_crtc_state *state);
 void intel_color_set_csc(struct drm_crtc_state *crtc_state);
 void intel_color_load_luts(struct drm_crtc_state *crtc_state);
+void intel_plane_color_init(struct drm_plane *plane);
 
 /* intel_lspcon.c */
 bool lspcon_init(struct intel_digital_port *intel_dig_port);
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 6/7] drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (4 preceding siblings ...)
  2017-11-07 12:06 ` [RFC 5/7] drm/i915: Enable plane color features Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 12:06 ` [RFC 7/7] drm/i915: Load plane color luts from atomic flip Uma Shankar
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: ville.syrjala, maarten.lankhorst

Implement Plane Gamma feature for BDW and Gen9 platforms.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/i915_pci.c      |    5 ++-
 drivers/gpu/drm/i915/i915_reg.h      |   24 ++++++++++++++
 drivers/gpu/drm/i915/intel_color.c   |   58 ++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_display.c |    4 +++
 drivers/gpu/drm/i915/intel_sprite.c  |    4 +++
 5 files changed, 94 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 6458c30..6655eaf 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -51,7 +51,10 @@
 	.cursor_offsets = { CURSOR_A_OFFSET, IVB_CURSOR_B_OFFSET, IVB_CURSOR_C_OFFSET }
 
 #define BDW_COLORS \
-	.color = { .degamma_lut_size = 512, .gamma_lut_size = 512 }
+	.color = { .degamma_lut_size = 512, .gamma_lut_size = 512 }, \
+	.plane_color = { .plane_degamma_lut_size = 0, \
+			 .plane_gamma_lut_size = 16 }
+
 #define CHV_COLORS \
 	.color = { .degamma_lut_size = 65, .gamma_lut_size = 257 }
 #define GLK_COLORS \
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index f0f8f60..b71082b 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -159,6 +159,9 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define _PHY3(phy, ...) _PICK(phy, __VA_ARGS__)
 #define _MMIO_PHY3(phy, a, b, c) _MMIO(_PHY3(phy, a, b, c))
 
+#define _MMIO_PLANE_GAMC(plane, i, a, b)  _MMIO(_PIPE(plane, a, b) + (i) * 4)
+#define _MMIO_PLANE_GAMC16(plane, i, a, b)  _MMIO(_PIPE(plane, a, b) + (i) * 4)
+
 #define _MASKED_FIELD(mask, value) ({					   \
 	if (__builtin_constant_p(mask))					   \
 		BUILD_BUG_ON_MSG(((mask) & 0xffff0000), "Incorrect mask"); \
@@ -8800,6 +8803,27 @@ enum skl_power_gate {
 #define PRE_CSC_GAMC_INDEX(pipe)	_MMIO_PIPE(pipe, _PRE_CSC_GAMC_INDEX_A, _PRE_CSC_GAMC_INDEX_B)
 #define PRE_CSC_GAMC_DATA(pipe)		_MMIO_PIPE(pipe, _PRE_CSC_GAMC_DATA_A, _PRE_CSC_GAMC_DATA_B)
 
+/* Plane Gamma in Gen9+ */
+#define _PLANE_GAMC_1_A	0x701d0
+#define _PLANE_GAMC_1_B	0x711d0
+#define _PLANE_GAMC_2_A	0x702d0
+#define _PLANE_GAMC_2_B	0x712d0
+#define _PLANE_GAMC_1(pipe)	_PIPE(pipe, _PLANE_GAMC_1_A, _PLANE_GAMC_1_B)
+#define _PLANE_GAMC_2(pipe)	_PIPE(pipe, _PLANE_GAMC_2_A, _PLANE_GAMC_2_B)
+#define PLANE_GAMC(pipe, plane, i)	\
+	_MMIO_PLANE_GAMC(plane, i, _PLANE_GAMC_1(pipe), _PLANE_GAMC_2(pipe))
+
+#define _PLANE_GAMC16_1_A	0x70210
+#define _PLANE_GAMC16_1_B	0x71210
+#define _PLANE_GAMC16_2_A	0x70310
+#define _PLANE_GAMC16_2_B	0x71310
+#define _PLANE_GAMC16_1(pipe)	_PIPE(pipe, _PLANE_GAMC16_1_A, \
+				     _PLANE_GAMC16_1_B)
+#define _PLANE_GAMC16_2(pipe)	_PIPE(pipe, _PLANE_GAMC16_2_A, \
+				     _PLANE_GAMC16_2_B)
+#define PLANE_GAMC16(pipe, plane, i) _MMIO_PLANE_GAMC16(plane, i, \
+				_PLANE_GAMC16_1(pipe), _PLANE_GAMC16_2(pipe))
+
 /* pipe CSC & degamma/gamma LUTs on CHV */
 #define _CGM_PIPE_A_CSC_COEFF01	(VLV_DISPLAY_BASE + 0x67900)
 #define _CGM_PIPE_A_CSC_COEFF23	(VLV_DISPLAY_BASE + 0x67904)
diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
index f2481f1..3452769 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -489,6 +489,59 @@ static void broadwell_load_luts(struct drm_crtc_state *state)
 	I915_WRITE(PREC_PAL_INDEX(pipe), 0);
 }
 
+static void bdw_load_plane_gamma_lut(const struct drm_plane_state *state,
+				     u32 offset)
+{
+	struct drm_i915_private *dev_priv = to_i915(state->plane->dev);
+	enum pipe pipe = to_intel_plane(state->plane)->pipe;
+	enum plane_id plane = to_intel_plane(state->plane)->id;
+	uint32_t i, lut_size =
+			INTEL_INFO(dev_priv)->plane_color.plane_gamma_lut_size;
+
+	if (state->gamma_lut) {
+		struct drm_color_lut *lut =
+			(struct drm_color_lut *) state->gamma_lut->data;
+
+		for (i = 0; i < lut_size; i++) {
+			uint32_t word =
+			(drm_color_lut_extract(lut[i].red, 10) << 20) |
+			(drm_color_lut_extract(lut[i].green, 10) << 10) |
+			drm_color_lut_extract(lut[i].blue, 10);
+
+			I915_WRITE(PLANE_GAMC(pipe, plane, i), word);
+		}
+
+		/* Program the max register to clamp values > 1.0. */
+		i = lut_size - 1;
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 0),
+			   drm_color_lut_extract(lut[i].red, 16));
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 1),
+			   drm_color_lut_extract(lut[i].green, 16));
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 2),
+			   drm_color_lut_extract(lut[i].blue, 16));
+	} else {
+		for (i = 0; i < lut_size; i++) {
+			uint32_t v = (i * ((1 << 10) - 1)) / (lut_size - 1);
+
+			I915_WRITE(PLANE_GAMC(pipe, plane, i),
+				   (v << 20) | (v << 10) | v);
+		}
+
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 0), (1 << 16) - 1);
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 1), (1 << 16) - 1);
+		I915_WRITE(PLANE_GAMC16(pipe, plane, 2), (1 << 16) - 1);
+	}
+}
+
+/* Loads the palette/gamma unit for the CRTC on Broadwell+. */
+static void broadwell_load_plane_luts(const struct drm_plane_state *state)
+{
+	struct drm_i915_private *dev_priv = to_i915(state->plane->dev);
+
+	bdw_load_plane_gamma_lut(state,
+		INTEL_INFO(dev_priv)->plane_color.plane_degamma_lut_size);
+}
+
 static void glk_load_degamma_lut(struct drm_crtc_state *state)
 {
 	struct drm_i915_private *dev_priv = to_i915(state->crtc->dev);
@@ -645,6 +698,11 @@ void intel_plane_color_init(struct drm_plane *plane)
 {
 	struct drm_i915_private *dev_priv = to_i915(plane->dev);
 
+	if (IS_BROADWELL(dev_priv) || IS_GEN9_BC(dev_priv) ||
+		IS_BROXTON(dev_priv)) {
+		dev_priv->display.load_plane_luts = broadwell_load_plane_luts;
+	}
+
 	/* Enable color management support when we have degamma & gamma LUTs. */
 	if (INTEL_INFO(dev_priv)->plane_color.plane_degamma_lut_size != 0 &&
 	    INTEL_INFO(dev_priv)->plane_color.plane_gamma_lut_size != 0)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 737de25..0f184a3 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13267,6 +13267,10 @@ static bool intel_cursor_plane_format_mod_supported(struct drm_plane *plane,
 						   DRM_MODE_ROTATE_0,
 						   supported_rotations);
 
+	/* Add Plane Color properties */
+	if (IS_BROADWELL(dev_priv) || INTEL_GEN(dev_priv) >= 9)
+		intel_plane_color_init(&primary->base);
+
 	drm_plane_helper_add(&primary->base, &intel_plane_helper_funcs);
 
 	return primary;
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 4fcf80c..3a538d9 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -1330,6 +1330,10 @@ struct intel_plane *
 					   DRM_MODE_ROTATE_0,
 					   supported_rotations);
 
+	/* Add Plane Color properties */
+	if (IS_BROADWELL(dev_priv) || INTEL_GEN(dev_priv) >= 9)
+		intel_plane_color_init(&intel_plane->base);
+
 	drm_plane_helper_add(&intel_plane->base, &intel_plane_helper_funcs);
 
 	return intel_plane;
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [RFC 7/7] drm/i915: Load plane color luts from atomic flip
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (5 preceding siblings ...)
  2017-11-07 12:06 ` [RFC 6/7] drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms Uma Shankar
@ 2017-11-07 12:06 ` Uma Shankar
  2017-11-07 12:09 ` ✗ Fi.CI.BAT: failure for Add Plane Color Properties (rev2) Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Uma Shankar @ 2017-11-07 12:06 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: Uma Shankar, ville.syrjala, maarten.lankhorst

Load plane color luts as part of atomic plane updates.
This will be done only if the plane color luts are changed.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/intel_atomic_plane.c |    4 ++++
 drivers/gpu/drm/i915/intel_color.c        |    8 ++++++++
 drivers/gpu/drm/i915/intel_drv.h          |    1 +
 3 files changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
index 8e6dc15..52d71db 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -239,6 +239,10 @@ static void intel_plane_atomic_update(struct drm_plane *plane,
 		intel_atomic_get_new_plane_state(state, intel_plane);
 	struct drm_crtc *crtc = new_plane_state->base.crtc ?: old_state->crtc;
 
+	if (new_plane_state->base.color_mgmt_changed) {
+		intel_color_load_plane_luts(&new_plane_state->base);
+	}
+
 	if (new_plane_state->base.visible) {
 		const struct intel_crtc_state *new_crtc_state =
 			intel_atomic_get_new_crtc_state(state, to_intel_crtc(crtc));
diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
index 3452769..34e70ba 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -663,6 +663,14 @@ void intel_color_load_luts(struct drm_crtc_state *crtc_state)
 	dev_priv->display.load_luts(crtc_state);
 }
 
+void intel_color_load_plane_luts(const struct drm_plane_state *plane_state)
+{
+	struct drm_device *dev = plane_state->plane->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
+
+	dev_priv->display.load_plane_luts(plane_state);
+}
+
 int intel_color_check(struct drm_crtc *crtc,
 		      struct drm_crtc_state *crtc_state)
 {
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index eb90d11..67487d4 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -2027,6 +2027,7 @@ int intel_plane_atomic_check_with_state(const struct intel_crtc_state *old_crtc_
 void intel_color_set_csc(struct drm_crtc_state *crtc_state);
 void intel_color_load_luts(struct drm_crtc_state *crtc_state);
 void intel_plane_color_init(struct drm_plane *plane);
+void intel_color_load_plane_luts(const struct drm_plane_state *plane_state);
 
 /* intel_lspcon.c */
 bool lspcon_init(struct intel_digital_port *intel_dig_port);
-- 
1.7.9.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for Add Plane Color Properties (rev2)
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (6 preceding siblings ...)
  2017-11-07 12:06 ` [RFC 7/7] drm/i915: Load plane color luts from atomic flip Uma Shankar
@ 2017-11-07 12:09 ` Patchwork
  2017-11-07 13:02 ` Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2017-11-07 12:09 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx

== Series Details ==

Series: Add Plane Color Properties (rev2)
URL   : https://patchwork.freedesktop.org/series/30875/
State : failure

== Summary ==

Series 30875v2 Add Plane Color Properties
https://patchwork.freedesktop.org/api/1.0/series/30875/revisions/2/mbox/

Test core_auth:
        Subgroup basic-auth:
                dmesg-warn -> PASS       (fi-bsw-n3050) fdo#103479 +1
Test debugfs_test:
        Subgroup read_all_entries:
                pass       -> INCOMPLETE (fi-glk-dsi)
Test gem_sync:
        Subgroup basic-store-all:
                fail       -> PASS       (fi-ivb-3520m) fdo#100007
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (fi-byt-n2820) fdo#101705

fdo#103479 https://bugs.freedesktop.org/show_bug.cgi?id=103479
fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:447s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:453s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:380s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:545s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:275s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:508s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:501s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:509s
fi-byt-n2820     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:488s
fi-cfl-s         total:289  pass:254  dwarn:3   dfail:0   fail:0   skip:32  time:556s
fi-cnl-y         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:606s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:432s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:260s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:582s
fi-glk-dsi       total:12   pass:2    dwarn:0   dfail:0   fail:0   skip:9  
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:432s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:429s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:422s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:504s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:462s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:495s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:573s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:474s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:586s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:568s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:451s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:596s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:653s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:514s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:501s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:460s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:569s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:429s

b911f67a17e5eef16d49a51b83f7da12666e3be6 drm-tip: 2017y-11m-07d-11h-11m-37s UTC integration manifest
152f249bcea4 drm/i915: Load plane color luts from atomic flip
9895a783dd56 drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms
6cdd88c197d2 drm/i915: Enable plane color features
9e22c82f26bc drm: Define helper function for plane color enabling
416c78edc65a drm: Add Plane Gamma properties
83ce54aa7a5b drm: Add Plane CTM property
84f90f719591 drm: Add Plane Degamma properties

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6985/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for Add Plane Color Properties (rev2)
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (7 preceding siblings ...)
  2017-11-07 12:09 ` ✗ Fi.CI.BAT: failure for Add Plane Color Properties (rev2) Patchwork
@ 2017-11-07 13:02 ` Patchwork
  2017-11-07 16:13 ` [Intel-gfx] [PATCH 0/7] Add Plane Color Properties Daniel Stone
  2017-11-08 12:27 ` ✓ Fi.CI.BAT: success for Add Plane Color Properties (rev2) Patchwork
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2017-11-07 13:02 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx

== Series Details ==

Series: Add Plane Color Properties (rev2)
URL   : https://patchwork.freedesktop.org/series/30875/
State : failure

== Summary ==

Series 30875v2 Add Plane Color Properties
https://patchwork.freedesktop.org/api/1.0/series/30875/revisions/2/mbox/

Test chamelium:
        Subgroup dp-crc-fast:
                pass       -> FAIL       (fi-kbl-7500u) fdo#102514
Test core_auth:
        Subgroup basic-auth:
                dmesg-warn -> PASS       (fi-bsw-n3050) fdo#103479 +1
Test gem_sync:
        Subgroup basic-each:
                pass       -> DMESG-FAIL (fi-glk-dsi)
        Subgroup basic-many-each:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-store-all:
                fail       -> PASS       (fi-ivb-3520m) fdo#100007
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-store-each:
                pass       -> SKIP       (fi-glk-dsi)
Test gem_tiled_blits:
        Subgroup basic:
                pass       -> SKIP       (fi-glk-dsi)
Test gem_tiled_fence_blits:
        Subgroup basic:
                pass       -> SKIP       (fi-glk-dsi)
Test gem_wait:
        Subgroup basic-busy-all:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-wait-all:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-await-all:
                pass       -> SKIP       (fi-glk-dsi)
Test gem_workarounds:
        Subgroup basic-read:
                pass       -> SKIP       (fi-glk-dsi)
Test kms_busy:
        Subgroup basic-flip-a:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-flip-b:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-flip-c:
                pass       -> SKIP       (fi-glk-dsi)
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                pass       -> SKIP       (fi-glk-dsi)
        Subgroup basic-busy-flip-before-cursor-legacy:
                pass       -> SKIP       (fi-glk-dsi)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                fail       -> SKIP       (fi-glk-dsi) fdo#103167
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-a:
                pass       -> DMESG-FAIL (fi-glk-dsi) fdo#103514 +3
        Subgroup hang-read-crc-pipe-b:
                pass       -> FAIL       (fi-skl-6700k)

fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#103479 https://bugs.freedesktop.org/show_bug.cgi?id=103479
fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103514 https://bugs.freedesktop.org/show_bug.cgi?id=103514

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:444s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:457s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:379s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:538s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:277s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:504s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:503s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:506s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:497s
fi-cfl-s         total:289  pass:254  dwarn:3   dfail:0   fail:0   skip:32  time:559s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:425s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:263s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:595s
fi-glk-dsi       total:289  pass:239  dwarn:1   dfail:4   fail:0   skip:45  time:473s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:433s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:429s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:429s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:488s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:462s
fi-kbl-7500u     total:289  pass:263  dwarn:1   dfail:0   fail:1   skip:24  time:486s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:580s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:483s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:587s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:573s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:454s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:600s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:649s
fi-skl-6700k     total:289  pass:264  dwarn:0   dfail:0   fail:1   skip:24  time:524s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:502s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:463s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:572s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:422s

b911f67a17e5eef16d49a51b83f7da12666e3be6 drm-tip: 2017y-11m-07d-11h-11m-37s UTC integration manifest
9bc7cd3fed32 drm/i915: Load plane color luts from atomic flip
885a07d97e61 drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms
81e35d5d8e56 drm/i915: Enable plane color features
86eb07be510e drm: Define helper function for plane color enabling
bb9318342473 drm: Add Plane Gamma properties
ad5a351603cf drm: Add Plane CTM property
120c35761405 drm: Add Plane Degamma properties

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6988/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [RFC 1/7] drm: Add Plane Degamma properties
  2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
@ 2017-11-07 15:43   ` Emil Velikov
  2017-11-07 17:49   ` Brian Starkey
  1 sibling, 0 replies; 20+ messages in thread
From: Emil Velikov @ 2017-11-07 15:43 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx, ville.syrjala, Maarten Lankhorst, ML dri-devel

On 7 November 2017 at 12:06, Uma Shankar <uma.shankar@intel.com> wrote:
> Add Plane Degamma as a blob property and plane
> degamma size as a range property.
>
> v2: Rebase
>
Hi Uma, seems like something has gone wrong during the rebase.

> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  drivers/gpu/drm/drm_atomic.c        |   12 ++++++++++++
>  drivers/gpu/drm/drm_atomic_helper.c |    6 ++++++
>  drivers/gpu/drm/drm_mode_config.c   |   14 ++++++++++++++
>  include/drm/drm_mode_config.h       |   11 +++++++++++
>  include/drm/drm_plane.h             |   10 ++++++++++
>  5 files changed, 53 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index 7e0e7be..30853c7 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -713,6 +713,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
>  {
>         struct drm_device *dev = plane->dev;
>         struct drm_mode_config *config = &dev->mode_config;
> +       bool replaced = false;
> +       int ret;
>
>         if (property == config->prop_fb_id) {
>                 struct drm_framebuffer *fb = drm_framebuffer_lookup(dev, NULL, val);
> @@ -758,6 +760,12 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
>         } else if (plane->funcs->atomic_set_property) {
>                 return plane->funcs->atomic_set_property(plane, state,
>                                 property, val);
> +       } else if (property == config->plane_degamma_lut_property) {
> +               ret = drm_atomic_replace_property_blob_from_id(dev,
> +                                       &state->degamma_lut,
> +                                       val, -1, &replaced);
> +               state->color_mgmt_changed |= replaced;
> +               return ret;
Namely: the driver specific atomic_set_property will be called and the
newly added code will not be reached.
I think we should keep the atomic_set_property call last in the
if/else chain. Converting the lot to a switch statement might make
things a bit more obvious.


>         } else {
>                 return -EINVAL;
>         }
> @@ -816,6 +824,9 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
>                 *val = state->zpos;
>         } else if (plane->funcs->atomic_get_property) {
>                 return plane->funcs->atomic_get_property(plane, state, property, val);
> +       } else if (property == config->plane_degamma_lut_property) {
> +               *val = (state->degamma_lut) ?
> +                       state->degamma_lut->base.id : 0;
Analogous thing happens here.

Did you test the updated series through IGT - it should have caught
the above (considering we have tests, and I'm not loosing my marbles).
Same comments apply for CTM and gamma, patches 2 and 3 respectively.

HTH
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [PATCH 0/7] Add Plane Color Properties
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (8 preceding siblings ...)
  2017-11-07 13:02 ` Patchwork
@ 2017-11-07 16:13 ` Daniel Stone
  2017-11-10  8:37   ` Shankar, Uma
  2017-11-08 12:27 ` ✓ Fi.CI.BAT: success for Add Plane Color Properties (rev2) Patchwork
  10 siblings, 1 reply; 20+ messages in thread
From: Daniel Stone @ 2017-11-07 16:13 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx, ville.syrjala, Maarten Lankhorst, dri-devel

Hi Uma,

On 7 November 2017 at 12:06, Uma Shankar <uma.shankar@intel.com> wrote:
> This patch series adds properties for plane color features. It adds
> properties for degamma used to linearize data, CSC used for gamut
> conversion, and gamma used to again non-linearize data as per panel
> supported color space. These can be utilize by user space to convert
> planes from one format to another, one color space to another etc.
>
> Usersapce can take smart blending decisions and utilize these hardware
> supported plane color features to get accurate color profile. The same
> can help in consistent color quality from source to panel taking
> advantage of advanced color features in hardware.
>
> These patches just add the property interfaces and enable helper functions.

This is missing documentation on how plane colour management interacts
with CRTC colour management. Is it a step before CRTC colour
management is applied, or does it bypass CRTC colour management, or
... ?

Cheers,
Daniel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [RFC 2/7] drm: Add Plane CTM property
  2017-11-07 12:06 ` [RFC 2/7] drm: Add Plane CTM property Uma Shankar
@ 2017-11-07 17:39   ` Brian Starkey
  2017-11-08  9:08     ` Shankar, Uma
  0 siblings, 1 reply; 20+ messages in thread
From: Brian Starkey @ 2017-11-07 17:39 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx, ville.syrjala, maarten.lankhorst, dri-devel

Hi Uma,

On Tue, Nov 07, 2017 at 05:36:26PM +0530, Uma Shankar wrote:
>Add a blob property for plane CSC usage.
>
>v2: Rebase
>
>Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>---
> drivers/gpu/drm/drm_atomic.c        |   10 ++++++++++
> drivers/gpu/drm/drm_atomic_helper.c |    3 +++
> drivers/gpu/drm/drm_mode_config.c   |    7 +++++++
> include/drm/drm_mode_config.h       |    6 ++++++
> include/drm/drm_plane.h             |    8 ++++++++
> 5 files changed, 34 insertions(+)
>
>diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
>index 30853c7..45aede5 100644
>--- a/drivers/gpu/drm/drm_atomic.c
>+++ b/drivers/gpu/drm/drm_atomic.c
>@@ -766,6 +766,14 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
> 					val, -1, &replaced);
> 		state->color_mgmt_changed |= replaced;
> 		return ret;
>+	} else if (property == config->plane_ctm_property) {
>+		ret = drm_atomic_replace_property_blob_from_id(dev,
>+					&state->ctm,
>+					val,
>+					sizeof(struct drm_color_ctm),
>+					&replaced);
>+		state->color_mgmt_changed |= replaced;
>+		return ret;
> 	} else {
> 		return -EINVAL;
> 	}
>@@ -827,6 +835,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
> 	} else if (property == config->plane_degamma_lut_property) {
> 		*val = (state->degamma_lut) ?
> 			state->degamma_lut->base.id : 0;
>+	} else if (property == config->plane_ctm_property) {
>+		*val = (state->ctm) ? state->ctm->base.id : 0;
> 	} else {
> 		return -EINVAL;
> 	}
>diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
>index ba924cf..d3154e0 100644
>--- a/drivers/gpu/drm/drm_atomic_helper.c
>+++ b/drivers/gpu/drm/drm_atomic_helper.c
>@@ -3398,6 +3398,8 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
>
> 	if (state->degamma_lut)
> 		drm_property_blob_get(state->degamma_lut);
>+	if (state->ctm)
>+		drm_property_blob_get(state->ctm);
> 	state->color_mgmt_changed = false;
> }
> EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
>@@ -3445,6 +3447,7 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
> 		drm_crtc_commit_put(state->commit);
>
> 	drm_property_blob_put(state->degamma_lut);
>+	drm_property_blob_put(state->ctm);
> }
> EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
>
>diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
>index 118f6ac..bccc70e 100644
>--- a/drivers/gpu/drm/drm_mode_config.c
>+++ b/drivers/gpu/drm/drm_mode_config.c
>@@ -362,6 +362,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
> 		return -ENOMEM;
> 	dev->mode_config.plane_degamma_lut_size_property = prop;
>
>+	prop = drm_property_create(dev,
>+			DRM_MODE_PROP_BLOB,
>+			"PLANE_CTM", 0);

I do wonder if "PLANE_" is really needed here, as the property will
only ever be found on a plane (same would apply to all three property
names).

>+	if (!prop)
>+		return -ENOMEM;
>+	dev->mode_config.plane_ctm_property = prop;
>+
> 	return 0;
> }
>
>diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
>index 6ee2df6..3bf7fc6 100644
>--- a/include/drm/drm_mode_config.h
>+++ b/include/drm/drm_mode_config.h
>@@ -727,6 +727,12 @@ struct drm_mode_config {
> 	 * size of the degamma LUT as supported by the driver (read-only).
> 	 */
> 	struct drm_property *plane_degamma_lut_size_property;
>+	/**
>+	 * @plane_ctm_property: Optional CRTC property to set the
>+	 * matrix used to convert colors after the lookup in the
>+	 * degamma LUT.
>+	 */

Copy-paste error - should be "Optional plane property"

Thanks,
-Brian

>+	struct drm_property *plane_ctm_property;
>
> 	/**
> 	 * @suggested_x_property: Optional connector property with a hint for
>diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
>index d112c50..7fcc51e 100644
>--- a/include/drm/drm_plane.h
>+++ b/include/drm/drm_plane.h
>@@ -132,6 +132,14 @@ struct drm_plane_state {
> 	struct drm_property_blob *degamma_lut;
>
> 	/**
>+	 * @ctm:
>+	 *
>+	 * Color transformation matrix. See drm_plane_enable_color_mgmt(). The
>+	 * blob (if not NULL) is a &struct drm_color_ctm.
>+	 */
>+	struct drm_property_blob *ctm;
>+
>+	/**
> 	 * @commit: Tracks the pending commit to prevent use-after-free conditions,
> 	 * and for async plane updates.
> 	 *
>-- 
>1.7.9.5
>
>_______________________________________________
>dri-devel mailing list
>dri-devel@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [RFC 1/7] drm: Add Plane Degamma properties
  2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
  2017-11-07 15:43   ` [Intel-gfx] " Emil Velikov
@ 2017-11-07 17:49   ` Brian Starkey
  2017-11-07 18:09     ` Brian Starkey
  1 sibling, 1 reply; 20+ messages in thread
From: Brian Starkey @ 2017-11-07 17:49 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx, ville.syrjala, maarten.lankhorst, dri-devel

Hi,

On Tue, Nov 07, 2017 at 05:36:25PM +0530, Uma Shankar wrote:
>Add Plane Degamma as a blob property and plane
>degamma size as a range property.
>
>v2: Rebase
>
>Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>---
> drivers/gpu/drm/drm_atomic.c        |   12 ++++++++++++
> drivers/gpu/drm/drm_atomic_helper.c |    6 ++++++
> drivers/gpu/drm/drm_mode_config.c   |   14 ++++++++++++++
> include/drm/drm_mode_config.h       |   11 +++++++++++
> include/drm/drm_plane.h             |   10 ++++++++++
> 5 files changed, 53 insertions(+)
>
>diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
>index 7e0e7be..30853c7 100644
>--- a/drivers/gpu/drm/drm_atomic.c
>+++ b/drivers/gpu/drm/drm_atomic.c
>@@ -713,6 +713,8 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
> {
> 	struct drm_device *dev = plane->dev;
> 	struct drm_mode_config *config = &dev->mode_config;
>+	bool replaced = false;
>+	int ret;
>
> 	if (property == config->prop_fb_id) {
> 		struct drm_framebuffer *fb = drm_framebuffer_lookup(dev, NULL, val);
>@@ -758,6 +760,12 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
> 	} else if (plane->funcs->atomic_set_property) {
> 		return plane->funcs->atomic_set_property(plane, state,
> 				property, val);
>+	} else if (property == config->plane_degamma_lut_property) {
>+		ret = drm_atomic_replace_property_blob_from_id(dev,
>+					&state->degamma_lut,
>+					val, -1, &replaced);
>+		state->color_mgmt_changed |= replaced;
>+		return ret;
> 	} else {
> 		return -EINVAL;
> 	}
>@@ -816,6 +824,9 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
> 		*val = state->zpos;
> 	} else if (plane->funcs->atomic_get_property) {
> 		return plane->funcs->atomic_get_property(plane, state, property, val);
>+	} else if (property == config->plane_degamma_lut_property) {
>+		*val = (state->degamma_lut) ?
>+			state->degamma_lut->base.id : 0;
> 	} else {
> 		return -EINVAL;
> 	}
>@@ -953,6 +964,7 @@ static void drm_atomic_plane_print_state(struct drm_printer *p,
> 	drm_printf(p, "\tcrtc-pos=" DRM_RECT_FMT "\n", DRM_RECT_ARG(&dest));
> 	drm_printf(p, "\tsrc-pos=" DRM_RECT_FP_FMT "\n", DRM_RECT_FP_ARG(&src));
> 	drm_printf(p, "\trotation=%x\n", state->rotation);
>+	drm_printf(p, "\tcolor_mgmt_changed=%d\n", state->color_mgmt_changed);
>
> 	if (plane->funcs->atomic_print_state)
> 		plane->funcs->atomic_print_state(p, state);
>diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
>index 71d712f..ba924cf 100644
>--- a/drivers/gpu/drm/drm_atomic_helper.c
>+++ b/drivers/gpu/drm/drm_atomic_helper.c
>@@ -3395,6 +3395,10 @@ void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
>
> 	state->fence = NULL;
> 	state->commit = NULL;
>+
>+	if (state->degamma_lut)
>+		drm_property_blob_get(state->degamma_lut);
>+	state->color_mgmt_changed = false;
> }
> EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
>
>@@ -3439,6 +3443,8 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
>
> 	if (state->commit)
> 		drm_crtc_commit_put(state->commit);
>+
>+	drm_property_blob_put(state->degamma_lut);
> }
> EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
>
>diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
>index cda8bfa..118f6ac 100644
>--- a/drivers/gpu/drm/drm_mode_config.c
>+++ b/drivers/gpu/drm/drm_mode_config.c
>@@ -348,6 +348,20 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
> 		return -ENOMEM;
> 	dev->mode_config.modifiers_property = prop;
>
>+	prop = drm_property_create(dev,
>+			DRM_MODE_PROP_BLOB,
>+			"PLANE_DEGAMMA_LUT", 0);
>+	if (!prop)
>+		return -ENOMEM;
>+	dev->mode_config.plane_degamma_lut_property = prop;
>+
>+	prop = drm_property_create_range(dev,
>+			DRM_MODE_PROP_IMMUTABLE,
>+			"PLANE_DEGAMMA_LUT_SIZE", 0, UINT_MAX);
>+	if (!prop)
>+		return -ENOMEM;
>+	dev->mode_config.plane_degamma_lut_size_property = prop;
>+
> 	return 0;
> }
>
>diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
>index 0b4ac2e..6ee2df6 100644
>--- a/include/drm/drm_mode_config.h
>+++ b/include/drm/drm_mode_config.h
>@@ -718,6 +718,17 @@ struct drm_mode_config {
> 	struct drm_property *gamma_lut_size_property;
>
> 	/**
>+	 * @plane_degamma_lut_property: Optional Plane property to set the LUT
>+	 * used to convert the framebuffer's colors to linear gamma.
>+	 */
>+	struct drm_property *plane_degamma_lut_property;
>+	/**
>+	 * @plane_degamma_lut_size_property: Optional Plane property for the
>+	 * size of the degamma LUT as supported by the driver (read-only).
>+	 */
>+	struct drm_property *plane_degamma_lut_size_property;
>+
>+	/**
> 	 * @suggested_x_property: Optional connector property with a hint for
> 	 * the position of the output on the host's screen.
> 	 */
>diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
>index 069c4c8..d112c50 100644
>--- a/include/drm/drm_plane.h
>+++ b/include/drm/drm_plane.h
>@@ -123,6 +123,14 @@ struct drm_plane_state {
> 	 */
> 	bool visible;
>
>+	/* @degamma_lut:
>+	 *
>+	 * Lookup table for converting framebuffer pixel data before apply the
>+	 * color conversion matrix @ctm. See drm_plane_enable_color_mgmt(). The
>+	 * blob (if not NULL) is an array of &struct drm_color_lut.
>+	 */
>+	struct drm_property_blob *degamma_lut;

In one of the previous discussions[1] related to per-plane color
management, Lionel suggested that the 16-bit color lut entries weren't
enough when considering HDR.

It might be worth creating a new gamma lut format with 32-bit entries
for these new properties, as HDR is very much a real rather than
hypothetical concern these days.

Thanks,
-Brian

>+
> 	/**
> 	 * @commit: Tracks the pending commit to prevent use-after-free conditions,
> 	 * and for async plane updates.
>@@ -132,6 +140,8 @@ struct drm_plane_state {
> 	struct drm_crtc_commit *commit;
>
> 	struct drm_atomic_state *state;
>+
>+	bool color_mgmt_changed : 1;
> };
>
> static inline struct drm_rect
>-- 
>1.7.9.5
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [RFC 1/7] drm: Add Plane Degamma properties
  2017-11-07 17:49   ` Brian Starkey
@ 2017-11-07 18:09     ` Brian Starkey
  2017-11-09 12:55       ` Shankar, Uma
  0 siblings, 1 reply; 20+ messages in thread
From: Brian Starkey @ 2017-11-07 18:09 UTC (permalink / raw)
  To: Uma Shankar; +Cc: intel-gfx, ville.syrjala, dri-devel, maarten.lankhorst

On Tue, Nov 07, 2017 at 05:49:56PM +0000, Brian Starkey wrote:
>
>In one of the previous discussions[1] related to per-plane color
>management, Lionel suggested that the 16-bit color lut entries weren't
>enough when considering HDR.
>
>It might be worth creating a new gamma lut format with 32-bit entries
>for these new properties, as HDR is very much a real rather than
>hypothetical concern these days.
>
>Thanks,
>-Brian

Sorry, failed to paste the link:

[1] https://patchwork.kernel.org/patch/9546905/
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* RE: [RFC 2/7] drm: Add Plane CTM property
  2017-11-07 17:39   ` Brian Starkey
@ 2017-11-08  9:08     ` Shankar, Uma
  0 siblings, 0 replies; 20+ messages in thread
From: Shankar, Uma @ 2017-11-08  9:08 UTC (permalink / raw)
  To: Brian Starkey; +Cc: intel-gfx, Syrjala, Ville, dri-devel, Lankhorst, Maarten



>-----Original Message-----
>From: dri-devel [mailto:dri-devel-bounces@lists.freedesktop.org] On Behalf Of
>Brian Starkey
>Sent: Tuesday, November 7, 2017 11:10 PM
>To: Shankar, Uma <uma.shankar@intel.com>
>Cc: intel-gfx@lists.freedesktop.org; Syrjala, Ville <ville.syrjala@intel.com>;
>Lankhorst, Maarten <maarten.lankhorst@intel.com>; dri-
>devel@lists.freedesktop.org
>Subject: Re: [RFC 2/7] drm: Add Plane CTM property
>
>Hi Uma,
>
>On Tue, Nov 07, 2017 at 05:36:26PM +0530, Uma Shankar wrote:
>>Add a blob property for plane CSC usage.
>>
>>v2: Rebase
>>
>>Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>>---
>> drivers/gpu/drm/drm_atomic.c        |   10 ++++++++++
>> drivers/gpu/drm/drm_atomic_helper.c |    3 +++
>> drivers/gpu/drm/drm_mode_config.c   |    7 +++++++
>> include/drm/drm_mode_config.h       |    6 ++++++
>> include/drm/drm_plane.h             |    8 ++++++++
>> 5 files changed, 34 insertions(+)
>>
>>diff --git a/drivers/gpu/drm/drm_atomic.c
>>b/drivers/gpu/drm/drm_atomic.c index 30853c7..45aede5 100644
>>--- a/drivers/gpu/drm/drm_atomic.c
>>+++ b/drivers/gpu/drm/drm_atomic.c
>>@@ -766,6 +766,14 @@ static int drm_atomic_plane_set_property(struct
>drm_plane *plane,
>> 					val, -1, &replaced);
>> 		state->color_mgmt_changed |= replaced;
>> 		return ret;
>>+	} else if (property == config->plane_ctm_property) {
>>+		ret = drm_atomic_replace_property_blob_from_id(dev,
>>+					&state->ctm,
>>+					val,
>>+					sizeof(struct drm_color_ctm),
>>+					&replaced);
>>+		state->color_mgmt_changed |= replaced;
>>+		return ret;
>> 	} else {
>> 		return -EINVAL;
>> 	}
>>@@ -827,6 +835,8 @@ static int drm_atomic_plane_set_property(struct
>drm_plane *plane,
>> 	} else if (property == config->plane_degamma_lut_property) {
>> 		*val = (state->degamma_lut) ?
>> 			state->degamma_lut->base.id : 0;
>>+	} else if (property == config->plane_ctm_property) {
>>+		*val = (state->ctm) ? state->ctm->base.id : 0;
>> 	} else {
>> 		return -EINVAL;
>> 	}
>>diff --git a/drivers/gpu/drm/drm_atomic_helper.c
>>b/drivers/gpu/drm/drm_atomic_helper.c
>>index ba924cf..d3154e0 100644
>>--- a/drivers/gpu/drm/drm_atomic_helper.c
>>+++ b/drivers/gpu/drm/drm_atomic_helper.c
>>@@ -3398,6 +3398,8 @@ void
>>__drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
>>
>> 	if (state->degamma_lut)
>> 		drm_property_blob_get(state->degamma_lut);
>>+	if (state->ctm)
>>+		drm_property_blob_get(state->ctm);
>> 	state->color_mgmt_changed = false;
>> }
>> EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state);
>>@@ -3445,6 +3447,7 @@ void
>__drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)
>> 		drm_crtc_commit_put(state->commit);
>>
>> 	drm_property_blob_put(state->degamma_lut);
>>+	drm_property_blob_put(state->ctm);
>> }
>> EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state);
>>
>>diff --git a/drivers/gpu/drm/drm_mode_config.c
>>b/drivers/gpu/drm/drm_mode_config.c
>>index 118f6ac..bccc70e 100644
>>--- a/drivers/gpu/drm/drm_mode_config.c
>>+++ b/drivers/gpu/drm/drm_mode_config.c
>>@@ -362,6 +362,13 @@ static int
>drm_mode_create_standard_properties(struct drm_device *dev)
>> 		return -ENOMEM;
>> 	dev->mode_config.plane_degamma_lut_size_property = prop;
>>
>>+	prop = drm_property_create(dev,
>>+			DRM_MODE_PROP_BLOB,
>>+			"PLANE_CTM", 0);
>
>I do wonder if "PLANE_" is really needed here, as the property will only ever be
>found on a plane (same would apply to all three property names).

This is just to explicitly separate out the names from the crtc (pipe) properties. 
(Similar properties exist for pipe already). It will create confusion, hence explicitly called
them out appending with a  "PLANE" prefix.

>
>>+	if (!prop)
>>+		return -ENOMEM;
>>+	dev->mode_config.plane_ctm_property = prop;
>>+
>> 	return 0;
>> }
>>
>>diff --git a/include/drm/drm_mode_config.h
>>b/include/drm/drm_mode_config.h index 6ee2df6..3bf7fc6 100644
>>--- a/include/drm/drm_mode_config.h
>>+++ b/include/drm/drm_mode_config.h
>>@@ -727,6 +727,12 @@ struct drm_mode_config {
>> 	 * size of the degamma LUT as supported by the driver (read-only).
>> 	 */
>> 	struct drm_property *plane_degamma_lut_size_property;
>>+	/**
>>+	 * @plane_ctm_property: Optional CRTC property to set the
>>+	 * matrix used to convert colors after the lookup in the
>>+	 * degamma LUT.
>>+	 */
>
>Copy-paste error - should be "Optional plane property"

Yeah indeed, thanks for spotting it. Will fix in next set.

Regards,
Uma Shankar

>
>Thanks,
>-Brian
>
>>+	struct drm_property *plane_ctm_property;
>>
>> 	/**
>> 	 * @suggested_x_property: Optional connector property with a hint for
>>diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
>>d112c50..7fcc51e 100644
>>--- a/include/drm/drm_plane.h
>>+++ b/include/drm/drm_plane.h
>>@@ -132,6 +132,14 @@ struct drm_plane_state {
>> 	struct drm_property_blob *degamma_lut;
>>
>> 	/**
>>+	 * @ctm:
>>+	 *
>>+	 * Color transformation matrix. See drm_plane_enable_color_mgmt().
>The
>>+	 * blob (if not NULL) is a &struct drm_color_ctm.
>>+	 */
>>+	struct drm_property_blob *ctm;
>>+
>>+	/**
>> 	 * @commit: Tracks the pending commit to prevent use-after-free
>conditions,
>> 	 * and for async plane updates.
>> 	 *
>>--
>>1.7.9.5
>>
>>_______________________________________________
>>dri-devel mailing list
>>dri-devel@lists.freedesktop.org
>>https://lists.freedesktop.org/mailman/listinfo/dri-devel
>_______________________________________________
>dri-devel mailing list
>dri-devel@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✓ Fi.CI.BAT: success for Add Plane Color Properties (rev2)
  2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
                   ` (9 preceding siblings ...)
  2017-11-07 16:13 ` [Intel-gfx] [PATCH 0/7] Add Plane Color Properties Daniel Stone
@ 2017-11-08 12:27 ` Patchwork
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2017-11-08 12:27 UTC (permalink / raw)
  To: Shankar, Uma; +Cc: intel-gfx

== Series Details ==

Series: Add Plane Color Properties (rev2)
URL   : https://patchwork.freedesktop.org/series/30875/
State : success

== Summary ==

Series 30875v2 Add Plane Color Properties
https://patchwork.freedesktop.org/api/1.0/series/30875/revisions/2/mbox/

Test chamelium:
        Subgroup dp-crc-fast:
                pass       -> FAIL       (fi-kbl-7500u) fdo#102514
Test core_auth:
        Subgroup basic-auth:
                dmesg-warn -> PASS       (fi-bsw-n3050) fdo#103479 +1
Test gem_sync:
        Subgroup basic-store-all:
                fail       -> PASS       (fi-ivb-3520m) fdo#100007
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-b:
                pass       -> FAIL       (fi-skl-6700k) fdo#103191

fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#103479 https://bugs.freedesktop.org/show_bug.cgi?id=103479
fdo#100007 https://bugs.freedesktop.org/show_bug.cgi?id=100007
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:444s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:457s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:379s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:538s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:277s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:504s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:503s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:506s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:497s
fi-cfl-s         total:289  pass:254  dwarn:3   dfail:0   fail:0   skip:32  time:559s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:425s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:263s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:595s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:433s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:429s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:429s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:488s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:462s
fi-kbl-7500u     total:289  pass:263  dwarn:1   dfail:0   fail:1   skip:24  time:486s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:580s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:483s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:587s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:573s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:454s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:600s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:649s
fi-skl-6700k     total:289  pass:264  dwarn:0   dfail:0   fail:1   skip:24  time:524s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:502s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:463s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:572s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:422s
Blacklisted hosts:
fi-glk-dsi       total:289  pass:239  dwarn:1   dfail:4   fail:0   skip:45  time:473s

b911f67a17e5eef16d49a51b83f7da12666e3be6 drm-tip: 2017y-11m-07d-11h-11m-37s UTC integration manifest
9bc7cd3fed32 drm/i915: Load plane color luts from atomic flip
885a07d97e61 drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms
81e35d5d8e56 drm/i915: Enable plane color features
86eb07be510e drm: Define helper function for plane color enabling
bb9318342473 drm: Add Plane Gamma properties
ad5a351603cf drm: Add Plane CTM property
120c35761405 drm: Add Plane Degamma properties

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6988/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [RFC 1/7] drm: Add Plane Degamma properties
  2017-11-07 18:09     ` Brian Starkey
@ 2017-11-09 12:55       ` Shankar, Uma
  0 siblings, 0 replies; 20+ messages in thread
From: Shankar, Uma @ 2017-11-09 12:55 UTC (permalink / raw)
  To: Brian Starkey; +Cc: intel-gfx, Syrjala, Ville, dri-devel, Lankhorst, Maarten



>-----Original Message-----
>From: Brian Starkey [mailto:brian.starkey@arm.com]
>Sent: Tuesday, November 7, 2017 11:40 PM
>To: Shankar, Uma <uma.shankar@intel.com>
>Cc: intel-gfx@lists.freedesktop.org; Syrjala, Ville <ville.syrjala@intel.com>;
>Lankhorst, Maarten <maarten.lankhorst@intel.com>; dri-
>devel@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [RFC 1/7] drm: Add Plane Degamma properties
>
>On Tue, Nov 07, 2017 at 05:49:56PM +0000, Brian Starkey wrote:
>>
>>In one of the previous discussions[1] related to per-plane color
>>management, Lionel suggested that the 16-bit color lut entries weren't
>>enough when considering HDR.
>>
>>It might be worth creating a new gamma lut format with 32-bit entries
>>for these new properties, as HDR is very much a real rather than
>>hypothetical concern these days.
>>
>>Thanks,
>>-Brian
>
>Sorry, failed to paste the link:
>
>[1] https://patchwork.kernel.org/patch/9546905/

Thanks for the input Brian and sharing the link with earlier discussions around this.
I will try to create a separate LUT structure with 32 bit entries which gets used for plane color
features. Not sure what to do for pipe level color since we already use u16 fields. May be the same
color_lut structure (we can call it color_lut2)  can be used for high precision use cases like HDR.

Regards,
Uma Shankar


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 0/7] Add Plane Color Properties
  2017-11-07 16:13 ` [Intel-gfx] [PATCH 0/7] Add Plane Color Properties Daniel Stone
@ 2017-11-10  8:37   ` Shankar, Uma
  2017-11-13 10:30     ` [Intel-gfx] " Daniel Stone
  0 siblings, 1 reply; 20+ messages in thread
From: Shankar, Uma @ 2017-11-10  8:37 UTC (permalink / raw)
  To: Daniel Stone; +Cc: intel-gfx, Syrjala, Ville, Lankhorst, Maarten, dri-devel



>-----Original Message-----
>From: Daniel Stone [mailto:daniel@fooishbar.org]
>Sent: Tuesday, November 7, 2017 9:44 PM
>To: Shankar, Uma <uma.shankar@intel.com>
>Cc: intel-gfx <intel-gfx@lists.freedesktop.org>; dri-devel <dri-
>devel@lists.freedesktop.org>; Syrjala, Ville <ville.syrjala@intel.com>; Lankhorst,
>Maarten <maarten.lankhorst@intel.com>
>Subject: Re: [Intel-gfx] [PATCH 0/7] Add Plane Color Properties
>
>Hi Uma,
>
>On 7 November 2017 at 12:06, Uma Shankar <uma.shankar@intel.com> wrote:
>> This patch series adds properties for plane color features. It adds
>> properties for degamma used to linearize data, CSC used for gamut
>> conversion, and gamma used to again non-linearize data as per panel
>> supported color space. These can be utilize by user space to convert
>> planes from one format to another, one color space to another etc.
>>
>> Usersapce can take smart blending decisions and utilize these hardware
>> supported plane color features to get accurate color profile. The same
>> can help in consistent color quality from source to panel taking
>> advantage of advanced color features in hardware.
>>
>> These patches just add the property interfaces and enable helper functions.
>
>This is missing documentation on how plane colour management interacts with
>CRTC colour management. Is it a step before CRTC colour management is
>applied, or does it bypass CRTC colour management, or ... ?
>

We can have color correction at 2 places in the Display hardware pipeline
1. At plane level (before blending)
2. At pipe level (after blending)

Both can be used and function independently of each other. Typical use case can be:

2 Layers planes/overlays with different color space and formats. These can be converted to one
common color space using the plane level color correction, then blended together. If needed 
pipe color correction can be applied on the blended output (based on use case and scenarios)

Regards,
Uma Shankar


>Cheers,
>Daniel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [PATCH 0/7] Add Plane Color Properties
  2017-11-10  8:37   ` Shankar, Uma
@ 2017-11-13 10:30     ` Daniel Stone
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Stone @ 2017-11-13 10:30 UTC (permalink / raw)
  To: Shankar, Uma; +Cc: intel-gfx, Syrjala, Ville, Lankhorst, Maarten, dri-devel

Hi Uma,

On 10 November 2017 at 08:37, Shankar, Uma <uma.shankar@intel.com> wrote:
>>This is missing documentation on how plane colour management interacts with
>>CRTC colour management. Is it a step before CRTC colour management is
>>applied, or does it bypass CRTC colour management, or ... ?
>>
>
> We can have color correction at 2 places in the Display hardware pipeline
> 1. At plane level (before blending)
> 2. At pipe level (after blending)
>
> Both can be used and function independently of each other. Typical use case can be:
>
> 2 Layers planes/overlays with different color space and formats. These can be converted to one
> common color space using the plane level color correction, then blended together. If needed
> pipe color correction can be applied on the blended output (based on use case and scenarios)

This is roughly what I'd expected, but I don't believe the same to be
true of all hardware, and it would certainly need to be documented.
Thanks for the explanation!

Cheers,
Daniel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-11-13 10:30 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-07 12:06 [PATCH 0/7] Add Plane Color Properties Uma Shankar
2017-11-07 12:06 ` [RFC 1/7] drm: Add Plane Degamma properties Uma Shankar
2017-11-07 15:43   ` [Intel-gfx] " Emil Velikov
2017-11-07 17:49   ` Brian Starkey
2017-11-07 18:09     ` Brian Starkey
2017-11-09 12:55       ` Shankar, Uma
2017-11-07 12:06 ` [RFC 2/7] drm: Add Plane CTM property Uma Shankar
2017-11-07 17:39   ` Brian Starkey
2017-11-08  9:08     ` Shankar, Uma
2017-11-07 12:06 ` [RFC 3/7] drm: Add Plane Gamma properties Uma Shankar
2017-11-07 12:06 ` [RFC 4/7] drm: Define helper function for plane color enabling Uma Shankar
2017-11-07 12:06 ` [RFC 5/7] drm/i915: Enable plane color features Uma Shankar
2017-11-07 12:06 ` [RFC 6/7] drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms Uma Shankar
2017-11-07 12:06 ` [RFC 7/7] drm/i915: Load plane color luts from atomic flip Uma Shankar
2017-11-07 12:09 ` ✗ Fi.CI.BAT: failure for Add Plane Color Properties (rev2) Patchwork
2017-11-07 13:02 ` Patchwork
2017-11-07 16:13 ` [Intel-gfx] [PATCH 0/7] Add Plane Color Properties Daniel Stone
2017-11-10  8:37   ` Shankar, Uma
2017-11-13 10:30     ` [Intel-gfx] " Daniel Stone
2017-11-08 12:27 ` ✓ Fi.CI.BAT: success for Add Plane Color Properties (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.