From 7e8bb12d48651796da6d8f3df1b388551d3b5510 Mon Sep 17 00:00:00 2001 From: brendan King Date: Mon, 2 Aug 2021 11:21:16 +0100 Subject: [PATCH 62/67] vulkan/wsi: enable additional formats for Wayland Add VK_FORMAT_R5G6B5_UNORM_PACK16. This is for compatibility with IMG WSI. --- src/vulkan/wsi/wsi_common_wayland.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 1109d3f07b6..e520aa9af00 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -68,6 +68,7 @@ struct wsi_wl_display_dmabuf { struct { struct u_vector argb8888; struct u_vector xrgb8888; + struct u_vector rgb565; } modifiers; }; @@ -441,6 +442,9 @@ dmabuf_handle_modifier(void *data, struct zwp_linux_dmabuf_v1 *dmabuf, case WL_DRM_FORMAT_XRGB8888: modifiers = &display->dmabuf.modifiers.xrgb8888; break; + case WL_DRM_FORMAT_RGB565: + modifiers = &display->dmabuf.modifiers.rgb565; + break; default: return; /* Unsupported format */ } @@ -527,6 +531,7 @@ wsi_wl_display_finish(struct wsi_wl_display *display) u_vector_finish(&display->dmabuf.formats); u_vector_finish(&display->dmabuf.modifiers.argb8888); u_vector_finish(&display->dmabuf.modifiers.xrgb8888); + u_vector_finish(&display->dmabuf.modifiers.rgb565); if (display->swrast.wl_shm) wl_shm_destroy(display->swrast.wl_shm); if (display->drm.wl_drm) @@ -563,6 +568,8 @@ wsi_wl_display_init(struct wsi_wayland *wsi_wl, !u_vector_init(&display->dmabuf.modifiers.argb8888, sizeof(uint64_t), 32) || !u_vector_init(&display->dmabuf.modifiers.xrgb8888, + sizeof(uint64_t), 32) || + !u_vector_init(&display->dmabuf.modifiers.rgb565, sizeof(uint64_t), 32)) { result = VK_ERROR_OUT_OF_HOST_MEMORY; goto fail; @@ -1356,6 +1363,9 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface, case WL_DRM_FORMAT_XRGB8888: modifiers = &chain->display->dmabuf.modifiers.xrgb8888; break; + case WL_DRM_FORMAT_RGB565: + modifiers = &chain->display->dmabuf.modifiers.rgb565; + break; default: modifiers = NULL; break; -- 2.25.1