* [PATCH v3 0/6] drm/gud: Add some more pixel formats
@ 2021-09-29 19:11 Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 1/6] drm/fourcc: Add R8 to drm_format_info Noralf Trønnes
` (6 more replies)
0 siblings, 7 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:11 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes
Hi,
I'd appreciate if someone could review the 3 small driver patches.
Changes since version 2:
- Drop the patch adding module parameter 'xrgb8888'. Both Daniel and
Thomas had some comments that eventually led me to to drop this for now.
Noralf.
Noralf Trønnes (6):
drm/fourcc: Add R8 to drm_format_info
drm/format-helper: Add drm_fb_xrgb8888_to_rgb332()
drm/format-helper: Add drm_fb_xrgb8888_to_rgb888()
drm/gud: Add GUD_PIXEL_FORMAT_R8
drm/gud: Add GUD_PIXEL_FORMAT_RGB332
drm/gud: Add GUD_PIXEL_FORMAT_RGB888
drivers/gpu/drm/drm_format_helper.c | 88 +++++++++++++++++++++++++++++
drivers/gpu/drm/drm_fourcc.c | 1 +
drivers/gpu/drm/gud/gud_drv.c | 6 ++
drivers/gpu/drm/gud/gud_internal.h | 12 ++++
drivers/gpu/drm/gud/gud_pipe.c | 6 ++
include/drm/drm_format_helper.h | 4 ++
include/drm/gud.h | 6 +-
7 files changed, 121 insertions(+), 2 deletions(-)
--
2.32.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 1/6] drm/fourcc: Add R8 to drm_format_info
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
@ 2021-09-29 19:11 ` Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 2/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb332() Noralf Trønnes
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:11 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes, Daniel Vetter
Add an entry in drm_format_info for the existing format DRM_FORMAT_R8.
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/drm_fourcc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index eda832f9200d..783844bfecc1 100644
--- a/drivers/gpu/drm/drm_fourcc.c
+++ b/drivers/gpu/drm/drm_fourcc.c
@@ -133,6 +133,7 @@ const struct drm_format_info *__drm_format_info(u32 format)
{
static const struct drm_format_info formats[] = {
{ .format = DRM_FORMAT_C8, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
+ { .format = DRM_FORMAT_R8, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
{ .format = DRM_FORMAT_RGB332, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
{ .format = DRM_FORMAT_BGR233, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
{ .format = DRM_FORMAT_XRGB4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
--
2.32.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 2/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb332()
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 1/6] drm/fourcc: Add R8 to drm_format_info Noralf Trønnes
@ 2021-09-29 19:11 ` Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 3/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb888() Noralf Trønnes
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:11 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes, Thomas Zimmermann, Daniel Vetter
Add XRGB8888 emulation support for devices that can only do RGB332.
v2:
- Support Big Endian (Daniel)
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/drm_format_helper.c | 50 +++++++++++++++++++++++++++++
include/drm/drm_format_helper.h | 2 ++
2 files changed, 52 insertions(+)
diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
index 5231104b1498..dab4f382d469 100644
--- a/drivers/gpu/drm/drm_format_helper.c
+++ b/drivers/gpu/drm/drm_format_helper.c
@@ -135,6 +135,56 @@ void drm_fb_swab(void *dst, void *src, struct drm_framebuffer *fb,
}
EXPORT_SYMBOL(drm_fb_swab);
+static void drm_fb_xrgb8888_to_rgb332_line(u8 *dbuf, __le32 *sbuf, unsigned int pixels)
+{
+ unsigned int x;
+ u32 pix;
+
+ for (x = 0; x < pixels; x++) {
+ pix = le32_to_cpu(sbuf[x]);
+ dbuf[x] = ((pix & 0x00e00000) >> 16) |
+ ((pix & 0x0000e000) >> 11) |
+ ((pix & 0x000000c0) >> 6);
+ }
+}
+
+/**
+ * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
+ * @dst: RGB332 destination buffer
+ * @src: XRGB8888 source buffer
+ * @fb: DRM framebuffer
+ * @clip: Clip rectangle area to copy
+ *
+ * Drivers can use this function for RGB332 devices that don't natively support XRGB8888.
+ *
+ * This function does not apply clipping on dst, i.e. the destination is a small buffer
+ * containing the clip rect only.
+ */
+void drm_fb_xrgb8888_to_rgb332(void *dst, void *src, struct drm_framebuffer *fb,
+ struct drm_rect *clip)
+{
+ size_t width = drm_rect_width(clip);
+ size_t src_len = width * sizeof(u32);
+ unsigned int y;
+ void *sbuf;
+
+ /* Use a buffer to speed up access on buffers with uncached read mapping (i.e. WC) */
+ sbuf = kmalloc(src_len, GFP_KERNEL);
+ if (!sbuf)
+ return;
+
+ src += clip_offset(clip, fb->pitches[0], sizeof(u32));
+ for (y = 0; y < drm_rect_height(clip); y++) {
+ memcpy(sbuf, src, src_len);
+ drm_fb_xrgb8888_to_rgb332_line(dst, sbuf, width);
+ src += fb->pitches[0];
+ dst += width;
+ }
+
+ kfree(sbuf);
+}
+EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
+
static void drm_fb_xrgb8888_to_rgb565_line(u16 *dbuf, u32 *sbuf,
unsigned int pixels,
bool swab)
diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
index 4e0258a61311..d0809aff5cf8 100644
--- a/include/drm/drm_format_helper.h
+++ b/include/drm/drm_format_helper.h
@@ -16,6 +16,8 @@ void drm_fb_memcpy_dstclip(void __iomem *dst, unsigned int dst_pitch, void *vadd
struct drm_rect *clip);
void drm_fb_swab(void *dst, void *src, struct drm_framebuffer *fb,
struct drm_rect *clip, bool cached);
+void drm_fb_xrgb8888_to_rgb332(void *dst, void *vaddr, struct drm_framebuffer *fb,
+ struct drm_rect *clip);
void drm_fb_xrgb8888_to_rgb565(void *dst, void *vaddr,
struct drm_framebuffer *fb,
struct drm_rect *clip, bool swab);
--
2.32.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 3/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb888()
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 1/6] drm/fourcc: Add R8 to drm_format_info Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 2/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb332() Noralf Trønnes
@ 2021-09-29 19:11 ` Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 4/6] drm/gud: Add GUD_PIXEL_FORMAT_R8 Noralf Trønnes
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:11 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes, Thomas Zimmermann, Daniel Vetter
Add XRGB8888 emulation support for devices that can only do RGB888.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/drm_format_helper.c | 38 +++++++++++++++++++++++++++++
include/drm/drm_format_helper.h | 2 ++
2 files changed, 40 insertions(+)
diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
index dab4f382d469..69fde60e36b3 100644
--- a/drivers/gpu/drm/drm_format_helper.c
+++ b/drivers/gpu/drm/drm_format_helper.c
@@ -300,6 +300,44 @@ static void drm_fb_xrgb8888_to_rgb888_line(u8 *dbuf, u32 *sbuf,
}
}
+/**
+ * drm_fb_xrgb8888_to_rgb888 - Convert XRGB8888 to RGB888 clip buffer
+ * @dst: RGB888 destination buffer
+ * @src: XRGB8888 source buffer
+ * @fb: DRM framebuffer
+ * @clip: Clip rectangle area to copy
+ *
+ * Drivers can use this function for RGB888 devices that don't natively
+ * support XRGB8888.
+ *
+ * This function does not apply clipping on dst, i.e. the destination
+ * is a small buffer containing the clip rect only.
+ */
+void drm_fb_xrgb8888_to_rgb888(void *dst, void *src, struct drm_framebuffer *fb,
+ struct drm_rect *clip)
+{
+ size_t width = drm_rect_width(clip);
+ size_t src_len = width * sizeof(u32);
+ unsigned int y;
+ void *sbuf;
+
+ /* Use a buffer to speed up access on buffers with uncached read mapping (i.e. WC) */
+ sbuf = kmalloc(src_len, GFP_KERNEL);
+ if (!sbuf)
+ return;
+
+ src += clip_offset(clip, fb->pitches[0], sizeof(u32));
+ for (y = 0; y < drm_rect_height(clip); y++) {
+ memcpy(sbuf, src, src_len);
+ drm_fb_xrgb8888_to_rgb888_line(dst, sbuf, width);
+ src += fb->pitches[0];
+ dst += width * 3;
+ }
+
+ kfree(sbuf);
+}
+EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb888);
+
/**
* drm_fb_xrgb8888_to_rgb888_dstclip - Convert XRGB8888 to RGB888 clip buffer
* @dst: RGB565 destination buffer (iomem)
diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
index d0809aff5cf8..e86925cf07b9 100644
--- a/include/drm/drm_format_helper.h
+++ b/include/drm/drm_format_helper.h
@@ -24,6 +24,8 @@ void drm_fb_xrgb8888_to_rgb565(void *dst, void *vaddr,
void drm_fb_xrgb8888_to_rgb565_dstclip(void __iomem *dst, unsigned int dst_pitch,
void *vaddr, struct drm_framebuffer *fb,
struct drm_rect *clip, bool swab);
+void drm_fb_xrgb8888_to_rgb888(void *dst, void *src, struct drm_framebuffer *fb,
+ struct drm_rect *clip);
void drm_fb_xrgb8888_to_rgb888_dstclip(void __iomem *dst, unsigned int dst_pitch,
void *vaddr, struct drm_framebuffer *fb,
struct drm_rect *clip);
--
2.32.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 4/6] drm/gud: Add GUD_PIXEL_FORMAT_R8
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
` (2 preceding siblings ...)
2021-09-29 19:11 ` [PATCH v3 3/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb888() Noralf Trønnes
@ 2021-09-29 19:11 ` Noralf Trønnes
2021-09-29 19:12 ` [PATCH v3 5/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB332 Noralf Trønnes
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:11 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes
Add support for 8-bit greyscale format.
Signed-off-by: Noralf Trønnes <noralf@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 | 4 ++--
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index eb4e08846da4..a8d76c76e868 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -523,6 +523,8 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
switch (format) {
case GUD_DRM_FORMAT_R1:
fallthrough;
+ case DRM_FORMAT_R8:
+ fallthrough;
case GUD_DRM_FORMAT_XRGB1111:
if (!xrgb8888_emulation_format)
xrgb8888_emulation_format = info;
diff --git a/drivers/gpu/drm/gud/gud_internal.h b/drivers/gpu/drm/gud/gud_internal.h
index 2a388e27d5d7..8499e713dbbc 100644
--- a/drivers/gpu/drm/gud/gud_internal.h
+++ b/drivers/gpu/drm/gud/gud_internal.h
@@ -80,6 +80,8 @@ static inline u8 gud_from_fourcc(u32 fourcc)
switch (fourcc) {
case GUD_DRM_FORMAT_R1:
return GUD_PIXEL_FORMAT_R1;
+ case DRM_FORMAT_R8:
+ return GUD_PIXEL_FORMAT_R8;
case GUD_DRM_FORMAT_XRGB1111:
return GUD_PIXEL_FORMAT_XRGB1111;
case DRM_FORMAT_RGB565:
@@ -98,6 +100,8 @@ static inline u32 gud_to_fourcc(u8 format)
switch (format) {
case GUD_PIXEL_FORMAT_R1:
return GUD_DRM_FORMAT_R1;
+ case GUD_PIXEL_FORMAT_R8:
+ return DRM_FORMAT_R8;
case GUD_PIXEL_FORMAT_XRGB1111:
return GUD_DRM_FORMAT_XRGB1111;
case GUD_PIXEL_FORMAT_RGB565:
diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
index b9b0e435ea0f..be4f95b2d59c 100644
--- a/drivers/gpu/drm/gud/gud_pipe.c
+++ b/drivers/gpu/drm/gud/gud_pipe.c
@@ -189,6 +189,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
ret = -ENOMEM;
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) {
drm_fb_xrgb8888_to_rgb565(buf, vaddr, fb, rect, gud_is_big_endian());
} else {
diff --git a/include/drm/gud.h b/include/drm/gud.h
index 0b46b54fe56e..1dc781009e62 100644
--- a/include/drm/gud.h
+++ b/include/drm/gud.h
@@ -246,8 +246,8 @@ struct gud_state_req {
/* Get supported pixel formats as a byte array of GUD_PIXEL_FORMAT_* */
#define GUD_REQ_GET_FORMATS 0x40
#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
+ #define GUD_PIXEL_FORMAT_R1 0x01 /* 1-bit monochrome */
+ #define GUD_PIXEL_FORMAT_R8 0x08 /* 8-bit greyscale */
#define GUD_PIXEL_FORMAT_XRGB1111 0x20
#define GUD_PIXEL_FORMAT_RGB565 0x40
#define GUD_PIXEL_FORMAT_XRGB8888 0x80
--
2.32.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 5/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB332
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
` (3 preceding siblings ...)
2021-09-29 19:11 ` [PATCH v3 4/6] drm/gud: Add GUD_PIXEL_FORMAT_R8 Noralf Trønnes
@ 2021-09-29 19:12 ` Noralf Trønnes
2021-09-29 19:12 ` [PATCH v3 6/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB888 Noralf Trønnes
2021-09-30 9:10 ` [PATCH v3 0/6] drm/gud: Add some more pixel formats Thomas Zimmermann
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:12 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes
Add support for the RGB332 pixel format.
Signed-off-by: Noralf Trønnes <noralf@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 a8d76c76e868..e571ad10a12b 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -526,6 +526,8 @@ static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id)
case DRM_FORMAT_R8:
fallthrough;
case GUD_DRM_FORMAT_XRGB1111:
+ fallthrough;
+ case DRM_FORMAT_RGB332:
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 8499e713dbbc..249e02d1f5ed 100644
--- a/drivers/gpu/drm/gud/gud_internal.h
+++ b/drivers/gpu/drm/gud/gud_internal.h
@@ -84,6 +84,8 @@ static inline u8 gud_from_fourcc(u32 fourcc)
return GUD_PIXEL_FORMAT_R8;
case GUD_DRM_FORMAT_XRGB1111:
return GUD_PIXEL_FORMAT_XRGB1111;
+ case DRM_FORMAT_RGB332:
+ return GUD_PIXEL_FORMAT_RGB332;
case DRM_FORMAT_RGB565:
return GUD_PIXEL_FORMAT_RGB565;
case DRM_FORMAT_XRGB8888:
@@ -104,6 +106,8 @@ static inline u32 gud_to_fourcc(u8 format)
return DRM_FORMAT_R8;
case GUD_PIXEL_FORMAT_XRGB1111:
return GUD_DRM_FORMAT_XRGB1111;
+ case GUD_PIXEL_FORMAT_RGB332:
+ return DRM_FORMAT_RGB332;
case GUD_PIXEL_FORMAT_RGB565:
return DRM_FORMAT_RGB565;
case GUD_PIXEL_FORMAT_XRGB8888:
diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
index be4f95b2d59c..868a0b8a1f3e 100644
--- a/drivers/gpu/drm/gud/gud_pipe.c
+++ b/drivers/gpu/drm/gud/gud_pipe.c
@@ -191,6 +191,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
}
} else if (format->format == DRM_FORMAT_R8) {
drm_fb_xrgb8888_to_gray8(buf, vaddr, fb, rect);
+ } else if (format->format == DRM_FORMAT_RGB332) {
+ 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 {
diff --git a/include/drm/gud.h b/include/drm/gud.h
index 1dc781009e62..4118dce2fcec 100644
--- a/include/drm/gud.h
+++ b/include/drm/gud.h
@@ -249,6 +249,7 @@ struct gud_state_req {
#define GUD_PIXEL_FORMAT_R1 0x01 /* 1-bit monochrome */
#define GUD_PIXEL_FORMAT_R8 0x08 /* 8-bit greyscale */
#define GUD_PIXEL_FORMAT_XRGB1111 0x20
+ #define GUD_PIXEL_FORMAT_RGB332 0x30
#define GUD_PIXEL_FORMAT_RGB565 0x40
#define GUD_PIXEL_FORMAT_XRGB8888 0x80
#define GUD_PIXEL_FORMAT_ARGB8888 0x81
--
2.32.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 6/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB888
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
` (4 preceding siblings ...)
2021-09-29 19:12 ` [PATCH v3 5/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB332 Noralf Trønnes
@ 2021-09-29 19:12 ` Noralf Trønnes
2021-09-30 9:10 ` [PATCH v3 0/6] drm/gud: Add some more pixel formats Thomas Zimmermann
6 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-09-29 19:12 UTC (permalink / raw)
To: dri-devel; +Cc: peter, Noralf Trønnes
Add support for the RGB888 pixel format.
Signed-off-by: Noralf Trønnes <noralf@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
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/6] drm/gud: Add some more pixel formats
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
` (5 preceding siblings ...)
2021-09-29 19:12 ` [PATCH v3 6/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB888 Noralf Trønnes
@ 2021-09-30 9:10 ` Thomas Zimmermann
2021-10-01 13:02 ` Noralf Trønnes
6 siblings, 1 reply; 9+ messages in thread
From: Thomas Zimmermann @ 2021-09-30 9:10 UTC (permalink / raw)
To: Noralf Trønnes, dri-devel; +Cc: peter
[-- Attachment #1.1: Type: text/plain, Size: 1369 bytes --]
Hi
Am 29.09.21 um 21:11 schrieb Noralf Trønnes:
> Hi,
>
> I'd appreciate if someone could review the 3 small driver patches.
Series is
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Best regards
Thomas
>
> Changes since version 2:
> - Drop the patch adding module parameter 'xrgb8888'. Both Daniel and
> Thomas had some comments that eventually led me to to drop this for now.
>
> Noralf.
>
>
> Noralf Trønnes (6):
> drm/fourcc: Add R8 to drm_format_info
> drm/format-helper: Add drm_fb_xrgb8888_to_rgb332()
> drm/format-helper: Add drm_fb_xrgb8888_to_rgb888()
> drm/gud: Add GUD_PIXEL_FORMAT_R8
> drm/gud: Add GUD_PIXEL_FORMAT_RGB332
> drm/gud: Add GUD_PIXEL_FORMAT_RGB888
>
> drivers/gpu/drm/drm_format_helper.c | 88 +++++++++++++++++++++++++++++
> drivers/gpu/drm/drm_fourcc.c | 1 +
> drivers/gpu/drm/gud/gud_drv.c | 6 ++
> drivers/gpu/drm/gud/gud_internal.h | 12 ++++
> drivers/gpu/drm/gud/gud_pipe.c | 6 ++
> include/drm/drm_format_helper.h | 4 ++
> include/drm/gud.h | 6 +-
> 7 files changed, 121 insertions(+), 2 deletions(-)
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/6] drm/gud: Add some more pixel formats
2021-09-30 9:10 ` [PATCH v3 0/6] drm/gud: Add some more pixel formats Thomas Zimmermann
@ 2021-10-01 13:02 ` Noralf Trønnes
0 siblings, 0 replies; 9+ messages in thread
From: Noralf Trønnes @ 2021-10-01 13:02 UTC (permalink / raw)
To: Thomas Zimmermann, dri-devel; +Cc: peter
Den 30.09.2021 11.10, skrev Thomas Zimmermann:
> Hi
>
> Am 29.09.21 um 21:11 schrieb Noralf Trønnes:
>> Hi,
>>
>> I'd appreciate if someone could review the 3 small driver patches.
>
> Series is
>
> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
>
Many thanks Thomas!
Noralf.
> Best regards
> Thomas
>
>>
>> Changes since version 2:
>> - Drop the patch adding module parameter 'xrgb8888'. Both Daniel and
>> Thomas had some comments that eventually led me to to drop this for now.
>>
>> Noralf.
>>
>>
>> Noralf Trønnes (6):
>> drm/fourcc: Add R8 to drm_format_info
>> drm/format-helper: Add drm_fb_xrgb8888_to_rgb332()
>> drm/format-helper: Add drm_fb_xrgb8888_to_rgb888()
>> drm/gud: Add GUD_PIXEL_FORMAT_R8
>> drm/gud: Add GUD_PIXEL_FORMAT_RGB332
>> drm/gud: Add GUD_PIXEL_FORMAT_RGB888
>>
>> drivers/gpu/drm/drm_format_helper.c | 88 +++++++++++++++++++++++++++++
>> drivers/gpu/drm/drm_fourcc.c | 1 +
>> drivers/gpu/drm/gud/gud_drv.c | 6 ++
>> drivers/gpu/drm/gud/gud_internal.h | 12 ++++
>> drivers/gpu/drm/gud/gud_pipe.c | 6 ++
>> include/drm/drm_format_helper.h | 4 ++
>> include/drm/gud.h | 6 +-
>> 7 files changed, 121 insertions(+), 2 deletions(-)
>>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-10-01 13:02 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-29 19:11 [PATCH v3 0/6] drm/gud: Add some more pixel formats Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 1/6] drm/fourcc: Add R8 to drm_format_info Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 2/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb332() Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 3/6] drm/format-helper: Add drm_fb_xrgb8888_to_rgb888() Noralf Trønnes
2021-09-29 19:11 ` [PATCH v3 4/6] drm/gud: Add GUD_PIXEL_FORMAT_R8 Noralf Trønnes
2021-09-29 19:12 ` [PATCH v3 5/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB332 Noralf Trønnes
2021-09-29 19:12 ` [PATCH v3 6/6] drm/gud: Add GUD_PIXEL_FORMAT_RGB888 Noralf Trønnes
2021-09-30 9:10 ` [PATCH v3 0/6] drm/gud: Add some more pixel formats Thomas Zimmermann
2021-10-01 13:02 ` Noralf Trønnes
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.