[vulkan] Take codegen for general / external memory transforms (guest)

bug: 111137294
bug: 122080810

Change-Id: I3f45e8862785f333aaa5b814b3a7d95b6ad1704f
diff --git a/system/vulkan_enc/Android.mk b/system/vulkan_enc/Android.mk
index 51bf3bf..0c9c06d 100644
--- a/system/vulkan_enc/Android.mk
+++ b/system/vulkan_enc/Android.mk
@@ -53,7 +53,7 @@
 goldfish_vk_marshaling_guest.cpp \
 goldfish_vk_deepcopy_guest.cpp \
 goldfish_vk_handlemap_guest.cpp \
-goldfish_vk_transform.cpp \
+goldfish_vk_transform_guest.cpp \
 
 
 ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
diff --git a/system/vulkan_enc/CMakeLists.txt b/system/vulkan_enc/CMakeLists.txt
index 90999f0..cb2f40d 100644
--- a/system/vulkan_enc/CMakeLists.txt
+++ b/system/vulkan_enc/CMakeLists.txt
@@ -1,8 +1,8 @@
 # This is an autogenerated file! Do not edit!
 # instead run make from .../device/generic/goldfish-opengl
 # which will re-generate this file.
-android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc/Android.mk" "15e4471512bfd1d88d9be2d8fa99983da0453b63dc748e1d3ea0fa5145a6f0af")
-set(vulkan_enc_src HostVisibleMemoryVirtualization.cpp Resources.cpp Validation.cpp VulkanStream.cpp VulkanHandleMapping.cpp ResourceTracker.cpp VkEncoder.cpp goldfish_vk_extension_structs_guest.cpp goldfish_vk_marshaling_guest.cpp goldfish_vk_deepcopy_guest.cpp goldfish_vk_handlemap_guest.cpp goldfish_vk_transform.cpp)
+android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc/Android.mk" "08ea865dd8d2c10ef454508cff17fafbab701a014e0096e54f8663ed51f5536b")
+set(vulkan_enc_src HostVisibleMemoryVirtualization.cpp Resources.cpp Validation.cpp VulkanStream.cpp VulkanHandleMapping.cpp ResourceTracker.cpp VkEncoder.cpp goldfish_vk_extension_structs_guest.cpp goldfish_vk_marshaling_guest.cpp goldfish_vk_deepcopy_guest.cpp goldfish_vk_handlemap_guest.cpp goldfish_vk_transform_guest.cpp)
 android_add_shared_library(vulkan_enc)
 target_include_directories(vulkan_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/host/include/vulkan)
 target_compile_definitions(vulkan_enc PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGOLDFISH_VULKAN" "-DLOG_TAG=\"goldfish_vulkan\"" "-DVK_ANDROID_native_buffer" "-DVK_GOOGLE_address_space" "-DVK_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES")
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 3cacf39..8d6b6b6 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -1150,34 +1150,6 @@
     return mImpl->usingDirectMapping();
 }
 
-void ResourceTracker::deviceMemoryTransform_tohost(
-    VkDeviceMemory* memory, uint32_t memoryCount,
-    VkDeviceSize* offset, uint32_t offsetCount,
-    VkDeviceSize* size, uint32_t sizeCount,
-    uint32_t* typeIndex, uint32_t typeIndexCount,
-    uint32_t* typeBits, uint32_t typeBitsCount) {
-    mImpl->deviceMemoryTransform_tohost(
-        memory, memoryCount,
-        offset, offsetCount,
-        size, sizeCount,
-        typeIndex, typeIndexCount,
-        typeBits, typeBitsCount);
-}
-
-void ResourceTracker::deviceMemoryTransform_fromhost(
-    VkDeviceMemory* memory, uint32_t memoryCount,
-    VkDeviceSize* offset, uint32_t offsetCount,
-    VkDeviceSize* size, uint32_t sizeCount,
-    uint32_t* typeIndex, uint32_t typeIndexCount,
-    uint32_t* typeBits, uint32_t typeBitsCount) {
-    mImpl->deviceMemoryTransform_fromhost(
-        memory, memoryCount,
-        offset, offsetCount,
-        size, sizeCount,
-        typeIndex, typeIndexCount,
-        typeBits, typeBitsCount);
-}
-
 uint32_t ResourceTracker::getApiVersionFromInstance(VkInstance instance) const {
     return mImpl->getApiVersionFromInstance(instance);
 }
