Commit 4cabfedc authored by Noralf Trønnes's avatar Noralf Trønnes

drm/gud: Add GUD_PIXEL_FORMAT_R8

Add support for 8-bit greyscale format.
Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210929191201.34456-5-noralf@tronnes.org
parent bcf80d6e
...@@ -523,6 +523,8 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id) ...@@ -523,6 +523,8 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
switch (format) { switch (format) {
case GUD_DRM_FORMAT_R1: case GUD_DRM_FORMAT_R1:
fallthrough; fallthrough;
case DRM_FORMAT_R8:
fallthrough;
case GUD_DRM_FORMAT_XRGB1111: case GUD_DRM_FORMAT_XRGB1111:
if (!xrgb8888_emulation_format) if (!xrgb8888_emulation_format)
xrgb8888_emulation_format = info; xrgb8888_emulation_format = info;
......
...@@ -80,6 +80,8 @@ static inline u8 gud_from_fourcc(u32 fourcc) ...@@ -80,6 +80,8 @@ static inline u8 gud_from_fourcc(u32 fourcc)
switch (fourcc) { switch (fourcc) {
case GUD_DRM_FORMAT_R1: case GUD_DRM_FORMAT_R1:
return GUD_PIXEL_FORMAT_R1; return GUD_PIXEL_FORMAT_R1;
case DRM_FORMAT_R8:
return GUD_PIXEL_FORMAT_R8;
case GUD_DRM_FORMAT_XRGB1111: case GUD_DRM_FORMAT_XRGB1111:
return GUD_PIXEL_FORMAT_XRGB1111; return GUD_PIXEL_FORMAT_XRGB1111;
case DRM_FORMAT_RGB565: case DRM_FORMAT_RGB565:
...@@ -98,6 +100,8 @@ static inline u32 gud_to_fourcc(u8 format) ...@@ -98,6 +100,8 @@ static inline u32 gud_to_fourcc(u8 format)
switch (format) { switch (format) {
case GUD_PIXEL_FORMAT_R1: case GUD_PIXEL_FORMAT_R1:
return GUD_DRM_FORMAT_R1; return GUD_DRM_FORMAT_R1;
case GUD_PIXEL_FORMAT_R8:
return DRM_FORMAT_R8;
case GUD_PIXEL_FORMAT_XRGB1111: case GUD_PIXEL_FORMAT_XRGB1111:
return GUD_DRM_FORMAT_XRGB1111; return GUD_DRM_FORMAT_XRGB1111;
case GUD_PIXEL_FORMAT_RGB565: case GUD_PIXEL_FORMAT_RGB565:
......
...@@ -189,6 +189,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, ...@@ -189,6 +189,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
ret = -ENOMEM; ret = -ENOMEM;
goto end_cpu_access; goto end_cpu_access;
} }
} else if (format->format == DRM_FORMAT_R8) {
drm_fb_xrgb8888_to_gray8(buf, vaddr, fb, rect);
} else if (format->format == DRM_FORMAT_RGB565) { } else if (format->format == DRM_FORMAT_RGB565) {
drm_fb_xrgb8888_to_rgb565(buf, vaddr, fb, rect, gud_is_big_endian()); drm_fb_xrgb8888_to_rgb565(buf, vaddr, fb, rect, gud_is_big_endian());
} else { } else {
......
...@@ -246,8 +246,8 @@ struct gud_state_req { ...@@ -246,8 +246,8 @@ struct gud_state_req {
/* Get supported pixel formats as a byte array of GUD_PIXEL_FORMAT_* */ /* Get supported pixel formats as a byte array of GUD_PIXEL_FORMAT_* */
#define GUD_REQ_GET_FORMATS 0x40 #define GUD_REQ_GET_FORMATS 0x40
#define GUD_FORMATS_MAX_NUM 32 #define GUD_FORMATS_MAX_NUM 32
/* R1 is a 1-bit monochrome transfer format presented to userspace as XRGB8888 */ #define GUD_PIXEL_FORMAT_R1 0x01 /* 1-bit monochrome */
#define GUD_PIXEL_FORMAT_R1 0x01 #define GUD_PIXEL_FORMAT_R8 0x08 /* 8-bit greyscale */
#define GUD_PIXEL_FORMAT_XRGB1111 0x20 #define GUD_PIXEL_FORMAT_XRGB1111 0x20
#define GUD_PIXEL_FORMAT_RGB565 0x40 #define GUD_PIXEL_FORMAT_RGB565 0x40
#define GUD_PIXEL_FORMAT_XRGB8888 0x80 #define GUD_PIXEL_FORMAT_XRGB8888 0x80
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment