Module: Mesa
Branch: main
Commit: a69a4f393b0b0ae36241c8ced2c47438386a529e
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a69a4f393b0b0ae36241c8ced2c47438386a529e

Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Jun 15 13:26:23 2023 -0400

vk/wsi: unify dmabuf exporting

Acked-by: Daniel Stone <[email protected]>

Reviewed-by: Joshua Ashton <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23835>

---

 src/vulkan/wsi/wsi_common_drm.c | 37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/src/vulkan/wsi/wsi_common_drm.c b/src/vulkan/wsi/wsi_common_drm.c
index 43c380cc966..35fa913d606 100644
--- a/src/vulkan/wsi/wsi_common_drm.c
+++ b/src/vulkan/wsi/wsi_common_drm.c
@@ -450,6 +450,23 @@ fail_oom:
    return VK_ERROR_OUT_OF_HOST_MEMORY;
 }
 
+static VkResult
+wsi_init_image_dmabuf_fd(const struct wsi_swapchain *chain,
+                          struct wsi_image *image,
+                          bool linear)
+{
+   const struct wsi_device *wsi = chain->wsi;
+   const VkMemoryGetFdInfoKHR memory_get_fd_info = {
+      .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
+      .pNext = NULL,
+      .memory = linear ? image->blit.memory : image->memory,
+      .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
+   };
+
+   return wsi->GetMemoryFdKHR(chain->device, &memory_get_fd_info,
+                              &image->dma_buf_fd);
+}
+
 static VkResult
 wsi_create_native_image_mem(const struct wsi_swapchain *chain,
                             const struct wsi_image_info *info,
@@ -489,15 +506,7 @@ wsi_create_native_image_mem(const struct wsi_swapchain 
*chain,
    if (result != VK_SUCCESS)
       return result;
 
-   const VkMemoryGetFdInfoKHR memory_get_fd_info = {
-      .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
-      .pNext = NULL,
-      .memory = image->memory,
-      .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
-   };
-
-   result = wsi->GetMemoryFdKHR(chain->device, &memory_get_fd_info,
-                                &image->dma_buf_fd);
+   result = wsi_init_image_dmabuf_fd(chain, image, false);
    if (result != VK_SUCCESS)
       return result;
 
@@ -558,7 +567,6 @@ wsi_create_prime_image_mem(const struct wsi_swapchain 
*chain,
                            const struct wsi_image_info *info,
                            struct wsi_image *image)
 {
-   const struct wsi_device *wsi = chain->wsi;
    VkResult result =
       wsi_create_buffer_blit_context(chain, info, image,
                                      
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
@@ -566,14 +574,7 @@ wsi_create_prime_image_mem(const struct wsi_swapchain 
*chain,
    if (result != VK_SUCCESS)
       return result;
 
-   const VkMemoryGetFdInfoKHR linear_memory_get_fd_info = {
-      .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
-      .pNext = NULL,
-      .memory = image->blit.memory,
-      .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
-   };
-   result = wsi->GetMemoryFdKHR(chain->device, &linear_memory_get_fd_info,
-                                &image->dma_buf_fd);
+   result = wsi_init_image_dmabuf_fd(chain, image, true);
    if (result != VK_SUCCESS)
       return result;
 

Reply via email to