Message ID | 1442425040-32185-2-git-send-email-shashank.sharma@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 : > 1. Introducing new pointers in DRM mode_config structure to > carry CTM and Palette color correction properties. > 2. 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 >
Sure Matt, We are planning to add documentation for color properties, as suggested by you and Daniel. Regards Shashank -----Original Message----- From: Roper, Matthew D Sent: Wednesday, September 16, 2015 11:21 PM To: Sharma, Shashank Cc: Bish, Jim; Bradford, Robert; Smith, Gary K; dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; Vetter, Daniel; Matheson, Annie J; Mukherjee, Indranil; Palleti, Avinash Reddy; kausalmalladi@gmail.com Subject: Re: [PATCH 01/23] drm: Create Color Management DRM properties 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 : > 1. Introducing new pointers in DRM mode_config structure to > carry CTM and Palette color correction properties. > 2. 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 >
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;