All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
To: "Harry Wentland" <harry.wentland@amd.com>,
	"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Chun-Kuang Hu" <chunkuang.hu@kernel.org>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Haneen Mohammed" <hamohammed.sa@gmail.com>,
	"Melissa Wen" <melissa.srw@gmail.com>
Cc: Alex Hung <alex.hung@amd.com>,
	wayland-devel@lists.freedesktop.org, leo.liu@amd.com,
	ville.syrjala@linux.intel.com, pekka.paalanen@collabora.com,
	contact@emersion.fr, mwen@igalia.com, jadahl@redhat.com,
	sebastian.wick@redhat.com, shashank.sharma@amd.com,
	agoins@nvidia.com, joshua@froggi.es, mdaenzer@redhat.com,
	aleixpol@kde.org, xaver.hugl@gmail.com, victoria@system76.com,
	uma.shankar@intel.com, quic_naseer@quicinc.com,
	quic_cbraga@quicinc.com, quic_abhinavk@quicinc.com,
	marcan@marcan.st, Liviu.Dudau@arm.com, sashamcintosh@google.com,
	chaitanya.kumar.borah@intel.com, louis.chauvet@bootlin.com,
	mcanal@igalia.com, kernel@collabora.com, daniels@collabora.com,
	leandro.ribeiro@collabora.com, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	Simona Vetter <simona.vetter@ffwll.ch>
Subject: Re: [PATCH RFC v2 06/20] drm: Introduce DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE
Date: Thu, 11 Dec 2025 12:26:29 -0300	[thread overview]
Message-ID: <c81767da-baf5-4531-abb2-c23f8005ea12@collabora.com> (raw)
In-Reply-To: <5e5017ae-b71a-4933-b248-e68d52fab7ff@amd.com>

Harry,