@@ -1342,4 +1314,38 @@
         context, input_result, device, memory, pAddress);
 }
 
-} // namespace goldfish_vk
+void ResourceTracker::deviceMemoryTransform_tohost(
+    VkDeviceMemory* memory, uint32_t memoryCount,
+    VkDeviceSize* offset, uint32_t offsetCount,
+    VkDeviceSize* size, uint32_t sizeCount,
+    uint32_t* typeIndex, uint32_t typeIndexCount,
+    uint32_t* typeBits, uint32_t typeBitsCount) {
+    mImpl->deviceMemoryTransform_tohost(
+        memory, memoryCount,
+        offset, offsetCount,
+        size, sizeCount,
+        typeIndex, typeIndexCount,
+        typeBits, typeBitsCount);
+}
+
+void ResourceTracker::deviceMemoryTransform_fromhost(
+    VkDeviceMemory* memory, uint32_t memoryCount,
+    VkDeviceSize* offset, uint32_t offsetCount,
+    VkDeviceSize* size, uint32_t sizeCount,
+    uint32_t* typeIndex, uint32_t typeIndexCount,
+    uint32_t* typeBits, uint32_t typeBitsCount) {
+    mImpl->deviceMemoryTransform_fromhost(
+        memory, memoryCount,
+        offset, offsetCount,
+        size, sizeCount,
+        typeIndex, typeIndexCount,
+        typeBits, typeBitsCount);
+}
+
+#define DEFINE_TRANSFORMED_TYPE_IMPL(type) \
+    void ResourceTracker::transformImpl_##type##_tohost(const type*, uint32_t) { } \
+    void ResourceTracker::transformImpl_##type##_fromhost(const type*, uint32_t) { } \
+
+LIST_TRANSFORMED_TYPES(DEFINE_TRANSFORMED_TYPE_IMPL)
+
+} // namespace goldfish_vk
\ No newline at end of file
diff --git a/system/vulkan_enc/ResourceTracker.h b/system/vulkan_enc/ResourceTracker.h
index c63dfc0..0afed7f 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -20,6 +20,8 @@
 #include "VulkanHandles.h"
 #include <memory>
 
+#include "goldfish_vk_transform_guest.h"
+
 struct EmulatorFeatureInfo;
 
 namespace goldfish_vk {
@@ -145,6 +147,12 @@
     void setupFeatures(const EmulatorFeatureInfo* features);
     bool hostSupportsVulkan() const;
     bool usingDirectMapping() const;
+    uint32_t getApiVersionFromInstance(VkInstance instance) const;
+    uint32_t getApiVersionFromDevice(VkDevice device) const;
+    bool hasInstanceExtension(VkInstance instance, const std::string& name) const;
+    bool hasDeviceExtension(VkDevice instance, const std::string& name) const;
+
+    // Transforms
     void deviceMemoryTransform_tohost(
         VkDeviceMemory* memory, uint32_t memoryCount,
         VkDeviceSize* offset, uint32_t offsetCount,
@@ -158,10 +166,11 @@
         uint32_t* typeIndex, uint32_t typeIndexCount,
         uint32_t* typeBits, uint32_t typeBitsCount);
 
-    uint32_t getApiVersionFromInstance(VkInstance instance) const;
-    uint32_t getApiVersionFromDevice(VkDevice device) const;
-    bool hasInstanceExtension(VkInstance instance, const std::string& name) const;
-    bool hasDeviceExtension(VkDevice instance, const std::string& name) const;
+#define DEFINE_TRANSFORMED_TYPE_PROTOTYPE(type) \
+    void transformImpl_##type##_tohost(const type*, uint32_t); \
+    void transformImpl_##type##_fromhost(const type*, uint32_t); \
+    
+LIST_TRANSFORMED_TYPES(DEFINE_TRANSFORMED_TYPE_PROTOTYPE)
 
   private:
     class Impl;
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index c34372b..dc1ad44 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -40,7 +40,7 @@
 #include "goldfish_vk_deepcopy_guest.h"
 #include "goldfish_vk_handlemap_guest.h"
 #include "goldfish_vk_private_defs.h"
-#include "goldfish_vk_transform.h"
+#include "goldfish_vk_transform_guest.h"
 
 
 namespace goldfish_vk {
@@ -1599,7 +1599,7 @@
         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
     }
     local_pAllocator = nullptr;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_101;
@@ -1863,7 +1863,7 @@
     VkDeviceMemory local_memory;
     local_device = device;
     local_memory = memory;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_111;
@@ -1910,7 +1910,7 @@
     local_buffer = buffer;
     local_memory = memory;
     local_memoryOffset = memoryOffset;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_115;
@@ -1968,7 +1968,7 @@
     local_image = image;
     local_memory = memory;
     local_memoryOffset = memoryOffset;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_121;
@@ -10751,6 +10751,7 @@
     }
     if (local_pExternalBufferInfo)
     {
+        mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
         transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
     }
     countingStream->rewind();
