All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.