On Wed, Sep 16, 2015 at 11:06:58PM +0530, Shashank Sharma wrote:
From: Kausal Malladi kausalmalladi@gmail.com
Color Management is an extension to Kernel display framework. It allows abstraction of hardware color correction and enhancement capabilities by virtue of DRM properties.
This patch initializes color management framework by :
- Introducing new pointers in DRM mode_config structure to carry CTM and Palette color correction properties.
- Creating these DRM properties in DRM standard properties creation sequence.
Signed-off-by: Shashank Sharma shashank.sharma@intel.com Signed-off-by: Kausal Malladi kausalmalladi@gmail.com
We should probably update the property section of Documentation/DocBook/drm.tmpl with this patch as well to include these new properties in the table (that docbook ultimately generates documentation that looks like https://kernel.org/doc/htmldocs/drm/drm-kms-properties.html ).
One minor note: people not involved in color management probably won't immediately figure out what "CTM" stands for, so you might want to just add a comment somewhere that spells out the full "color transformation matrix" term.
Matt
drivers/gpu/drm/drm_crtc.c | 26 ++++++++++++++++++++++++++ include/drm/drm_crtc.h | 6 ++++++ 2 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 9b9c4b4..d809c67 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -1472,6 +1472,32 @@ static int drm_mode_create_standard_properties(struct drm_device *dev) return -ENOMEM; dev->mode_config.prop_mode_id = prop;
- /* Color Management properties */
- prop = drm_property_create(dev,
DRM_MODE_PROP_BLOB | DRM_MODE_PROP_IMMUTABLE,
"CRTC_PALETTE_CAPABILITIES", 0);
- if (!prop)
return -ENOMEM;
- dev->mode_config.cm_crtc_palette_capabilities_property = prop;
- prop = drm_property_create(dev,
DRM_MODE_PROP_BLOB, "PALETTE_AFTER_CTM", 0);
- if (!prop)
return -ENOMEM;
- dev->mode_config.cm_palette_after_ctm_property = prop;
- prop = drm_property_create(dev,
DRM_MODE_PROP_BLOB, "PALETTE_BEFORE_CTM", 0);
- if (!prop)
return -ENOMEM;
- dev->mode_config.cm_palette_before_ctm_property = prop;
- prop = drm_property_create(dev,
DRM_MODE_PROP_BLOB, "CTM", 0);
- if (!prop)
return -ENOMEM;
- dev->mode_config.cm_ctm_property = prop;
- return 0;
}
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index c0366e9..c35531e 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1153,6 +1153,12 @@ struct drm_mode_config { struct drm_property *suggested_x_property; struct drm_property *suggested_y_property;
- /* Color Management Properties */
- struct drm_property *cm_crtc_palette_capabilities_property;
- struct drm_property *cm_palette_before_ctm_property;
- struct drm_property *cm_palette_after_ctm_property;
- struct drm_property *cm_ctm_property;
- /* dumb ioctl parameters */ uint32_t preferred_depth, prefer_shadow;
-- 1.9.1