Disable compatible handle types for semaphore timeline

Bug: 304373623
Test: dEQP-VK.api.external.semaphore.sync_fd#info_timeline
Change-Id: I7708e9827524b1b08f06dd58422f0853ed438c88
diff --git a/guest/vulkan_enc/ResourceTracker.cpp b/guest/vulkan_enc/ResourceTracker.cpp
index 95a9ac9..1bc726b 100644
--- a/guest/vulkan_enc/ResourceTracker.cpp
+++ b/guest/vulkan_enc/ResourceTracker.cpp
@@ -6434,7 +6434,18 @@
             VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT;
     }
 #else
-    if (pExternalSemaphoreInfo->handleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT) {
+    const VkSemaphoreTypeCreateInfo* semaphoreTypeCi =
+        vk_find_struct<VkSemaphoreTypeCreateInfo>(pExternalSemaphoreInfo);
+    bool isSemaphoreTimeline =
+        semaphoreTypeCi != nullptr && semaphoreTypeCi->semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE;
+    if (isSemaphoreTimeline) {
+        // b/304373623
+        // dEQP-VK.api.external.semaphore.sync_fd#info_timeline
+        pExternalSemaphoreProperties->compatibleHandleTypes = 0;
+        pExternalSemaphoreProperties->exportFromImportedHandleTypes = 0;
+        pExternalSemaphoreProperties->externalSemaphoreFeatures = 0;
+    } else if (pExternalSemaphoreInfo->handleType ==
+               VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT) {
         pExternalSemaphoreProperties->compatibleHandleTypes |=
             VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
         pExternalSemaphoreProperties->exportFromImportedHandleTypes |=
diff --git a/guest/vulkan_enc/vk_struct_id.h b/guest/vulkan_enc/vk_struct_id.h
index 7fc535c..355b07f 100644
--- a/guest/vulkan_enc/vk_struct_id.h
+++ b/guest/vulkan_enc/vk_struct_id.h
@@ -81,6 +81,7 @@
 REGISTER_VK_STRUCT_ID(VkBufferDeviceAddressCreateInfoEXT, VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT);
 REGISTER_VK_STRUCT_ID(VkGraphicsPipelineCreateInfo, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO);
 REGISTER_VK_STRUCT_ID(VkPipelineRenderingCreateInfo, VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO);
+REGISTER_VK_STRUCT_ID(VkPhysicalDeviceExternalSemaphoreInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO);
 
 #undef REGISTER_VK_STRUCT_ID