Merge "(reland) Make it easier to locally unit test guest/host combined tracing"
diff --git a/shared/GoldfishAddressSpace/include/goldfish_address_space_android.impl b/shared/GoldfishAddressSpace/include/goldfish_address_space_android.impl
index e6f7539..64f26ad 100644
--- a/shared/GoldfishAddressSpace/include/goldfish_address_space_android.impl
+++ b/shared/GoldfishAddressSpace/include/goldfish_address_space_android.impl
@@ -724,6 +724,20 @@
     return res | (hi64 << 32);
 }
 
+/* Used to retry DRM_IOCTL_VIRTGPU_WAIT, which can also return EBUSY. */
+#define TEMP_FAILURE_RETRY_BUSY(tag, exp) ({                                            \
+    __typeof__(exp) _rc;                                                                \
+    do {                                                                                \
+        uint32_t busy_times = 0;                                                        \
+        _rc = (exp);                                                                    \
+        if (errno == EBUSY) {                                                           \
+            ++busy_times;                                                               \
+            usleep(10000);                                                              \
+            ALOGE("%s:%s busy! waited %u times on EBUSY\n", __func__, tag, busy_times); \
+        }                                                                               \
+    } while (_rc != 0 && (errno == EINTR || errno == EBUSY));                           \
+    _rc; })
+
 // Ping with response
 bool virtgpu_address_space_ping_with_response(
     struct address_space_virtgpu_info* info,
@@ -760,7 +774,7 @@
     memset(&waitcmd, 0, sizeof(waitcmd));
     waitcmd.handle = info->resp_bo;
 
-    int ret = drmIoctl(info->fd, DRM_IOCTL_VIRTGPU_WAIT, &waitcmd);
+    int ret = TEMP_FAILURE_RETRY_BUSY("DRM_IOCTL_VIRTGPU_WAIT", drmIoctl(info->fd, DRM_IOCTL_VIRTGPU_WAIT, &waitcmd));
     if (ret) {
         ALOGE("%s: DRM_IOCTL_VIRTGPU_WAIT failed with %d (%s)\n", __func__, errno, strerror(errno));
         return false;
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index e0ab5ef..43e6e01 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -1102,9 +1102,10 @@
             "VK_KHR_maintenance1",
             "VK_KHR_maintenance2",
             "VK_KHR_maintenance3",
-            "VK_KHR_get_memory_requirements2",
-            "VK_KHR_dedicated_allocation",
             "VK_KHR_bind_memory2",
+            "VK_KHR_dedicated_allocation",
+            "VK_KHR_get_memory_requirements2",
+            "VK_KHR_image_format_list",
             "VK_KHR_sampler_ycbcr_conversion",
             "VK_KHR_shader_float16_int8",
             "VK_AMD_gpu_shader_half_float",