}
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,
struct wsi_image *image)
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;
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,
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;