From 9ec9289385e873e0c970fb6f7fe95ef9c9b4425a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 9 Sep 2021 20:46:07 -0400 Subject: [PATCH] zink: add dmabuf fd handling just gotta get it out of the underlying graphics layer Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_resource.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 8241323..460f946 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -50,6 +50,7 @@ #endif #ifdef ZINK_USE_DMABUF +#include #include "drm-uapi/drm_fourcc.h" #else /* these won't actually be used */ @@ -906,7 +907,10 @@ zink_resource_get_handle(struct pipe_screen *pscreen, fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR; //TODO: remove for wsi fd_info.memory = zink_bo_get_mem(obj->bo); - fd_info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; + if (whandle->type == WINSYS_HANDLE_TYPE_FD) + fd_info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; + else + fd_info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; VkResult result = VKSCR(GetMemoryFdKHR)(screen->dev, &fd_info, &fd); if (result != VK_SUCCESS) return false; -- 2.7.4