[PATCH RFC v2 18/20] drm/vkms: Prepare pre_blend_color_transform() for post-blend pipelines

Nícolas F. R. A. Prado posted 20 patches 2 weeks ago
[PATCH RFC v2 18/20] drm/vkms: Prepare pre_blend_color_transform() for post-blend pipelines
Posted by Nícolas F. R. A. Prado 2 weeks ago
As a preparatory step for supporting post-blend color pipelines in VKMS,
rename pre_blend_color_transform() to color_transform() and make it take
the first colorop instead of a plane state, so it can be shared by both
pre- and post-blend color pipeline code paths.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---
 drivers/gpu/drm/vkms/vkms_composer.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
index 31b1dd3cd115d930ec3ed498403a8f44208d76c3..05e1551d6330e4dc14563d3a399b3544d11c6576 100644
--- a/drivers/gpu/drm/vkms/vkms_composer.c
+++ b/drivers/gpu/drm/vkms/vkms_composer.c
@@ -189,13 +189,13 @@ static void apply_colorop(struct pixel_argb_s32 *pixel, struct drm_colorop *colo
 	}
 }
 
-static void pre_blend_color_transform(const struct vkms_plane_state *plane_state,
-				      struct line_buffer *output_buffer)
+static void color_transform(struct drm_colorop *first_colorop,
+			    struct line_buffer *output_buffer)
 {
 	struct pixel_argb_s32 pixel;
 
 	for (size_t x = 0; x < output_buffer->n_pixels; x++) {
-		struct drm_colorop *colorop = plane_state->base.base.color_pipeline;
+		struct drm_colorop *colorop = first_colorop;
 
 		/*
 		 * Some operations, such as applying a BT709 encoding matrix,
@@ -449,7 +449,7 @@ static void blend_line(struct vkms_plane_state *current_plane, int y,
 	 */
 	current_plane->pixel_read_line(current_plane, src_x_start, src_y_start, direction,
 				       pixel_count, &stage_buffer->pixels[dst_x_start]);
-	pre_blend_color_transform(current_plane, stage_buffer);
+	color_transform(current_plane->base.base.color_pipeline, stage_buffer);
 	pre_mul_alpha_blend(stage_buffer, output_buffer,
 			    dst_x_start, pixel_count);
 }

-- 
2.50.1

Re: [PATCH RFC v2 18/20] drm/vkms: Prepare pre_blend_color_transform() for post-blend pipelines
Posted by Louis Chauvet 1 week, 5 days ago

Le 18/09/2025 à 02:43, Nícolas F. R. A. Prado a écrit :
> As a preparatory step for supporting post-blend color pipelines in VKMS,
> rename pre_blend_color_transform() to color_transform() and make it take
> the first colorop instead of a plane state, so it can be shared by both
> pre- and post-blend color pipeline code paths.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>

> ---
>   drivers/gpu/drm/vkms/vkms_composer.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
> index 31b1dd3cd115d930ec3ed498403a8f44208d76c3..05e1551d6330e4dc14563d3a399b3544d11c6576 100644
> --- a/drivers/gpu/drm/vkms/vkms_composer.c
> +++ b/drivers/gpu/drm/vkms/vkms_composer.c
> @@ -189,13 +189,13 @@ static void apply_colorop(struct pixel_argb_s32 *pixel, struct drm_colorop *colo
>   	}
>   }
>   
> -static void pre_blend_color_transform(const struct vkms_plane_state *plane_state,
> -				      struct line_buffer *output_buffer)
> +static void color_transform(struct drm_colorop *first_colorop,
> +			    struct line_buffer *output_buffer)
>   {
>   	struct pixel_argb_s32 pixel;
>   
>   	for (size_t x = 0; x < output_buffer->n_pixels; x++) {
> -		struct drm_colorop *colorop = plane_state->base.base.color_pipeline;
> +		struct drm_colorop *colorop = first_colorop;
>   
>   		/*
>   		 * Some operations, such as applying a BT709 encoding matrix,
> @@ -449,7 +449,7 @@ static void blend_line(struct vkms_plane_state *current_plane, int y,
>   	 */
>   	current_plane->pixel_read_line(current_plane, src_x_start, src_y_start, direction,
>   				       pixel_count, &stage_buffer->pixels[dst_x_start]);
> -	pre_blend_color_transform(current_plane, stage_buffer);
> +	color_transform(current_plane->base.base.color_pipeline, stage_buffer);
>   	pre_mul_alpha_blend(stage_buffer, output_buffer,
>   			    dst_x_start, pixel_count);
>   }
> 

-- 
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com