mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v4] drm/color: Document CTM eqations
@ 2017-01-31 17:43 Brian Starkey
  2017-02-26 19:48 ` Daniel Vetter
  0 siblings, 1 reply; 2+ messages in thread
From: Brian Starkey @ 2017-01-31 17:43 UTC (permalink / raw)
  To: dri-devel
  Cc: linux-kernel, Jani Nikula, Sean Paul, mihail.atanassov,
	Ville Syrjälä,
	Lionel Landwerlin, Daniel Vetter

Explicitly state the expected CTM equations in the kerneldoc for the CTM
property, and the form of the matrix on struct drm_color_ctm.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Brian Starkey <brian.starkey@arm.com>
---
 drivers/gpu/drm/drm_color_mgmt.c |   13 +++++++++++++
 include/uapi/drm/drm_mode.h      |   14 +++++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c
index 789b4c65cd69..307f7b0545b6 100644
--- a/drivers/gpu/drm/drm_color_mgmt.c
+++ b/drivers/gpu/drm/drm_color_mgmt.c
@@ -62,6 +62,19 @@
  *	unit/pass-thru matrix should be used. This is generally the driver
  *	boot-up state too.
  *
+ *	The output vector is related to the input vector as below::
+ *
+ *		out[0] = matrix[0] * in[0] + matrix[1] * in[1] + matrix[2] * in[2];
+ *		out[1] = matrix[3] * in[0] + matrix[4] * in[1] + matrix[5] * in[2];
+ *		out[2] = matrix[6] * in[0] + matrix[7] * in[1] + matrix[8] * in[2];
+ *
+ *	The component order in the input/output vectors is assumed to be
+ *	{ R, G, B }.
+ *
+ *	The color-space of the input vector must not be confused with the
+ *	color-space implied by a framebuffer pixel format, which may be the same
+ *	or different.
+ *
  * “GAMMA_LUT”:
  *	Blob property to set the gamma lookup table (LUT) mapping pixel data
  *	after the transformation matrix to data sent to the connector. The
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index ce7efe2e8a5e..3f179b8867e5 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -525,7 +525,19 @@ struct drm_mode_crtc_lut {
 };
 
 struct drm_color_ctm {
-	/* Conversion matrix in S31.32 format. */
+	/*
+	 * Conversion matrix in row-major form:
+	 *
+	 * | matrix[0] matrix[1] matrix[2] |
+	 * | matrix[3] matrix[4] matrix[5] |
+	 * | matrix[6] matrix[7] matrix[8] |
+	 *
+	 * Each element is in a sign + magnitude format: S31.32, with the sign
+	 * in bit 63, and the magnitude represented as fixed-point 31.32.
+	 *
+	 * i.e. +1.25 = 0x00000001.40000000
+	 *      -1.25 = 0x80000001.40000000
+	 */
 	__s64 matrix[9];
 };
 
-- 
1.7.9.5

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

* Re: [PATCH v4] drm/color: Document CTM eqations
  2017-01-31 17:43 [PATCH v4] drm/color: Document CTM eqations Brian Starkey
@ 2017-02-26 19:48 ` Daniel Vetter
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Vetter @ 2017-02-26 19:48 UTC (permalink / raw)
  To: Brian Starkey
  Cc: dri-devel, linux-kernel, Jani Nikula, Sean Paul,
	mihail.atanassov, Ville Syrjälä,
	Lionel Landwerlin, Daniel Vetter

On Tue, Jan 31, 2017 at 05:43:48PM +0000, Brian Starkey wrote:
> Explicitly state the expected CTM equations in the kerneldoc for the CTM
> property, and the form of the matrix on struct drm_color_ctm.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Signed-off-by: Brian Starkey <brian.starkey@arm.com>

Ugh, but well that's the current uabi. Applied to drm-misc-next, thanks
for your patch. One idea below.

> ---
>  drivers/gpu/drm/drm_color_mgmt.c |   13 +++++++++++++
>  include/uapi/drm/drm_mode.h      |   14 +++++++++++++-
>  2 files changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c
> index 789b4c65cd69..307f7b0545b6 100644
> --- a/drivers/gpu/drm/drm_color_mgmt.c
> +++ b/drivers/gpu/drm/drm_color_mgmt.c
> @@ -62,6 +62,19 @@
>   *	unit/pass-thru matrix should be used. This is generally the driver
>   *	boot-up state too.
>   *
> + *	The output vector is related to the input vector as below::
> + *
> + *		out[0] = matrix[0] * in[0] + matrix[1] * in[1] + matrix[2] * in[2];
> + *		out[1] = matrix[3] * in[0] + matrix[4] * in[1] + matrix[5] * in[2];
> + *		out[2] = matrix[6] * in[0] + matrix[7] * in[1] + matrix[8] * in[2];
> + *
> + *	The component order in the input/output vectors is assumed to be
> + *	{ R, G, B }.
> + *
> + *	The color-space of the input vector must not be confused with the
> + *	color-space implied by a framebuffer pixel format, which may be the same
> + *	or different.
> + *
>   * “GAMMA_LUT”:
>   *	Blob property to set the gamma lookup table (LUT) mapping pixel data
>   *	after the transformation matrix to data sent to the connector. The
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index ce7efe2e8a5e..3f179b8867e5 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -525,7 +525,19 @@ struct drm_mode_crtc_lut {
>  };
>  
>  struct drm_color_ctm {
> -	/* Conversion matrix in S31.32 format. */
> +	/*
> +	 * Conversion matrix in row-major form:
> +	 *
> +	 * | matrix[0] matrix[1] matrix[2] |
> +	 * | matrix[3] matrix[4] matrix[5] |
> +	 * | matrix[6] matrix[7] matrix[8] |
> +	 *
> +	 * Each element is in a sign + magnitude format: S31.32, with the sign
> +	 * in bit 63, and the magnitude represented as fixed-point 31.32.
> +	 *
> +	 * i.e. +1.25 = 0x00000001.40000000
> +	 *      -1.25 = 0x80000001.40000000
> +	 */

This is great, except none of our uabi headers are part of the kernel-doc
build :( If you have time, would be real awesome to include them, and at
least give this struct here a proper kernel-doc. Then you could also
reference it in the above kerneldoc comment in drm_color_mgmt.c.

We already have a drm-uapi.rst file, adding a new section there for
userspace abi headers seems like the right place for the include stanza.

Cheers, Daniel

>  	__s64 matrix[9];
>  };
>  
> -- 
> 1.7.9.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

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

end of thread, other threads:[~2017-02-26 19:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-31 17:43 [PATCH v4] drm/color: Document CTM eqations Brian Starkey
2017-02-26 19:48 ` Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®