0062-vulkan-wsi-enable-additional-formats-for-Wayland.patch 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From 5e54d8fe1f2daab845340cf7ad519b85ad27fb27 Mon Sep 17 00:00:00 2001
  2. From: brendan King <Brendan.King@imgtec.com>
  3. Date: Mon, 2 Aug 2021 11:21:16 +0100
  4. Subject: [PATCH] vulkan/wsi: enable additional formats for Wayland
  5. Add VK_FORMAT_R5G6B5_UNORM_PACK16.
  6. This is for compatibility with IMG WSI.
  7. ---
  8. src/vulkan/wsi/wsi_common_wayland.c | 10 ++++++++++
  9. 1 file changed, 10 insertions(+)
  10. diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c
  11. index 1109d3f..e520aa9 100644
  12. --- a/src/vulkan/wsi/wsi_common_wayland.c
  13. +++ b/src/vulkan/wsi/wsi_common_wayland.c
  14. @@ -68,6 +68,7 @@ struct wsi_wl_display_dmabuf {
  15. struct {
  16. struct u_vector argb8888;
  17. struct u_vector xrgb8888;
  18. + struct u_vector rgb565;
  19. } modifiers;
  20. };
  21. @@ -441,6 +442,9 @@ dmabuf_handle_modifier(void *data, struct zwp_linux_dmabuf_v1 *dmabuf,
  22. case WL_DRM_FORMAT_XRGB8888:
  23. modifiers = &display->dmabuf.modifiers.xrgb8888;
  24. break;
  25. + case WL_DRM_FORMAT_RGB565:
  26. + modifiers = &display->dmabuf.modifiers.rgb565;
  27. + break;
  28. default:
  29. return; /* Unsupported format */
  30. }
  31. @@ -527,6 +531,7 @@ wsi_wl_display_finish(struct wsi_wl_display *display)
  32. u_vector_finish(&display->dmabuf.formats);
  33. u_vector_finish(&display->dmabuf.modifiers.argb8888);
  34. u_vector_finish(&display->dmabuf.modifiers.xrgb8888);
  35. + u_vector_finish(&display->dmabuf.modifiers.rgb565);
  36. if (display->swrast.wl_shm)
  37. wl_shm_destroy(display->swrast.wl_shm);
  38. if (display->drm.wl_drm)
  39. @@ -563,6 +568,8 @@ wsi_wl_display_init(struct wsi_wayland *wsi_wl,
  40. !u_vector_init(&display->dmabuf.modifiers.argb8888,
  41. sizeof(uint64_t), 32) ||
  42. !u_vector_init(&display->dmabuf.modifiers.xrgb8888,
  43. + sizeof(uint64_t), 32) ||
  44. + !u_vector_init(&display->dmabuf.modifiers.rgb565,
  45. sizeof(uint64_t), 32)) {
  46. result = VK_ERROR_OUT_OF_HOST_MEMORY;
  47. goto fail;
  48. @@ -1356,6 +1363,9 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
  49. case WL_DRM_FORMAT_XRGB8888:
  50. modifiers = &chain->display->dmabuf.modifiers.xrgb8888;
  51. break;
  52. + case WL_DRM_FORMAT_RGB565:
  53. + modifiers = &chain->display->dmabuf.modifiers.rgb565;
  54. + break;
  55. default:
  56. modifiers = NULL;
  57. break;