Add support for the RGB888 pixel format.

Signed-off-by: Noralf Trønnes <nor...@tronnes.org>
---
 drivers/gpu/drm/gud/gud_drv.c      | 2 ++
 drivers/gpu/drm/gud/gud_internal.h | 4 ++++
 drivers/gpu/drm/gud/gud_pipe.c     | 2 ++
 include/drm/gud.h                  | 1 +
 4 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index e571ad10a12b..3f9d4b9a1e3d 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -528,6 +528,8 @@ static int gud_probe(struct usb_interface *intf, const 
struct usb_device_id *id)
                case GUD_DRM_FORMAT_XRGB1111:
                        fallthrough;
                case DRM_FORMAT_RGB332:
+                       fallthrough;
+               case DRM_FORMAT_RGB888:
                        if (!xrgb8888_emulation_format)
                                xrgb8888_emulation_format = info;
                        break;
diff --git a/drivers/gpu/drm/gud/gud_internal.h 
b/drivers/gpu/drm/gud/gud_internal.h
index 249e02d1f5ed..e351a1f1420d 100644
--- a/drivers/gpu/drm/gud/gud_internal.h
+++ b/drivers/gpu/drm/gud/gud_internal.h
@@ -88,6 +88,8 @@ static inline u8 gud_from_fourcc(u32 fourcc)
                return GUD_PIXEL_FORMAT_RGB332;
        case DRM_FORMAT_RGB565:
                return GUD_PIXEL_FORMAT_RGB565;
+       case DRM_FORMAT_RGB888:
+               return GUD_PIXEL_FORMAT_RGB888;
        case DRM_FORMAT_XRGB8888:
                return GUD_PIXEL_FORMAT_XRGB8888;
        case DRM_FORMAT_ARGB8888:
@@ -110,6 +112,8 @@ static inline u32 gud_to_fourcc(u8 format)
                return DRM_FORMAT_RGB332;
        case GUD_PIXEL_FORMAT_RGB565:
                return DRM_FORMAT_RGB565;
+       case GUD_PIXEL_FORMAT_RGB888:
+               return DRM_FORMAT_RGB888;
        case GUD_PIXEL_FORMAT_XRGB8888:
                return DRM_FORMAT_XRGB8888;
        case GUD_PIXEL_FORMAT_ARGB8888:
diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
index 868a0b8a1f3e..daf75c178c2b 100644
--- a/drivers/gpu/drm/gud/gud_pipe.c
+++ b/drivers/gpu/drm/gud/gud_pipe.c
@@ -195,6 +195,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct 
drm_framebuffer *fb,
                        drm_fb_xrgb8888_to_rgb332(buf, vaddr, fb, rect);
                } else if (format->format == DRM_FORMAT_RGB565) {
                        drm_fb_xrgb8888_to_rgb565(buf, vaddr, fb, rect, 
gud_is_big_endian());
+               } else if (format->format == DRM_FORMAT_RGB888) {
+                       drm_fb_xrgb8888_to_rgb888(buf, vaddr, fb, rect);
                } else {
                        len = gud_xrgb8888_to_color(buf, format, vaddr, fb, 
rect);
                }
diff --git a/include/drm/gud.h b/include/drm/gud.h
index 4118dce2fcec..c52a8ba4ae4e 100644
--- a/include/drm/gud.h
+++ b/include/drm/gud.h
@@ -251,6 +251,7 @@ struct gud_state_req {
   #define GUD_PIXEL_FORMAT_XRGB1111            0x20
   #define GUD_PIXEL_FORMAT_RGB332              0x30
   #define GUD_PIXEL_FORMAT_RGB565              0x40
+  #define GUD_PIXEL_FORMAT_RGB888              0x50
   #define GUD_PIXEL_FORMAT_XRGB8888            0x80
   #define GUD_PIXEL_FORMAT_ARGB8888            0x81
 
-- 
2.32.0

Reply via email to