aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Woloszyn <awoloszyn@google.com>2023-10-05 19:39:37 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-10-05 19:39:37 +0000
commitc1c2484959e95a0d925c768be42e0e73d56b6d57 (patch)
tree31b2f3825f597a8d8ffc359dc068f5498d2a0c9a
parent280e7f6f96f9e0ec5827a68e121fdfb7159f1527 (diff)
parentb1a5b705d62bd341a9e3cdfb798ea8eee8958d40 (diff)
downloadgoldfish-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.cpp40
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;
}