[PATCH 3/4] drm/ast: cursor: Add support for ARGB4444
Jocelyn Falempe
jfalempe at redhat.com
Fri Feb 14 10:35:30 UTC 2025
On 13/02/2025 17:25, Thomas Zimmermann wrote:
> Add support for cursor image data in ARGB4444 format. This is the
> hardware's native format and requires no conversion.
>
Thanks, it looks good to me.
Reviewed-by: Jocelyn Falempe <jfalempe at redhat.com>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> drivers/gpu/drm/ast/ast_mode.c | 34 +++++++++++++++++++++++-----------
> 1 file changed, 23 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index ed00275d6418..4beac9cdfe83 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -718,6 +718,7 @@ static void ast_set_cursor_enabled(struct ast_device *ast, bool enabled)
> }
>
> static const uint32_t ast_cursor_plane_formats[] = {
> + DRM_FORMAT_ARGB4444,
> DRM_FORMAT_ARGB8888,
> };
>
> @@ -769,17 +770,28 @@ static void ast_cursor_plane_helper_atomic_update(struct drm_plane *plane,
> */
>
> if (drm_atomic_helper_damage_merged(old_plane_state, plane_state, &damage)) {
> - u8 *argb4444 = ast_cursor_plane->argb4444;
> - struct iosys_map argb4444_dst[DRM_FORMAT_MAX_PLANES] = {
> - IOSYS_MAP_INIT_VADDR(argb4444),
> - };
> - unsigned int argb4444_dst_pitch[DRM_FORMAT_MAX_PLANES] = {
> - AST_HWC_PITCH,
> - };
> -
> - drm_fb_argb8888_to_argb4444(argb4444_dst, argb4444_dst_pitch,
> - shadow_plane_state->data, fb, &damage,
> - &shadow_plane_state->fmtcnv_state);
> + u8 *argb4444;
> +
> + switch (fb->format->format) {
> + case DRM_FORMAT_ARGB4444:
> + argb4444 = shadow_plane_state->data[0].vaddr;
> + break;
> + default:
> + argb4444 = ast_cursor_plane->argb4444;
> + {
> + struct iosys_map argb4444_dst[DRM_FORMAT_MAX_PLANES] = {
> + IOSYS_MAP_INIT_VADDR(argb4444),
> + };
> + unsigned int argb4444_dst_pitch[DRM_FORMAT_MAX_PLANES] = {
> + AST_HWC_PITCH,
> + };
> +
> + drm_fb_argb8888_to_argb4444(argb4444_dst, argb4444_dst_pitch,
> + shadow_plane_state->data, fb, &damage,
> + &shadow_plane_state->fmtcnv_state);
> + }
> + break;
> + }
> ast_set_cursor_image(ast, argb4444, fb->width, fb->height);
> ast_set_cursor_base(ast, dst_off);
> }
More information about the dri-devel
mailing list