diff options
author | Andrew Woloszyn <awoloszyn@google.com> | 2023-10-05 19:39:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-10-05 19:39:37 +0000 |
commit | c1c2484959e95a0d925c768be42e0e73d56b6d57 (patch) | |
tree | 31b2f3825f597a8d8ffc359dc068f5498d2a0c9a | |
parent | 280e7f6f96f9e0ec5827a68e121fdfb7159f1527 (diff) | |
parent | b1a5b705d62bd341a9e3cdfb798ea8eee8958d40 (diff) | |
download | goldfish-opengl-c1c2484959e95a0d925c768be42e0e73d56b6d57.tar.gz |
Merge "Added some fixes for zircon tests in the Android CTS." into udc-dev am: b1a5b705d6
Original change: https://googleplex-android-review.googlesource.com/c/device/generic/goldfish-opengl/+/24957494
Change-Id: Idc2235b1eaf67412f1404865f9aa70c992461fbf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | system/vulkan_enc/ResourceTracker.cpp | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp index 4a77ba9a..b9403c33 100644 --- a/system/vulkan_enc/ResourceTracker.cpp +++ b/system/vulkan_enc/ResourceTracker.cpp @@ -4469,7 +4469,22 @@ public: pExternalBufferProperties->externalMemoryProperties.compatibleHandleTypes = 0; return; } + uint32_t supportedHandleType = 0; +#ifdef VK_USE_PLATFORM_FUCHSIA + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VM_BIT_FUCHSIA; +#endif +#ifdef VK_USE_PLATFORM_ANDROID_KHR + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID; +#endif + if (supportedHandleType) { + // 0 is a valid handleType so we can't check against 0 + if (pExternalBufferInfo->handleType != (pExternalBufferInfo->handleType & supportedHandleType)) { + return; + } + } enc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */); + transformImpl_VkExternalMemoryProperties_fromhost(&pExternalBufferProperties->externalMemoryProperties, 0); } void on_vkGetPhysicalDeviceExternalFenceProperties( @@ -6700,6 +6715,9 @@ public: VkEncoder* enc = (VkEncoder*)context; (void)input_result; + uint32_t supportedHandleType = 0; + VkExternalImageFormatProperties* ext_img_properties = + vk_find_struct<VkExternalImageFormatProperties>(pImageFormatProperties); #ifdef VK_USE_PLATFORM_FUCHSIA constexpr VkFormat kExternalImageSupportedFormats[] = { @@ -6731,9 +6749,6 @@ public: VK_FORMAT_R8G8_SRGB, }; - VkExternalImageFormatProperties* ext_img_properties = - vk_find_struct<VkExternalImageFormatProperties>(pImageFormatProperties); - if (ext_img_properties) { if (std::find(std::begin(kExternalImageSupportedFormats), std::end(kExternalImageSupportedFormats), @@ -6741,13 +6756,24 @@ public: return VK_ERROR_FORMAT_NOT_SUPPORTED; } } + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VM_BIT_FUCHSIA; #endif #ifdef VK_USE_PLATFORM_ANDROID_KHR VkAndroidHardwareBufferUsageANDROID* output_ahw_usage = vk_find_struct<VkAndroidHardwareBufferUsageANDROID>(pImageFormatProperties); + supportedHandleType |= VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID; #endif - + const VkPhysicalDeviceExternalImageFormatInfo* ext_img_info = + vk_find_struct<VkPhysicalDeviceExternalImageFormatInfo>(pImageFormatInfo); + + if (supportedHandleType && ext_img_info) { + // 0 is a valid handleType so we don't check against 0 + if (ext_img_info->handleType != (ext_img_info->handleType & supportedHandleType)) { + return VK_ERROR_FORMAT_NOT_SUPPORTED; + } + } VkResult hostRes; if (isKhr) { @@ -6764,8 +6790,6 @@ public: #ifdef VK_USE_PLATFORM_FUCHSIA if (ext_img_properties) { - const VkPhysicalDeviceExternalImageFormatInfo* ext_img_info = - vk_find_struct<VkPhysicalDeviceExternalImageFormatInfo>(pImageFormatInfo); if (ext_img_info) { if (static_cast<uint32_t>(ext_img_info->handleType) == VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA) { @@ -6791,7 +6815,9 @@ public: pImageFormatInfo->usage); } #endif - + if (ext_img_properties) { + transformImpl_VkExternalMemoryProperties_fromhost(&ext_img_properties->externalMemoryProperties, 0); + } return hostRes; } |