From 068973b0697850b90038101668c92a8ac3b6c575 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 5 Mar 2024 13:24:28 -0500 Subject: [PATCH] zink: set VkExternalMemoryBufferCreateInfo for opaque fds too this fixes (VVL) issues with EXT_external_object usage Part-of: --- src/gallium/drivers/zink/zink_resource.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 8a743f631d2..734fa7cdc51 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -1185,10 +1185,10 @@ create_buffer(struct zink_screen *screen, struct zink_resource_object *obj, VkExternalMemoryBufferCreateInfo embci; VkMemoryRequirements reqs = {0}; - if (alloc_info->user_mem) { - embci.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO; + embci.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO; + if (alloc_info->external) { embci.pNext = bci.pNext; - embci.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT; + embci.handleTypes = alloc_info->export_types; bci.pNext = &embci; } @@ -1483,7 +1483,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t .whandle = whandle, .need_dedicated = false, .external = 0, - .export_types = ZINK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_BIT, + .export_types = user_mem ? VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT : ZINK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_BIT, .shared = templ->bind & PIPE_BIND_SHARED, .user_mem = user_mem };