On 9/29/25 6:48 AM, Harry Wentland wrote:
> 
> 
> On 2025-09-17 20:43, Nícolas F. R. A. Prado wrote:
>> Introduce DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE which a DRM client
>> can set to enable the usage of post-blend color pipelines instead of the
>> now deprecated CRTC color management properties: "GAMMA_LUT",
>> "DEGAMMA_LUT" and "CTM".
>>
>> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
>> ---
>>   drivers/gpu/drm/drm_atomic_uapi.c   | 15 +++++++++++++++
>>   drivers/gpu/drm/drm_connector.c     |  1 +
>>   drivers/gpu/drm/drm_crtc_internal.h |  1 +
>>   drivers/gpu/drm/drm_ioctl.c         |  9 +++++++++
>>   drivers/gpu/drm/drm_mode_object.c   |  9 +++++++++
>>   include/drm/drm_file.h              |  7 +++++++
>>   include/uapi/drm/drm.h              | 19 +++++++++++++++++++
>>   7 files changed, 61 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/ 
>> drm_atomic_uapi.c
>> index 
>> 063c142fd9b656e228cfc660d005a3fbb4640d32..f5125fa3fa28ff2a6ff07fd7cf07d4bdf77ab738 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -452,6 +452,11 @@ static int drm_atomic_crtc_set_property(struct 
>> drm_crtc *crtc,
>>       } else if (property == config->prop_vrr_enabled) {
>>           state->vrr_enabled = val;
>>       } else if (property == config->degamma_lut_property) {
>> +        if (file_priv->post_blend_color_pipeline) {
>> +            drm_dbg_atomic(dev,
>> +                "Setting DEGAMMA_LUT CRTC property not permitted with 
>> DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE client cap\n");
>> +            return -EINVAL;
>> +        }
>>           ret = drm_property_replace_blob_from_id(dev,
>>                       &state->degamma_lut,
>>                       val,
>> @@ -460,6 +465,11 @@ static int drm_atomic_crtc_set_property(struct 
>> drm_crtc *crtc,
>>           state->color_mgmt_changed |= replaced;
>>           return ret;
>>       } else if (property == config->ctm_property) {
>> +        if (file_priv->post_blend_color_pipeline) {
>> +            drm_dbg_atomic(dev,
>> +                "Setting CTM CRTC property not permitted with 
>> DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE client cap\n");
>> +            return -EINVAL;
>> +        }
>>           ret = drm_property_replace_blob_from_id(dev,
>>                       &state->ctm,
>>                       val,
>> @@ -468,6 +478,11 @@ static int drm_atomic_crtc_set_property(struct 
>> drm_crtc *crtc,
>>           state->color_mgmt_changed |= replaced;
>>           return ret;
>>       } else if (property == config->gamma_lut_property) {
>> +        if (file_priv->post_blend_color_pipeline) {
>> +            drm_dbg_atomic(dev,
>> +                "Setting GAMMA_LUT CRTC property not permitted with 
>> DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE client cap\n");
>> +            return -EINVAL;
>> +        }
>>           ret = drm_property_replace_blob_from_id(dev,
>>                       &state->gamma_lut,
>>                       val,
>> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/ 
>> drm_connector.c
>> index 
>> 4d6dc9ebfdb5bc730b1aff7a184448af7b93f078..f58cfd2131139ff3e613adc4dbb9ddbedf724dc7 100644
>> --- a/drivers/gpu/drm/drm_connector.c
>> +++ b/drivers/gpu/drm/drm_connector.c
>> @@ -3440,6 +3440,7 @@ int drm_mode_getconnector(struct drm_device 
>> *dev, void *data,
>>        */
>>       ret = drm_mode_object_get_properties(&connector->base, 
>> file_priv->atomic,
>>               file_priv->plane_color_pipeline,
>> +            file_priv->post_blend_color_pipeline,
>>               (uint32_t __user *)(unsigned long)(out_resp->props_ptr),
>>               (uint64_t __user *)(unsigned long)(out_resp- 
>> >prop_values_ptr),
>>               &out_resp->count_props);
>> diff --git a/drivers/gpu/drm/drm_crtc_internal.h b/drivers/gpu/drm/ 
>> drm_crtc_internal.h
>> index 
>> e3dbdcbfa385b940ec0b5476adde6146fe4afde1..c53f154e5392a10c326c844b7321666275f9ac02 100644
>> --- a/drivers/gpu/drm/drm_crtc_internal.h
>> +++ b/drivers/gpu/drm/drm_crtc_internal.h
>> @@ -169,6 +169,7 @@ void drm_mode_object_unregister(struct drm_device 
>> *dev,
>>                   struct drm_mode_object *object);
>>   int drm_mode_object_get_properties(struct drm_mode_object *obj, bool 
>> atomic,
>>                      bool plane_color_pipeline,
>> +                   bool post_blend_color_pipeline,
>>                      uint32_t __user *prop_ptr,
>>                      uint64_t __user *prop_values,
>>                      uint32_t *arg_count_props);
>> diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
>> index 
>> 01592d10e3465ddceddef94bc417f98d3ec12087..ea9600f5392f520a2b42ba7ef363d2f08ce19812 100644
>> --- a/drivers/gpu/drm/drm_ioctl.c
>> +++ b/drivers/gpu/drm/drm_ioctl.c
>> @@ -383,6 +383,15 @@ drm_setclientcap(struct drm_device *dev, void 
>> *data, struct drm_file *file_priv)
>>               return -EINVAL;
>>           file_priv->plane_color_pipeline = req->value;
>>           break;
>> +    case DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE:
>> +        if (!file_priv->atomic)
>> +            return -EINVAL;
>> +        if (req->value > 1)
>> +            return -EINVAL;
>> +        if (!drm_core_check_feature(dev, 
>> DRIVER_POST_BLEND_COLOR_PIPELINE))
>> +            return -EINVAL;
>> +        file_priv->post_blend_color_pipeline = req->value;
>> +        break;
>>       default:
>>           return -EINVAL;
>>       }
>> diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/ 
>> drm_mode_object.c
>> index 
>> b45d501b10c868c6d9b7a5a8760eadbd7b372a6a..5e6c3de9456b997985142a68b9cef57771a58bdc 100644
>> --- a/drivers/gpu/drm/drm_mode_object.c
>> +++ b/drivers/gpu/drm/drm_mode_object.c
>> @@ -388,6 +388,7 @@ EXPORT_SYMBOL(drm_object_property_get_default_value);
>>   /* helper for getconnector and getproperties ioctls */
>>   int drm_mode_object_get_properties(struct drm_mode_object *obj, bool 
>> atomic,
>>                      bool plane_color_pipeline,
>> +                   bool post_blend_color_pipeline,
>>                      uint32_t __user *prop_ptr,
>>                      uint64_t __user *prop_values,
>>                      uint32_t *arg_count_props)
>> @@ -416,6 +417,13 @@ int drm_mode_object_get_properties(struct 
>> drm_mode_object *obj, bool atomic,
>>                   continue;
>>           }
>> +        if (!post_blend_color_pipeline && obj->type == 
>> DRM_MODE_OBJECT_CRTC) {
>> +            struct drm_crtc *crtc = obj_to_crtc(obj);
>> +
>> +            if (prop == crtc->color_pipeline_property)
>> +                continue;
>> +        }
>> +
>>           if (*arg_count_props > count) {
>>               ret = __drm_object_property_get_value(obj, prop, &val);
>>               if (ret)
>> @@ -475,6 +483,7 @@ int drm_mode_obj_get_properties_ioctl(struct 
>> drm_device *dev, void *data,
>>       ret = drm_mode_object_get_properties(obj, file_priv->atomic,
>>               file_priv->plane_color_pipeline,
>> +            file_priv->post_blend_color_pipeline,
>>               (uint32_t __user *)(unsigned long)(arg->props_ptr),
>>               (uint64_t __user *)(unsigned long)(arg->prop_values_ptr),
>>               &arg->count_props);
>> diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h
>> index 
>> 1a3018e4a537b3341acb50187d47371f6b781b9d..42b9a43baa18079af8ec2ea5b1484b23c497beb0 100644
>> --- a/include/drm/drm_file.h
>> +++ b/include/drm/drm_file.h
>> @@ -213,6 +213,13 @@ struct drm_file {
>>        */
>>       bool plane_color_pipeline;
>> +    /**
>> +     * @post_blend_color_pipeline:
>> +     *
>> +     * True if client understands post-blend color pipelines
>> +     */
>> +    bool post_blend_color_pipeline;
>> +
>>       /**
>>        * @was_master:
>>        *
>> diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
>> index 
>> c6c53e57958e951204154ce41a69696a6876f0e8..f9ac10b3e4876f71005a87dedefa4aed320566f0 100644
>> --- a/include/uapi/drm/drm.h
>> +++ b/include/uapi/drm/drm.h
>> @@ -927,6 +927,25 @@ struct drm_get_cap {
>>    */
>>   #define DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE    7
>> +/**
>> + * DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE
> 
> DRM_CLIENT_CAP_CRTC_COLOR_PIPELINE might be better to align
> terminology between pre- and post-blend pipelines. It would
> also make it clear that this is about the color pipeline on
> a drm_crtc (which pretty much by definition means post-
> blending).
Same answer here. Will be replacing s/post_blend/crtc in v3.

Thanks!

-- 
Ariel D'Alessandro
Software Engineer

Collabora Ltd.
Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK 
Registered in England & Wales, no. 5513718



  reply	other threads:[~2025-12-11 15:27 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-18  0:43 [PATCH RFC v2 00/20] Introduce support for post-blend color pipeline Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 01/20] drm/crtc: Add color pipeline to CRTC state Nícolas F. R. A. Prado
2025-09-19 12:45   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 02/20] drm/colorop: Allow parenting colorop to CRTC Nícolas F. R. A. Prado
2025-09-19 12:44   ` Louis Chauvet
2025-12-10 20:49     ` Ariel D'Alessandro
2025-09-18  0:43 ` [PATCH RFC v2 03/20] drm: Factor out common color_pipeline property initialization code Nícolas F. R. A. Prado
2025-09-19 12:43   ` Louis Chauvet
2025-09-29  8:53   ` Harry Wentland
2025-12-10 20:19     ` Ariel D'Alessandro
2025-09-18  0:43 ` [PATCH RFC v2 04/20] drm/crtc: Add COLOR_PIPELINE property Nícolas F. R. A. Prado
2025-09-19 12:43   ` Louis Chauvet
2025-12-10 21:00     ` Ariel D'Alessandro
2025-09-18  0:43 ` [PATCH RFC v2 05/20] drm: Introduce DRM_CAP_POST_BLEND_COLOR_PIPELINE Nícolas F. R. A. Prado
2025-09-19 12:42   ` Louis Chauvet
2025-09-29  9:40     ` Harry Wentland
2025-09-29 16:00       ` Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 06/20] drm: Introduce DRM_CLIENT_CAP_POST_BLEND_COLOR_PIPELINE Nícolas F. R. A. Prado
2025-09-19 12:42   ` Louis Chauvet
2025-09-29  9:48   ` Harry Wentland
2025-12-11 15:26     ` Ariel D'Alessandro [this message]
2025-09-18  0:43 ` [PATCH RFC v2 07/20] drm/atomic: Pass post_blend_color_pipeline client cap to atomic check Nícolas F. R. A. Prado
2025-09-19 12:41   ` Louis Chauvet
2025-09-29  9:50   ` Harry Wentland
2025-12-11 15:16     ` Ariel D'Alessandro
2025-09-18  0:43 ` [PATCH RFC v2 08/20] drm/atomic: Print the color pipeline as part of the CRTC state print Nícolas F. R. A. Prado
2025-09-19 12:50   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 09/20] drm/colorop: Factor out common paths from colorops helpers Nícolas F. R. A. Prado
2025-09-19 12:51   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 10/20] drm/colorop: Introduce colorop helpers for crtc Nícolas F. R. A. Prado
2025-09-19 12:44   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 11/20] drm/colorop: Export drm_colorop_cleanup() so drivers can extend it Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 12/20] drm/crtc: Track post-blend color pipeline client cap in drm_crtc_state Nícolas F. R. A. Prado
2025-09-19 12:51   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 13/20] drm/mediatek: Support post-blend colorops for gamma and ctm Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 14/20] drm/mediatek: ccorr: Support post-blend color pipeline API Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 15/20] drm/mediatek: gamma: " Nícolas F. R. A. Prado
2025-09-18  0:43 ` [PATCH RFC v2 16/20] drm/mediatek: Set post-blend color pipeline driver cap Nícolas F. R. A. Prado
2025-09-19 12:50   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 17/20] drm/vkms: Rename existing color pipeline helpers to contain "pre_blend" Nícolas F. R. A. Prado
2025-09-19 12:45   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 18/20] drm/vkms: Prepare pre_blend_color_transform() for post-blend pipelines Nícolas F. R. A. Prado
2025-09-19 12:48   ` Louis Chauvet
2025-09-18  0:43 ` [PATCH RFC v2 19/20] drm/vkms: Introduce support for post-blend color pipeline Nícolas F. R. A. Prado
2025-09-19 12:50   ` Louis Chauvet
2025-12-10 21:15     ` Ariel D'Alessandro
2025-09-18  0:43 ` [PATCH RFC v2 20/20] drm/vkms: Set post-blend color pipeline driver cap Nícolas F. R. A. Prado
2025-09-19 12:49   ` Louis Chauvet
2025-09-29 10:22 ` [PATCH RFC v2 00/20] Introduce support for post-blend color pipeline Harry Wentland
2025-09-29 12:05 ` Melissa Wen
2025-09-29 14:25   ` Harry Wentland

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=c81767da-baf5-4531-abb2-c23f8005ea12@collabora.com \
    --to=ariel.dalessandro@collabora.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=agoins@nvidia.com \
    --cc=airlied@gmail.com \
    --cc=aleixpol@kde.org \
    --cc=alex.hung@amd.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=chaitanya.kumar.borah@intel.com \
    --cc=chunkuang.hu@kernel.org \
    --cc=contact@emersion.fr \
    --cc=daniels@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=harry.wentland@amd.com \
    --cc=jadahl@redhat.com \
    --cc=joshua@froggi.es \
    --cc=kernel@collabora.com \
    --cc=leandro.ribeiro@collabora.com \
    --cc=leo.liu@amd.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=louis.chauvet@bootlin.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=marcan@marcan.st \
    --cc=matthias.bgg@gmail.com \
    --cc=mcanal@igalia.com \
    --cc=mdaenzer@redhat.com \
    --cc=melissa.srw@gmail.com \
    --cc=mripard@kernel.org \
    --cc=mwen@igalia.com \
    --cc=nfraprado@collabora.com \
    --cc=p.zabel@pengutronix.de \
    --cc=pekka.paalanen@collabora.com \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_cbraga@quicinc.com \
    --cc=quic_naseer@quicinc.com \
    --cc=sashamcintosh@google.com \
    --cc=sebastian.wick@redhat.com \
    --cc=shashank.sharma@amd.com \
    --cc=simona.vetter@ffwll.ch \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    --cc=uma.shankar@intel.com \
    --cc=victoria@system76.com \
    --cc=ville.syrjala@linux.intel.com \
    --cc=wayland-devel@lists.freedesktop.org \
    --cc=xaver.hugl@gmail.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.