From a4d5012a665b000bee531374db8657e41b0d540a Mon Sep 17 00:00:00 2001 From: Ryan Mckeever Date: Thu, 15 May 2025 20:53:31 -0700 Subject: [PATCH] egl/wayland: Support RGB888/BGR888 formats Signed-off-by: Ryan Mckeever Reviewed-by: Eric R. Smith Reviewed-by: Erik Faye-Lund Part-of: --- src/egl/drivers/dri2/platform_wayland.c | 12 ++++++++++++ src/egl/wayland/wayland-drm/wayland-drm.c | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index bfe6b252fcc..813eb27ea25 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -127,6 +127,12 @@ static const struct dri2_wl_visual { PIPE_FORMAT_NONE, WL_DRM_FORMAT_XRGB8888, }, + { + WL_DRM_FORMAT_RGB888, + PIPE_FORMAT_B8G8R8_UNORM, + PIPE_FORMAT_NONE, + WL_DRM_FORMAT_RGB888, + }, { WL_DRM_FORMAT_ABGR8888, PIPE_FORMAT_RGBA8888_UNORM, @@ -139,6 +145,12 @@ static const struct dri2_wl_visual { PIPE_FORMAT_NONE, WL_DRM_FORMAT_XBGR8888, }, + { + WL_DRM_FORMAT_BGR888, + PIPE_FORMAT_R8G8B8_UNORM, + PIPE_FORMAT_NONE, + WL_DRM_FORMAT_BGR888, + }, { WL_DRM_FORMAT_RGB565, PIPE_FORMAT_B5G6R5_UNORM, diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c b/src/egl/wayland/wayland-drm/wayland-drm.c index e4751fd83e5..dbf23dbe37b 100644 --- a/src/egl/wayland/wayland-drm/wayland-drm.c +++ b/src/egl/wayland/wayland-drm/wayland-drm.c @@ -114,6 +114,8 @@ drm_create_buffer(struct wl_client *client, struct wl_resource *resource, case WL_DRM_FORMAT_XRGB2101010: case WL_DRM_FORMAT_ARGB8888: case WL_DRM_FORMAT_XRGB8888: + case WL_DRM_FORMAT_BGR888: + case WL_DRM_FORMAT_RGB888: case WL_DRM_FORMAT_YUYV: case WL_DRM_FORMAT_RGB565: break; @@ -230,6 +232,8 @@ bind_drm(struct wl_client *client, void *data, uint32_t version, uint32_t id) wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_ARGB8888); wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_XRGB8888); + wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_BGR888); + wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_RGB888); wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_RGB565); wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_YUV410); wl_resource_post_event(resource, WL_DRM_FORMAT, WL_DRM_FORMAT_YUV411);