@@ -10774,6 +10775,7 @@
     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     if (pExternalBufferProperties)
     {
+        mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
         transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
     }
     mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
@@ -14242,6 +14244,7 @@
     }
     if (local_pExternalBufferInfo)
     {
+        mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
         transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
     }
     countingStream->rewind();
@@ -14265,6 +14268,7 @@
     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     if (pExternalBufferProperties)
     {
+        mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
         transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
     }
     mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
@@ -17918,7 +17922,7 @@
     local_device = device;
     local_memory = memory;
     local_handleType = handleType;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_1250;
@@ -21120,7 +21124,7 @@
     VkDeviceMemory local_memory;
     local_device = device;
     local_memory = memory;
-    mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     countingStream->rewind();
     {
         uint64_t cgen_var_1473;
diff --git a/system/vulkan_enc/goldfish_vk_transform.cpp b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
similarity index 96%
rename from system/vulkan_enc/goldfish_vk_transform.cpp
rename to system/vulkan_enc/goldfish_vk_transform_guest.cpp
index c5991c3..b413863 100644
--- a/system/vulkan_enc/goldfish_vk_transform.cpp
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Autogenerated module goldfish_vk_transform
+// Autogenerated module goldfish_vk_transform_guest
 // (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
 // Please do not modify directly;
 // re-run android/scripts/generate-vulkan-sources.sh,
@@ -22,12 +22,14 @@
 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
 // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
 
-#include "goldfish_vk_transform.h"
+#include "goldfish_vk_transform_guest.h"
 
 
 #include "goldfish_vk_extension_structs_guest.h"
 #include "goldfish_vk_private_defs.h"
 
+#include "ResourceTracker.h"
+
 
 namespace goldfish_vk {
 
@@ -444,7 +446,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeIndex, 1, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeIndex, 1, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -457,7 +459,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeIndex, 1, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeIndex, 1, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -470,7 +472,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, &toTransform->offset, 1, &toTransform->size, 1, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->offset, 1, (VkDeviceSize*)&toTransform->size, 1, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -483,7 +485,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, &toTransform->offset, 1, &toTransform->size, 1, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->offset, 1, (VkDeviceSize*)&toTransform->size, 1, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -496,7 +498,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
 }
 
 void transform_fromhost_VkMemoryRequirements(
@@ -505,7 +507,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
 }
 
 void transform_tohost_VkSparseImageFormatProperties(
@@ -550,7 +552,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
 }
 
 void transform_fromhost_VkSparseMemoryBind(
@@ -559,7 +561,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
 }
 
 void transform_tohost_VkSparseBufferMemoryBindInfo(
@@ -660,7 +662,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     transform_tohost_VkImageSubresource(resourceTracker, (VkImageSubresource*)(&toTransform->subresource));
     transform_tohost_VkOffset3D(resourceTracker, (VkOffset3D*)(&toTransform->offset));
     transform_tohost_VkExtent3D(resourceTracker, (VkExtent3D*)(&toTransform->extent));
@@ -672,7 +674,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     transform_fromhost_VkImageSubresource(resourceTracker, (VkImageSubresource*)(&toTransform->subresource));
     transform_fromhost_VkOffset3D(resourceTracker, (VkOffset3D*)(&toTransform->offset));
     transform_fromhost_VkExtent3D(resourceTracker, (VkExtent3D*)(&toTransform->extent));
@@ -2802,7 +2804,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -2815,7 +2817,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)&toTransform->memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -2828,7 +2830,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, nullptr, 0, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)&toTransform->memoryOffset, 1, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -2841,7 +2843,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, nullptr, 0, &toTransform->memoryOffset, 1, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)&toTransform->memoryOffset, 1, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -4086,6 +4088,7 @@
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
     }
