[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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user