diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp index b38bfdfffe8..1eb186431e2 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp @@ -5122,6 +5122,23 @@ VkResult ResourceTracker::on_vkCreateBuffer(void* context, VkResult, VkDevice de vk_append_struct(&structChainIter, &localExtBufCi); } + + VkBufferOpaqueCaptureAddressCreateInfo localCapAddrCi; + const VkBufferOpaqueCaptureAddressCreateInfo* pCapAddrCi = + vk_find_struct(pCreateInfo); + if (pCapAddrCi) { + localCapAddrCi = vk_make_orphan_copy(*pCapAddrCi); + vk_append_struct(&structChainIter, &localCapAddrCi); + } + + VkBufferDeviceAddressCreateInfoEXT localDevAddrCi; + const VkBufferDeviceAddressCreateInfoEXT* pDevAddrCi = + vk_find_struct(pCreateInfo); + if (pDevAddrCi) { + localDevAddrCi = vk_make_orphan_copy(*pDevAddrCi); + vk_append_struct(&structChainIter, &localDevAddrCi); + } + #ifdef VK_USE_PLATFORM_FUCHSIA Optional vmo; bool isSysmemBackedMemory = false; diff --git a/src/gfxstream/guest/vulkan_enc/vk_struct_id.h b/src/gfxstream/guest/vulkan_enc/vk_struct_id.h index 22f23618f0f..1c3f5e50b83 100644 --- a/src/gfxstream/guest/vulkan_enc/vk_struct_id.h +++ b/src/gfxstream/guest/vulkan_enc/vk_struct_id.h @@ -77,6 +77,8 @@ REGISTER_VK_STRUCT_ID(VkMemoryAllocateFlagsInfo, VK_STRUCTURE_TYPE_MEMORY_ALLOCA REGISTER_VK_STRUCT_ID(VkMemoryOpaqueCaptureAddressAllocateInfo, VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO); REGISTER_VK_STRUCT_ID(VkBindImageMemoryInfo, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO); REGISTER_VK_STRUCT_ID(VkBindImageMemorySwapchainInfoKHR, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR); +REGISTER_VK_STRUCT_ID(VkBufferOpaqueCaptureAddressCreateInfo, VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO); +REGISTER_VK_STRUCT_ID(VkBufferDeviceAddressCreateInfoEXT, VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT); #undef REGISTER_VK_STRUCT_ID