gfxstream: auto-generate Fuchsia ResourceTracker function table entries

gfxstream allows the function table (func_table.cpp)
to route directly to Vulkan encoder or allow custom
handling in the ResourceTracker.

For Fuchsia, we have custom dispatch to the ResourceTracker
in goldfish_vulkan.cpp, presumably since some extensions
weren't in vk.xml at one point and thus couldn't be
auto-generated.

Now, these extensions are in vk.xml and can be
auto-generated.

BUG=298679844
TEST=compile

Change-Id: I8da9ba30719e3f5cba1e7d32661041d459ceee60
diff --git a/codegen/vulkan/vulkan-docs/scripts/cereal/common/vulkantypes.py b/codegen/vulkan/vulkan-docs/scripts/cereal/common/vulkantypes.py
index 37dc8d1..456a812 100644
--- a/codegen/vulkan/vulkan-docs/scripts/cereal/common/vulkantypes.py
+++ b/codegen/vulkan/vulkan-docs/scripts/cereal/common/vulkantypes.py
@@ -989,6 +989,7 @@
             "size_t": 8,
             "ssize_t": 8,
             "VkBool32": 4,
+            "zx_handle_t": 4,
         }
 
         if name in baseEncodingSizes:
diff --git a/codegen/vulkan/vulkan-docs/scripts/cereal/functable.py b/codegen/vulkan/vulkan-docs/scripts/cereal/functable.py
index d6542cf..52a8e73 100644
--- a/codegen/vulkan/vulkan-docs/scripts/cereal/functable.py
+++ b/codegen/vulkan/vulkan-docs/scripts/cereal/functable.py
@@ -73,6 +73,16 @@
     "vkQueueSignalReleaseImageANDROID",
     "vkCmdPipelineBarrier",
     "vkCreateGraphicsPipelines",
+    # Fuchsia
+    "vkGetMemoryZirconHandleFUCHSIA",
+    "vkGetMemoryZirconHandlePropertiesFUCHSIA",
+    "vkGetSemaphoreZirconHandleFUCHSIA",
+    "vkImportSemaphoreZirconHandleFUCHSIA",
+    "vkCreateBufferCollectionFUCHSIA",
+    "vkDestroyBufferCollectionFUCHSIA",
+    "vkSetBufferCollectionImageConstraintsFUCHSIA",
+    "vkSetBufferCollectionBufferConstraintsFUCHSIA",
+    "vkGetBufferCollectionPropertiesFUCHSIA",
 ]
 
 SUCCESS_VAL = {
diff --git a/guest/vulkan_enc/func_table.cpp b/guest/vulkan_enc/func_table.cpp
index e4fe59c..37e8ec0 100644
--- a/guest/vulkan_enc/func_table.cpp
+++ b/guest/vulkan_enc/func_table.cpp
@@ -8509,8 +8509,9 @@
     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
-    vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(
-        device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
+    auto resources = ResourceTracker::get();
+    vkGetMemoryZirconHandleFUCHSIA_VkResult_return = resources->on_vkGetMemoryZirconHandleFUCHSIA(
+        vkEnc, VK_SUCCESS, device, pGetZirconHandleInfo, pZirconHandle);
     return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
@@ -8524,8 +8525,8 @@
     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
-    vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(
-        device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
+    vkGetMemoryZirconHandleFUCHSIA_VkResult_return = resources->on_vkGetMemoryZirconHandleFUCHSIA(
+        vkEnc, VK_SUCCESS, device, pGetZirconHandleInfo, pZirconHandle);
     return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
 }
 static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
@@ -8534,9 +8535,10 @@
     AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
+    auto resources = ResourceTracker::get();
     vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return =
-        vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(
-            device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
+        resources->on_vkGetMemoryZirconHandlePropertiesFUCHSIA(
+            vkEnc, VK_SUCCESS, device, handleType, zirconHandle, pMemoryZirconHandleProperties);
     return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
@@ -8551,8 +8553,8 @@
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
     vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return =
-        vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(
-            device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
+        resources->on_vkGetMemoryZirconHandlePropertiesFUCHSIA(
+            vkEnc, VK_SUCCESS, device, handleType, zirconHandle, pMemoryZirconHandleProperties);
     return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
 }
 #endif
@@ -8563,9 +8565,10 @@
     AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
+    auto resources = ResourceTracker::get();
     vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return =
-        vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo,
-                                                    true /* do lock */);
+        resources->on_vkImportSemaphoreZirconHandleFUCHSIA(vkEnc, VK_SUCCESS, device,
+                                                           pImportSemaphoreZirconHandleInfo);
     return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
@@ -8580,8 +8583,8 @@
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
     vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return =
-        vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo,
-                                                    true /* do lock */);
+        resources->on_vkImportSemaphoreZirconHandleFUCHSIA(vkEnc, VK_SUCCESS, device,
+                                                           pImportSemaphoreZirconHandleInfo);
     return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
 }
 static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
