diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 15b16f1788a..1418ca0bd27 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -171,6 +171,7 @@ resource_create(struct pipe_screen *pscreen, res->format = zink_get_format(screen, templ->format); VkImageCreateInfo ici = {}; + VkExternalMemoryImageCreateInfo emici = {}; ici.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; ici.flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; @@ -221,6 +222,12 @@ resource_create(struct pipe_screen *pscreen, ici.tiling = VK_IMAGE_TILING_LINEAR; } + if (templ->bind & PIPE_BIND_SHARED) { + emici.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO; + emici.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; + ici.pNext = &emici; + } + if (templ->usage == PIPE_USAGE_STAGING) ici.tiling = VK_IMAGE_TILING_LINEAR;