fuchsia: Label all exportable images/buffers as sysmem-backed.
On Fuchsia, all Vulkan images and buffers exportable to VMO
handles are sysmem-backed. We should set the "isSysmemBackedMemory"
flag to true, so that clients can get correct memory
requirements for these images and buffers.
TEST=ScenicPixelTest.UseExternalImage on host-gpu and software-gpu.
Change-Id: I28fbb9fb696375ad2c5b956f89a47212969cd3e2
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 2293df0..cdb34ee 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -2893,6 +2893,13 @@
const VkBufferCollectionImageCreateInfoFUCHSIA* extBufferCollectionPtr =
vk_find_struct<VkBufferCollectionImageCreateInfoFUCHSIA>(pCreateInfo);
bool isSysmemBackedMemory = false;
+
+ if (extImgCiPtr &&
+ (extImgCiPtr->handleTypes &
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_TEMP_ZIRCON_VMO_BIT_FUCHSIA)) {
+ isSysmemBackedMemory = true;
+ }
+
if (extBufferCollectionPtr) {
auto collection = reinterpret_cast<fuchsia::sysmem::BufferCollectionSyncPtr*>(
extBufferCollectionPtr->collection);
@@ -3733,6 +3740,14 @@
Optional<zx::vmo> vmo;
bool isSysmemBackedMemory = false;
+ const VkExternalMemoryBufferCreateInfo* extBufCiPtr =
+ vk_find_struct<VkExternalMemoryBufferCreateInfo>(pCreateInfo);
+ if (extBufCiPtr &&
+ (extBufCiPtr->handleTypes &
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_TEMP_ZIRCON_VMO_BIT_FUCHSIA)) {
+ isSysmemBackedMemory = true;
+ }
+
const auto* extBufferCollectionPtr =
vk_find_struct<VkBufferCollectionBufferCreateInfoFUCHSIA>(
pCreateInfo);