diff options
| author | Francesco Valla <francesco@valla.it> | 2025-12-17 11:06:54 +0300 |
|---|---|---|
| committer | Jocelyn Falempe <jfalempe@redhat.com> | 2025-12-20 01:06:41 +0300 |
| commit | c2b40b1a4fbb0e9c078224bec3ea2e17f8076429 (patch) | |
| tree | 189204888252384ca8d78f195507bcc00f476d88 | |
| parent | 8e7460eac786c72f48c4e04ce9be692b939428ce (diff) | |
| download | linux-c2b40b1a4fbb0e9c078224bec3ea2e17f8076429.tar.xz | |
drm/draw: add drm_draw_can_convert_from_xrgb8888
Add drm_draw_can_convert_from_xrgb8888() function that can be used to
determine if a XRGB8888 color can be converted to the specified format.
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Signed-off-by: Francesco Valla <francesco@valla.it>
Link: https://patch.msgid.link/20251217-drm_draw_conv_check-v3-1-15b6f8bc1cbc@valla.it
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/drm_draw.c | 29 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_draw_internal.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_draw.c b/drivers/gpu/drm/drm_draw.c index 5b956229c82f..5043baf901b8 100644 --- a/drivers/gpu/drm/drm_draw.c +++ b/drivers/gpu/drm/drm_draw.c @@ -16,6 +16,35 @@ #include "drm_format_internal.h" /** + * drm_draw_can_convert_from_xrgb8888 - check if xrgb8888 can be converted to the desired format + * @format: format + * + * Returns: + * True if XRGB8888 can be converted to the specified format, false otherwise. + */ +bool drm_draw_can_convert_from_xrgb8888(u32 format) +{ + switch (format) { + case DRM_FORMAT_RGB565: + case DRM_FORMAT_RGBA5551: + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_ARGB1555: + case DRM_FORMAT_RGB888: + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + case DRM_FORMAT_ABGR2101010: + return true; + default: + return false; + } +} +EXPORT_SYMBOL(drm_draw_can_convert_from_xrgb8888); + +/** * drm_draw_color_from_xrgb8888 - convert one pixel from xrgb8888 to the desired format * @color: input color, in xrgb8888 format * @format: output format diff --git a/drivers/gpu/drm/drm_draw_internal.h b/drivers/gpu/drm/drm_draw_internal.h index 20cb404e23ea..261967145635 100644 --- a/drivers/gpu/drm/drm_draw_internal.h +++ b/drivers/gpu/drm/drm_draw_internal.h @@ -24,6 +24,8 @@ static inline const u8 *drm_draw_get_char_bitmap(const struct font_desc *font, return font->data + (c * font->height) * font_pitch; } +bool drm_draw_can_convert_from_xrgb8888(u32 format); + u32 drm_draw_color_from_xrgb8888(u32 color, u32 format); void drm_draw_blit16(struct iosys_map *dmap, unsigned int dpitch, |