@@ -8590,8 +8593,10 @@
     AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
-    vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(
-        device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
+    auto resources = ResourceTracker::get();
+    vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return =
+        resources->on_vkGetSemaphoreZirconHandleFUCHSIA(vkEnc, VK_SUCCESS, device,
+                                                        pGetZirconHandleInfo, pZirconHandle);
     return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
@@ -8605,8 +8610,9 @@
     AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
-    vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(
-        device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
+    vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return =
+        resources->on_vkGetSemaphoreZirconHandleFUCHSIA(vkEnc, VK_SUCCESS, device,
+                                                        pGetZirconHandleInfo, pZirconHandle);
     return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
 }
 #endif
@@ -8617,8 +8623,9 @@
     AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
-    vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(
-        device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
+    auto resources = ResourceTracker::get();
+    vkCreateBufferCollectionFUCHSIA_VkResult_return = resources->on_vkCreateBufferCollectionFUCHSIA(
+        vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pCollection);
     return vkCreateBufferCollectionFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
@@ -8632,8 +8639,8 @@
     AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
-    vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(
-        device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
+    vkCreateBufferCollectionFUCHSIA_VkResult_return = resources->on_vkCreateBufferCollectionFUCHSIA(
+        vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pCollection);
     return vkCreateBufferCollectionFUCHSIA_VkResult_return;
 }
 static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
@@ -8642,9 +8649,10 @@
     AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
+    auto resources = ResourceTracker::get();
     vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return =
-        vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(
-            device, collection, pImageConstraintsInfo, true /* do lock */);
+        resources->on_vkSetBufferCollectionImageConstraintsFUCHSIA(
+            vkEnc, VK_SUCCESS, device, collection, pImageConstraintsInfo);
     return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
@@ -8659,8 +8667,8 @@
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
     vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return =
-        vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(
-            device, collection, pImageConstraintsInfo, true /* do lock */);
+        resources->on_vkSetBufferCollectionImageConstraintsFUCHSIA(
+            vkEnc, VK_SUCCESS, device, collection, pImageConstraintsInfo);
     return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
 }
 static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
@@ -8669,9 +8677,10 @@
     AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
+    auto resources = ResourceTracker::get();
     vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return =
-        vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(
-            device, collection, pBufferConstraintsInfo, true /* do lock */);
+        resources->on_vkSetBufferCollectionBufferConstraintsFUCHSIA(
+            vkEnc, VK_SUCCESS, device, collection, pBufferConstraintsInfo);
     return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
@@ -8686,8 +8695,8 @@
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
     vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return =
-        vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(
-            device, collection, pBufferConstraintsInfo, true /* do lock */);
+        resources->on_vkSetBufferCollectionBufferConstraintsFUCHSIA(
+            vkEnc, VK_SUCCESS, device, collection, pBufferConstraintsInfo);
     return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
 }
 static void entry_vkDestroyBufferCollectionFUCHSIA(VkDevice device,
@@ -8695,7 +8704,8 @@
                                                    const VkAllocationCallbacks* pAllocator) {
     AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
-    vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
+    auto resources = ResourceTracker::get();
+    resources->on_vkDestroyBufferCollectionFUCHSIA(vkEnc, device, collection, pAllocator);
 }
 static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
     VkDevice device, VkBufferCollectionFUCHSIA collection,
@@ -8707,7 +8717,7 @@
     }
     AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
-    vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
+    resources->on_vkDestroyBufferCollectionFUCHSIA(vkEnc, device, collection, pAllocator);
 }
 static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
     VkDevice device, VkBufferCollectionFUCHSIA collection,
@@ -8715,9 +8725,10 @@
     AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
+    auto resources = ResourceTracker::get();
     vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return =
-        vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties,
-                                                      true /* do lock */);
+        resources->on_vkGetBufferCollectionPropertiesFUCHSIA(vkEnc, VK_SUCCESS, device, collection,
+                                                             pProperties);
     return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
 }
 static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
@@ -8732,8 +8743,8 @@
     auto vkEnc = ResourceTracker::getThreadLocalEncoder();
     VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
     vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return =
-        vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties,
-                                                      true /* do lock */);
+        resources->on_vkGetBufferCollectionPropertiesFUCHSIA(vkEnc, VK_SUCCESS, device, collection,
+                                                             pProperties);
     return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
 }
 #endif