Commit 2e38178e authored by Daniel Vetter's avatar Daniel Vetter

drm/doc: Interlink color manager docs better

Motivated by a request from Eric.

v2: Take in suggestions from Lionel

Cc: Eric Anholt <eric@anholt.net>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170412152006.12233-1-daniel.vetter@ffwll.ch
parent ccb92b94
...@@ -3517,7 +3517,8 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_destroy_state); ...@@ -3517,7 +3517,8 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_destroy_state);
* *
* Implements support for legacy gamma correction table for drivers * Implements support for legacy gamma correction table for drivers
* that support color management through the DEGAMMA_LUT/GAMMA_LUT * that support color management through the DEGAMMA_LUT/GAMMA_LUT
* properties. * properties. See drm_crtc_enable_color_mgmt() and the containing chapter for
* how the atomic color management and gamma tables work.
*/ */
int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc, int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
u16 *red, u16 *green, u16 *blue, u16 *red, u16 *green, u16 *blue,
......
...@@ -43,7 +43,8 @@ ...@@ -43,7 +43,8 @@
* *
* Setting this to NULL (blob property value set to 0) means a * Setting this to NULL (blob property value set to 0) means a
* linear/pass-thru gamma table should be used. This is generally the * linear/pass-thru gamma table should be used. This is generally the
* driver boot-up state too. * driver boot-up state too. Drivers can access this blob through
* &drm_crtc_state.degamma_lut.
* *
* “DEGAMMA_LUT_SIZE”: * “DEGAMMA_LUT_SIZE”:
* Unsinged range property to give the size of the lookup table to be set * Unsinged range property to give the size of the lookup table to be set
...@@ -60,7 +61,8 @@ ...@@ -60,7 +61,8 @@
* *
* Setting this to NULL (blob property value set to 0) means a * Setting this to NULL (blob property value set to 0) means a
* unit/pass-thru matrix should be used. This is generally the driver * unit/pass-thru matrix should be used. This is generally the driver
* boot-up state too. * boot-up state too. Drivers can access the blob for the color conversion
* matrix through &drm_crtc_state.ctm.
* *
* “GAMMA_LUT”: * “GAMMA_LUT”:
* Blob property to set the gamma lookup table (LUT) mapping pixel data * Blob property to set the gamma lookup table (LUT) mapping pixel data
...@@ -72,7 +74,8 @@ ...@@ -72,7 +74,8 @@
* *
* Setting this to NULL (blob property value set to 0) means a * Setting this to NULL (blob property value set to 0) means a
* linear/pass-thru gamma table should be used. This is generally the * linear/pass-thru gamma table should be used. This is generally the
* driver boot-up state too. * driver boot-up state too. Drivers can access this blob through
* &drm_crtc_state.gamma_lut.
* *
* “GAMMA_LUT_SIZE”: * “GAMMA_LUT_SIZE”:
* Unsigned range property to give the size of the lookup table to be set * Unsigned range property to give the size of the lookup table to be set
......
...@@ -93,11 +93,6 @@ struct drm_plane_helper_funcs; ...@@ -93,11 +93,6 @@ struct drm_plane_helper_funcs;
* @adjusted_mode: for use by helpers and drivers to compute adjusted mode timings * @adjusted_mode: for use by helpers and drivers to compute adjusted mode timings
* @mode: current mode timings * @mode: current mode timings
* @mode_blob: &drm_property_blob for @mode * @mode_blob: &drm_property_blob for @mode
* @degamma_lut: Lookup table for converting framebuffer pixel data
* before apply the conversion matrix
* @ctm: Transformation matrix
* @gamma_lut: Lookup table for converting pixel data after the
* conversion matrix
* @state: backpointer to global drm_atomic_state * @state: backpointer to global drm_atomic_state
* *
* Note that the distinction between @enable and @active is rather subtile: * Note that the distinction between @enable and @active is rather subtile:
...@@ -144,9 +139,30 @@ struct drm_crtc_state { ...@@ -144,9 +139,30 @@ struct drm_crtc_state {
/* blob property to expose current mode to atomic userspace */ /* blob property to expose current mode to atomic userspace */
struct drm_property_blob *mode_blob; struct drm_property_blob *mode_blob;
/* blob property to expose color management to userspace */ /**
* @degamma_lut:
*
* Lookup table for converting framebuffer pixel data before apply the
* color conversion matrix @ctm. See drm_crtc_enable_color_mgmt(). The
* blob (if not NULL) is an array of &struct drm_color_lut.
*/
struct drm_property_blob *degamma_lut; struct drm_property_blob *degamma_lut;
/**
* @ctm:
*
* Color transformation matrix. See drm_crtc_enable_color_mgmt(). The
* blob (if not NULL) is a &struct drm_color_ctm.
*/
struct drm_property_blob *ctm; struct drm_property_blob *ctm;
/**
* @gamma_lut:
*
* Lookup table for converting pixel data after the color conversion
* matrix @ctm. See drm_crtc_enable_color_mgmt(). The blob (if not
* NULL) is an array of &struct drm_color_lut.
*/
struct drm_property_blob *gamma_lut; struct drm_property_blob *gamma_lut;
/** /**
...@@ -313,6 +329,12 @@ struct drm_crtc_funcs { ...@@ -313,6 +329,12 @@ struct drm_crtc_funcs {
* *
* This callback is optional. * This callback is optional.
* *
* Atomic drivers who want to support gamma tables should implement the
* atomic color management support, enabled by calling
* drm_crtc_enable_color_mgmt(), which then supports the legacy gamma
* interface through the drm_atomic_helper_legacy_gamma_set()
* compatibility implementation.
*
* NOTE: * NOTE:
* *
* Drivers that support gamma tables and also fbdev emulation through * Drivers that support gamma tables and also fbdev emulation through
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment