From 822c88f173fe9f343887c09a9721b91d8657ad5d Mon Sep 17 00:00:00 2001 From: Yahan Zhou Date: Tue, 24 Oct 2023 10:46:30 -0700 Subject: [PATCH] VkImageCreateInfo should ignore queeu family indices in some situation The spec says indices pointer should be ignored when sharingMode is not VK_SHARING_MODE_CONCURRENT. We need to explicitly set index count to 0 and index pointer to null, otherwise encoder will still try to encode it. Spec: https://registry.khronos.org/vulkan/specs/1.3/html/vkspec.html#VUID-VkBufferCreateInfo-sharingMode-00913 Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp index 4e8c87731bb..a286f7f5f4f 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp @@ -4045,6 +4045,11 @@ VkResult ResourceTracker::on_vkCreateImage(void* context, VkResult, VkDevice dev VkEncoder* enc = (VkEncoder*)context; VkImageCreateInfo localCreateInfo = vk_make_orphan_copy(*pCreateInfo); + if (localCreateInfo.sharingMode != VK_SHARING_MODE_CONCURRENT) { + localCreateInfo.queueFamilyIndexCount = 0; + localCreateInfo.pQueueFamilyIndices = nullptr; + } + vk_struct_chain_iterator structChainIter = vk_make_chain_iterator(&localCreateInfo); VkExternalMemoryImageCreateInfo localExtImgCi;