[V7 10/45] drm/colorop: Add NEXT property
Louis Chauvet
louis.chauvet at bootlin.com
Tue Feb 25 10:21:32 UTC 2025
Le 20/12/2024 à 05:33, Alex Hung a écrit :
> From: Harry Wentland <harry.wentland at amd.com>
>
> We'll construct color pipelines out of drm_colorop by
> chaining them via the NEXT pointer. NEXT will point to
> the next drm_colorop in the pipeline, or by 0 if we're
> at the end of the pipeline.
>
> Signed-off-by: Alex Hung <alex.hung at amd.com>
> Signed-off-by: Harry Wentland <harry.wentland at amd.com>
> ---
> v5:
> - move next comment here from Add 3x4 CTM patch (Sebastian)
> - Add kernel doc
>
> v4:
> - Allow setting of NEXT property to NULL (Chaitanya Kumar Borah)
>
> v3:
> - Add next pointer to colorop to be used by drivers
> and in DRM core
>
> drivers/gpu/drm/drm_colorop.c | 30 ++++++++++++++++++++++++++++++
> include/drm/drm_colorop.h | 20 ++++++++++++++++++++
> 2 files changed, 50 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
> index 01cbe90635e8..954acd09673a 100644
> --- a/drivers/gpu/drm/drm_colorop.c
> +++ b/drivers/gpu/drm/drm_colorop.c
> @@ -89,6 +89,7 @@ static int drm_colorop_init(struct drm_device *dev, struct drm_colorop *colorop,
> colorop->dev = dev;
> colorop->type = type;
> colorop->plane = plane;
> + colorop->next = NULL;
>
> list_add_tail(&colorop->head, &config->colorop_list);
> colorop->index = config->num_colorop++;
> @@ -121,6 +122,16 @@ static int drm_colorop_init(struct drm_device *dev, struct drm_colorop *colorop,
> colorop->bypass_property,
> 1);
>
> + /* next */
> + prop = drm_property_create_object(dev, DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_ATOMIC,
> + "NEXT", DRM_MODE_OBJECT_COLOROP);
> + if (!prop)
> + return -ENOMEM;
> + colorop->next_property = prop;
> + drm_object_attach_property(&colorop->base,
> + colorop->next_property,
> + 0);
> +
> return ret;
> }
>
> @@ -294,3 +305,22 @@ const char *drm_get_colorop_curve_1d_type_name(enum drm_colorop_curve_1d_type ty
>
> return colorop_curve_1d_type_names[type];
> }
> +
> +/**
> + * drm_colorop_set_next_property - sets the next pointer
> + * @colorop: drm colorop
> + * @next: next colorop
> + *
> + * Should be used when constructing the color pipeline
> + */
> +void drm_colorop_set_next_property(struct drm_colorop *colorop, struct drm_colorop *next)
> +{
> + if (!colorop->next_property)
> + return;
I agree with Simon, a WARN_ON seems appropriate here, the
colorop->next_property should always exist, and if not, it is a bug.
> +
> + drm_object_property_set_value(&colorop->base,
> + colorop->next_property,
> + next ? next->base.id : 0);
> + colorop->next = next;
> +}
> +EXPORT_SYMBOL(drm_colorop_set_next_property);
> diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
> index 5ed24d60a99e..2f0572be37bb 100644
> --- a/include/drm/drm_colorop.h
> +++ b/include/drm/drm_colorop.h
> @@ -165,6 +165,14 @@ struct drm_colorop {
> */
> enum drm_colorop_type type;
>
> + /**
> + * @next:
> + *
> + * Read-only
> + * Pointer to next drm_colorop in pipeline
> + */
> + struct drm_colorop *next;
> +
> /**
> * @type_property:
> *
> @@ -192,10 +200,20 @@ struct drm_colorop {
> */
> struct drm_property *curve_1d_type_property;
>
> + /**
> + * @next_property:
> + *
> + * Read-only property to next colorop in the pipeline
> + */
> + struct drm_property *next_property;
> +
> };
>
> #define obj_to_colorop(x) container_of(x, struct drm_colorop, base)
>
> +
> +
> +
Strange useless lines
Thanks,
Louis Chauvet
> /**
> * drm_colorop_find - look up a Colorop object from its ID
> * @dev: DRM device
> @@ -268,4 +286,6 @@ const char *drm_get_colorop_type_name(enum drm_colorop_type type);
> */
> const char *drm_get_colorop_curve_1d_type_name(enum drm_colorop_curve_1d_type type);
>
> +void drm_colorop_set_next_property(struct drm_colorop *colorop, struct drm_colorop *next);
> +
> #endif /* __DRM_COLOROP_H__ */
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the dri-devel
mailing list