From: Daniel Vetter <daniel@ffwll.ch>
To: Shashank Sharma <shashank.sharma@intel.com>
Cc: annie.j.matheson@intel.com, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, kausalmalladi@gmail.com,
daniel.vetter@intel.com
Subject: Re: [PATCH 09/23] drm/i915: Register pipe color capabilities
Date: Tue, 22 Sep 2015 15:24:09 +0200 [thread overview]
Message-ID: <20150922132409.GS3383@phenom.ffwll.local> (raw)
In-Reply-To: <1442425040-32185-10-git-send-email-shashank.sharma@intel.com>
On Wed, Sep 16, 2015 at 11:07:06PM +0530, Shashank Sharma wrote:
> DRM color manager contains these color properties:
>
> 1. "crtc_palette_capabilities_property": to allow a
> core driver to load and showcase its color correction
> capabilities to user space.
> 2. "ctm": Color transformation matrix property, where a
> color transformation matrix of 9 correction values gets
> applied as correction.
> 3. "palette_before_ctm": for corrections which get applied
> beore color transformation matrix correction.
> 4. "palette_after_ctm": for corrections which get applied
> after color transformation matrix correction.
>
> Intel color manager registers:
> 1. Gamma correction property as "palette_after_ctm" property
> 2. Degamma correction capability as "palette_bafore_ctm" property
> capability as "palette_after_ctm" DRM color property hook.
> 3. CSC as "ctm" property.
>
> This patch does the following:
> 1. Add a function which loads the platform's color correction
> capabilities in the cm_crtc_palette_capabilities_property structure.
> 2. Attaches the cm_crtc_palette_capabilities_property to every CRTC
> getting initiaized.
> 3. Adds two new parameters "num_samples_after_ctm" and
> "num_samples_before_ctm" in intel_device_info as gamma and
> degamma coefficients vary per platform basis.
>
> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 ++
> drivers/gpu/drm/i915/intel_color_manager.c | 45 ++++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/intel_color_manager.h | 2 ++
> 3 files changed, 49 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 3bf8a9b..22de2cb 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -798,6 +798,8 @@ struct intel_device_info {
> u8 num_sprites[I915_MAX_PIPES];
> u8 gen;
> u8 ring_mask; /* Rings supported by the HW */
> + u16 num_samples_after_ctm;
> + u16 num_samples_before_ctm;
> DEV_INFO_FOR_EACH_FLAG(DEFINE_FLAG, SEP_SEMICOLON);
> /* Register offsets for the various display pipes and transcoders */
> int pipe_offsets[I915_MAX_TRANSCODERS];
> diff --git a/drivers/gpu/drm/i915/intel_color_manager.c b/drivers/gpu/drm/i915/intel_color_manager.c
> index 7357d99..77f58f2 100644
> --- a/drivers/gpu/drm/i915/intel_color_manager.c
> +++ b/drivers/gpu/drm/i915/intel_color_manager.c
> @@ -27,7 +27,52 @@
>
> #include "intel_color_manager.h"
>
> +int get_pipe_capabilities(struct drm_device *dev,
> + struct drm_palette_caps *palette_caps, struct drm_crtc *crtc)
> +{
> + struct drm_property_blob *blob;
> +
> + /*
> + * This function loads best capability for gamma correction
> + * For example:
> + * CHV best Gamma correction (CGM unit, 10 bit)
> + * has 257 entries, best degamma is 65 entries
> + */
> + palette_caps->version = COLOR_STRUCT_VERSION;
> + palette_caps->num_samples_after_ctm =
> + INTEL_INFO(dev)->num_samples_after_ctm;
> + palette_caps->num_samples_before_ctm =
> + INTEL_INFO(dev)->num_samples_before_ctm;
> + blob = drm_property_create_blob(dev, sizeof(struct drm_palette_caps),
> + (const void *) palette_caps);
> + if (IS_ERR_OR_NULL(blob)) {
> + DRM_ERROR("Create blob for capabilities failed\n");
> + return PTR_ERR(blob);
> + }
> +
> + return blob->base.id;
> +}
> +
> void intel_attach_color_properties_to_crtc(struct drm_device *dev,
> struct drm_mode_object *mode_obj)
> {
> + struct drm_mode_config *config = &dev->mode_config;
> + struct drm_palette_caps *palette_caps;
> + struct drm_crtc *crtc;
> + int capabilities_blob_id;
> +
> + crtc = obj_to_crtc(mode_obj);
> + palette_caps = kzalloc(sizeof(struct drm_palette_caps),
> + GFP_KERNEL);
> + capabilities_blob_id = get_pipe_capabilities(dev,
> + palette_caps, crtc);
> +
> + if (config->cm_crtc_palette_capabilities_property) {
> + drm_object_attach_property(mode_obj,
> + config->cm_crtc_palette_capabilities_property,
> + capabilities_blob_id);
I didn't find any code to attach the before/after_ctm gamma properties and
the ctm property. Also I think a small helper would be really nice here in
the drm core:
drm_crtc_attach_cc_properties(struct drm_crtc *crtc,
int gamma_before_ctm,
bool ctm,
int gamm_after_ctm)
And then that directly constructs the palette caps from the given values
(if they're non-0) and also attaches the properties to the crtc (if
they're non-0 for gamma, treu for the ctm).
If that attach_property code really isn't there I wonder a bit how this
all works, we /should/ be filtering out properties which aren't attached
to the object.
-Daniel
> + DRM_DEBUG_DRIVER("Capabilities attached to CRTC\n");
> + }
> +
> + kfree(palette_caps);
> }
> diff --git a/drivers/gpu/drm/i915/intel_color_manager.h b/drivers/gpu/drm/i915/intel_color_manager.h
> index 04c921d..1a42244 100644
> --- a/drivers/gpu/drm/i915/intel_color_manager.h
> +++ b/drivers/gpu/drm/i915/intel_color_manager.h
> @@ -27,3 +27,5 @@
> #include <drm/drmP.h>
> #include <drm/drm_crtc_helper.h>
> #include "i915_drv.h"
> +
> +#define COLOR_STRUCT_VERSION 1
> --
> 1.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-09-22 13:24 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-16 17:36 [PATCH 00/23] Color Management for DRM Shashank Sharma
2015-09-16 17:36 ` [PATCH 01/23] drm: Create Color Management DRM properties Shashank Sharma
2015-09-16 17:51 ` Matt Roper
2015-09-23 8:51 ` Sharma, Shashank
2015-09-16 17:36 ` [PATCH 02/23] drm: Add structure for querying palette color capabilities Shashank Sharma
2015-09-16 17:51 ` Matt Roper
2015-09-22 13:02 ` Daniel Vetter
2015-09-23 8:10 ` Sharma, Shashank
2015-09-23 9:47 ` Smith, Gary K
2015-09-23 11:57 ` Sharma, Shashank
2015-09-23 13:26 ` Daniel Vetter
2015-09-16 17:37 ` [PATCH 03/23] drm: Add color correction blobs in CRTC state Shashank Sharma
2015-09-16 17:37 ` [PATCH 04/23] drm: Add drm structures for palette color property Shashank Sharma
2015-09-21 16:46 ` Ville Syrjälä
2015-09-22 7:57 ` Sharma, Shashank
2015-09-22 13:08 ` Daniel Vetter
2015-09-22 13:53 ` Emil Velikov
2015-09-22 15:00 ` Ville Syrjälä
2015-09-22 16:51 ` Emil Velikov
2015-09-23 8:15 ` Sharma, Shashank
2015-09-23 12:49 ` Daniel Vetter
2015-09-23 12:59 ` Sharma, Shashank
2015-09-23 13:30 ` Daniel Vetter
2015-09-16 17:37 ` [PATCH 05/23] drm: Add structure to set/get a CTM " Shashank Sharma
2015-09-22 13:08 ` Daniel Vetter
2015-09-23 8:16 ` Sharma, Shashank
2015-09-22 15:22 ` Ville Syrjälä
2015-09-16 17:37 ` [PATCH 06/23] drm/i915: Add atomic set property interface for CRTC Shashank Sharma
2015-09-16 17:37 ` [PATCH 07/23] drm/i915: Add atomic get " Shashank Sharma
2015-09-16 17:37 ` [PATCH 08/23] drm/i915: Create color management files Shashank Sharma
2015-09-16 17:37 ` [PATCH 09/23] drm/i915: Register pipe color capabilities Shashank Sharma
2015-09-22 13:24 ` Daniel Vetter [this message]
2015-09-23 8:35 ` Sharma, Shashank
2015-09-23 12:52 ` [Intel-gfx] " Daniel Vetter
2015-09-16 17:37 ` [PATCH 10/23] drm/i915: Add gamma correction handlers Shashank Sharma
2015-09-22 13:15 ` [Intel-gfx] " Daniel Vetter
2015-09-22 13:19 ` Daniel Vetter
2015-09-23 8:22 ` [Intel-gfx] " Sharma, Shashank
2015-09-23 13:02 ` Daniel Vetter
2015-09-26 15:48 ` Sharma, Shashank
2015-09-28 6:43 ` [Intel-gfx] " Daniel Vetter
2015-09-28 8:19 ` Sharma, Shashank
2015-09-28 21:42 ` Matt Roper
2015-09-29 4:29 ` Sharma, Shashank
2015-09-29 4:29 ` Matheson, Annie J
2015-09-16 17:37 ` [PATCH 11/23] drm/i915: Add pipe deGamma " Shashank Sharma
2015-09-16 17:37 ` [PATCH 12/23] drm/i915: Add pipe CSC " Shashank Sharma
2015-09-16 17:37 ` [PATCH 13/23] drm/i915: CHV: Load gamma color correction values Shashank Sharma
2015-09-16 17:37 ` [PATCH 14/23] drm/i915: CHV: Load degamma " Shashank Sharma
2015-09-16 17:37 ` [PATCH 15/23] drm/i915: CHV: Pipe level Gamma correction Shashank Sharma
2015-09-16 17:37 ` [PATCH 16/23] drm/i915: CHV: Pipe level degamma correction Shashank Sharma
2015-09-16 17:37 ` [PATCH 17/23] drm/i915: CHV: Pipe level CSC correction Shashank Sharma
2015-09-16 17:37 ` [PATCH 18/23] drm/i915: Commit color changes to CRTC Shashank Sharma
2015-09-16 17:37 ` [PATCH 19/23] drm/i915: Attach color properties " Shashank Sharma
2015-09-16 17:37 ` [PATCH 20/23] drm/i915: BDW: Load gamma correction values Shashank Sharma
2015-09-16 17:37 ` [PATCH 21/23] drm/i915: BDW: Pipe level Gamma correction Shashank Sharma
2015-09-30 14:31 ` Rob Bradford
2015-09-30 16:25 ` Sharma, Shashank
2015-09-30 16:31 ` Matheson, Annie J
2015-09-30 17:15 ` Sharma, Shashank
2015-09-30 16:44 ` Ville Syrjälä
2015-09-16 17:37 ` [PATCH 22/23] drm/i915: BDW: Load degamma correction values Shashank Sharma
2015-09-16 17:37 ` [PATCH 23/23] drm/i915: BDW: Pipe level degamma correction Shashank Sharma
2015-09-22 13:27 ` [Intel-gfx] [PATCH 00/23] Color Management for DRM Daniel Vetter
2015-09-23 8:38 ` Sharma, Shashank
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150922132409.GS3383@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=annie.j.matheson@intel.com \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kausalmalladi@gmail.com \
--cc=shashank.sharma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.