[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 <aruby@blackberry.com>
Acked-by: Yonggang Luo <luoyonggang@gmail.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
This commit is contained in:
C Stout
2023-11-14 16:31:56 -08:00
committed by Marge Bot
parent 6227db5ad8
commit c80f355101
2 changed files with 50 additions and 31 deletions
@@ -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<fuchsia_sysmem::BufferCollection>* 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<uint32_t> createInfoIndex;
};
struct SetBufferCollectionBufferConstraintsResult {
VkResult result;
fuchsia_sysmem::wire::BufferCollectionConstraints constraints;
};
SetBufferCollectionBufferConstraintsResult setBufferCollectionBufferConstraintsImpl(
fidl::WireSyncClient<fuchsia_sysmem::BufferCollection>* 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 |
@@ -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<uint32_t> 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<fuchsia_sysmem::BufferCollection>* pCollection,
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
VkResult setBufferCollectionBufferConstraintsFUCHSIA(
fidl::WireSyncClient<fuchsia_sysmem::BufferCollection>* 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<fuchsia_sysmem::BufferCollection>* pCollection,
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
VkResult setBufferCollectionBufferConstraintsFUCHSIA(
fidl::WireSyncClient<fuchsia_sysmem::BufferCollection>* 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<fuchsia_sysmem::BufferCollection>* pCollection,
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
VkResult setBufferCollectionConstraintsFUCHSIA(
VkEncoder* enc, VkDevice device,
fidl::WireSyncClient<fuchsia_sysmem::BufferCollection>* collection,
const VkImageCreateInfo* pImageInfo);
#endif
void unregister_VkDescriptorSet_locked(VkDescriptorSet set);