+    resourceTracker->transformImpl_VkExternalMemoryProperties_tohost(&toTransform->externalMemoryProperties, 1);
     transform_tohost_VkExternalMemoryProperties(resourceTracker, (VkExternalMemoryProperties*)(&toTransform->externalMemoryProperties));
 }
 
@@ -4099,6 +4102,7 @@
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
     }
+    resourceTracker->transformImpl_VkExternalMemoryProperties_fromhost(&toTransform->externalMemoryProperties, 1);
     transform_fromhost_VkExternalMemoryProperties(resourceTracker, (VkExternalMemoryProperties*)(&toTransform->externalMemoryProperties));
 }
 
@@ -4136,6 +4140,7 @@
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
     }
+    resourceTracker->transformImpl_VkExternalMemoryProperties_tohost(&toTransform->externalMemoryProperties, 1);
     transform_tohost_VkExternalMemoryProperties(resourceTracker, (VkExternalMemoryProperties*)(&toTransform->externalMemoryProperties));
 }
 
@@ -4149,6 +4154,7 @@
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
     }
+    resourceTracker->transformImpl_VkExternalMemoryProperties_fromhost(&toTransform->externalMemoryProperties, 1);
     transform_fromhost_VkExternalMemoryProperties(resourceTracker, (VkExternalMemoryProperties*)(&toTransform->externalMemoryProperties));
 }
 
@@ -5118,7 +5124,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5131,7 +5137,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5144,7 +5150,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5157,7 +5163,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5196,7 +5202,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5209,7 +5215,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5222,7 +5228,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5235,7 +5241,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5250,7 +5256,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(toTransform->pReleaseSyncs, toTransform->releaseCount, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)toTransform->pReleaseSyncs, toTransform->releaseCount, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -5263,7 +5269,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(toTransform->pReleaseSyncs, toTransform->releaseCount, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)toTransform->pReleaseSyncs, toTransform->releaseCount, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -6678,7 +6684,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(toTransform->pReleaseSyncs, toTransform->releaseCount, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)toTransform->pReleaseSyncs, toTransform->releaseCount, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -6691,7 +6697,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(toTransform->pReleaseSyncs, toTransform->releaseCount, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)toTransform->pReleaseSyncs, toTransform->releaseCount, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -7914,7 +7920,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -7927,7 +7933,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -7990,7 +7996,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -8003,7 +8009,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(&toTransform->memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)&toTransform->memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -8678,7 +8684,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_tohost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_tohost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -8691,7 +8697,7 @@
 {
     (void)resourceTracker;
     (void)toTransform;
-    resourceTracker->deviceMemoryTransform_fromhost(nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0, &toTransform->memoryTypeBits, 1);
+    resourceTracker->deviceMemoryTransform_fromhost((VkDeviceMemory*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)&toTransform->memoryTypeBits, 1);
     if (toTransform->pNext)
     {
         transform_fromhost_extension_struct(resourceTracker, (void*)(toTransform->pNext));
@@ -9044,11 +9050,13 @@
         }
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
         {
+            resourceTracker->transformImpl_VkPhysicalDeviceExternalImageFormatInfo_tohost(reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out), 1);
             transform_tohost_VkPhysicalDeviceExternalImageFormatInfo(resourceTracker, reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
         {
+            resourceTracker->transformImpl_VkExternalImageFormatProperties_tohost(reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out), 1);
             transform_tohost_VkExternalImageFormatProperties(resourceTracker, reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out));
             break;
         }
