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",