From c80f3551015d7d2d3acea8ae5edfb34d9bdf78d5 Mon Sep 17 00:00:00 2001 From: C Stout Date: Tue, 14 Nov 2023 16:31:56 -0800 Subject: [PATCH] [guest] Fix Fuchsia build Major changes: - remove QemuPipeStreamFuchsia - reinstate processPipeDoInit() for initSeqno(), but skip the rest - revamp the .gn build file Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- .../guest/vulkan_enc/ResourceTracker.cpp | 28 ++++------ .../guest/vulkan_enc/ResourceTracker.h | 53 ++++++++++++++----- 2 files changed, 50 insertions(+), 31 deletions(-) diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp index c2a514c528e..4ce1e407297 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp @@ -497,7 +497,7 @@ static VkFormat sysmemPixelFormatTypeToVk(fuchsia_sysmem::wire::PixelFormatType // TODO(fxbug.dev/90856): This is currently only used for allocating // memory for dedicated external images. It should be migrated to use // SetBufferCollectionImageConstraintsFUCHSIA. -VkResult setBufferCollectionConstraintsFUCHSIA( +VkResult ResourceTracker::setBufferCollectionConstraintsFUCHSIA( VkEncoder* enc, VkDevice device, fidl::WireSyncClient* collection, const VkImageCreateInfo* pImageInfo) { @@ -639,7 +639,7 @@ VkResult addImageBufferCollectionConstraintsFUCHSIA( createInfoDup.pNext = nullptr; enc->vkGetLinearImageLayout2GOOGLE(device, &createInfoDup, &offset, &rowPitchAlignment, true /* do lock */); - D("vkGetLinearImageLayout2GOOGLE: format %d offset %lu " + ALOGD("vkGetLinearImageLayout2GOOGLE: format %d offset %lu " "rowPitchAlignment = %lu", (int)createInfo->format, offset, rowPitchAlignment); } @@ -672,17 +672,6 @@ VkResult addImageBufferCollectionConstraintsFUCHSIA( return VK_SUCCESS; } -struct SetBufferCollectionImageConstraintsResult { - VkResult result; - fuchsia_sysmem::wire::BufferCollectionConstraints constraints; - std::vector createInfoIndex; -}; - -struct SetBufferCollectionBufferConstraintsResult { - VkResult result; - fuchsia_sysmem::wire::BufferCollectionConstraints constraints; -}; - SetBufferCollectionBufferConstraintsResult setBufferCollectionBufferConstraintsImpl( fidl::WireSyncClient* pCollection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) { @@ -731,8 +720,8 @@ void transformExternalResourceMemoryDedicatedRequirementsForGuest( dedicatedReqs->requiresDedicatedAllocation = VK_TRUE; } -void setMemoryRequirementsForSysmemBackedImage(VkImage image, - VkMemoryRequirements* pMemoryRequirements) { +void ResourceTracker::setMemoryRequirementsForSysmemBackedImage(VkImage image, + VkMemoryRequirements* pMemoryRequirements) { #ifdef VK_USE_PLATFORM_FUCHSIA auto it = info_VkImage.find(image); if (it == info_VkImage.end()) return; @@ -749,7 +738,8 @@ void setMemoryRequirementsForSysmemBackedImage(VkImage image, #endif } -void transformImageMemoryRequirementsForGuestLocked(VkImage image, VkMemoryRequirements* reqs) { +void ResourceTracker::transformImageMemoryRequirementsForGuestLocked(VkImage image, + VkMemoryRequirements* reqs) { setMemoryRequirementsForSysmemBackedImage(image, reqs); } @@ -2623,7 +2613,7 @@ VkResult ResourceTracker::on_vkSetBufferCollectionBufferConstraintsFUCHSIA( return setBufferCollectionBufferConstraintsFUCHSIA(sysmem_collection, pBufferConstraintsInfo); } -VkResult getBufferCollectionImageCreateInfoIndexLocked( +VkResult ResourceTracker::getBufferCollectionImageCreateInfoIndexLocked( VkBufferCollectionFUCHSIA collection, fuchsia_sysmem::wire::BufferCollectionInfo2& info, uint32_t* outCreateInfoIndex) { if (!info_VkBufferCollectionFUCHSIA[collection].constraints.hasValue()) { @@ -6137,7 +6127,7 @@ VkResult ResourceTracker::on_vkGetPhysicalDeviceImageFormatProperties2_common( return VK_ERROR_FORMAT_NOT_SUPPORTED; } } - supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VM_BIT_FUCHSIA; + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA; #endif #ifdef VK_USE_PLATFORM_ANDROID_KHR @@ -6222,7 +6212,7 @@ void ResourceTracker::on_vkGetPhysicalDeviceExternalBufferProperties_common( uint32_t supportedHandleType = 0; #ifdef VK_USE_PLATFORM_FUCHSIA - supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VM_BIT_FUCHSIA; + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA; #endif #ifdef VK_USE_PLATFORM_ANDROID_KHR supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT | diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.h b/src/gfxstream/guest/vulkan_enc/ResourceTracker.h index 3e6ec25c222..af34ab6b9ee 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.h +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.h @@ -64,6 +64,17 @@ using gfxstream::guest::WorkPool; #define GET_STATUS_SAFE(result, member) ((result).ok() ? ((result)->member) : ZX_OK) +struct SetBufferCollectionImageConstraintsResult { + VkResult result; + fuchsia_sysmem::wire::BufferCollectionConstraints constraints; + std::vector createInfoIndex; +}; + +struct SetBufferCollectionBufferConstraintsResult { + VkResult result; + fuchsia_sysmem::wire::BufferCollectionConstraints constraints; +}; + #else typedef uint32_t zx_handle_t; @@ -294,6 +305,16 @@ class ResourceTracker { VkResult on_vkGetBufferCollectionPropertiesFUCHSIA( void* context, VkResult input_result, VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); + + VkResult setBufferCollectionImageConstraintsFUCHSIA( + VkEncoder* enc, VkDevice device, + fidl::WireSyncClient* pCollection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); + + VkResult setBufferCollectionBufferConstraintsFUCHSIA( + fidl::WireSyncClient* pCollection, + const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); + #endif #ifdef VK_USE_PLATFORM_ANDROID_KHR @@ -604,18 +625,6 @@ class ResourceTracker { int getHostInstanceExtensionIndex(const std::string& extName) const; int getHostDeviceExtensionIndex(const std::string& extName) const; -#ifdef VK_USE_PLATFORM_FUCHSIA - SetBufferCollectionImageConstraintsResult setBufferCollectionImageConstraintsImpl( - VkEncoder* enc, VkDevice device, - fidl::WireSyncClient* pCollection, - const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); - - VkResult setBufferCollectionBufferConstraintsFUCHSIA( - fidl::WireSyncClient* pCollection, - const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); - -#endif - CoherentMemoryPtr createCoherentMemory(VkDevice device, VkDeviceMemory mem, const VkMemoryAllocateInfo& hostAllocationInfo, VkEncoder* enc, VkResult& res); @@ -671,6 +680,26 @@ class ResourceTracker { VkBindImageMemorySwapchainInfoKHR* outputBimsi); #endif + void setMemoryRequirementsForSysmemBackedImage(VkImage image, + VkMemoryRequirements* pMemoryRequirements); + + void transformImageMemoryRequirementsForGuestLocked(VkImage image, VkMemoryRequirements* reqs); + +#if defined(VK_USE_PLATFORM_FUCHSIA) + VkResult getBufferCollectionImageCreateInfoIndexLocked( + VkBufferCollectionFUCHSIA collection, fuchsia_sysmem::wire::BufferCollectionInfo2& info, + uint32_t* outCreateInfoIndex); + + SetBufferCollectionImageConstraintsResult setBufferCollectionImageConstraintsImpl( + VkEncoder* enc, VkDevice device, + fidl::WireSyncClient* pCollection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); + + VkResult setBufferCollectionConstraintsFUCHSIA( + VkEncoder* enc, VkDevice device, + fidl::WireSyncClient* collection, + const VkImageCreateInfo* pImageInfo); +#endif void unregister_VkDescriptorSet_locked(VkDescriptorSet set);