[PATCH 01/10] drm/drm-crtc: Introduce sharpness strength property

Nautiyal, Ankit K ankit.k.nautiyal at intel.com
Thu Aug 7 05:57:24 UTC 2025


On 8/7/2025 11:21 AM, Nautiyal, Ankit K wrote:
> Hi Nemesa,
>
> Patch looks good to me. Just a couple of minor suggestions in the 
> inline comments for slight improvements in documentation.
>
> Also, IMO,  drm_crtc might be better than drm-crtc in the subject line.
>
> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
>
>
> On 7/24/2025 7:15 PM, Nemesa Garg wrote:
>> Introduces the new crtc property "SHARPNESS_STRENGTH" that allows

`Introduce a new crtc property` ...

Missed to mention this earlier.

Regards,

Ankit

>> the user to set the intensity so as to get the sharpness effect.
>> The value of this property can be set from 0-255.
>> It is useful in scenario when the output is blurry and user
>> want to sharpen the pixels. User can increase/decrease the
>> sharpness level depending on the content displayed.
>>
>> v2: Rename crtc property variable [Arun]
>>      Add modeset detail in uapi doc[Uma]
>> v3: Fix build issue
>>
>> Signed-off-by: Nemesa Garg <nemesa.garg at intel.com>
>> ---
>>   drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
>>   drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
>>   include/drm/drm_crtc.h            | 17 +++++++++++++++
>>   3 files changed, 56 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c 
>> b/drivers/gpu/drm/drm_atomic_uapi.c
>> index ecc73d52bfae..2302c2bea28a 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct 
>> drm_crtc *crtc,
>>           set_out_fence_for_crtc(state->state, crtc, fence_ptr);
>>       } else if (property == crtc->scaling_filter_property) {
>>           state->scaling_filter = val;
>> +    } else if (property == crtc->sharpness_strength_property) {
>> +        state->sharpness_strength = val;
>>       } else if (crtc->funcs->atomic_set_property) {
>>           return crtc->funcs->atomic_set_property(crtc, state, 
>> property, val);
>>       } else {
>> @@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
>>           *val = 0;
>>       else if (property == crtc->scaling_filter_property)
>>           *val = state->scaling_filter;
>> +    else if (property == crtc->sharpness_strength_property)
>> +        *val = state->sharpness_strength;
>>       else if (crtc->funcs->atomic_get_property)
>>           return crtc->funcs->atomic_get_property(crtc, state, 
>> property, val);
>>       else {
>> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
>> index 46655339003d..1b7ce99cea5e 100644
>> --- a/drivers/gpu/drm/drm_crtc.c
>> +++ b/drivers/gpu/drm/drm_crtc.c
>> @@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct 
>> drm_crtc *crtc)
>>    *         Driver's default scaling filter
>>    *     Nearest Neighbor:
>>    *         Nearest Neighbor scaling filter
>> + * SHARPNESS_STRENGTH:
>> + *    Atomic property for setting the sharpness strength/intensity 
>> by userspace.
>> + *
>> + *    The value of this property is set as an integer value ranging
>> + *    from 0 - 255 where:
>> + *
>> + *    0 means feature is disabled.
>
>
> Should mention here that this is the default value.
>
>> + *
>> + *    1 means minimum sharpness.
>> + *
>> + *    255 means maximum sharpness.
>
> These can just be:
>
> 0: Sharpness feature is disabled (default value).
>
> 1: Minimum sharpness.
>
> 255: Maximum sharpness.
>
>
>> + *
>> + *    User can gradually increase or decrease the sharpness level 
>> and can
>> + *    set the optimum value depending on content and
>
>> this value will be
>> + *    passed to kernel through the Uapi.
>
> Use UAPI. Also, this  can be a separate sentence.
>
>
>> + *    The setting of this property does not require modeset.
>> + *    The sharpness effect takes place post blending on the final 
>> composed output.
>> + *    If the feature is disabled, the content remains same without 
>> any sharpening effect
>> + *    and when this feature is applied, it enhances the clarity of 
>> the content.
>>    */
>>     __printf(6, 0)
>> @@ -940,6 +959,22 @@ int 
>> drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
>>   }
>>   EXPORT_SYMBOL(drm_crtc_create_scaling_filter_property);
>>   +int drm_crtc_create_sharpness_strength_property(struct drm_crtc 
>> *crtc)
>> +{
>> +    struct drm_device *dev = crtc->dev;
>> +    struct drm_property *prop =
>> +        drm_property_create_range(dev, 0, "SHARPNESS_STRENGTH", 0, 
>> 255);
>> +
>> +    if (!prop)
>> +        return -ENOMEM;
>> +
>> +    crtc->sharpness_strength_property = prop;
>> +    drm_object_attach_property(&crtc->base, prop, 0);
>> +
>> +    return 0;
>> +}
>> +EXPORT_SYMBOL(drm_crtc_create_sharpness_strength_property);
>> +
>>   /**
>>    * drm_crtc_in_clone_mode - check if the given CRTC state is in 
>> clone mode
>>    *
>> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
>> index caa56e039da2..2b26b90e82e6 100644
>> --- a/include/drm/drm_crtc.h
>> +++ b/include/drm/drm_crtc.h
>> @@ -317,6 +317,16 @@ struct drm_crtc_state {
>>        */
>>       enum drm_scaling_filter scaling_filter;
>>   +    /**
>> +     * @sharpness_strength:
>> +     *
>> +     * Used by the user to set the sharpness intensity.
>> +     * The value ranges from 0-255.
>
> Perhaps we can add about default value:
>
> Default value is 0, which disables the sharpness feature.
>
>> +     * Any value greater than 0 means enabling the featuring
>
> can simply be: Any value greater than 0 enables sharpening with the 
> specified strength.
>
>
> Regards,
>
> Ankit
>
>> +     * along with setting the value for sharpness.
>> +     */
>> +    u8 sharpness_strength;
>> +
>>       /**
>>        * @event:
>>        *
>> @@ -1088,6 +1098,12 @@ struct drm_crtc {
>>        */
>>       struct drm_property *scaling_filter_property;
>>   +    /**
>> +     * @sharpness_strength_property: property to apply
>> +     * the intensity of the sharpness requested.
>> +     */
>> +    struct drm_property *sharpness_strength_property;
>> +
>>       /**
>>        * @state:
>>        *
>> @@ -1324,4 +1340,5 @@ static inline struct drm_crtc 
>> *drm_crtc_find(struct drm_device *dev,
>>   int drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
>>                           unsigned int supported_filters);
>>   bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state);
>> +int drm_crtc_create_sharpness_strength_property(struct drm_crtc *crtc);
>>   #endif /* __DRM_CRTC_H__ */


More information about the dri-devel mailing list