Commit 19f4da84 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/ast: cursor: Add support for ARGB4444



Add support for cursor image data in ARGB4444 format. This is the
hardware's native format and requires no conversion.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250217122336.230067-4-tzimmermann@suse.de
parent 966a0d49
Loading
Loading
Loading
Loading
+23 −11
Original line number Diff line number Diff line
@@ -720,6 +720,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,
};

@@ -771,7 +772,15 @@ 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;
		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),
				};
@@ -782,6 +791,9 @@ static void ast_cursor_plane_helper_atomic_update(struct drm_plane *plane,
				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);
	}