@@ -9059,16 +9067,19 @@
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
         {
+            resourceTracker->transformImpl_VkExternalMemoryImageCreateInfo_tohost(reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out), 1);
             transform_tohost_VkExternalMemoryImageCreateInfo(resourceTracker, reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
         {
+            resourceTracker->transformImpl_VkExternalMemoryBufferCreateInfo_tohost(reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out), 1);
             transform_tohost_VkExternalMemoryBufferCreateInfo(resourceTracker, reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
         {
+            resourceTracker->transformImpl_VkExportMemoryAllocateInfo_tohost(reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out), 1);
             transform_tohost_VkExportMemoryAllocateInfo(resourceTracker, reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out));
             break;
         }
@@ -9695,11 +9706,13 @@
         }
         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
         {
+            resourceTracker->transformImpl_VkPhysicalDeviceExternalImageFormatInfo_fromhost(reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out), 1);
             transform_fromhost_VkPhysicalDeviceExternalImageFormatInfo(resourceTracker, reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
         {
+            resourceTracker->transformImpl_VkExternalImageFormatProperties_fromhost(reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out), 1);
             transform_fromhost_VkExternalImageFormatProperties(resourceTracker, reinterpret_cast<VkExternalImageFormatProperties*>(structExtension_out));
             break;
         }
@@ -9710,16 +9723,19 @@
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
         {
+            resourceTracker->transformImpl_VkExternalMemoryImageCreateInfo_fromhost(reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out), 1);
             transform_fromhost_VkExternalMemoryImageCreateInfo(resourceTracker, reinterpret_cast<VkExternalMemoryImageCreateInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
         {
+            resourceTracker->transformImpl_VkExternalMemoryBufferCreateInfo_fromhost(reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out), 1);
             transform_fromhost_VkExternalMemoryBufferCreateInfo(resourceTracker, reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(structExtension_out));
             break;
         }
         case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
         {
+            resourceTracker->transformImpl_VkExportMemoryAllocateInfo_fromhost(reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out), 1);
             transform_fromhost_VkExportMemoryAllocateInfo(resourceTracker, reinterpret_cast<VkExportMemoryAllocateInfo*>(structExtension_out));
             break;
         }
diff --git a/system/vulkan_enc/goldfish_vk_transform.h b/system/vulkan_enc/goldfish_vk_transform_guest.h
similarity index 99%
rename from system/vulkan_enc/goldfish_vk_transform.h
rename to system/vulkan_enc/goldfish_vk_transform_guest.h
index 9aa4b84..e2d33de 100644
--- a/system/vulkan_enc/goldfish_vk_transform.h
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.h
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Autogenerated module goldfish_vk_transform
+// Autogenerated module goldfish_vk_transform_guest
 // (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
 // Please do not modify directly;
 // re-run android/scripts/generate-vulkan-sources.sh,
@@ -30,11 +30,21 @@
 #include "vk_platform_compat.h"
 
 #include "goldfish_vk_private_defs.h"
-#include "ResourceTracker.h"
 
 
 namespace goldfish_vk {
 
+class ResourceTracker;
+#define LIST_TRANSFORMED_TYPES(f) \
+f(VkExternalMemoryProperties) \
+f(VkPhysicalDeviceExternalImageFormatInfo) \
+f(VkPhysicalDeviceExternalBufferInfo) \
+f(VkExternalMemoryImageCreateInfo) \
+f(VkExternalMemoryBufferCreateInfo) \
+f(VkExportMemoryAllocateInfo) \
+f(VkExternalImageFormatProperties) \
+f(VkExternalBufferProperties) \
+
 #ifdef VK_VERSION_1_0
 void transform_tohost_VkApplicationInfo(
     ResourceTracker* resourceTracker,