From: Shashank Sharma <shashank.sharma@intel.com>
To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
emil.l.velikov@gmail.com, matthew.d.roper@intel.com,
robert.bradford@intel.com, jim.bish@intel.com
Cc: annie.j.matheson@intel.com, avinash.reddy.palleti@intel.com,
indranil.mukherjee@intel.com, kausalmalladi@gmail.com,
kiran.s.kumar@intel.com, daniel.vetter@intel.com,
=gary.k.smith@intel.com
Subject: [PATCH v5 04/22] drm: Add set property support for color manager
Date: Tue, 13 Oct 2015 18:09:39 +0530 [thread overview]
Message-ID: <1444739997-24831-5-git-send-email-shashank.sharma@intel.com> (raw)
In-Reply-To: <1444739997-24831-1-git-send-email-shashank.sharma@intel.com>
As per DRM color manager design, if a userspace wants to set a correction
blob, it prepares it and sends the blob_id to kernel via set_property
call. DRM framework takes this blob_id, gets the blob, and saves it
in the CRTC state, so that, during the atomic_commit, the color correction
values from the blob can referred and applied on display controller
registers.
This patch adds this set_property support for color correction blobs
in drm framework.
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
Signed-off-by: Kausal malladi <kausalmalladi@gmail.com>
---
drivers/gpu/drm/drm_atomic.c | 53 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 51 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 7bb3845..12a34e9 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -390,6 +390,38 @@ int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state,
EXPORT_SYMBOL(drm_atomic_set_mode_prop_for_crtc);
/**
+ * drm_atomic_crtc_set_blob - find and set a blob
+ * @state_blob: reference pointer to the color blob in the crtc_state
+ * @blob_id: blob_id coming from set_property() call
+ *
+ * Set a color correction blob (originating from a set blob property) on the
+ * desired CRTC state. This function will take reference of the blob property
+ * in the CRTC state, finds the blob based on blob_id (which comes from
+ * set_property call) and set the blob at the proper place.
+ *
+ * RETURNS:
+ * Zero on success, error code on failure.
+ */
+static int drm_atomic_crtc_set_blob(struct drm_device *dev,
+ struct drm_property_blob **state_blob, uint32_t blob_id)
+{
+ struct drm_property_blob *blob;
+
+ blob = drm_property_lookup_blob(dev, blob_id);
+ if (!blob) {
+ DRM_DEBUG_KMS("Invalid Blob ID\n");
+ return -EINVAL;
+ }
+
+ if (*state_blob)
+ drm_property_unreference_blob(*state_blob);
+
+ /* Attach the blob to be committed in state */
+ *state_blob = blob;
+ return 0;
+}
+
+/**
* drm_atomic_crtc_set_property - set property on CRTC
* @crtc: the drm CRTC to set a property on
* @state: the state object to update with the new property value
@@ -422,8 +454,25 @@ int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
if (mode)
drm_property_unreference_blob(mode);
return ret;
- }
- else if (crtc->funcs->atomic_set_property)
+ } else if (property == config->cm_palette_after_ctm_property) {
+ ret = drm_atomic_crtc_set_blob(dev,
+ &state->palette_after_ctm_blob, val);
+ if (ret)
+ DRM_ERROR("Failed to load blob palette_after_ctm\n");
+ return ret;
+ } else if (property == config->cm_palette_before_ctm_property) {
+ ret = drm_atomic_crtc_set_blob(dev,
+ &state->palette_before_ctm_blob, val);
+ if (ret)
+ DRM_ERROR("Failed to load blob palette_before_ctm\n");
+ return ret;
+ } else if (property == config->cm_ctm_property) {
+ ret = drm_atomic_crtc_set_blob(dev,
+ &state->ctm_blob, val);
+ if (ret)
+ DRM_ERROR("Failed to load blob ctm\n");
+ return ret;
+ } else if (crtc->funcs->atomic_set_property)
return crtc->funcs->atomic_set_property(crtc, state, property, val);
else
return -EINVAL;
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-10-13 12:39 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-13 12:39 [PATCH v5 00/22] Color Management for DRM Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 01/22] drm: Create Color Management DRM properties Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 02/22] drm: Create Color Management query properties Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 03/22] drm: Add color correction blobs in CRTC state Shashank Sharma
2015-10-13 12:39 ` Shashank Sharma [this message]
2015-10-13 12:39 ` [PATCH v5 05/22] drm: Add get property support for color manager Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 06/22] drm: Add drm structures for palette color property Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 07/22] drm: Add structure to set/get a CTM " Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 08/22] drm/i915: Add set property interface for CRTC Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 09/22] drm/i915: Create color management files Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 10/22] drm/i915: Register color correction capabilities Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 11/22] drm/i915: CHV: Load gamma color correction values Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 12/22] drm/i915: CHV: Load degamma " Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 13/22] drm/i915: CHV: Pipe level Gamma correction Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 14/22] drm/i915: CHV: Pipe level degamma correction Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 15/22] drm/i915: CHV: Pipe level CSC correction Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 16/22] drm/i915: Commit color correction to CRTC Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 17/22] drm/i915: Attach color properties " Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 18/22] drm/i915: BDW: Load gamma correction values Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 19/22] drm/i915: BDW: Pipe level Gamma correction Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 20/22] drm/i915: BDW: Load degamma correction values Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 21/22] drm/i915: BDW: Pipe level degamma correction Shashank Sharma
2015-10-13 12:39 ` [PATCH v5 22/22] drm/i915: BDW: Pipe level CSC correction Shashank Sharma
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=1444739997-24831-5-git-send-email-shashank.sharma@intel.com \
--to=shashank.sharma@intel.com \
--cc==gary.k.smith@intel.com \
--cc=annie.j.matheson@intel.com \
--cc=avinash.reddy.palleti@intel.com \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=indranil.mukherjee@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jim.bish@intel.com \
--cc=kausalmalladi@gmail.com \
--cc=kiran.s.kumar@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=robert.bradford@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox