[vulkan] ABI independence: fuse marshaling with handle mapping

bug: 119685647
bug: 111137294

This CL takes the changes for fusing marshaling with handle mapping. It
also refactors to have a common VulkanHandles.h header that both
Resources and VulkanHandleMapping will use, and takes the new
definitions of ResourceTracker in terms of macros instead of using a
code generator.

Change-Id: Ia461d799da273e437624d32f74af4aa9378f371f
diff --git a/system/vulkan_enc/Android.mk b/system/vulkan_enc/Android.mk
index 1824d9d..d64bbdb 100644
--- a/system/vulkan_enc/Android.mk
+++ b/system/vulkan_enc/Android.mk
@@ -40,9 +40,11 @@
     -DVK_USE_PLATFORM_ANDROID_KHR \
     -DVK_NO_PROTOTYPES \
 
-LOCAL_SRC_FILES := Resources.cpp VulkanStream.cpp \
+LOCAL_SRC_FILES := Resources.cpp \
+    VulkanStream.cpp \
+    VulkanHandleMapping.cpp \
     ResourceTracker.cpp \
-VkEncoder.cpp \
+    VkEncoder.cpp \
 goldfish_vk_extension_structs_guest.cpp \
 goldfish_vk_marshaling_guest.cpp \
 goldfish_vk_deepcopy_guest.cpp \
diff --git a/system/vulkan_enc/CMakeLists.txt b/system/vulkan_enc/CMakeLists.txt
index c6057a0..a10b3a3 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" "13977832122fe0ac71ccf374c0d5d419ba683dbbc0573f4df3c60867922f325d")
-set(vulkan_enc_src Resources.cpp VulkanStream.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)
+android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc/Android.mk" "3830d5a7d8d48fcd066853a00f57e2df9f8db9a30295f3bd9f3c9f6db604abe5")
+set(vulkan_enc_src Resources.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)
 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_USE_PLATFORM_ANDROID_KHR" "-DVK_NO_PROTOTYPES")
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index fbacad8..20098af 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -13,1547 +13,57 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Autogenerated module ResourceTracker
-// (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,
-// or directly from Python by defining:
-// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
-// 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 "ResourceTracker.h"
 
-
 #include "Resources.h"
 
-
 namespace goldfish_vk {
 
-class CreateMapping : public VulkanHandleMapping {
-public:
-    virtual ~CreateMapping() { }
-    void mapHandles_VkBuffer(VkBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBuffer_u64(const VkBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView(VkBufferView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView_u64(const VkBufferView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer(VkCommandBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer_u64(const VkCommandBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool(VkCommandPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool_u64(const VkCommandPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT_u64(const VkDebugReportCallbackEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT_u64(const VkDebugUtilsMessengerEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool(VkDescriptorPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool_u64(const VkDescriptorPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet(VkDescriptorSet* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet_u64(const VkDescriptorSet* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout(VkDescriptorSetLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout_u64(const VkDescriptorSetLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate_u64(const VkDescriptorUpdateTemplate* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice(VkDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice_u64(const VkDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory(VkDeviceMemory* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory_u64(const VkDeviceMemory* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR(VkDisplayKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR_u64(const VkDisplayKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR(VkDisplayModeKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR_u64(const VkDisplayModeKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent(VkEvent* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent_u64(const VkEvent* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkFence(VkFence* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFence_u64(const VkFence* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer(VkFramebuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer_u64(const VkFramebuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkImage(VkImage* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImage_u64(const VkImage* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView(VkImageView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView_u64(const VkImageView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX_u64(const VkIndirectCommandsLayoutNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance(VkInstance* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance_u64(const VkInstance* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX(VkObjectTableNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX_u64(const VkObjectTableNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice(VkPhysicalDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice_u64(const VkPhysicalDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline(VkPipeline* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline_u64(const VkPipeline* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache(VkPipelineCache* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache_u64(const VkPipelineCache* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout(VkPipelineLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout_u64(const VkPipelineLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool(VkQueryPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool_u64(const VkQueryPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue(VkQueue* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue_u64(const VkQueue* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass(VkRenderPass* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass_u64(const VkRenderPass* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler(VkSampler* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler_u64(const VkSampler* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion_u64(const VkSamplerYcbcrConversion* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore(VkSemaphore* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore_u64(const VkSemaphore* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule(VkShaderModule* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule_u64(const VkShaderModule* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR(VkSurfaceKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR_u64(const VkSurfaceKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR(VkSwapchainKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR_u64(const VkSwapchainKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT(VkValidationCacheEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = new_from_host_VkValidationCacheEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT_u64(const VkValidationCacheEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_VkValidationCacheEXT(handles[i]);
-        }
-    }
-};
-class UnwrapMapping : public VulkanHandleMapping {
-public:
-    virtual ~UnwrapMapping() { }
-    void mapHandles_VkBuffer(VkBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBuffer_u64(const VkBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView(VkBufferView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView_u64(const VkBufferView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer(VkCommandBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer_u64(const VkCommandBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool(VkCommandPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool_u64(const VkCommandPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT_u64(const VkDebugReportCallbackEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT_u64(const VkDebugUtilsMessengerEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool(VkDescriptorPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool_u64(const VkDescriptorPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet(VkDescriptorSet* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet_u64(const VkDescriptorSet* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout(VkDescriptorSetLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout_u64(const VkDescriptorSetLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate_u64(const VkDescriptorUpdateTemplate* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice(VkDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice_u64(const VkDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory(VkDeviceMemory* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory_u64(const VkDeviceMemory* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR(VkDisplayKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR_u64(const VkDisplayKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR(VkDisplayModeKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR_u64(const VkDisplayModeKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent(VkEvent* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent_u64(const VkEvent* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkFence(VkFence* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFence_u64(const VkFence* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer(VkFramebuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer_u64(const VkFramebuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkImage(VkImage* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImage_u64(const VkImage* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView(VkImageView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView_u64(const VkImageView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX_u64(const VkIndirectCommandsLayoutNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance(VkInstance* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance_u64(const VkInstance* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX(VkObjectTableNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX_u64(const VkObjectTableNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice(VkPhysicalDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice_u64(const VkPhysicalDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline(VkPipeline* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline_u64(const VkPipeline* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache(VkPipelineCache* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache_u64(const VkPipelineCache* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout(VkPipelineLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout_u64(const VkPipelineLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool(VkQueryPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool_u64(const VkQueryPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue(VkQueue* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue_u64(const VkQueue* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass(VkRenderPass* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass_u64(const VkRenderPass* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler(VkSampler* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler_u64(const VkSampler* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion_u64(const VkSamplerYcbcrConversion* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore(VkSemaphore* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore_u64(const VkSemaphore* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule(VkShaderModule* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule_u64(const VkShaderModule* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR(VkSurfaceKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR_u64(const VkSurfaceKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR(VkSwapchainKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR_u64(const VkSwapchainKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT(VkValidationCacheEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handles[i] = get_host_VkValidationCacheEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT_u64(const VkValidationCacheEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            handle_u64s[i] = (uint64_t)(uintptr_t)get_host_VkValidationCacheEXT(handles[i]);
-        }
-    }
-};
-class DestroyMapping : public VulkanHandleMapping {
-public:
-    virtual ~DestroyMapping() { }
-    void mapHandles_VkBuffer(VkBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBuffer_u64(const VkBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView(VkBufferView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkBufferView_u64(const VkBufferView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkBufferView(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer(VkCommandBuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandBuffer_u64(const VkCommandBuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkCommandBuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool(VkCommandPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkCommandPool_u64(const VkCommandPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkCommandPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugReportCallbackEXT_u64(const VkDebugReportCallbackEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDebugReportCallbackEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDebugUtilsMessengerEXT_u64(const VkDebugUtilsMessengerEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDebugUtilsMessengerEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool(VkDescriptorPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorPool_u64(const VkDescriptorPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDescriptorPool(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet(VkDescriptorSet* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSet_u64(const VkDescriptorSet* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDescriptorSet(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout(VkDescriptorSetLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorSetLayout_u64(const VkDescriptorSetLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDescriptorSetLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDescriptorUpdateTemplate_u64(const VkDescriptorUpdateTemplate* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDescriptorUpdateTemplate(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice(VkDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDevice_u64(const VkDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory(VkDeviceMemory* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDeviceMemory_u64(const VkDeviceMemory* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDeviceMemory(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR(VkDisplayKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayKHR_u64(const VkDisplayKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDisplayKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR(VkDisplayModeKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkDisplayModeKHR_u64(const VkDisplayModeKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkDisplayModeKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent(VkEvent* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkEvent_u64(const VkEvent* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkEvent(handles[i]);
-        }
-    }
-    void mapHandles_VkFence(VkFence* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFence_u64(const VkFence* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkFence(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer(VkFramebuffer* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkFramebuffer_u64(const VkFramebuffer* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkFramebuffer(handles[i]);
-        }
-    }
-    void mapHandles_VkImage(VkImage* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImage_u64(const VkImage* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkImage(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView(VkImageView* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkImageView_u64(const VkImageView* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkImageView(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkIndirectCommandsLayoutNVX_u64(const VkIndirectCommandsLayoutNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkIndirectCommandsLayoutNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance(VkInstance* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkInstance_u64(const VkInstance* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkInstance(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX(VkObjectTableNVX* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkObjectTableNVX_u64(const VkObjectTableNVX* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkObjectTableNVX(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice(VkPhysicalDevice* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPhysicalDevice_u64(const VkPhysicalDevice* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkPhysicalDevice(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline(VkPipeline* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipeline_u64(const VkPipeline* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkPipeline(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache(VkPipelineCache* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineCache_u64(const VkPipelineCache* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkPipelineCache(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout(VkPipelineLayout* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkPipelineLayout_u64(const VkPipelineLayout* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkPipelineLayout(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool(VkQueryPool* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueryPool_u64(const VkQueryPool* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkQueryPool(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue(VkQueue* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkQueue_u64(const VkQueue* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkQueue(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass(VkRenderPass* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkRenderPass_u64(const VkRenderPass* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkRenderPass(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler(VkSampler* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSampler_u64(const VkSampler* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkSampler(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSamplerYcbcrConversion_u64(const VkSamplerYcbcrConversion* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkSamplerYcbcrConversion(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore(VkSemaphore* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkSemaphore_u64(const VkSemaphore* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkSemaphore(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule(VkShaderModule* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkShaderModule_u64(const VkShaderModule* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkShaderModule(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR(VkSurfaceKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSurfaceKHR_u64(const VkSurfaceKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkSurfaceKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR(VkSwapchainKHR* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkSwapchainKHR_u64(const VkSwapchainKHR* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkSwapchainKHR(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT(VkValidationCacheEXT* handles, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            delete_goldfish_VkValidationCacheEXT(handles[i]);
-        }
-    }
-    void mapHandles_VkValidationCacheEXT_u64(const VkValidationCacheEXT* handles, uint64_t* handle_u64s, size_t count) override
-    {
-        for (size_t i = 0; i < count; ++i)
-        {
-            (void)handle_u64s[i]; delete_goldfish_VkValidationCacheEXT(handles[i]);
-        }
-    }
-};
+#define MAKE_HANDLE_MAPPING_FOREACH(type_name, map_impl, map_to_u64_impl, map_from_u64_impl) \
+    void mapHandles_##type_name(type_name* handles, size_t count) override { \
+        for (size_t i = 0; i < count; ++i) { \
+            map_impl; \
+        } \
+    } \
+    void mapHandles_##type_name##_u64(const type_name* handles, uint64_t* handle_u64s, size_t count) override { \
+        for (size_t i = 0; i < count; ++i) { \
+            map_to_u64_impl; \
+        } \
+    } \
+    void mapHandles_u64_##type_name(const uint64_t* handle_u64s, type_name* handles, size_t count) override { \
+        for (size_t i = 0; i < count; ++i) { \
+            map_from_u64_impl; \
+        } \
+    } \
+
+#define DEFINE_RESOURCE_TRACKING_CLASS(class_name, impl) \
+class class_name : public VulkanHandleMapping { \
+public: \
+    virtual ~class_name() { } \
+    GOLDFISH_VK_LIST_HANDLE_TYPES(impl) \
+}; \
+
+#define CREATE_MAPPING_IMPL_FOR_TYPE(type_name) \
+    MAKE_HANDLE_MAPPING_FOREACH(type_name, \
+        handles[i] = new_from_host_##type_name(handles[i]), \
+        handle_u64s[i] = (uint64_t)(uintptr_t)new_from_host_##type_name(handles[i]), \
+        handles[i] = (type_name)(uintptr_t)new_from_host_##type_name((type_name)(uintptr_t)handle_u64s[i]))
+
+#define UNWRAP_MAPPING_IMPL_FOR_TYPE(type_name) \
+    MAKE_HANDLE_MAPPING_FOREACH(type_name, \
+        handles[i] = get_host_##type_name(handles[i]), \
+        handle_u64s[i] = (uint64_t)(uintptr_t)get_host_##type_name(handles[i]), \
+        handles[i] = (type_name)(uintptr_t)get_host_##type_name((type_name)(uintptr_t)handle_u64s[i]))
+
+#define DESTROY_MAPPING_IMPL_FOR_TYPE(type_name) \
+    MAKE_HANDLE_MAPPING_FOREACH(type_name, \
+        delete_goldfish_##type_name(handles[i]), \
+        (void)handle_u64s[i]; delete_goldfish_##type_name(handles[i]), \
+        (void)handles[i]; delete_goldfish_##type_name((type_name)(uintptr_t)handle_u64s[i]))
+
+DEFINE_RESOURCE_TRACKING_CLASS(CreateMapping, CREATE_MAPPING_IMPL_FOR_TYPE)
+DEFINE_RESOURCE_TRACKING_CLASS(UnwrapMapping, UNWRAP_MAPPING_IMPL_FOR_TYPE)
+DEFINE_RESOURCE_TRACKING_CLASS(DestroyMapping, DESTROY_MAPPING_IMPL_FOR_TYPE)
 
 class ResourceTracker::Impl {
 public:
@@ -1561,25 +71,23 @@
     CreateMapping createMapping;
     UnwrapMapping unwrapMapping;
     DestroyMapping destroyMapping;
+    DefaultHandleMapping defaultMapping;
 };
-
 ResourceTracker::ResourceTracker() : mImpl(new ResourceTracker::Impl()) { }
 ResourceTracker::~ResourceTracker() { }
-
 VulkanHandleMapping* ResourceTracker::createMapping() {
     return &mImpl->createMapping;
 }
-
 VulkanHandleMapping* ResourceTracker::unwrapMapping() {
     return &mImpl->unwrapMapping;
 }
-
 VulkanHandleMapping* ResourceTracker::destroyMapping() {
     return &mImpl->destroyMapping;
 }
-
+VulkanHandleMapping* ResourceTracker::defaultMapping() {
+    return &mImpl->defaultMapping;
+}
 static ResourceTracker* sTracker = nullptr;
-
 // static
 ResourceTracker* ResourceTracker::get() {
     if (!sTracker) {
@@ -1588,249 +96,5 @@
     }
     return sTracker;
 }
-#ifdef VK_VERSION_1_0
-#endif
-#ifdef VK_VERSION_1_1
-#endif
-#ifdef VK_KHR_surface
-#endif
-#ifdef VK_KHR_swapchain
-#endif
-#ifdef VK_KHR_display
-#endif
-#ifdef VK_KHR_display_swapchain
-#endif
-#ifdef VK_KHR_xlib_surface
-#endif
-#ifdef VK_KHR_xcb_surface
-#endif
-#ifdef VK_KHR_wayland_surface
-#endif
-#ifdef VK_KHR_mir_surface
-#endif
-#ifdef VK_KHR_android_surface
-#endif
-#ifdef VK_KHR_win32_surface
-#endif
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-#endif
-#ifdef VK_KHR_multiview
-#endif
-#ifdef VK_KHR_get_physical_device_properties2
-#endif
-#ifdef VK_KHR_device_group
-#endif
-#ifdef VK_KHR_shader_draw_parameters
-#endif
-#ifdef VK_KHR_maintenance1
-#endif
-#ifdef VK_KHR_device_group_creation
-#endif
-#ifdef VK_KHR_external_memory_capabilities
-#endif
-#ifdef VK_KHR_external_memory
-#endif
-#ifdef VK_KHR_external_memory_win32
-#endif
-#ifdef VK_KHR_external_memory_fd
-#endif
-#ifdef VK_KHR_win32_keyed_mutex
-#endif
-#ifdef VK_KHR_external_semaphore_capabilities
-#endif
-#ifdef VK_KHR_external_semaphore
-#endif
-#ifdef VK_KHR_external_semaphore_win32
-#endif
-#ifdef VK_KHR_external_semaphore_fd
-#endif
-#ifdef VK_KHR_push_descriptor
-#endif
-#ifdef VK_KHR_16bit_storage
-#endif
-#ifdef VK_KHR_incremental_present
-#endif
-#ifdef VK_KHR_descriptor_update_template
-#endif
-#ifdef VK_KHR_create_renderpass2
-#endif
-#ifdef VK_KHR_shared_presentable_image
-#endif
-#ifdef VK_KHR_external_fence_capabilities
-#endif
-#ifdef VK_KHR_external_fence
-#endif
-#ifdef VK_KHR_external_fence_win32
-#endif
-#ifdef VK_KHR_external_fence_fd
-#endif
-#ifdef VK_KHR_maintenance2
-#endif
-#ifdef VK_KHR_get_surface_capabilities2
-#endif
-#ifdef VK_KHR_variable_pointers
-#endif
-#ifdef VK_KHR_get_display_properties2
-#endif
-#ifdef VK_KHR_dedicated_allocation
-#endif
-#ifdef VK_KHR_storage_buffer_storage_class
-#endif
-#ifdef VK_KHR_relaxed_block_layout
-#endif
-#ifdef VK_KHR_get_memory_requirements2
-#endif
-#ifdef VK_KHR_image_format_list
-#endif
-#ifdef VK_KHR_sampler_ycbcr_conversion
-#endif
-#ifdef VK_KHR_bind_memory2
-#endif
-#ifdef VK_KHR_maintenance3
-#endif
-#ifdef VK_KHR_draw_indirect_count
-#endif
-#ifdef VK_KHR_8bit_storage
-#endif
-#ifdef VK_EXT_debug_report
-#endif
-#ifdef VK_NV_glsl_shader
-#endif
-#ifdef VK_EXT_depth_range_unrestricted
-#endif
-#ifdef VK_IMG_filter_cubic
-#endif
-#ifdef VK_AMD_rasterization_order
-#endif
-#ifdef VK_AMD_shader_trinary_minmax
-#endif
-#ifdef VK_AMD_shader_explicit_vertex_parameter
-#endif
-#ifdef VK_EXT_debug_marker
-#endif
-#ifdef VK_AMD_gcn_shader
-#endif
-#ifdef VK_NV_dedicated_allocation
-#endif
-#ifdef VK_AMD_draw_indirect_count
-#endif
-#ifdef VK_AMD_negative_viewport_height
-#endif
-#ifdef VK_AMD_gpu_shader_half_float
-#endif
-#ifdef VK_AMD_shader_ballot
-#endif
-#ifdef VK_AMD_texture_gather_bias_lod
-#endif
-#ifdef VK_AMD_shader_info
-#endif
-#ifdef VK_AMD_shader_image_load_store_lod
-#endif
-#ifdef VK_IMG_format_pvrtc
-#endif
-#ifdef VK_NV_external_memory_capabilities
-#endif
-#ifdef VK_NV_external_memory
-#endif
-#ifdef VK_NV_external_memory_win32
-#endif
-#ifdef VK_NV_win32_keyed_mutex
-#endif
-#ifdef VK_EXT_validation_flags
-#endif
-#ifdef VK_NN_vi_surface
-#endif
-#ifdef VK_EXT_shader_subgroup_ballot
-#endif
-#ifdef VK_EXT_shader_subgroup_vote
-#endif
-#ifdef VK_EXT_conditional_rendering
-#endif
-#ifdef VK_NVX_device_generated_commands
-#endif
-#ifdef VK_NV_clip_space_w_scaling
-#endif
-#ifdef VK_EXT_direct_mode_display
-#endif
-#ifdef VK_EXT_acquire_xlib_display
-#endif
-#ifdef VK_EXT_display_surface_counter
-#endif
-#ifdef VK_EXT_display_control
-#endif
-#ifdef VK_GOOGLE_display_timing
-#endif
-#ifdef VK_NV_sample_mask_override_coverage
-#endif
-#ifdef VK_NV_geometry_shader_passthrough
-#endif
-#ifdef VK_NV_viewport_array2
-#endif
-#ifdef VK_NVX_multiview_per_view_attributes
-#endif
-#ifdef VK_NV_viewport_swizzle
-#endif
-#ifdef VK_EXT_discard_rectangles
-#endif
-#ifdef VK_EXT_conservative_rasterization
-#endif
-#ifdef VK_EXT_swapchain_colorspace
-#endif
-#ifdef VK_EXT_hdr_metadata
-#endif
-#ifdef VK_MVK_ios_surface
-#endif
-#ifdef VK_MVK_macos_surface
-#endif
-#ifdef VK_EXT_external_memory_dma_buf
-#endif
-#ifdef VK_EXT_queue_family_foreign
-#endif
-#ifdef VK_EXT_debug_utils
-#endif
-#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-#endif
-#ifdef VK_EXT_sampler_filter_minmax
-#endif
-#ifdef VK_AMD_gpu_shader_int16
-#endif
-#ifdef VK_AMD_mixed_attachment_samples
-#endif
-#ifdef VK_AMD_shader_fragment_mask
-#endif
-#ifdef VK_EXT_shader_stencil_export
-#endif
-#ifdef VK_EXT_sample_locations
-#endif
-#ifdef VK_EXT_blend_operation_advanced
-#endif
-#ifdef VK_NV_fragment_coverage_to_color
-#endif
-#ifdef VK_NV_framebuffer_mixed_samples
-#endif
-#ifdef VK_NV_fill_rectangle
-#endif
-#ifdef VK_EXT_post_depth_coverage
-#endif
-#ifdef VK_EXT_validation_cache
-#endif
-#ifdef VK_EXT_descriptor_indexing
-#endif
-#ifdef VK_EXT_shader_viewport_index_layer
-#endif
-#ifdef VK_EXT_global_priority
-#endif
-#ifdef VK_EXT_external_memory_host
-#endif
-#ifdef VK_AMD_buffer_marker
-#endif
-#ifdef VK_AMD_shader_core_properties
-#endif
-#ifdef VK_EXT_vertex_attribute_divisor
-#endif
-#ifdef VK_NV_shader_subgroup_partitioned
-#endif
-#ifdef VK_NV_device_diagnostic_checkpoints
-#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/ResourceTracker.h b/system/vulkan_enc/ResourceTracker.h
index 6c7c6eb..ed061f3 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -12,28 +12,15 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-
-// Autogenerated module ResourceTracker
-// (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,
-// or directly from Python by defining:
-// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
-// 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
-
 #pragma once
 
 #include <vulkan/vulkan.h>
 
-
 #include "VulkanHandleMapping.h"
 #include <memory>
 
-
 namespace goldfish_vk {
 
-
 class ResourceTracker {
 public:
     ResourceTracker();
@@ -42,253 +29,10 @@
     VulkanHandleMapping* createMapping();
     VulkanHandleMapping* unwrapMapping();
     VulkanHandleMapping* destroyMapping();
+    VulkanHandleMapping* defaultMapping();
 private:
     class Impl;
     std::unique_ptr<Impl> mImpl;
 };
-#ifdef VK_VERSION_1_0
-#endif
-#ifdef VK_VERSION_1_1
-#endif
-#ifdef VK_KHR_surface
-#endif
-#ifdef VK_KHR_swapchain
-#endif
-#ifdef VK_KHR_display
-#endif
-#ifdef VK_KHR_display_swapchain
-#endif
-#ifdef VK_KHR_xlib_surface
-#endif
-#ifdef VK_KHR_xcb_surface
-#endif
-#ifdef VK_KHR_wayland_surface
-#endif
-#ifdef VK_KHR_mir_surface
-#endif
-#ifdef VK_KHR_android_surface
-#endif
-#ifdef VK_KHR_win32_surface
-#endif
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-#endif
-#ifdef VK_KHR_multiview
-#endif
-#ifdef VK_KHR_get_physical_device_properties2
-#endif
-#ifdef VK_KHR_device_group
-#endif
-#ifdef VK_KHR_shader_draw_parameters
-#endif
-#ifdef VK_KHR_maintenance1
-#endif
-#ifdef VK_KHR_device_group_creation
-#endif
-#ifdef VK_KHR_external_memory_capabilities
-#endif
-#ifdef VK_KHR_external_memory
-#endif
-#ifdef VK_KHR_external_memory_win32
-#endif
-#ifdef VK_KHR_external_memory_fd
-#endif
-#ifdef VK_KHR_win32_keyed_mutex
-#endif
-#ifdef VK_KHR_external_semaphore_capabilities
-#endif
-#ifdef VK_KHR_external_semaphore
-#endif
-#ifdef VK_KHR_external_semaphore_win32
-#endif
-#ifdef VK_KHR_external_semaphore_fd
-#endif
-#ifdef VK_KHR_push_descriptor
-#endif
-#ifdef VK_KHR_16bit_storage
-#endif
-#ifdef VK_KHR_incremental_present
-#endif
-#ifdef VK_KHR_descriptor_update_template
-#endif
-#ifdef VK_KHR_create_renderpass2
-#endif
-#ifdef VK_KHR_shared_presentable_image
-#endif
-#ifdef VK_KHR_external_fence_capabilities
-#endif
-#ifdef VK_KHR_external_fence
-#endif
-#ifdef VK_KHR_external_fence_win32
-#endif
-#ifdef VK_KHR_external_fence_fd
-#endif
-#ifdef VK_KHR_maintenance2
-#endif
-#ifdef VK_KHR_get_surface_capabilities2
-#endif
-#ifdef VK_KHR_variable_pointers
-#endif
-#ifdef VK_KHR_get_display_properties2
-#endif
-#ifdef VK_KHR_dedicated_allocation
-#endif
-#ifdef VK_KHR_storage_buffer_storage_class
-#endif
-#ifdef VK_KHR_relaxed_block_layout
-#endif
-#ifdef VK_KHR_get_memory_requirements2
-#endif
-#ifdef VK_KHR_image_format_list
-#endif
-#ifdef VK_KHR_sampler_ycbcr_conversion
-#endif
-#ifdef VK_KHR_bind_memory2
-#endif
-#ifdef VK_KHR_maintenance3
-#endif
-#ifdef VK_KHR_draw_indirect_count
-#endif
-#ifdef VK_KHR_8bit_storage
-#endif
-#ifdef VK_EXT_debug_report
-#endif
-#ifdef VK_NV_glsl_shader
-#endif
-#ifdef VK_EXT_depth_range_unrestricted
-#endif
-#ifdef VK_IMG_filter_cubic
-#endif
-#ifdef VK_AMD_rasterization_order
-#endif
-#ifdef VK_AMD_shader_trinary_minmax
-#endif
-#ifdef VK_AMD_shader_explicit_vertex_parameter
-#endif
-#ifdef VK_EXT_debug_marker
-#endif
-#ifdef VK_AMD_gcn_shader
-#endif
-#ifdef VK_NV_dedicated_allocation
-#endif
-#ifdef VK_AMD_draw_indirect_count
-#endif
-#ifdef VK_AMD_negative_viewport_height
-#endif
-#ifdef VK_AMD_gpu_shader_half_float
-#endif
-#ifdef VK_AMD_shader_ballot
-#endif
-#ifdef VK_AMD_texture_gather_bias_lod
-#endif
-#ifdef VK_AMD_shader_info
-#endif
-#ifdef VK_AMD_shader_image_load_store_lod
-#endif
-#ifdef VK_IMG_format_pvrtc
-#endif
-#ifdef VK_NV_external_memory_capabilities
-#endif
-#ifdef VK_NV_external_memory
-#endif
-#ifdef VK_NV_external_memory_win32
-#endif
-#ifdef VK_NV_win32_keyed_mutex
-#endif
-#ifdef VK_EXT_validation_flags
-#endif
-#ifdef VK_NN_vi_surface
-#endif
-#ifdef VK_EXT_shader_subgroup_ballot
-#endif
-#ifdef VK_EXT_shader_subgroup_vote
-#endif
-#ifdef VK_EXT_conditional_rendering
-#endif
-#ifdef VK_NVX_device_generated_commands
-#endif
-#ifdef VK_NV_clip_space_w_scaling
-#endif
-#ifdef VK_EXT_direct_mode_display
-#endif
-#ifdef VK_EXT_acquire_xlib_display
-#endif
-#ifdef VK_EXT_display_surface_counter
-#endif
-#ifdef VK_EXT_display_control
-#endif
-#ifdef VK_GOOGLE_display_timing
-#endif
-#ifdef VK_NV_sample_mask_override_coverage
-#endif
-#ifdef VK_NV_geometry_shader_passthrough
-#endif
-#ifdef VK_NV_viewport_array2
-#endif
-#ifdef VK_NVX_multiview_per_view_attributes
-#endif
-#ifdef VK_NV_viewport_swizzle
-#endif
-#ifdef VK_EXT_discard_rectangles
-#endif
-#ifdef VK_EXT_conservative_rasterization
-#endif
-#ifdef VK_EXT_swapchain_colorspace
-#endif
-#ifdef VK_EXT_hdr_metadata
-#endif
-#ifdef VK_MVK_ios_surface
-#endif
-#ifdef VK_MVK_macos_surface
-#endif
-#ifdef VK_EXT_external_memory_dma_buf
-#endif
-#ifdef VK_EXT_queue_family_foreign
-#endif
-#ifdef VK_EXT_debug_utils
-#endif
-#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-#endif
-#ifdef VK_EXT_sampler_filter_minmax
-#endif
-#ifdef VK_AMD_gpu_shader_int16
-#endif
-#ifdef VK_AMD_mixed_attachment_samples
-#endif
-#ifdef VK_AMD_shader_fragment_mask
-#endif
-#ifdef VK_EXT_shader_stencil_export
-#endif
-#ifdef VK_EXT_sample_locations
-#endif
-#ifdef VK_EXT_blend_operation_advanced
-#endif
-#ifdef VK_NV_fragment_coverage_to_color
-#endif
-#ifdef VK_NV_framebuffer_mixed_samples
-#endif
-#ifdef VK_NV_fill_rectangle
-#endif
-#ifdef VK_EXT_post_depth_coverage
-#endif
-#ifdef VK_EXT_validation_cache
-#endif
-#ifdef VK_EXT_descriptor_indexing
-#endif
-#ifdef VK_EXT_shader_viewport_index_layer
-#endif
-#ifdef VK_EXT_global_priority
-#endif
-#ifdef VK_EXT_external_memory_host
-#endif
-#ifdef VK_AMD_buffer_marker
-#endif
-#ifdef VK_AMD_shader_core_properties
-#endif
-#ifdef VK_EXT_vertex_attribute_divisor
-#endif
-#ifdef VK_NV_shader_subgroup_partitioned
-#endif
-#ifdef VK_NV_device_diagnostic_checkpoints
-#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/Resources.cpp b/system/vulkan_enc/Resources.cpp
index 6272ab8..9874e78 100644
--- a/system/vulkan_enc/Resources.cpp
+++ b/system/vulkan_enc/Resources.cpp
@@ -61,13 +61,20 @@
         free(as_goldfish_##type(toDelete)); \
     } \
 
+#define GOLDFISH_VK_IDENTITY_IMPL(type) \
+    type vk_handle_identity_##type(type handle) { \
+        return handle; \
+    } \
+
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_NEW_DISPATCHABLE_FROM_HOST_IMPL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_AS_GOLDFISH_IMPL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_GET_HOST_IMPL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DELETE_GOLDFISH_IMPL)
+GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_IDENTITY_IMPL)
 
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_AS_GOLDFISH_IMPL)
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_GET_HOST_IMPL)
+GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_IDENTITY_IMPL)
 
 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_NEW_TRIVIAL_NON_DISPATCHABLE_FROM_HOST_IMPL)
 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DELETE_GOLDFISH_IMPL)
diff --git a/system/vulkan_enc/Resources.h b/system/vulkan_enc/Resources.h
index b12761d..606ed02 100644
--- a/system/vulkan_enc/Resources.h
+++ b/system/vulkan_enc/Resources.h
@@ -16,14 +16,9 @@
 #include <hardware/hwvulkan.h>
 #include <vulkan/vulkan.h>
 
-extern "C" {
+#include "VulkanHandles.h"
 
-#define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
-    f(VkInstance) \
-    f(VkPhysicalDevice) \
-    f(VkDevice) \
-    f(VkQueue) \
-    f(VkCommandBuffer) \
+extern "C" {
 
 #define GOLDFISH_VK_DEFINE_DISPATCHABLE_HANDLE_STRUCT(type) \
     struct goldfish_##type { \
@@ -36,42 +31,6 @@
         type underlying; \
     }; \
 
-#define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
-    f(VkBuffer) \
-    f(VkBufferView) \
-    f(VkImage) \
-    f(VkImageView) \
-    f(VkShaderModule) \
-    f(VkDescriptorPool) \
-    f(VkDescriptorSetLayout) \
-    f(VkDescriptorSet) \
-    f(VkSampler) \
-    f(VkPipeline) \
-    f(VkPipelineCache) \
-    f(VkPipelineLayout) \
-    f(VkRenderPass) \
-    f(VkFramebuffer) \
-    f(VkCommandPool) \
-    f(VkFence) \
-    f(VkSemaphore) \
-    f(VkEvent) \
-    f(VkQueryPool) \
-    f(VkSamplerYcbcrConversion) \
-    f(VkDescriptorUpdateTemplate) \
-    f(VkSurfaceKHR) \
-    f(VkSwapchainKHR) \
-    f(VkDisplayKHR) \
-    f(VkDisplayModeKHR) \
-    f(VkObjectTableNVX) \
-    f(VkIndirectCommandsLayoutNVX) \
-    f(VkValidationCacheEXT) \
-    f(VkDebugReportCallbackEXT) \
-    f(VkDebugUtilsMessengerEXT) \
-
-#define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
-    f(VkDeviceMemory) \
-    GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
-
 #define GOLDFISH_VK_NEW_FROM_HOST_DECL(type) \
     type new_from_host_##type(type);
 
@@ -84,16 +43,21 @@
 #define GOLDFISH_VK_DELETE_GOLDFISH_DECL(type) \
     void delete_goldfish_##type(type);
 
+#define GOLDFISH_VK_IDENTITY_DECL(type) \
+    type vk_handle_identity_##type(type);
+
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DEFINE_DISPATCHABLE_HANDLE_STRUCT)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_NEW_FROM_HOST_DECL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_AS_GOLDFISH_DECL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_GET_HOST_DECL)
 GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DELETE_GOLDFISH_DECL)
+GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_IDENTITY_DECL)
 
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_NEW_FROM_HOST_DECL)
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_AS_GOLDFISH_DECL)
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_GET_HOST_DECL)
 GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DELETE_GOLDFISH_DECL)
+GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_IDENTITY_DECL)
 
 GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(GOLDFISH_VK_DEFINE_TRIVIAL_NON_DISPATCHABLE_HANDLE_STRUCT)
 
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index 9f9805f..f7dbd4f 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -106,8 +106,9 @@
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkInstance*)pInstance, sizeof(VkInstance));
+        uint64_t cgen_var_1;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
+        countingStream->write((uint64_t*)&cgen_var_1, 8);
     }
     uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
@@ -116,16 +117,18 @@
     stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
     marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1);
+    uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_2);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkInstance*)pInstance, sizeof(VkInstance));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkInstance*)pInstance, sizeof(VkInstance));
+    uint64_t cgen_var_3;
+    stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
+    stream->write((uint64_t*)&cgen_var_3, 8);
+    uint64_t cgen_var_4;
+    stream->read((uint64_t*)&cgen_var_4, 8);
+    stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
     if (pInstance)
     {
         resources->createMapping()->mapHandles_VkInstance((VkInstance*)pInstance, 1);
@@ -133,6 +136,8 @@
     pool->freeAll();
     VkResult vkCreateInstance_VkResult_return = (VkResult)0;
     stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateInstance_VkResult_return;
 }
 
@@ -161,11 +166,12 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_2 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_2);
+        uint64_t cgen_var_5;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
+        countingStream->write((uint64_t*)&cgen_var_5, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_3 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_3);
+        uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_6);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -176,11 +182,12 @@
     uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
     stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
-    uint64_t cgen_var_4 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_4);
+    uint64_t cgen_var_7;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
+    stream->write((uint64_t*)&cgen_var_7, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_5 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_5);
+    uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_8);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -203,22 +210,28 @@
     resources->unwrapMapping()->mapHandles_VkInstance((VkInstance*)&local_instance);
     countingStream->rewind();
     {
-        uint64_t cgen_var_6 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_6);
+        uint64_t cgen_var_9;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
+        countingStream->write((uint64_t*)&cgen_var_9, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_7 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
-        countingStream->putBe64(cgen_var_7);
+        uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
+        countingStream->putBe64(cgen_var_10);
         if (pPhysicalDeviceCount)
         {
             countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_8 = (uint64_t)(uintptr_t)pPhysicalDevices;
-        countingStream->putBe64(cgen_var_8);
+        uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
+        countingStream->putBe64(cgen_var_11);
         if (pPhysicalDevices)
         {
-            // WARNING HANDLE TYPE POINTER
-            countingStream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+            if ((*(pPhysicalDeviceCount)))
+            {
+                uint64_t* cgen_var_12;
+                countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
+                countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
+                countingStream->write((uint64_t*)cgen_var_12, 8);
+            }
         }
     }
     uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -226,22 +239,28 @@
     uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
     stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
     stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
-    uint64_t cgen_var_9 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_9);
+    uint64_t cgen_var_13;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
+    stream->write((uint64_t*)&cgen_var_13, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
-    stream->putBe64(cgen_var_10);
+    uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
+    stream->putBe64(cgen_var_14);
     if (pPhysicalDeviceCount)
     {
         stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
-    stream->putBe64(cgen_var_11);
+    uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
+    stream->putBe64(cgen_var_15);
     if (pPhysicalDevices)
     {
-        // WARNING HANDLE TYPE POINTER
-        stream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+        if ((*(pPhysicalDeviceCount)))
+        {
+            uint64_t* cgen_var_16;
+            stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
+            stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
+            stream->write((uint64_t*)cgen_var_16, 8);
+        }
     }
     // WARNING PTR CHECK
     uint32_t* check_pPhysicalDeviceCount;
@@ -263,8 +282,13 @@
         {
             fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
         }
-        // WARNING HANDLE TYPE POINTER
-        stream->read((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+        if ((*(pPhysicalDeviceCount)))
+        {
+            uint64_t* cgen_var_19;
+            stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
+            stream->read((uint64_t*)cgen_var_19, 8);
+            stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
+        }
     }
     if (pPhysicalDevices)
     {
@@ -273,6 +297,8 @@
     pool->freeAll();
     VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
     stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumeratePhysicalDevices_VkResult_return;
 }
 
@@ -289,8 +315,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_14 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_14);
+        uint64_t cgen_var_20;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
+        countingStream->write((uint64_t*)&cgen_var_20, 8);
         marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
     }
     uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -298,8 +325,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
     stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
-    uint64_t cgen_var_15 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_15);
+    uint64_t cgen_var_21;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
+    stream->write((uint64_t*)&cgen_var_21, 8);
     marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
     unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
     pool->freeAll();
@@ -321,8 +349,9 @@
     local_format = format;
     countingStream->rewind();
     {
-        uint64_t cgen_var_16 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_16);
+        uint64_t cgen_var_22;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
+        countingStream->write((uint64_t*)&cgen_var_22, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
     }
@@ -331,8 +360,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
-    uint64_t cgen_var_17 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_17);
+    uint64_t cgen_var_23;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
+    stream->write((uint64_t*)&cgen_var_23, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
     unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
@@ -367,8 +397,9 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_18 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_18);
+        uint64_t cgen_var_24;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
+        countingStream->write((uint64_t*)&cgen_var_24, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
@@ -381,8 +412,9 @@
     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
-    uint64_t cgen_var_19 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_19);
+    uint64_t cgen_var_25;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
+    stream->write((uint64_t*)&cgen_var_25, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
@@ -393,6 +425,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
 }
 
@@ -409,8 +443,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_20 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_20);
+        uint64_t cgen_var_26;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
+        countingStream->write((uint64_t*)&cgen_var_26, 8);
         marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
     }
     uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -418,8 +453,9 @@
     uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
     stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
-    uint64_t cgen_var_21 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_21);
+    uint64_t cgen_var_27;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
+    stream->write((uint64_t*)&cgen_var_27, 8);
     marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
     unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
     pool->freeAll();
@@ -439,18 +475,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_22 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_22);
+        uint64_t cgen_var_28;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
+        countingStream->write((uint64_t*)&cgen_var_28, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_23 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-        countingStream->putBe64(cgen_var_23);
+        uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+        countingStream->putBe64(cgen_var_29);
         if (pQueueFamilyPropertyCount)
         {
             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_24 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-        countingStream->putBe64(cgen_var_24);
+        uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+        countingStream->putBe64(cgen_var_30);
         if (pQueueFamilyProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -464,18 +501,19 @@
     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
-    uint64_t cgen_var_25 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_25);
+    uint64_t cgen_var_31;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
+    stream->write((uint64_t*)&cgen_var_31, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_26 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-    stream->putBe64(cgen_var_26);
+    uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+    stream->putBe64(cgen_var_32);
     if (pQueueFamilyPropertyCount)
     {
         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_27 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-    stream->putBe64(cgen_var_27);
+    uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+    stream->putBe64(cgen_var_33);
     if (pQueueFamilyProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -524,8 +562,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_30 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_30);
+        uint64_t cgen_var_36;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
+        countingStream->write((uint64_t*)&cgen_var_36, 8);
         marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
     }
     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -533,8 +572,9 @@
     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
-    uint64_t cgen_var_31 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_31);
+    uint64_t cgen_var_37;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
+    stream->write((uint64_t*)&cgen_var_37, 8);
     marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
     unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
     pool->freeAll();
@@ -559,8 +599,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_32 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_32);
+        uint64_t cgen_var_38;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
+        countingStream->write((uint64_t*)&cgen_var_38, 8);
         countingStream->putString(local_pName);
     }
     uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -568,12 +609,15 @@
     uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
     stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
     stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
-    uint64_t cgen_var_33 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_33);
+    uint64_t cgen_var_39;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
+    stream->write((uint64_t*)&cgen_var_39, 8);
     stream->putString(local_pName);
     pool->freeAll();
     PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
     stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
 }
 
@@ -596,8 +640,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_34 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_34);
+        uint64_t cgen_var_40;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
+        countingStream->write((uint64_t*)&cgen_var_40, 8);
         countingStream->putString(local_pName);
     }
     uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -605,12 +650,15 @@
     uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
     stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
-    uint64_t cgen_var_35 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_35);
+    uint64_t cgen_var_41;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
+    stream->write((uint64_t*)&cgen_var_41, 8);
     stream->putString(local_pName);
     pool->freeAll();
     PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
     stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
 }
 
@@ -652,38 +700,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_36 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_36);
+        uint64_t cgen_var_42;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
+        countingStream->write((uint64_t*)&cgen_var_42, 8);
         marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_37 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_37);
+        uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_43);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDevice*)pDevice, sizeof(VkDevice));
+        uint64_t cgen_var_44;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
+        countingStream->write((uint64_t*)&cgen_var_44, 8);
     }
     uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
     stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
-    uint64_t cgen_var_38 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_38);
+    uint64_t cgen_var_45;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
+    stream->write((uint64_t*)&cgen_var_45, 8);
     marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_39 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_39);
+    uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_46);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDevice*)pDevice, sizeof(VkDevice));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDevice*)pDevice, sizeof(VkDevice));
+    uint64_t cgen_var_47;
+    stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
+    stream->write((uint64_t*)&cgen_var_47, 8);
+    uint64_t cgen_var_48;
+    stream->read((uint64_t*)&cgen_var_48, 8);
+    stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
     if (pDevice)
     {
         resources->createMapping()->mapHandles_VkDevice((VkDevice*)pDevice, 1);
@@ -691,6 +744,8 @@
     pool->freeAll();
     VkResult vkCreateDevice_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDevice_VkResult_return;
 }
 
@@ -719,11 +774,12 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_40 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_40);
+        uint64_t cgen_var_49;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
+        countingStream->write((uint64_t*)&cgen_var_49, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_41 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_41);
+        uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_50);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -734,11 +790,12 @@
     uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
     stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
-    uint64_t cgen_var_42 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_42);
+    uint64_t cgen_var_51;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
+    stream->write((uint64_t*)&cgen_var_51, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_43);
+    uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_52);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -766,15 +823,15 @@
     {
         countingStream->putString(local_pLayerName);
         // WARNING PTR CHECK
-        uint64_t cgen_var_44 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_44);
+        uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_53);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_45 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_45);
+        uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_54);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -790,15 +847,15 @@
     stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
     stream->putString(local_pLayerName);
     // WARNING PTR CHECK
-    uint64_t cgen_var_46 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_46);
+    uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_55);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_47 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_47);
+    uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_56);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -834,6 +891,8 @@
     pool->freeAll();
     VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
     stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumerateInstanceExtensionProperties_VkResult_return;
 }
 
@@ -859,15 +918,15 @@
     countingStream->rewind();
     {
         // WARNING PTR CHECK
-        uint64_t cgen_var_50 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_50);
+        uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_59);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_51 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_51);
+        uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_60);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -882,15 +941,15 @@
     stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_52 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_52);
+    uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_61);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_53);
+    uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_62);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -926,6 +985,8 @@
     pool->freeAll();
     VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
     stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumerateInstanceLayerProperties_VkResult_return;
 }
 
@@ -943,18 +1004,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_56 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_56);
+        uint64_t cgen_var_65;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
+        countingStream->write((uint64_t*)&cgen_var_65, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_57 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_57);
+        uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_66);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_58 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_58);
+        uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_67);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -968,18 +1030,19 @@
     uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
     stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
-    uint64_t cgen_var_59 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_59);
+    uint64_t cgen_var_68;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
+    stream->write((uint64_t*)&cgen_var_68, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_60);
+    uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_69);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_61);
+    uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_70);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -1015,6 +1078,8 @@
     pool->freeAll();
     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
     stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumerateDeviceLayerProperties_VkResult_return;
 }
 
@@ -1037,26 +1102,31 @@
     local_queueIndex = queueIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_64 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_64);
+        uint64_t cgen_var_73;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
+        countingStream->write((uint64_t*)&cgen_var_73, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+        uint64_t cgen_var_74;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
+        countingStream->write((uint64_t*)&cgen_var_74, 8);
     }
     uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
     stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
-    uint64_t cgen_var_65 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_65);
+    uint64_t cgen_var_75;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
+    stream->write((uint64_t*)&cgen_var_75, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkQueue*)pQueue, sizeof(VkQueue));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkQueue*)pQueue, sizeof(VkQueue));
+    uint64_t cgen_var_76;
+    stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
+    stream->write((uint64_t*)&cgen_var_76, 8);
+    uint64_t cgen_var_77;
+    stream->read((uint64_t*)&cgen_var_77, 8);
+    stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
     if (pQueue)
     {
         resources->createMapping()->mapHandles_VkQueue((VkQueue*)pQueue, 1);
@@ -1101,33 +1171,39 @@
     resources->unwrapMapping()->mapHandles_VkFence((VkFence*)&local_fence);
     countingStream->rewind();
     {
-        uint64_t cgen_var_66 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_66);
+        uint64_t cgen_var_78;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
+        countingStream->write((uint64_t*)&cgen_var_78, 8);
         countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
         {
             marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
         }
-        uint64_t cgen_var_67 = (uint64_t)local_fence;
-        countingStream->putBe64(cgen_var_67);
+        uint64_t cgen_var_79;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
+        countingStream->write((uint64_t*)&cgen_var_79, 8);
     }
     uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
     stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
-    uint64_t cgen_var_68 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_68);
+    uint64_t cgen_var_80;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
+    stream->write((uint64_t*)&cgen_var_80, 8);
     stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
     {
         marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
     }
-    uint64_t cgen_var_69 = (uint64_t)local_fence;
-    stream->putBe64(cgen_var_69);
+    uint64_t cgen_var_81;
+    stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
+    stream->write((uint64_t*)&cgen_var_81, 8);
     pool->freeAll();
     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
     stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkQueueSubmit_VkResult_return;
 }
 
@@ -1143,19 +1219,23 @@
     resources->unwrapMapping()->mapHandles_VkQueue((VkQueue*)&local_queue);
     countingStream->rewind();
     {
-        uint64_t cgen_var_70 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_70);
+        uint64_t cgen_var_82;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
+        countingStream->write((uint64_t*)&cgen_var_82, 8);
     }
     uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
     stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
-    uint64_t cgen_var_71 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_71);
+    uint64_t cgen_var_83;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
+    stream->write((uint64_t*)&cgen_var_83, 8);
     pool->freeAll();
     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
     stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkQueueWaitIdle_VkResult_return;
 }
 
@@ -1171,19 +1251,23 @@
     resources->unwrapMapping()->mapHandles_VkDevice((VkDevice*)&local_device);
     countingStream->rewind();
     {
-        uint64_t cgen_var_72 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_72);
+        uint64_t cgen_var_84;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
+        countingStream->write((uint64_t*)&cgen_var_84, 8);
     }
     uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
     stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
     stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
-    uint64_t cgen_var_73 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_73);
+    uint64_t cgen_var_85;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
+    stream->write((uint64_t*)&cgen_var_85, 8);
     pool->freeAll();
     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
     stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkDeviceWaitIdle_VkResult_return;
 }
 
@@ -1225,38 +1309,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_74 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_74);
+        uint64_t cgen_var_86;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
+        countingStream->write((uint64_t*)&cgen_var_86, 8);
         marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_75 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_75);
+        uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_87);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+        uint64_t cgen_var_88;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
+        countingStream->write((uint64_t*)&cgen_var_88, 8);
     }
     uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
     stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
     stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
-    uint64_t cgen_var_76 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_76);
+    uint64_t cgen_var_89;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
+    stream->write((uint64_t*)&cgen_var_89, 8);
     marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_77 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_77);
+    uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_90);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+    uint64_t cgen_var_91;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
+    stream->write((uint64_t*)&cgen_var_91, 8);
+    uint64_t cgen_var_92;
+    stream->read((uint64_t*)&cgen_var_92, 8);
+    stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
     if (pMemory)
     {
         resources->createMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)pMemory, 1);
@@ -1265,6 +1354,8 @@
     pool->freeAll();
     VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
     stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAllocateMemory_VkResult_return;
 }
 
@@ -1297,13 +1388,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_78 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_78);
-        uint64_t cgen_var_79 = (uint64_t)local_memory;
-        countingStream->putBe64(cgen_var_79);
+        uint64_t cgen_var_93;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
+        countingStream->write((uint64_t*)&cgen_var_93, 8);
+        uint64_t cgen_var_94;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
+        countingStream->write((uint64_t*)&cgen_var_94, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_80 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_80);
+        uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_95);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -1314,13 +1407,15 @@
     uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
     stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
     stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
-    uint64_t cgen_var_81 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_81);
-    uint64_t cgen_var_82 = (uint64_t)local_memory;
-    stream->putBe64(cgen_var_82);
+    uint64_t cgen_var_96;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
+    stream->write((uint64_t*)&cgen_var_96, 8);
+    uint64_t cgen_var_97;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
+    stream->write((uint64_t*)&cgen_var_97, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_83 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_83);
+    uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_98);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -1382,8 +1477,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_84 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_84);
+        uint64_t cgen_var_99;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
+        countingStream->write((uint64_t*)&cgen_var_99, 8);
         countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
         {
@@ -1412,8 +1508,9 @@
     uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
     stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
     stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
-    uint64_t cgen_var_85 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_85);
+    uint64_t cgen_var_100;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
+    stream->write((uint64_t*)&cgen_var_100, 8);
     stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
     {
@@ -1439,6 +1536,8 @@
     pool->freeAll();
     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
     stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkFlushMappedMemoryRanges_VkResult_return;
 }
 
@@ -1475,8 +1574,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_86 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_86);
+        uint64_t cgen_var_101;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
+        countingStream->write((uint64_t*)&cgen_var_101, 8);
         countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
         {
@@ -1488,8 +1588,9 @@
     uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
     stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
     stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
-    uint64_t cgen_var_87 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_87);
+    uint64_t cgen_var_102;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
+    stream->write((uint64_t*)&cgen_var_102, 8);
     stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
     {
@@ -1498,6 +1599,8 @@
     pool->freeAll();
     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
     stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     for (uint32_t i = 0; i < memoryRangeCount; ++i)
     {
         auto range = pMemoryRanges[i];
@@ -1535,10 +1638,12 @@
     resources->unwrapMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&local_memory);
     countingStream->rewind();
     {
-        uint64_t cgen_var_88 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_88);
-        uint64_t cgen_var_89 = (uint64_t)local_memory;
-        countingStream->putBe64(cgen_var_89);
+        uint64_t cgen_var_103;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
+        countingStream->write((uint64_t*)&cgen_var_103, 8);
+        uint64_t cgen_var_104;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
+        countingStream->write((uint64_t*)&cgen_var_104, 8);
         countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
     }
     uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -1546,10 +1651,12 @@
     uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
     stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
-    uint64_t cgen_var_90 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_90);
-    uint64_t cgen_var_91 = (uint64_t)local_memory;
-    stream->putBe64(cgen_var_91);
+    uint64_t cgen_var_105;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
+    stream->write((uint64_t*)&cgen_var_105, 8);
+    uint64_t cgen_var_106;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
+    stream->write((uint64_t*)&cgen_var_106, 8);
     stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
     stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
     pool->freeAll();
@@ -1578,12 +1685,15 @@
     local_memoryOffset = memoryOffset;
     countingStream->rewind();
     {
-        uint64_t cgen_var_92 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_92);
-        uint64_t cgen_var_93 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_93);
-        uint64_t cgen_var_94 = (uint64_t)local_memory;
-        countingStream->putBe64(cgen_var_94);
+        uint64_t cgen_var_107;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
+        countingStream->write((uint64_t*)&cgen_var_107, 8);
+        uint64_t cgen_var_108;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
+        countingStream->write((uint64_t*)&cgen_var_108, 8);
+        uint64_t cgen_var_109;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
+        countingStream->write((uint64_t*)&cgen_var_109, 8);
         countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
     }
     uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -1591,16 +1701,21 @@
     uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
     stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
     stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
-    uint64_t cgen_var_95 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_95);
-    uint64_t cgen_var_96 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_96);
-    uint64_t cgen_var_97 = (uint64_t)local_memory;
-    stream->putBe64(cgen_var_97);
+    uint64_t cgen_var_110;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
+    stream->write((uint64_t*)&cgen_var_110, 8);
+    uint64_t cgen_var_111;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
+    stream->write((uint64_t*)&cgen_var_111, 8);
+    uint64_t cgen_var_112;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
+    stream->write((uint64_t*)&cgen_var_112, 8);
     stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
     pool->freeAll();
     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
     stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindBufferMemory_VkResult_return;
 }
 
@@ -1627,12 +1742,15 @@
     local_memoryOffset = memoryOffset;
     countingStream->rewind();
     {
-        uint64_t cgen_var_98 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_98);
-        uint64_t cgen_var_99 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_99);
-        uint64_t cgen_var_100 = (uint64_t)local_memory;
-        countingStream->putBe64(cgen_var_100);
+        uint64_t cgen_var_113;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
+        countingStream->write((uint64_t*)&cgen_var_113, 8);
+        uint64_t cgen_var_114;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
+        countingStream->write((uint64_t*)&cgen_var_114, 8);
+        uint64_t cgen_var_115;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
+        countingStream->write((uint64_t*)&cgen_var_115, 8);
         countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
     }
     uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -1640,16 +1758,21 @@
     uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
     stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
     stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
-    uint64_t cgen_var_101 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_101);
-    uint64_t cgen_var_102 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_102);
-    uint64_t cgen_var_103 = (uint64_t)local_memory;
-    stream->putBe64(cgen_var_103);
+    uint64_t cgen_var_116;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
+    stream->write((uint64_t*)&cgen_var_116, 8);
+    uint64_t cgen_var_117;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
+    stream->write((uint64_t*)&cgen_var_117, 8);
+    uint64_t cgen_var_118;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
+    stream->write((uint64_t*)&cgen_var_118, 8);
     stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
     pool->freeAll();
     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
     stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindImageMemory_VkResult_return;
 }
 
@@ -1670,10 +1793,12 @@
     resources->unwrapMapping()->mapHandles_VkBuffer((VkBuffer*)&local_buffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_104 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_104);
-        uint64_t cgen_var_105 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_105);
+        uint64_t cgen_var_119;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
+        countingStream->write((uint64_t*)&cgen_var_119, 8);
+        uint64_t cgen_var_120;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
+        countingStream->write((uint64_t*)&cgen_var_120, 8);
         marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
     }
     uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -1681,10 +1806,12 @@
     uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
     stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
     stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
-    uint64_t cgen_var_106 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_106);
-    uint64_t cgen_var_107 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_107);
+    uint64_t cgen_var_121;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
+    stream->write((uint64_t*)&cgen_var_121, 8);
+    uint64_t cgen_var_122;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
+    stream->write((uint64_t*)&cgen_var_122, 8);
     marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
     pool->freeAll();
@@ -1707,10 +1834,12 @@
     resources->unwrapMapping()->mapHandles_VkImage((VkImage*)&local_image);
     countingStream->rewind();
     {
-        uint64_t cgen_var_108 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_108);
-        uint64_t cgen_var_109 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_109);
+        uint64_t cgen_var_123;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
+        countingStream->write((uint64_t*)&cgen_var_123, 8);
+        uint64_t cgen_var_124;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
+        countingStream->write((uint64_t*)&cgen_var_124, 8);
         marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
     }
     uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -1718,10 +1847,12 @@
     uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
     stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
-    uint64_t cgen_var_110 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_110);
-    uint64_t cgen_var_111 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_111);
+    uint64_t cgen_var_125;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
+    stream->write((uint64_t*)&cgen_var_125, 8);
+    uint64_t cgen_var_126;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
+    stream->write((uint64_t*)&cgen_var_126, 8);
     marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
     pool->freeAll();
@@ -1745,20 +1876,22 @@
     resources->unwrapMapping()->mapHandles_VkImage((VkImage*)&local_image);
     countingStream->rewind();
     {
-        uint64_t cgen_var_112 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_112);
-        uint64_t cgen_var_113 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_113);
+        uint64_t cgen_var_127;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
+        countingStream->write((uint64_t*)&cgen_var_127, 8);
+        uint64_t cgen_var_128;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
+        countingStream->write((uint64_t*)&cgen_var_128, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_114 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-        countingStream->putBe64(cgen_var_114);
+        uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+        countingStream->putBe64(cgen_var_129);
         if (pSparseMemoryRequirementCount)
         {
             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_115 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-        countingStream->putBe64(cgen_var_115);
+        uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+        countingStream->putBe64(cgen_var_130);
         if (pSparseMemoryRequirements)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -1772,20 +1905,22 @@
     uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
     stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
-    uint64_t cgen_var_116 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_116);
-    uint64_t cgen_var_117 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_117);
+    uint64_t cgen_var_131;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
+    stream->write((uint64_t*)&cgen_var_131, 8);
+    uint64_t cgen_var_132;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
+    stream->write((uint64_t*)&cgen_var_132, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_118 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-    stream->putBe64(cgen_var_118);
+    uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+    stream->putBe64(cgen_var_133);
     if (pSparseMemoryRequirementCount)
     {
         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_119 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-    stream->putBe64(cgen_var_119);
+    uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+    stream->putBe64(cgen_var_134);
     if (pSparseMemoryRequirements)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -1850,23 +1985,24 @@
     local_tiling = tiling;
     countingStream->rewind();
     {
-        uint64_t cgen_var_122 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_122);
+        uint64_t cgen_var_137;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
+        countingStream->write((uint64_t*)&cgen_var_137, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
         countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
         countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
         // WARNING PTR CHECK
-        uint64_t cgen_var_123 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_123);
+        uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_138);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_124 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_124);
+        uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_139);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -1880,23 +2016,24 @@
     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
-    uint64_t cgen_var_125 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_125);
+    uint64_t cgen_var_140;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
+    stream->write((uint64_t*)&cgen_var_140, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
     stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
     stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
     // WARNING PTR CHECK
-    uint64_t cgen_var_126 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_126);
+    uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_141);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_127 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_127);
+    uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_142);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -1969,33 +2106,39 @@
     resources->unwrapMapping()->mapHandles_VkFence((VkFence*)&local_fence);
     countingStream->rewind();
     {
-        uint64_t cgen_var_130 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_130);
+        uint64_t cgen_var_145;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
+        countingStream->write((uint64_t*)&cgen_var_145, 8);
         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
         {
             marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
         }
-        uint64_t cgen_var_131 = (uint64_t)local_fence;
-        countingStream->putBe64(cgen_var_131);
+        uint64_t cgen_var_146;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
+        countingStream->write((uint64_t*)&cgen_var_146, 8);
     }
     uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
     stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
-    uint64_t cgen_var_132 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_132);
+    uint64_t cgen_var_147;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
+    stream->write((uint64_t*)&cgen_var_147, 8);
     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
     {
         marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
     }
-    uint64_t cgen_var_133 = (uint64_t)local_fence;
-    stream->putBe64(cgen_var_133);
+    uint64_t cgen_var_148;
+    stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
+    stream->write((uint64_t*)&cgen_var_148, 8);
     pool->freeAll();
     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
     stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkQueueBindSparse_VkResult_return;
 }
 
@@ -2037,38 +2180,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_134 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_134);
+        uint64_t cgen_var_149;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
+        countingStream->write((uint64_t*)&cgen_var_149, 8);
         marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_135 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_135);
+        uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_150);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+        uint64_t cgen_var_151;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
+        countingStream->write((uint64_t*)&cgen_var_151, 8);
     }
     uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateFence = OP_vkCreateFence;
     stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
-    uint64_t cgen_var_136 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_136);
+    uint64_t cgen_var_152;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
+    stream->write((uint64_t*)&cgen_var_152, 8);
     marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_137 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_137);
+    uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_153);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFence*)pFence, sizeof(VkFence));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkFence*)pFence, sizeof(VkFence));
+    uint64_t cgen_var_154;
+    stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
+    stream->write((uint64_t*)&cgen_var_154, 8);
+    uint64_t cgen_var_155;
+    stream->read((uint64_t*)&cgen_var_155, 8);
+    stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
     if (pFence)
     {
         resources->createMapping()->mapHandles_VkFence((VkFence*)pFence, 1);
@@ -2076,6 +2224,8 @@
     pool->freeAll();
     VkResult vkCreateFence_VkResult_return = (VkResult)0;
     stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateFence_VkResult_return;
 }
 
@@ -2108,13 +2258,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_138 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_138);
-        uint64_t cgen_var_139 = (uint64_t)local_fence;
-        countingStream->putBe64(cgen_var_139);
+        uint64_t cgen_var_156;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
+        countingStream->write((uint64_t*)&cgen_var_156, 8);
+        uint64_t cgen_var_157;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
+        countingStream->write((uint64_t*)&cgen_var_157, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_140 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_140);
+        uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_158);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2125,13 +2277,15 @@
     uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
     stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
-    uint64_t cgen_var_141 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_141);
-    uint64_t cgen_var_142 = (uint64_t)local_fence;
-    stream->putBe64(cgen_var_142);
+    uint64_t cgen_var_159;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
+    stream->write((uint64_t*)&cgen_var_159, 8);
+    uint64_t cgen_var_160;
+    stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
+    stream->write((uint64_t*)&cgen_var_160, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_143 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_143);
+    uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_161);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2166,25 +2320,39 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_144 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_144);
+        uint64_t cgen_var_162;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
+        countingStream->write((uint64_t*)&cgen_var_162, 8);
         countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFence*)local_pFences, ((fenceCount)) * sizeof(VkFence));
+        if (((fenceCount)))
+        {
+            uint64_t* cgen_var_163;
+            countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
+            countingStream->write((uint64_t*)cgen_var_163, 8);
+        }
     }
     uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkResetFences = OP_vkResetFences;
     stream->write(&opcode_vkResetFences, sizeof(uint32_t));
     stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
-    uint64_t cgen_var_145 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_145);
+    uint64_t cgen_var_164;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
+    stream->write((uint64_t*)&cgen_var_164, 8);
     stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFence*)local_pFences, ((fenceCount)) * sizeof(VkFence));
+    if (((fenceCount)))
+    {
+        uint64_t* cgen_var_165;
+        stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
+        stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
+        stream->write((uint64_t*)cgen_var_165, 8);
+    }
     pool->freeAll();
     VkResult vkResetFences_VkResult_return = (VkResult)0;
     stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkResetFences_VkResult_return;
 }
 
@@ -2204,23 +2372,29 @@
     resources->unwrapMapping()->mapHandles_VkFence((VkFence*)&local_fence);
     countingStream->rewind();
     {
-        uint64_t cgen_var_146 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_146);
-        uint64_t cgen_var_147 = (uint64_t)local_fence;
-        countingStream->putBe64(cgen_var_147);
+        uint64_t cgen_var_166;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
+        countingStream->write((uint64_t*)&cgen_var_166, 8);
+        uint64_t cgen_var_167;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
+        countingStream->write((uint64_t*)&cgen_var_167, 8);
     }
     uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
     stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
     stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
-    uint64_t cgen_var_148 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_148);
-    uint64_t cgen_var_149 = (uint64_t)local_fence;
-    stream->putBe64(cgen_var_149);
+    uint64_t cgen_var_168;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
+    stream->write((uint64_t*)&cgen_var_168, 8);
+    uint64_t cgen_var_169;
+    stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
+    stream->write((uint64_t*)&cgen_var_169, 8);
     pool->freeAll();
     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
     stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetFenceStatus_VkResult_return;
 }
 
@@ -2256,11 +2430,17 @@
     local_timeout = timeout;
     countingStream->rewind();
     {
-        uint64_t cgen_var_150 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_150);
+        uint64_t cgen_var_170;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
+        countingStream->write((uint64_t*)&cgen_var_170, 8);
         countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFence*)local_pFences, ((fenceCount)) * sizeof(VkFence));
+        if (((fenceCount)))
+        {
+            uint64_t* cgen_var_171;
+            countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
+            countingStream->write((uint64_t*)cgen_var_171, 8);
+        }
         countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
         countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
     }
@@ -2269,16 +2449,24 @@
     uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
     stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
     stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
-    uint64_t cgen_var_151 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_151);
+    uint64_t cgen_var_172;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
+    stream->write((uint64_t*)&cgen_var_172, 8);
     stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFence*)local_pFences, ((fenceCount)) * sizeof(VkFence));
+    if (((fenceCount)))
+    {
+        uint64_t* cgen_var_173;
+        stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
+        stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
+        stream->write((uint64_t*)cgen_var_173, 8);
+    }
     stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
     stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
     pool->freeAll();
     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
     stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkWaitForFences_VkResult_return;
 }
 
@@ -2320,38 +2508,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_152 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_152);
+        uint64_t cgen_var_174;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
+        countingStream->write((uint64_t*)&cgen_var_174, 8);
         marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_153);
+        uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_175);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+        uint64_t cgen_var_176;
+        countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
+        countingStream->write((uint64_t*)&cgen_var_176, 8);
     }
     uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
     stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
-    uint64_t cgen_var_154 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_154);
+    uint64_t cgen_var_177;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
+    stream->write((uint64_t*)&cgen_var_177, 8);
     marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_155 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_155);
+    uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_178);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+    uint64_t cgen_var_179;
+    stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
+    stream->write((uint64_t*)&cgen_var_179, 8);
+    uint64_t cgen_var_180;
+    stream->read((uint64_t*)&cgen_var_180, 8);
+    stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
     if (pSemaphore)
     {
         resources->createMapping()->mapHandles_VkSemaphore((VkSemaphore*)pSemaphore, 1);
@@ -2359,6 +2552,8 @@
     pool->freeAll();
     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSemaphore_VkResult_return;
 }
 
@@ -2391,13 +2586,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_156 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_156);
-        uint64_t cgen_var_157 = (uint64_t)local_semaphore;
-        countingStream->putBe64(cgen_var_157);
+        uint64_t cgen_var_181;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
+        countingStream->write((uint64_t*)&cgen_var_181, 8);
+        uint64_t cgen_var_182;
+        countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
+        countingStream->write((uint64_t*)&cgen_var_182, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_158);
+        uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_183);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2408,13 +2605,15 @@
     uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
     stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
-    uint64_t cgen_var_159 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_159);
-    uint64_t cgen_var_160 = (uint64_t)local_semaphore;
-    stream->putBe64(cgen_var_160);
+    uint64_t cgen_var_184;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
+    stream->write((uint64_t*)&cgen_var_184, 8);
+    uint64_t cgen_var_185;
+    stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
+    stream->write((uint64_t*)&cgen_var_185, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_161);
+    uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_186);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2461,38 +2660,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_162 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_162);
+        uint64_t cgen_var_187;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
+        countingStream->write((uint64_t*)&cgen_var_187, 8);
         marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_163 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_163);
+        uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_188);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkEvent*)pEvent, sizeof(VkEvent));
+        uint64_t cgen_var_189;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
+        countingStream->write((uint64_t*)&cgen_var_189, 8);
     }
     uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
     stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
-    uint64_t cgen_var_164 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_164);
+    uint64_t cgen_var_190;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
+    stream->write((uint64_t*)&cgen_var_190, 8);
     marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_165 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_165);
+    uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_191);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkEvent*)pEvent, sizeof(VkEvent));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkEvent*)pEvent, sizeof(VkEvent));
+    uint64_t cgen_var_192;
+    stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
+    stream->write((uint64_t*)&cgen_var_192, 8);
+    uint64_t cgen_var_193;
+    stream->read((uint64_t*)&cgen_var_193, 8);
+    stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
     if (pEvent)
     {
         resources->createMapping()->mapHandles_VkEvent((VkEvent*)pEvent, 1);
@@ -2500,6 +2704,8 @@
     pool->freeAll();
     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
     stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateEvent_VkResult_return;
 }
 
@@ -2532,13 +2738,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_166 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_166);
-        uint64_t cgen_var_167 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_167);
+        uint64_t cgen_var_194;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
+        countingStream->write((uint64_t*)&cgen_var_194, 8);
+        uint64_t cgen_var_195;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
+        countingStream->write((uint64_t*)&cgen_var_195, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_168 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_168);
+        uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_196);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2549,13 +2757,15 @@
     uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
     stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
-    uint64_t cgen_var_169 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_169);
-    uint64_t cgen_var_170 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_170);
+    uint64_t cgen_var_197;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
+    stream->write((uint64_t*)&cgen_var_197, 8);
+    uint64_t cgen_var_198;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
+    stream->write((uint64_t*)&cgen_var_198, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_171 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_171);
+    uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_199);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2580,23 +2790,29 @@
     resources->unwrapMapping()->mapHandles_VkEvent((VkEvent*)&local_event);
     countingStream->rewind();
     {
-        uint64_t cgen_var_172 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_172);
-        uint64_t cgen_var_173 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_173);
+        uint64_t cgen_var_200;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
+        countingStream->write((uint64_t*)&cgen_var_200, 8);
+        uint64_t cgen_var_201;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
+        countingStream->write((uint64_t*)&cgen_var_201, 8);
     }
     uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
     stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
     stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
-    uint64_t cgen_var_174 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_174);
-    uint64_t cgen_var_175 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_175);
+    uint64_t cgen_var_202;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
+    stream->write((uint64_t*)&cgen_var_202, 8);
+    uint64_t cgen_var_203;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
+    stream->write((uint64_t*)&cgen_var_203, 8);
     pool->freeAll();
     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
     stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetEventStatus_VkResult_return;
 }
 
@@ -2616,23 +2832,29 @@
     resources->unwrapMapping()->mapHandles_VkEvent((VkEvent*)&local_event);
     countingStream->rewind();
     {
-        uint64_t cgen_var_176 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_176);
-        uint64_t cgen_var_177 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_177);
+        uint64_t cgen_var_204;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
+        countingStream->write((uint64_t*)&cgen_var_204, 8);
+        uint64_t cgen_var_205;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
+        countingStream->write((uint64_t*)&cgen_var_205, 8);
     }
     uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkSetEvent = OP_vkSetEvent;
     stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
-    uint64_t cgen_var_178 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_178);
-    uint64_t cgen_var_179 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_179);
+    uint64_t cgen_var_206;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
+    stream->write((uint64_t*)&cgen_var_206, 8);
+    uint64_t cgen_var_207;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
+    stream->write((uint64_t*)&cgen_var_207, 8);
     pool->freeAll();
     VkResult vkSetEvent_VkResult_return = (VkResult)0;
     stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkSetEvent_VkResult_return;
 }
 
@@ -2652,23 +2874,29 @@
     resources->unwrapMapping()->mapHandles_VkEvent((VkEvent*)&local_event);
     countingStream->rewind();
     {
-        uint64_t cgen_var_180 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_180);
-        uint64_t cgen_var_181 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_181);
+        uint64_t cgen_var_208;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
+        countingStream->write((uint64_t*)&cgen_var_208, 8);
+        uint64_t cgen_var_209;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
+        countingStream->write((uint64_t*)&cgen_var_209, 8);
     }
     uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkResetEvent = OP_vkResetEvent;
     stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
-    uint64_t cgen_var_182 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_182);
-    uint64_t cgen_var_183 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_183);
+    uint64_t cgen_var_210;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
+    stream->write((uint64_t*)&cgen_var_210, 8);
+    uint64_t cgen_var_211;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
+    stream->write((uint64_t*)&cgen_var_211, 8);
     pool->freeAll();
     VkResult vkResetEvent_VkResult_return = (VkResult)0;
     stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkResetEvent_VkResult_return;
 }
 
@@ -2710,38 +2938,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_184 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_184);
+        uint64_t cgen_var_212;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
+        countingStream->write((uint64_t*)&cgen_var_212, 8);
         marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_185 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_185);
+        uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_213);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+        uint64_t cgen_var_214;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
+        countingStream->write((uint64_t*)&cgen_var_214, 8);
     }
     uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
     stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
-    uint64_t cgen_var_186 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_186);
+    uint64_t cgen_var_215;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
+    stream->write((uint64_t*)&cgen_var_215, 8);
     marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_187 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_187);
+    uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_216);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+    uint64_t cgen_var_217;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
+    stream->write((uint64_t*)&cgen_var_217, 8);
+    uint64_t cgen_var_218;
+    stream->read((uint64_t*)&cgen_var_218, 8);
+    stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
     if (pQueryPool)
     {
         resources->createMapping()->mapHandles_VkQueryPool((VkQueryPool*)pQueryPool, 1);
@@ -2749,6 +2982,8 @@
     pool->freeAll();
     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
     stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateQueryPool_VkResult_return;
 }
 
@@ -2781,13 +3016,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_188 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_188);
-        uint64_t cgen_var_189 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_189);
+        uint64_t cgen_var_219;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
+        countingStream->write((uint64_t*)&cgen_var_219, 8);
+        uint64_t cgen_var_220;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
+        countingStream->write((uint64_t*)&cgen_var_220, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_190 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_190);
+        uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_221);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2798,13 +3035,15 @@
     uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
     stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
-    uint64_t cgen_var_191 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_191);
-    uint64_t cgen_var_192 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_192);
+    uint64_t cgen_var_222;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
+    stream->write((uint64_t*)&cgen_var_222, 8);
+    uint64_t cgen_var_223;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
+    stream->write((uint64_t*)&cgen_var_223, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_193 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_193);
+    uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_224);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -2845,10 +3084,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_194 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_194);
-        uint64_t cgen_var_195 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_195);
+        uint64_t cgen_var_225;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
+        countingStream->write((uint64_t*)&cgen_var_225, 8);
+        uint64_t cgen_var_226;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
+        countingStream->write((uint64_t*)&cgen_var_226, 8);
         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
         countingStream->write((size_t*)&local_dataSize, sizeof(size_t));
@@ -2861,10 +3102,12 @@
     uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
     stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
     stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
-    uint64_t cgen_var_196 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_196);
-    uint64_t cgen_var_197 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_197);
+    uint64_t cgen_var_227;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
+    stream->write((uint64_t*)&cgen_var_227, 8);
+    uint64_t cgen_var_228;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_228, 1);
+    stream->write((uint64_t*)&cgen_var_228, 8);
     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
     stream->write((size_t*)&local_dataSize, sizeof(size_t));
@@ -2875,6 +3118,8 @@
     pool->freeAll();
     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
     stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetQueryPoolResults_VkResult_return;
 }
 
@@ -2916,38 +3161,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_198 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_198);
+        uint64_t cgen_var_229;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_229, 1);
+        countingStream->write((uint64_t*)&cgen_var_229, 8);
         marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_199);
+        uint64_t cgen_var_230 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_230);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
+        uint64_t cgen_var_231;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_231, 1);
+        countingStream->write((uint64_t*)&cgen_var_231, 8);
     }
     uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
     stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_200 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_200);
+    uint64_t cgen_var_232;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_232, 1);
+    stream->write((uint64_t*)&cgen_var_232, 8);
     marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_201 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_201);
+    uint64_t cgen_var_233 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_233);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkBuffer*)pBuffer, sizeof(VkBuffer));
+    uint64_t cgen_var_234;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_234, 1);
+    stream->write((uint64_t*)&cgen_var_234, 8);
+    uint64_t cgen_var_235;
+    stream->read((uint64_t*)&cgen_var_235, 8);
+    stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_235, (VkBuffer*)pBuffer, 1);
     if (pBuffer)
     {
         resources->createMapping()->mapHandles_VkBuffer((VkBuffer*)pBuffer, 1);
@@ -2955,6 +3205,8 @@
     pool->freeAll();
     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
     stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateBuffer_VkResult_return;
 }
 
@@ -2987,13 +3239,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_202 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_202);
-        uint64_t cgen_var_203 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_203);
+        uint64_t cgen_var_236;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_236, 1);
+        countingStream->write((uint64_t*)&cgen_var_236, 8);
+        uint64_t cgen_var_237;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_237, 1);
+        countingStream->write((uint64_t*)&cgen_var_237, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_204 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_204);
+        uint64_t cgen_var_238 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_238);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3004,13 +3258,15 @@
     uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
     stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_205 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_205);
-    uint64_t cgen_var_206 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_206);
+    uint64_t cgen_var_239;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_239, 1);
+    stream->write((uint64_t*)&cgen_var_239, 8);
+    uint64_t cgen_var_240;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_240, 1);
+    stream->write((uint64_t*)&cgen_var_240, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_207 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_207);
+    uint64_t cgen_var_241 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_241);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3057,38 +3313,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_208 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_208);
+        uint64_t cgen_var_242;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_242, 1);
+        countingStream->write((uint64_t*)&cgen_var_242, 8);
         marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_209 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_209);
+        uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_243);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkBufferView*)pView, sizeof(VkBufferView));
+        uint64_t cgen_var_244;
+        countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_244, 1);
+        countingStream->write((uint64_t*)&cgen_var_244, 8);
     }
     uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
     stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
-    uint64_t cgen_var_210 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_210);
+    uint64_t cgen_var_245;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_245, 1);
+    stream->write((uint64_t*)&cgen_var_245, 8);
     marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_211 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_211);
+    uint64_t cgen_var_246 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_246);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkBufferView*)pView, sizeof(VkBufferView));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkBufferView*)pView, sizeof(VkBufferView));
+    uint64_t cgen_var_247;
+    stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_247, 1);
+    stream->write((uint64_t*)&cgen_var_247, 8);
+    uint64_t cgen_var_248;
+    stream->read((uint64_t*)&cgen_var_248, 8);
+    stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_248, (VkBufferView*)pView, 1);
     if (pView)
     {
         resources->createMapping()->mapHandles_VkBufferView((VkBufferView*)pView, 1);
@@ -3096,6 +3357,8 @@
     pool->freeAll();
     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
     stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateBufferView_VkResult_return;
 }
 
@@ -3128,13 +3391,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_212 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_212);
-        uint64_t cgen_var_213 = (uint64_t)local_bufferView;
-        countingStream->putBe64(cgen_var_213);
+        uint64_t cgen_var_249;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_249, 1);
+        countingStream->write((uint64_t*)&cgen_var_249, 8);
+        uint64_t cgen_var_250;
+        countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_250, 1);
+        countingStream->write((uint64_t*)&cgen_var_250, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_214 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_214);
+        uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_251);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3145,13 +3410,15 @@
     uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
     stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
-    uint64_t cgen_var_215 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_215);
-    uint64_t cgen_var_216 = (uint64_t)local_bufferView;
-    stream->putBe64(cgen_var_216);
+    uint64_t cgen_var_252;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_252, 1);
+    stream->write((uint64_t*)&cgen_var_252, 8);
+    uint64_t cgen_var_253;
+    stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_253, 1);
+    stream->write((uint64_t*)&cgen_var_253, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_217 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_217);
+    uint64_t cgen_var_254 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_254);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3198,38 +3465,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_218 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_218);
+        uint64_t cgen_var_255;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_255, 1);
+        countingStream->write((uint64_t*)&cgen_var_255, 8);
         marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_219 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_219);
+        uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_256);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkImage*)pImage, sizeof(VkImage));
+        uint64_t cgen_var_257;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_257, 1);
+        countingStream->write((uint64_t*)&cgen_var_257, 8);
     }
     uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateImage = OP_vkCreateImage;
     stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
-    uint64_t cgen_var_220 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_220);
+    uint64_t cgen_var_258;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_258, 1);
+    stream->write((uint64_t*)&cgen_var_258, 8);
     marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_221);
+    uint64_t cgen_var_259 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_259);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkImage*)pImage, sizeof(VkImage));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkImage*)pImage, sizeof(VkImage));
+    uint64_t cgen_var_260;
+    stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_260, 1);
+    stream->write((uint64_t*)&cgen_var_260, 8);
+    uint64_t cgen_var_261;
+    stream->read((uint64_t*)&cgen_var_261, 8);
+    stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_261, (VkImage*)pImage, 1);
     if (pImage)
     {
         resources->createMapping()->mapHandles_VkImage((VkImage*)pImage, 1);
@@ -3237,6 +3509,8 @@
     pool->freeAll();
     VkResult vkCreateImage_VkResult_return = (VkResult)0;
     stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateImage_VkResult_return;
 }
 
@@ -3269,13 +3543,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_222 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_222);
-        uint64_t cgen_var_223 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_223);
+        uint64_t cgen_var_262;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_262, 1);
+        countingStream->write((uint64_t*)&cgen_var_262, 8);
+        uint64_t cgen_var_263;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_263, 1);
+        countingStream->write((uint64_t*)&cgen_var_263, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_224);
+        uint64_t cgen_var_264 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_264);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3286,13 +3562,15 @@
     uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
     stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
-    uint64_t cgen_var_225 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_225);
-    uint64_t cgen_var_226 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_226);
+    uint64_t cgen_var_265;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_265, 1);
+    stream->write((uint64_t*)&cgen_var_265, 8);
+    uint64_t cgen_var_266;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_266, 1);
+    stream->write((uint64_t*)&cgen_var_266, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_227 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_227);
+    uint64_t cgen_var_267 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_267);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3330,10 +3608,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_228 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_228);
-        uint64_t cgen_var_229 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_229);
+        uint64_t cgen_var_268;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_268, 1);
+        countingStream->write((uint64_t*)&cgen_var_268, 8);
+        uint64_t cgen_var_269;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_269, 1);
+        countingStream->write((uint64_t*)&cgen_var_269, 8);
         marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
         marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
     }
@@ -3342,10 +3622,12 @@
     uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
     stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
-    uint64_t cgen_var_230 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_230);
-    uint64_t cgen_var_231 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_231);
+    uint64_t cgen_var_270;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
+    stream->write((uint64_t*)&cgen_var_270, 8);
+    uint64_t cgen_var_271;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
+    stream->write((uint64_t*)&cgen_var_271, 8);
     marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
     marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
     unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
@@ -3390,38 +3672,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_232 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_232);
+        uint64_t cgen_var_272;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
+        countingStream->write((uint64_t*)&cgen_var_272, 8);
         marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_233 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_233);
+        uint64_t cgen_var_273 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_273);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkImageView*)pView, sizeof(VkImageView));
+        uint64_t cgen_var_274;
+        countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_274, 1);
+        countingStream->write((uint64_t*)&cgen_var_274, 8);
     }
     uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
     stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
-    uint64_t cgen_var_234 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_234);
+    uint64_t cgen_var_275;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_275, 1);
+    stream->write((uint64_t*)&cgen_var_275, 8);
     marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_235);
+    uint64_t cgen_var_276 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_276);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkImageView*)pView, sizeof(VkImageView));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkImageView*)pView, sizeof(VkImageView));
+    uint64_t cgen_var_277;
+    stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_277, 1);
+    stream->write((uint64_t*)&cgen_var_277, 8);
+    uint64_t cgen_var_278;
+    stream->read((uint64_t*)&cgen_var_278, 8);
+    stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_278, (VkImageView*)pView, 1);
     if (pView)
     {
         resources->createMapping()->mapHandles_VkImageView((VkImageView*)pView, 1);
@@ -3429,6 +3716,8 @@
     pool->freeAll();
     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
     stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateImageView_VkResult_return;
 }
 
@@ -3461,13 +3750,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_236 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_236);
-        uint64_t cgen_var_237 = (uint64_t)local_imageView;
-        countingStream->putBe64(cgen_var_237);
+        uint64_t cgen_var_279;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_279, 1);
+        countingStream->write((uint64_t*)&cgen_var_279, 8);
+        uint64_t cgen_var_280;
+        countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_280, 1);
+        countingStream->write((uint64_t*)&cgen_var_280, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_238 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_238);
+        uint64_t cgen_var_281 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_281);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3478,13 +3769,15 @@
     uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
     stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
-    uint64_t cgen_var_239 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_239);
-    uint64_t cgen_var_240 = (uint64_t)local_imageView;
-    stream->putBe64(cgen_var_240);
+    uint64_t cgen_var_282;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
+    stream->write((uint64_t*)&cgen_var_282, 8);
+    uint64_t cgen_var_283;
+    stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_283, 1);
+    stream->write((uint64_t*)&cgen_var_283, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_241 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_241);
+    uint64_t cgen_var_284 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_284);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3531,38 +3824,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_242 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_242);
+        uint64_t cgen_var_285;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_285, 1);
+        countingStream->write((uint64_t*)&cgen_var_285, 8);
         marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_243);
+        uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_286);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+        uint64_t cgen_var_287;
+        countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_287, 1);
+        countingStream->write((uint64_t*)&cgen_var_287, 8);
     }
     uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
     stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
-    uint64_t cgen_var_244 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_244);
+    uint64_t cgen_var_288;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_288, 1);
+    stream->write((uint64_t*)&cgen_var_288, 8);
     marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_245);
+    uint64_t cgen_var_289 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_289);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+    uint64_t cgen_var_290;
+    stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_290, 1);
+    stream->write((uint64_t*)&cgen_var_290, 8);
+    uint64_t cgen_var_291;
+    stream->read((uint64_t*)&cgen_var_291, 8);
+    stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_291, (VkShaderModule*)pShaderModule, 1);
     if (pShaderModule)
     {
         resources->createMapping()->mapHandles_VkShaderModule((VkShaderModule*)pShaderModule, 1);
@@ -3570,6 +3868,8 @@
     pool->freeAll();
     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
     stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateShaderModule_VkResult_return;
 }
 
@@ -3602,13 +3902,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_246 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_246);
-        uint64_t cgen_var_247 = (uint64_t)local_shaderModule;
-        countingStream->putBe64(cgen_var_247);
+        uint64_t cgen_var_292;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_292, 1);
+        countingStream->write((uint64_t*)&cgen_var_292, 8);
+        uint64_t cgen_var_293;
+        countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_293, 1);
+        countingStream->write((uint64_t*)&cgen_var_293, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_248);
+        uint64_t cgen_var_294 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_294);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3619,13 +3921,15 @@
     uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
     stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
-    uint64_t cgen_var_249 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_249);
-    uint64_t cgen_var_250 = (uint64_t)local_shaderModule;
-    stream->putBe64(cgen_var_250);
+    uint64_t cgen_var_295;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_295, 1);
+    stream->write((uint64_t*)&cgen_var_295, 8);
+    uint64_t cgen_var_296;
+    stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_296, 1);
+    stream->write((uint64_t*)&cgen_var_296, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_251);
+    uint64_t cgen_var_297 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_297);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3672,38 +3976,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_252 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_252);
+        uint64_t cgen_var_298;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_298, 1);
+        countingStream->write((uint64_t*)&cgen_var_298, 8);
         marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_253);
+        uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_299);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+        uint64_t cgen_var_300;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_300, 1);
+        countingStream->write((uint64_t*)&cgen_var_300, 8);
     }
     uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
     stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
     stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
-    uint64_t cgen_var_254 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_254);
+    uint64_t cgen_var_301;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_301, 1);
+    stream->write((uint64_t*)&cgen_var_301, 8);
     marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_255 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_255);
+    uint64_t cgen_var_302 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_302);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+    uint64_t cgen_var_303;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_303, 1);
+    stream->write((uint64_t*)&cgen_var_303, 8);
+    uint64_t cgen_var_304;
+    stream->read((uint64_t*)&cgen_var_304, 8);
+    stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_304, (VkPipelineCache*)pPipelineCache, 1);
     if (pPipelineCache)
     {
         resources->createMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)pPipelineCache, 1);
@@ -3711,6 +4020,8 @@
     pool->freeAll();
     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
     stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreatePipelineCache_VkResult_return;
 }
 
@@ -3743,13 +4054,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_256 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_256);
-        uint64_t cgen_var_257 = (uint64_t)local_pipelineCache;
-        countingStream->putBe64(cgen_var_257);
+        uint64_t cgen_var_305;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_305, 1);
+        countingStream->write((uint64_t*)&cgen_var_305, 8);
+        uint64_t cgen_var_306;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_306, 1);
+        countingStream->write((uint64_t*)&cgen_var_306, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_258);
+        uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_307);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3760,13 +4073,15 @@
     uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
     stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
-    uint64_t cgen_var_259 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_259);
-    uint64_t cgen_var_260 = (uint64_t)local_pipelineCache;
-    stream->putBe64(cgen_var_260);
+    uint64_t cgen_var_308;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_308, 1);
+    stream->write((uint64_t*)&cgen_var_308, 8);
+    uint64_t cgen_var_309;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_309, 1);
+    stream->write((uint64_t*)&cgen_var_309, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_261);
+    uint64_t cgen_var_310 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_310);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -3793,20 +4108,22 @@
     resources->unwrapMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&local_pipelineCache);
     countingStream->rewind();
     {
-        uint64_t cgen_var_262 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_262);
-        uint64_t cgen_var_263 = (uint64_t)local_pipelineCache;
-        countingStream->putBe64(cgen_var_263);
+        uint64_t cgen_var_311;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_311, 1);
+        countingStream->write((uint64_t*)&cgen_var_311, 8);
+        uint64_t cgen_var_312;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_312, 1);
+        countingStream->write((uint64_t*)&cgen_var_312, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_264 = (uint64_t)(uintptr_t)pDataSize;
-        countingStream->putBe64(cgen_var_264);
+        uint64_t cgen_var_313 = (uint64_t)(uintptr_t)pDataSize;
+        countingStream->putBe64(cgen_var_313);
         if (pDataSize)
         {
             countingStream->write((size_t*)pDataSize, sizeof(size_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_265 = (uint64_t)(uintptr_t)pData;
-        countingStream->putBe64(cgen_var_265);
+        uint64_t cgen_var_314 = (uint64_t)(uintptr_t)pData;
+        countingStream->putBe64(cgen_var_314);
         if (pData)
         {
             countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
@@ -3817,20 +4134,22 @@
     uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
     stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
-    uint64_t cgen_var_266 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_266);
-    uint64_t cgen_var_267 = (uint64_t)local_pipelineCache;
-    stream->putBe64(cgen_var_267);
+    uint64_t cgen_var_315;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
+    stream->write((uint64_t*)&cgen_var_315, 8);
+    uint64_t cgen_var_316;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_316, 1);
+    stream->write((uint64_t*)&cgen_var_316, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_268 = (uint64_t)(uintptr_t)pDataSize;
-    stream->putBe64(cgen_var_268);
+    uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pDataSize;
+    stream->putBe64(cgen_var_317);
     if (pDataSize)
     {
         stream->write((size_t*)pDataSize, sizeof(size_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_269 = (uint64_t)(uintptr_t)pData;
-    stream->putBe64(cgen_var_269);
+    uint64_t cgen_var_318 = (uint64_t)(uintptr_t)pData;
+    stream->putBe64(cgen_var_318);
     if (pData)
     {
         stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
@@ -3860,6 +4179,8 @@
     pool->freeAll();
     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
     stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPipelineCacheData_VkResult_return;
 }
 
@@ -3893,29 +4214,45 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_272 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_272);
-        uint64_t cgen_var_273 = (uint64_t)local_dstCache;
-        countingStream->putBe64(cgen_var_273);
+        uint64_t cgen_var_321;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_321, 1);
+        countingStream->write((uint64_t*)&cgen_var_321, 8);
+        uint64_t cgen_var_322;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_322, 1);
+        countingStream->write((uint64_t*)&cgen_var_322, 8);
         countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkPipelineCache*)local_pSrcCaches, ((srcCacheCount)) * sizeof(VkPipelineCache));
+        if (((srcCacheCount)))
+        {
+            uint64_t* cgen_var_323;
+            countingStream->alloc((void**)&cgen_var_323, ((srcCacheCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_323, ((srcCacheCount)));
+            countingStream->write((uint64_t*)cgen_var_323, 8);
+        }
     }
     uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
     stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
     stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
-    uint64_t cgen_var_274 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_274);
-    uint64_t cgen_var_275 = (uint64_t)local_dstCache;
-    stream->putBe64(cgen_var_275);
+    uint64_t cgen_var_324;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_324, 1);
+    stream->write((uint64_t*)&cgen_var_324, 8);
+    uint64_t cgen_var_325;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_325, 1);
+    stream->write((uint64_t*)&cgen_var_325, 8);
     stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkPipelineCache*)local_pSrcCaches, ((srcCacheCount)) * sizeof(VkPipelineCache));
+    if (((srcCacheCount)))
+    {
+        uint64_t* cgen_var_326;
+        stream->alloc((void**)&cgen_var_326, ((srcCacheCount)) * 8);
+        stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_326, ((srcCacheCount)));
+        stream->write((uint64_t*)cgen_var_326, 8);
+    }
     pool->freeAll();
     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
     stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkMergePipelineCaches_VkResult_return;
 }
 
@@ -3970,50 +4307,69 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_276 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_276);
-        uint64_t cgen_var_277 = (uint64_t)local_pipelineCache;
-        countingStream->putBe64(cgen_var_277);
+        uint64_t cgen_var_327;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_327, 1);
+        countingStream->write((uint64_t*)&cgen_var_327, 8);
+        uint64_t cgen_var_328;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_328, 1);
+        countingStream->write((uint64_t*)&cgen_var_328, 8);
         countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
         {
             marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_278);
+        uint64_t cgen_var_329 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_329);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+        if (((createInfoCount)))
+        {
+            uint64_t* cgen_var_330;
+            countingStream->alloc((void**)&cgen_var_330, ((createInfoCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_330, ((createInfoCount)));
+            countingStream->write((uint64_t*)cgen_var_330, 8);
+        }
     }
     uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
     stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
-    uint64_t cgen_var_279 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_279);
-    uint64_t cgen_var_280 = (uint64_t)local_pipelineCache;
-    stream->putBe64(cgen_var_280);
+    uint64_t cgen_var_331;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_331, 1);
+    stream->write((uint64_t*)&cgen_var_331, 8);
+    uint64_t cgen_var_332;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_332, 1);
+    stream->write((uint64_t*)&cgen_var_332, 8);
     stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
     {
         marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_281 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_281);
+    uint64_t cgen_var_333 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_333);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    if (((createInfoCount)))
+    {
+        uint64_t* cgen_var_334;
+        stream->alloc((void**)&cgen_var_334, ((createInfoCount)) * 8);
+        stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_334, ((createInfoCount)));
+        stream->write((uint64_t*)cgen_var_334, 8);
+    }
+    if (((createInfoCount)))
+    {
+        uint64_t* cgen_var_335;
+        stream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
+        stream->read((uint64_t*)cgen_var_335, 8);
+        stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_335, (VkPipeline*)pPipelines, ((createInfoCount)));
+    }
     if (pPipelines)
     {
         resources->createMapping()->mapHandles_VkPipeline((VkPipeline*)pPipelines, ((createInfoCount)));
@@ -4021,6 +4377,8 @@
     pool->freeAll();
     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
     stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateGraphicsPipelines_VkResult_return;
 }
 
@@ -4075,50 +4433,69 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_282 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_282);
-        uint64_t cgen_var_283 = (uint64_t)local_pipelineCache;
-        countingStream->putBe64(cgen_var_283);
+        uint64_t cgen_var_336;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
+        countingStream->write((uint64_t*)&cgen_var_336, 8);
+        uint64_t cgen_var_337;
+        countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
+        countingStream->write((uint64_t*)&cgen_var_337, 8);
         countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
         {
             marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_284 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_284);
+        uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_338);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+        if (((createInfoCount)))
+        {
+            uint64_t* cgen_var_339;
+            countingStream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
+            countingStream->write((uint64_t*)cgen_var_339, 8);
+        }
     }
     uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
     stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
-    uint64_t cgen_var_285 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_285);
-    uint64_t cgen_var_286 = (uint64_t)local_pipelineCache;
-    stream->putBe64(cgen_var_286);
+    uint64_t cgen_var_340;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_340, 1);
+    stream->write((uint64_t*)&cgen_var_340, 8);
+    uint64_t cgen_var_341;
+    stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_341, 1);
+    stream->write((uint64_t*)&cgen_var_341, 8);
     stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
     {
         marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_287 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_287);
+    uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_342);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    if (((createInfoCount)))
+    {
+        uint64_t* cgen_var_343;
+        stream->alloc((void**)&cgen_var_343, ((createInfoCount)) * 8);
+        stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_343, ((createInfoCount)));
+        stream->write((uint64_t*)cgen_var_343, 8);
+    }
+    if (((createInfoCount)))
+    {
+        uint64_t* cgen_var_344;
+        stream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
+        stream->read((uint64_t*)cgen_var_344, 8);
+        stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_344, (VkPipeline*)pPipelines, ((createInfoCount)));
+    }
     if (pPipelines)
     {
         resources->createMapping()->mapHandles_VkPipeline((VkPipeline*)pPipelines, ((createInfoCount)));
@@ -4126,6 +4503,8 @@
     pool->freeAll();
     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
     stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateComputePipelines_VkResult_return;
 }
 
@@ -4158,13 +4537,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_288 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_288);
-        uint64_t cgen_var_289 = (uint64_t)local_pipeline;
-        countingStream->putBe64(cgen_var_289);
+        uint64_t cgen_var_345;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
+        countingStream->write((uint64_t*)&cgen_var_345, 8);
+        uint64_t cgen_var_346;
+        countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_346, 1);
+        countingStream->write((uint64_t*)&cgen_var_346, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_290 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_290);
+        uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_347);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4175,13 +4556,15 @@
     uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
     stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
-    uint64_t cgen_var_291 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_291);
-    uint64_t cgen_var_292 = (uint64_t)local_pipeline;
-    stream->putBe64(cgen_var_292);
+    uint64_t cgen_var_348;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_348, 1);
+    stream->write((uint64_t*)&cgen_var_348, 8);
+    uint64_t cgen_var_349;
+    stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_349, 1);
+    stream->write((uint64_t*)&cgen_var_349, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_293 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_293);
+    uint64_t cgen_var_350 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_350);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4228,38 +4611,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_294 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_294);
+        uint64_t cgen_var_351;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_351, 1);
+        countingStream->write((uint64_t*)&cgen_var_351, 8);
         marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_295 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_295);
+        uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_352);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+        uint64_t cgen_var_353;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_353, 1);
+        countingStream->write((uint64_t*)&cgen_var_353, 8);
     }
     uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
     stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
     stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
-    uint64_t cgen_var_296 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_296);
+    uint64_t cgen_var_354;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_354, 1);
+    stream->write((uint64_t*)&cgen_var_354, 8);
     marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_297 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_297);
+    uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_355);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+    uint64_t cgen_var_356;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_356, 1);
+    stream->write((uint64_t*)&cgen_var_356, 8);
+    uint64_t cgen_var_357;
+    stream->read((uint64_t*)&cgen_var_357, 8);
+    stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_357, (VkPipelineLayout*)pPipelineLayout, 1);
     if (pPipelineLayout)
     {
         resources->createMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)pPipelineLayout, 1);
@@ -4267,6 +4655,8 @@
     pool->freeAll();
     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
     stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreatePipelineLayout_VkResult_return;
 }
 
@@ -4299,13 +4689,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_298 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_298);
-        uint64_t cgen_var_299 = (uint64_t)local_pipelineLayout;
-        countingStream->putBe64(cgen_var_299);
+        uint64_t cgen_var_358;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_358, 1);
+        countingStream->write((uint64_t*)&cgen_var_358, 8);
+        uint64_t cgen_var_359;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_359, 1);
+        countingStream->write((uint64_t*)&cgen_var_359, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_300 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_300);
+        uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_360);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4316,13 +4708,15 @@
     uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
     stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
-    uint64_t cgen_var_301 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_301);
-    uint64_t cgen_var_302 = (uint64_t)local_pipelineLayout;
-    stream->putBe64(cgen_var_302);
+    uint64_t cgen_var_361;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_361, 1);
+    stream->write((uint64_t*)&cgen_var_361, 8);
+    uint64_t cgen_var_362;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_362, 1);
+    stream->write((uint64_t*)&cgen_var_362, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_303 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_303);
+    uint64_t cgen_var_363 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_363);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4369,38 +4763,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_304 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_304);
+        uint64_t cgen_var_364;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_364, 1);
+        countingStream->write((uint64_t*)&cgen_var_364, 8);
         marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_305 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_305);
+        uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_365);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSampler*)pSampler, sizeof(VkSampler));
+        uint64_t cgen_var_366;
+        countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_366, 1);
+        countingStream->write((uint64_t*)&cgen_var_366, 8);
     }
     uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
     stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
-    uint64_t cgen_var_306 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_306);
+    uint64_t cgen_var_367;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_367, 1);
+    stream->write((uint64_t*)&cgen_var_367, 8);
     marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_307);
+    uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_368);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSampler*)pSampler, sizeof(VkSampler));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSampler*)pSampler, sizeof(VkSampler));
+    uint64_t cgen_var_369;
+    stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_369, 1);
+    stream->write((uint64_t*)&cgen_var_369, 8);
+    uint64_t cgen_var_370;
+    stream->read((uint64_t*)&cgen_var_370, 8);
+    stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_370, (VkSampler*)pSampler, 1);
     if (pSampler)
     {
         resources->createMapping()->mapHandles_VkSampler((VkSampler*)pSampler, 1);
@@ -4408,6 +4807,8 @@
     pool->freeAll();
     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSampler_VkResult_return;
 }
 
@@ -4440,13 +4841,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_308 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_308);
-        uint64_t cgen_var_309 = (uint64_t)local_sampler;
-        countingStream->putBe64(cgen_var_309);
+        uint64_t cgen_var_371;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
+        countingStream->write((uint64_t*)&cgen_var_371, 8);
+        uint64_t cgen_var_372;
+        countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_372, 1);
+        countingStream->write((uint64_t*)&cgen_var_372, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_310 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_310);
+        uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_373);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4457,13 +4860,15 @@
     uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
     stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
-    uint64_t cgen_var_311 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_311);
-    uint64_t cgen_var_312 = (uint64_t)local_sampler;
-    stream->putBe64(cgen_var_312);
+    uint64_t cgen_var_374;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_374, 1);
+    stream->write((uint64_t*)&cgen_var_374, 8);
+    uint64_t cgen_var_375;
+    stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_375, 1);
+    stream->write((uint64_t*)&cgen_var_375, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_313 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_313);
+    uint64_t cgen_var_376 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_376);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4510,38 +4915,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_314 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_314);
+        uint64_t cgen_var_377;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_377, 1);
+        countingStream->write((uint64_t*)&cgen_var_377, 8);
         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_315 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_315);
+        uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_378);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+        uint64_t cgen_var_379;
+        countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_379, 1);
+        countingStream->write((uint64_t*)&cgen_var_379, 8);
     }
     uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
     stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
-    uint64_t cgen_var_316 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_316);
+    uint64_t cgen_var_380;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_380, 1);
+    stream->write((uint64_t*)&cgen_var_380, 8);
     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_317 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_317);
+    uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_381);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+    uint64_t cgen_var_382;
+    stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_382, 1);
+    stream->write((uint64_t*)&cgen_var_382, 8);
+    uint64_t cgen_var_383;
+    stream->read((uint64_t*)&cgen_var_383, 8);
+    stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_383, (VkDescriptorSetLayout*)pSetLayout, 1);
     if (pSetLayout)
     {
         resources->createMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)pSetLayout, 1);
@@ -4549,6 +4959,8 @@
     pool->freeAll();
     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDescriptorSetLayout_VkResult_return;
 }
 
@@ -4581,13 +4993,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_318 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_318);
-        uint64_t cgen_var_319 = (uint64_t)local_descriptorSetLayout;
-        countingStream->putBe64(cgen_var_319);
+        uint64_t cgen_var_384;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
+        countingStream->write((uint64_t*)&cgen_var_384, 8);
+        uint64_t cgen_var_385;
+        countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_385, 1);
+        countingStream->write((uint64_t*)&cgen_var_385, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_320 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_320);
+        uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_386);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4598,13 +5012,15 @@
     uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
     stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
-    uint64_t cgen_var_321 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_321);
-    uint64_t cgen_var_322 = (uint64_t)local_descriptorSetLayout;
-    stream->putBe64(cgen_var_322);
+    uint64_t cgen_var_387;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_387, 1);
+    stream->write((uint64_t*)&cgen_var_387, 8);
+    uint64_t cgen_var_388;
+    stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_388, 1);
+    stream->write((uint64_t*)&cgen_var_388, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_323 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_323);
+    uint64_t cgen_var_389 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_389);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4651,38 +5067,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_324 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_324);
+        uint64_t cgen_var_390;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_390, 1);
+        countingStream->write((uint64_t*)&cgen_var_390, 8);
         marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_325 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_325);
+        uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_391);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+        uint64_t cgen_var_392;
+        countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_392, 1);
+        countingStream->write((uint64_t*)&cgen_var_392, 8);
     }
     uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
     stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
-    uint64_t cgen_var_326 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_326);
+    uint64_t cgen_var_393;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_393, 1);
+    stream->write((uint64_t*)&cgen_var_393, 8);
     marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_327 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_327);
+    uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_394);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+    uint64_t cgen_var_395;
+    stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_395, 1);
+    stream->write((uint64_t*)&cgen_var_395, 8);
+    uint64_t cgen_var_396;
+    stream->read((uint64_t*)&cgen_var_396, 8);
+    stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_396, (VkDescriptorPool*)pDescriptorPool, 1);
     if (pDescriptorPool)
     {
         resources->createMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)pDescriptorPool, 1);
@@ -4690,6 +5111,8 @@
     pool->freeAll();
     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDescriptorPool_VkResult_return;
 }
 
@@ -4722,13 +5145,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_328 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_328);
-        uint64_t cgen_var_329 = (uint64_t)local_descriptorPool;
-        countingStream->putBe64(cgen_var_329);
+        uint64_t cgen_var_397;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
+        countingStream->write((uint64_t*)&cgen_var_397, 8);
+        uint64_t cgen_var_398;
+        countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_398, 1);
+        countingStream->write((uint64_t*)&cgen_var_398, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_330 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_330);
+        uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_399);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4739,13 +5164,15 @@
     uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
     stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
-    uint64_t cgen_var_331 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_331);
-    uint64_t cgen_var_332 = (uint64_t)local_descriptorPool;
-    stream->putBe64(cgen_var_332);
+    uint64_t cgen_var_400;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_400, 1);
+    stream->write((uint64_t*)&cgen_var_400, 8);
+    uint64_t cgen_var_401;
+    stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_401, 1);
+    stream->write((uint64_t*)&cgen_var_401, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_333 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_333);
+    uint64_t cgen_var_402 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_402);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -4773,10 +5200,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_334 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_334);
-        uint64_t cgen_var_335 = (uint64_t)local_descriptorPool;
-        countingStream->putBe64(cgen_var_335);
+        uint64_t cgen_var_403;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_403, 1);
+        countingStream->write((uint64_t*)&cgen_var_403, 8);
+        uint64_t cgen_var_404;
+        countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_404, 1);
+        countingStream->write((uint64_t*)&cgen_var_404, 8);
         countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
     }
     uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -4784,14 +5213,18 @@
     uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
     stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
     stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
-    uint64_t cgen_var_336 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_336);
-    uint64_t cgen_var_337 = (uint64_t)local_descriptorPool;
-    stream->putBe64(cgen_var_337);
+    uint64_t cgen_var_405;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
+    stream->write((uint64_t*)&cgen_var_405, 8);
+    uint64_t cgen_var_406;
+    stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
+    stream->write((uint64_t*)&cgen_var_406, 8);
     stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
     pool->freeAll();
     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
     stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkResetDescriptorPool_VkResult_return;
 }
 
@@ -4820,24 +5253,41 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_338 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_338);
+        uint64_t cgen_var_407;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_407, 1);
+        countingStream->write((uint64_t*)&cgen_var_407, 8);
         marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+        if (pAllocateInfo->descriptorSetCount)
+        {
+            uint64_t* cgen_var_408;
+            countingStream->alloc((void**)&cgen_var_408, pAllocateInfo->descriptorSetCount * 8);
+            countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_408, pAllocateInfo->descriptorSetCount);
+            countingStream->write((uint64_t*)cgen_var_408, 8);
+        }
     }
     uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
     stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
     stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
-    uint64_t cgen_var_339 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_339);
+    uint64_t cgen_var_409;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_409, 1);
+    stream->write((uint64_t*)&cgen_var_409, 8);
     marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+    if (pAllocateInfo->descriptorSetCount)
+    {
+        uint64_t* cgen_var_410;
+        stream->alloc((void**)&cgen_var_410, pAllocateInfo->descriptorSetCount * 8);
+        stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_410, pAllocateInfo->descriptorSetCount);
+        stream->write((uint64_t*)cgen_var_410, 8);
+    }
+    if (pAllocateInfo->descriptorSetCount)
+    {
+        uint64_t* cgen_var_411;
+        stream->alloc((void**)&cgen_var_411, pAllocateInfo->descriptorSetCount * 8);
+        stream->read((uint64_t*)cgen_var_411, 8);
+        stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_411, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
+    }
     if (pDescriptorSets)
     {
         resources->createMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
@@ -4845,6 +5295,8 @@
     pool->freeAll();
     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
     stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAllocateDescriptorSets_VkResult_return;
 }
 
@@ -4878,18 +5330,25 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_340 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_340);
-        uint64_t cgen_var_341 = (uint64_t)local_descriptorPool;
-        countingStream->putBe64(cgen_var_341);
+        uint64_t cgen_var_412;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
+        countingStream->write((uint64_t*)&cgen_var_412, 8);
+        uint64_t cgen_var_413;
+        countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_413, 1);
+        countingStream->write((uint64_t*)&cgen_var_413, 8);
         countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
         // WARNING PTR CHECK
-        uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pDescriptorSets;
-        countingStream->putBe64(cgen_var_342);
+        uint64_t cgen_var_414 = (uint64_t)(uintptr_t)local_pDescriptorSets;
+        countingStream->putBe64(cgen_var_414);
         if (local_pDescriptorSets)
         {
-            // WARNING HANDLE TYPE POINTER
-            countingStream->write((VkDescriptorSet*)local_pDescriptorSets, ((descriptorSetCount)) * sizeof(VkDescriptorSet));
+            if (((descriptorSetCount)))
+            {
+                uint64_t* cgen_var_415;
+                countingStream->alloc((void**)&cgen_var_415, ((descriptorSetCount)) * 8);
+                countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_415, ((descriptorSetCount)));
+                countingStream->write((uint64_t*)cgen_var_415, 8);
+            }
         }
     }
     uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -4897,18 +5356,25 @@
     uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
     stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
     stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
-    uint64_t cgen_var_343 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_343);
-    uint64_t cgen_var_344 = (uint64_t)local_descriptorPool;
-    stream->putBe64(cgen_var_344);
+    uint64_t cgen_var_416;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_416, 1);
+    stream->write((uint64_t*)&cgen_var_416, 8);
+    uint64_t cgen_var_417;
+    stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_417, 1);
+    stream->write((uint64_t*)&cgen_var_417, 8);
     stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_345 = (uint64_t)(uintptr_t)local_pDescriptorSets;
-    stream->putBe64(cgen_var_345);
+    uint64_t cgen_var_418 = (uint64_t)(uintptr_t)local_pDescriptorSets;
+    stream->putBe64(cgen_var_418);
     if (local_pDescriptorSets)
     {
-        // WARNING HANDLE TYPE POINTER
-        stream->write((VkDescriptorSet*)local_pDescriptorSets, ((descriptorSetCount)) * sizeof(VkDescriptorSet));
+        if (((descriptorSetCount)))
+        {
+            uint64_t* cgen_var_419;
+            stream->alloc((void**)&cgen_var_419, ((descriptorSetCount)) * 8);
+            stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_419, ((descriptorSetCount)));
+            stream->write((uint64_t*)cgen_var_419, 8);
+        }
     }
     if (pDescriptorSets)
     {
@@ -4917,6 +5383,8 @@
     pool->freeAll();
     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
     stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkFreeDescriptorSets_VkResult_return;
 }
 
@@ -4974,8 +5442,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_346 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_346);
+        uint64_t cgen_var_420;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
+        countingStream->write((uint64_t*)&cgen_var_420, 8);
         countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
         {
@@ -4992,8 +5461,9 @@
     uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
     stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
     stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
-    uint64_t cgen_var_347 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_347);
+    uint64_t cgen_var_421;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
+    stream->write((uint64_t*)&cgen_var_421, 8);
     stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
     {
@@ -5045,38 +5515,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_348 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_348);
+        uint64_t cgen_var_422;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
+        countingStream->write((uint64_t*)&cgen_var_422, 8);
         marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_349 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_349);
+        uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_423);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+        uint64_t cgen_var_424;
+        countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_424, 1);
+        countingStream->write((uint64_t*)&cgen_var_424, 8);
     }
     uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
     stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
-    uint64_t cgen_var_350 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_350);
+    uint64_t cgen_var_425;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
+    stream->write((uint64_t*)&cgen_var_425, 8);
     marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_351 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_351);
+    uint64_t cgen_var_426 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_426);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+    uint64_t cgen_var_427;
+    stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_427, 1);
+    stream->write((uint64_t*)&cgen_var_427, 8);
+    uint64_t cgen_var_428;
+    stream->read((uint64_t*)&cgen_var_428, 8);
+    stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_428, (VkFramebuffer*)pFramebuffer, 1);
     if (pFramebuffer)
     {
         resources->createMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)pFramebuffer, 1);
@@ -5084,6 +5559,8 @@
     pool->freeAll();
     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
     stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateFramebuffer_VkResult_return;
 }
 
@@ -5116,13 +5593,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_352 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_352);
-        uint64_t cgen_var_353 = (uint64_t)local_framebuffer;
-        countingStream->putBe64(cgen_var_353);
+        uint64_t cgen_var_429;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
+        countingStream->write((uint64_t*)&cgen_var_429, 8);
+        uint64_t cgen_var_430;
+        countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_430, 1);
+        countingStream->write((uint64_t*)&cgen_var_430, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_354 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_354);
+        uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_431);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5133,13 +5612,15 @@
     uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
     stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
-    uint64_t cgen_var_355 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_355);
-    uint64_t cgen_var_356 = (uint64_t)local_framebuffer;
-    stream->putBe64(cgen_var_356);
+    uint64_t cgen_var_432;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_432, 1);
+    stream->write((uint64_t*)&cgen_var_432, 8);
+    uint64_t cgen_var_433;
+    stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_433, 1);
+    stream->write((uint64_t*)&cgen_var_433, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_357);
+    uint64_t cgen_var_434 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_434);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5186,38 +5667,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_358 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_358);
+        uint64_t cgen_var_435;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_435, 1);
+        countingStream->write((uint64_t*)&cgen_var_435, 8);
         marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_359 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_359);
+        uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_436);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+        uint64_t cgen_var_437;
+        countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_437, 1);
+        countingStream->write((uint64_t*)&cgen_var_437, 8);
     }
     uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
     stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
-    uint64_t cgen_var_360 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_360);
+    uint64_t cgen_var_438;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
+    stream->write((uint64_t*)&cgen_var_438, 8);
     marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_361 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_361);
+    uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_439);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    uint64_t cgen_var_440;
+    stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_440, 1);
+    stream->write((uint64_t*)&cgen_var_440, 8);
+    uint64_t cgen_var_441;
+    stream->read((uint64_t*)&cgen_var_441, 8);
+    stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_441, (VkRenderPass*)pRenderPass, 1);
     if (pRenderPass)
     {
         resources->createMapping()->mapHandles_VkRenderPass((VkRenderPass*)pRenderPass, 1);
@@ -5225,6 +5711,8 @@
     pool->freeAll();
     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
     stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateRenderPass_VkResult_return;
 }
 
@@ -5257,13 +5745,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_362 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_362);
-        uint64_t cgen_var_363 = (uint64_t)local_renderPass;
-        countingStream->putBe64(cgen_var_363);
+        uint64_t cgen_var_442;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
+        countingStream->write((uint64_t*)&cgen_var_442, 8);
+        uint64_t cgen_var_443;
+        countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_443, 1);
+        countingStream->write((uint64_t*)&cgen_var_443, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_364 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_364);
+        uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_444);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5274,13 +5764,15 @@
     uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
     stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
-    uint64_t cgen_var_365 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_365);
-    uint64_t cgen_var_366 = (uint64_t)local_renderPass;
-    stream->putBe64(cgen_var_366);
+    uint64_t cgen_var_445;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_445, 1);
+    stream->write((uint64_t*)&cgen_var_445, 8);
+    uint64_t cgen_var_446;
+    stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_446, 1);
+    stream->write((uint64_t*)&cgen_var_446, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_367 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_367);
+    uint64_t cgen_var_447 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_447);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5306,10 +5798,12 @@
     resources->unwrapMapping()->mapHandles_VkRenderPass((VkRenderPass*)&local_renderPass);
     countingStream->rewind();
     {
-        uint64_t cgen_var_368 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_368);
-        uint64_t cgen_var_369 = (uint64_t)local_renderPass;
-        countingStream->putBe64(cgen_var_369);
+        uint64_t cgen_var_448;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_448, 1);
+        countingStream->write((uint64_t*)&cgen_var_448, 8);
+        uint64_t cgen_var_449;
+        countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_449, 1);
+        countingStream->write((uint64_t*)&cgen_var_449, 8);
         marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
     }
     uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5317,10 +5811,12 @@
     uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
     stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
     stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
-    uint64_t cgen_var_370 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_370);
-    uint64_t cgen_var_371 = (uint64_t)local_renderPass;
-    stream->putBe64(cgen_var_371);
+    uint64_t cgen_var_450;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
+    stream->write((uint64_t*)&cgen_var_450, 8);
+    uint64_t cgen_var_451;
+    stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
+    stream->write((uint64_t*)&cgen_var_451, 8);
     marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
     unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
     pool->freeAll();
@@ -5364,38 +5860,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_372 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_372);
+        uint64_t cgen_var_452;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_452, 1);
+        countingStream->write((uint64_t*)&cgen_var_452, 8);
         marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_373);
+        uint64_t cgen_var_453 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_453);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+        uint64_t cgen_var_454;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_454, 1);
+        countingStream->write((uint64_t*)&cgen_var_454, 8);
     }
     uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
     stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
-    uint64_t cgen_var_374 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_374);
+    uint64_t cgen_var_455;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
+    stream->write((uint64_t*)&cgen_var_455, 8);
     marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_375 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_375);
+    uint64_t cgen_var_456 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_456);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+    uint64_t cgen_var_457;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_457, 1);
+    stream->write((uint64_t*)&cgen_var_457, 8);
+    uint64_t cgen_var_458;
+    stream->read((uint64_t*)&cgen_var_458, 8);
+    stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_458, (VkCommandPool*)pCommandPool, 1);
     if (pCommandPool)
     {
         resources->createMapping()->mapHandles_VkCommandPool((VkCommandPool*)pCommandPool, 1);
@@ -5403,6 +5904,8 @@
     pool->freeAll();
     VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
     stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateCommandPool_VkResult_return;
 }
 
@@ -5435,13 +5938,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_376 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_376);
-        uint64_t cgen_var_377 = (uint64_t)local_commandPool;
-        countingStream->putBe64(cgen_var_377);
+        uint64_t cgen_var_459;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_459, 1);
+        countingStream->write((uint64_t*)&cgen_var_459, 8);
+        uint64_t cgen_var_460;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_460, 1);
+        countingStream->write((uint64_t*)&cgen_var_460, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_378);
+        uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_461);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5452,13 +5957,15 @@
     uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
     stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
-    uint64_t cgen_var_379 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_379);
-    uint64_t cgen_var_380 = (uint64_t)local_commandPool;
-    stream->putBe64(cgen_var_380);
+    uint64_t cgen_var_462;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_462, 1);
+    stream->write((uint64_t*)&cgen_var_462, 8);
+    uint64_t cgen_var_463;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_463, 1);
+    stream->write((uint64_t*)&cgen_var_463, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_381);
+    uint64_t cgen_var_464 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_464);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -5486,10 +5993,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_382 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_382);
-        uint64_t cgen_var_383 = (uint64_t)local_commandPool;
-        countingStream->putBe64(cgen_var_383);
+        uint64_t cgen_var_465;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
+        countingStream->write((uint64_t*)&cgen_var_465, 8);
+        uint64_t cgen_var_466;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_466, 1);
+        countingStream->write((uint64_t*)&cgen_var_466, 8);
         countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
     }
     uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5497,14 +6006,18 @@
     uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
     stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
     stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
-    uint64_t cgen_var_384 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_384);
-    uint64_t cgen_var_385 = (uint64_t)local_commandPool;
-    stream->putBe64(cgen_var_385);
+    uint64_t cgen_var_467;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
+    stream->write((uint64_t*)&cgen_var_467, 8);
+    uint64_t cgen_var_468;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
+    stream->write((uint64_t*)&cgen_var_468, 8);
     stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
     pool->freeAll();
     VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
     stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkResetCommandPool_VkResult_return;
 }
 
@@ -5533,24 +6046,41 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_386 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_386);
+        uint64_t cgen_var_469;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_469, 1);
+        countingStream->write((uint64_t*)&cgen_var_469, 8);
         marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+        if (pAllocateInfo->commandBufferCount)
+        {
+            uint64_t* cgen_var_470;
+            countingStream->alloc((void**)&cgen_var_470, pAllocateInfo->commandBufferCount * 8);
+            countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_470, pAllocateInfo->commandBufferCount);
+            countingStream->write((uint64_t*)cgen_var_470, 8);
+        }
     }
     uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
     stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
     stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
-    uint64_t cgen_var_387 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_387);
+    uint64_t cgen_var_471;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_471, 1);
+    stream->write((uint64_t*)&cgen_var_471, 8);
     marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+    if (pAllocateInfo->commandBufferCount)
+    {
+        uint64_t* cgen_var_472;
+        stream->alloc((void**)&cgen_var_472, pAllocateInfo->commandBufferCount * 8);
+        stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_472, pAllocateInfo->commandBufferCount);
+        stream->write((uint64_t*)cgen_var_472, 8);
+    }
+    if (pAllocateInfo->commandBufferCount)
+    {
+        uint64_t* cgen_var_473;
+        stream->alloc((void**)&cgen_var_473, pAllocateInfo->commandBufferCount * 8);
+        stream->read((uint64_t*)cgen_var_473, 8);
+        stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_473, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
+    }
     if (pCommandBuffers)
     {
         resources->createMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
@@ -5558,6 +6088,8 @@
     pool->freeAll();
     VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
     stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAllocateCommandBuffers_VkResult_return;
 }
 
@@ -5591,18 +6123,25 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_388 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_388);
-        uint64_t cgen_var_389 = (uint64_t)local_commandPool;
-        countingStream->putBe64(cgen_var_389);
+        uint64_t cgen_var_474;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
+        countingStream->write((uint64_t*)&cgen_var_474, 8);
+        uint64_t cgen_var_475;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_475, 1);
+        countingStream->write((uint64_t*)&cgen_var_475, 8);
         countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
         // WARNING PTR CHECK
-        uint64_t cgen_var_390 = (uint64_t)(uintptr_t)local_pCommandBuffers;
-        countingStream->putBe64(cgen_var_390);
+        uint64_t cgen_var_476 = (uint64_t)(uintptr_t)local_pCommandBuffers;
+        countingStream->putBe64(cgen_var_476);
         if (local_pCommandBuffers)
         {
-            // WARNING HANDLE TYPE POINTER
-            countingStream->write((VkCommandBuffer*)local_pCommandBuffers, ((commandBufferCount)) * sizeof(VkCommandBuffer));
+            if (((commandBufferCount)))
+            {
+                uint64_t* cgen_var_477;
+                countingStream->alloc((void**)&cgen_var_477, ((commandBufferCount)) * 8);
+                countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_477, ((commandBufferCount)));
+                countingStream->write((uint64_t*)cgen_var_477, 8);
+            }
         }
     }
     uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5610,18 +6149,25 @@
     uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
     stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
     stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
-    uint64_t cgen_var_391 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_391);
-    uint64_t cgen_var_392 = (uint64_t)local_commandPool;
-    stream->putBe64(cgen_var_392);
+    uint64_t cgen_var_478;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_478, 1);
+    stream->write((uint64_t*)&cgen_var_478, 8);
+    uint64_t cgen_var_479;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_479, 1);
+    stream->write((uint64_t*)&cgen_var_479, 8);
     stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_393 = (uint64_t)(uintptr_t)local_pCommandBuffers;
-    stream->putBe64(cgen_var_393);
+    uint64_t cgen_var_480 = (uint64_t)(uintptr_t)local_pCommandBuffers;
+    stream->putBe64(cgen_var_480);
     if (local_pCommandBuffers)
     {
-        // WARNING HANDLE TYPE POINTER
-        stream->write((VkCommandBuffer*)local_pCommandBuffers, ((commandBufferCount)) * sizeof(VkCommandBuffer));
+        if (((commandBufferCount)))
+        {
+            uint64_t* cgen_var_481;
+            stream->alloc((void**)&cgen_var_481, ((commandBufferCount)) * 8);
+            stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_481, ((commandBufferCount)));
+            stream->write((uint64_t*)cgen_var_481, 8);
+        }
     }
     if (pCommandBuffers)
     {
@@ -5654,8 +6200,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_394 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_394);
+        uint64_t cgen_var_482;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_482, 1);
+        countingStream->write((uint64_t*)&cgen_var_482, 8);
         marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
     }
     uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5663,12 +6210,15 @@
     uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
     stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_395 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_395);
+    uint64_t cgen_var_483;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_483, 1);
+    stream->write((uint64_t*)&cgen_var_483, 8);
     marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
     pool->freeAll();
     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
     stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBeginCommandBuffer_VkResult_return;
 }
 
@@ -5684,19 +6234,23 @@
     resources->unwrapMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)&local_commandBuffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_396 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_396);
+        uint64_t cgen_var_484;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_484, 1);
+        countingStream->write((uint64_t*)&cgen_var_484, 8);
     }
     uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
     stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_397 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_397);
+    uint64_t cgen_var_485;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_485, 1);
+    stream->write((uint64_t*)&cgen_var_485, 8);
     pool->freeAll();
     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
     stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEndCommandBuffer_VkResult_return;
 }
 
@@ -5715,8 +6269,9 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_398 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_398);
+        uint64_t cgen_var_486;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_486, 1);
+        countingStream->write((uint64_t*)&cgen_var_486, 8);
         countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
     }
     uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5724,12 +6279,15 @@
     uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
     stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_399 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_399);
+    uint64_t cgen_var_487;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
+    stream->write((uint64_t*)&cgen_var_487, 8);
     stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
     pool->freeAll();
     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
     stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkResetCommandBuffer_VkResult_return;
 }
 
@@ -5752,22 +6310,26 @@
     resources->unwrapMapping()->mapHandles_VkPipeline((VkPipeline*)&local_pipeline);
     countingStream->rewind();
     {
-        uint64_t cgen_var_400 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_400);
+        uint64_t cgen_var_488;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
+        countingStream->write((uint64_t*)&cgen_var_488, 8);
         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-        uint64_t cgen_var_401 = (uint64_t)local_pipeline;
-        countingStream->putBe64(cgen_var_401);
+        uint64_t cgen_var_489;
+        countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_489, 1);
+        countingStream->write((uint64_t*)&cgen_var_489, 8);
     }
     uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
     stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
-    uint64_t cgen_var_402 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_402);
+    uint64_t cgen_var_490;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
+    stream->write((uint64_t*)&cgen_var_490, 8);
     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    uint64_t cgen_var_403 = (uint64_t)local_pipeline;
-    stream->putBe64(cgen_var_403);
+    uint64_t cgen_var_491;
+    stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_491, 1);
+    stream->write((uint64_t*)&cgen_var_491, 8);
     pool->freeAll();
 }
 
@@ -5807,8 +6369,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_404 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_404);
+        uint64_t cgen_var_492;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
+        countingStream->write((uint64_t*)&cgen_var_492, 8);
         countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
@@ -5821,8 +6384,9 @@
     uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
     stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
-    uint64_t cgen_var_405 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_405);
+    uint64_t cgen_var_493;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
+    stream->write((uint64_t*)&cgen_var_493, 8);
     stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
     stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
@@ -5868,8 +6432,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_406 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_406);
+        uint64_t cgen_var_494;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_494, 1);
+        countingStream->write((uint64_t*)&cgen_var_494, 8);
         countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
@@ -5882,8 +6447,9 @@
     uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
     stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
-    uint64_t cgen_var_407 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_407);
+    uint64_t cgen_var_495;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
+    stream->write((uint64_t*)&cgen_var_495, 8);
     stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
     stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
@@ -5908,8 +6474,9 @@
     local_lineWidth = lineWidth;
     countingStream->rewind();
     {
-        uint64_t cgen_var_408 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_408);
+        uint64_t cgen_var_496;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
+        countingStream->write((uint64_t*)&cgen_var_496, 8);
         countingStream->write((float*)&local_lineWidth, sizeof(float));
     }
     uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5917,8 +6484,9 @@
     uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
     stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
-    uint64_t cgen_var_409 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_409);
+    uint64_t cgen_var_497;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
+    stream->write((uint64_t*)&cgen_var_497, 8);
     stream->write((float*)&local_lineWidth, sizeof(float));
     pool->freeAll();
 }
@@ -5944,8 +6512,9 @@
     local_depthBiasSlopeFactor = depthBiasSlopeFactor;
     countingStream->rewind();
     {
-        uint64_t cgen_var_410 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_410);
+        uint64_t cgen_var_498;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
+        countingStream->write((uint64_t*)&cgen_var_498, 8);
         countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
         countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
         countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
@@ -5955,8 +6524,9 @@
     uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
     stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
-    uint64_t cgen_var_411 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_411);
+    uint64_t cgen_var_499;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
+    stream->write((uint64_t*)&cgen_var_499, 8);
     stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
     stream->write((float*)&local_depthBiasClamp, sizeof(float));
     stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
@@ -5978,8 +6548,9 @@
     memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
     countingStream->rewind();
     {
-        uint64_t cgen_var_412 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_412);
+        uint64_t cgen_var_500;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
+        countingStream->write((uint64_t*)&cgen_var_500, 8);
         countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
     }
     uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -5987,8 +6558,9 @@
     uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
     stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
-    uint64_t cgen_var_413 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_413);
+    uint64_t cgen_var_501;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
+    stream->write((uint64_t*)&cgen_var_501, 8);
     stream->write((float*)&local_blendConstants, 4 * sizeof(float));
     pool->freeAll();
 }
@@ -6011,8 +6583,9 @@
     local_maxDepthBounds = maxDepthBounds;
     countingStream->rewind();
     {
-        uint64_t cgen_var_414 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_414);
+        uint64_t cgen_var_502;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
+        countingStream->write((uint64_t*)&cgen_var_502, 8);
         countingStream->write((float*)&local_minDepthBounds, sizeof(float));
         countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
     }
@@ -6021,8 +6594,9 @@
     uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
     stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
-    uint64_t cgen_var_415 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_415);
+    uint64_t cgen_var_503;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
+    stream->write((uint64_t*)&cgen_var_503, 8);
     stream->write((float*)&local_minDepthBounds, sizeof(float));
     stream->write((float*)&local_maxDepthBounds, sizeof(float));
     pool->freeAll();
@@ -6046,8 +6620,9 @@
     local_compareMask = compareMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_416 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_416);
+        uint64_t cgen_var_504;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
+        countingStream->write((uint64_t*)&cgen_var_504, 8);
         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
         countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
     }
@@ -6056,8 +6631,9 @@
     uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
     stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
-    uint64_t cgen_var_417 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_417);
+    uint64_t cgen_var_505;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
+    stream->write((uint64_t*)&cgen_var_505, 8);
     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
     stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
     pool->freeAll();
@@ -6081,8 +6657,9 @@
     local_writeMask = writeMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_418 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_418);
+        uint64_t cgen_var_506;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
+        countingStream->write((uint64_t*)&cgen_var_506, 8);
         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
         countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
     }
@@ -6091,8 +6668,9 @@
     uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
     stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
-    uint64_t cgen_var_419 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_419);
+    uint64_t cgen_var_507;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
+    stream->write((uint64_t*)&cgen_var_507, 8);
     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
     stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
     pool->freeAll();
@@ -6116,8 +6694,9 @@
     local_reference = reference;
     countingStream->rewind();
     {
-        uint64_t cgen_var_420 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_420);
+        uint64_t cgen_var_508;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
+        countingStream->write((uint64_t*)&cgen_var_508, 8);
         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
         countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
     }
@@ -6126,8 +6705,9 @@
     uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
     stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
-    uint64_t cgen_var_421 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_421);
+    uint64_t cgen_var_509;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
+    stream->write((uint64_t*)&cgen_var_509, 8);
     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
     stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
     pool->freeAll();
@@ -6179,15 +6759,22 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_422 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_422);
+        uint64_t cgen_var_510;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
+        countingStream->write((uint64_t*)&cgen_var_510, 8);
         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-        uint64_t cgen_var_423 = (uint64_t)local_layout;
-        countingStream->putBe64(cgen_var_423);
+        uint64_t cgen_var_511;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_511, 1);
+        countingStream->write((uint64_t*)&cgen_var_511, 8);
         countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorSet*)local_pDescriptorSets, ((descriptorSetCount)) * sizeof(VkDescriptorSet));
+        if (((descriptorSetCount)))
+        {
+            uint64_t* cgen_var_512;
+            countingStream->alloc((void**)&cgen_var_512, ((descriptorSetCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_512, ((descriptorSetCount)));
+            countingStream->write((uint64_t*)cgen_var_512, 8);
+        }
         countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
     }
@@ -6196,15 +6783,22 @@
     uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
     stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
-    uint64_t cgen_var_424 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_424);
+    uint64_t cgen_var_513;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
+    stream->write((uint64_t*)&cgen_var_513, 8);
     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    uint64_t cgen_var_425 = (uint64_t)local_layout;
-    stream->putBe64(cgen_var_425);
+    uint64_t cgen_var_514;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_514, 1);
+    stream->write((uint64_t*)&cgen_var_514, 8);
     stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
     stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorSet*)local_pDescriptorSets, ((descriptorSetCount)) * sizeof(VkDescriptorSet));
+    if (((descriptorSetCount)))
+    {
+        uint64_t* cgen_var_515;
+        stream->alloc((void**)&cgen_var_515, ((descriptorSetCount)) * 8);
+        stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_515, ((descriptorSetCount)));
+        stream->write((uint64_t*)cgen_var_515, 8);
+    }
     stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
     stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
     pool->freeAll();
@@ -6232,10 +6826,12 @@
     local_indexType = indexType;
     countingStream->rewind();
     {
-        uint64_t cgen_var_426 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_426);
-        uint64_t cgen_var_427 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_427);
+        uint64_t cgen_var_516;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
+        countingStream->write((uint64_t*)&cgen_var_516, 8);
+        uint64_t cgen_var_517;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_517, 1);
+        countingStream->write((uint64_t*)&cgen_var_517, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
         countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
     }
@@ -6244,10 +6840,12 @@
     uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
     stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_428 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_428);
-    uint64_t cgen_var_429 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_429);
+    uint64_t cgen_var_518;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
+    stream->write((uint64_t*)&cgen_var_518, 8);
+    uint64_t cgen_var_519;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_519, 1);
+    stream->write((uint64_t*)&cgen_var_519, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
     stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
     pool->freeAll();
@@ -6289,12 +6887,18 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_430 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_430);
+        uint64_t cgen_var_520;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
+        countingStream->write((uint64_t*)&cgen_var_520, 8);
         countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkBuffer*)local_pBuffers, ((bindingCount)) * sizeof(VkBuffer));
+        if (((bindingCount)))
+        {
+            uint64_t* cgen_var_521;
+            countingStream->alloc((void**)&cgen_var_521, ((bindingCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_521, ((bindingCount)));
+            countingStream->write((uint64_t*)cgen_var_521, 8);
+        }
         countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
     }
     uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -6302,12 +6906,18 @@
     uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
     stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
-    uint64_t cgen_var_431 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_431);
+    uint64_t cgen_var_522;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
+    stream->write((uint64_t*)&cgen_var_522, 8);
     stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
     stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkBuffer*)local_pBuffers, ((bindingCount)) * sizeof(VkBuffer));
+    if (((bindingCount)))
+    {
+        uint64_t* cgen_var_523;
+        stream->alloc((void**)&cgen_var_523, ((bindingCount)) * 8);
+        stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_523, ((bindingCount)));
+        stream->write((uint64_t*)cgen_var_523, 8);
+    }
     stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
     pool->freeAll();
 }
@@ -6336,8 +6946,9 @@
     local_firstInstance = firstInstance;
     countingStream->rewind();
     {
-        uint64_t cgen_var_432 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_432);
+        uint64_t cgen_var_524;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_524, 1);
+        countingStream->write((uint64_t*)&cgen_var_524, 8);
         countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
@@ -6348,8 +6959,9 @@
     uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
     stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
-    uint64_t cgen_var_433 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_433);
+    uint64_t cgen_var_525;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
+    stream->write((uint64_t*)&cgen_var_525, 8);
     stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
@@ -6384,8 +6996,9 @@
     local_firstInstance = firstInstance;
     countingStream->rewind();
     {
-        uint64_t cgen_var_434 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_434);
+        uint64_t cgen_var_526;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
+        countingStream->write((uint64_t*)&cgen_var_526, 8);
         countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
@@ -6397,8 +7010,9 @@
     uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
     stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
-    uint64_t cgen_var_435 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_435);
+    uint64_t cgen_var_527;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
+    stream->write((uint64_t*)&cgen_var_527, 8);
     stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
@@ -6432,10 +7046,12 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_436 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_436);
-        uint64_t cgen_var_437 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_437);
+        uint64_t cgen_var_528;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_528, 1);
+        countingStream->write((uint64_t*)&cgen_var_528, 8);
+        uint64_t cgen_var_529;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_529, 1);
+        countingStream->write((uint64_t*)&cgen_var_529, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -6445,10 +7061,12 @@
     uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
     stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
-    uint64_t cgen_var_438 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_438);
-    uint64_t cgen_var_439 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_439);
+    uint64_t cgen_var_530;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
+    stream->write((uint64_t*)&cgen_var_530, 8);
+    uint64_t cgen_var_531;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_531, 1);
+    stream->write((uint64_t*)&cgen_var_531, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -6480,10 +7098,12 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_440 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_440);
-        uint64_t cgen_var_441 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_441);
+        uint64_t cgen_var_532;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
+        countingStream->write((uint64_t*)&cgen_var_532, 8);
+        uint64_t cgen_var_533;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_533, 1);
+        countingStream->write((uint64_t*)&cgen_var_533, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -6493,10 +7113,12 @@
     uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
     stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
-    uint64_t cgen_var_442 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_442);
-    uint64_t cgen_var_443 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_443);
+    uint64_t cgen_var_534;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_534, 1);
+    stream->write((uint64_t*)&cgen_var_534, 8);
+    uint64_t cgen_var_535;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_535, 1);
+    stream->write((uint64_t*)&cgen_var_535, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -6524,8 +7146,9 @@
     local_groupCountZ = groupCountZ;
     countingStream->rewind();
     {
-        uint64_t cgen_var_444 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_444);
+        uint64_t cgen_var_536;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_536, 1);
+        countingStream->write((uint64_t*)&cgen_var_536, 8);
         countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
@@ -6535,8 +7158,9 @@
     uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
     stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
-    uint64_t cgen_var_445 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_445);
+    uint64_t cgen_var_537;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
+    stream->write((uint64_t*)&cgen_var_537, 8);
     stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
     stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
     stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
@@ -6562,10 +7186,12 @@
     local_offset = offset;
     countingStream->rewind();
     {
-        uint64_t cgen_var_446 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_446);
-        uint64_t cgen_var_447 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_447);
+        uint64_t cgen_var_538;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
+        countingStream->write((uint64_t*)&cgen_var_538, 8);
+        uint64_t cgen_var_539;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_539, 1);
+        countingStream->write((uint64_t*)&cgen_var_539, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
     }
     uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -6573,10 +7199,12 @@
     uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
     stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
-    uint64_t cgen_var_448 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_448);
-    uint64_t cgen_var_449 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_449);
+    uint64_t cgen_var_540;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
+    stream->write((uint64_t*)&cgen_var_540, 8);
+    uint64_t cgen_var_541;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_541, 1);
+    stream->write((uint64_t*)&cgen_var_541, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
     pool->freeAll();
 }
@@ -6622,12 +7250,15 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_450 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_450);
-        uint64_t cgen_var_451 = (uint64_t)local_srcBuffer;
-        countingStream->putBe64(cgen_var_451);
-        uint64_t cgen_var_452 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_452);
+        uint64_t cgen_var_542;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
+        countingStream->write((uint64_t*)&cgen_var_542, 8);
+        uint64_t cgen_var_543;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_543, 1);
+        countingStream->write((uint64_t*)&cgen_var_543, 8);
+        uint64_t cgen_var_544;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_544, 1);
+        countingStream->write((uint64_t*)&cgen_var_544, 8);
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
         {
@@ -6639,12 +7270,15 @@
     uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
     stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_453 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_453);
-    uint64_t cgen_var_454 = (uint64_t)local_srcBuffer;
-    stream->putBe64(cgen_var_454);
-    uint64_t cgen_var_455 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_455);
+    uint64_t cgen_var_545;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
+    stream->write((uint64_t*)&cgen_var_545, 8);
+    uint64_t cgen_var_546;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_546, 1);
+    stream->write((uint64_t*)&cgen_var_546, 8);
+    uint64_t cgen_var_547;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_547, 1);
+    stream->write((uint64_t*)&cgen_var_547, 8);
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
     {
@@ -6700,13 +7334,16 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_456 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_456);
-        uint64_t cgen_var_457 = (uint64_t)local_srcImage;
-        countingStream->putBe64(cgen_var_457);
+        uint64_t cgen_var_548;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_548, 1);
+        countingStream->write((uint64_t*)&cgen_var_548, 8);
+        uint64_t cgen_var_549;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_549, 1);
+        countingStream->write((uint64_t*)&cgen_var_549, 8);
         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-        uint64_t cgen_var_458 = (uint64_t)local_dstImage;
-        countingStream->putBe64(cgen_var_458);
+        uint64_t cgen_var_550;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_550, 1);
+        countingStream->write((uint64_t*)&cgen_var_550, 8);
         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6719,13 +7356,16 @@
     uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
     stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
-    uint64_t cgen_var_459 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_459);
-    uint64_t cgen_var_460 = (uint64_t)local_srcImage;
-    stream->putBe64(cgen_var_460);
+    uint64_t cgen_var_551;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
+    stream->write((uint64_t*)&cgen_var_551, 8);
+    uint64_t cgen_var_552;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_552, 1);
+    stream->write((uint64_t*)&cgen_var_552, 8);
     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-    uint64_t cgen_var_461 = (uint64_t)local_dstImage;
-    stream->putBe64(cgen_var_461);
+    uint64_t cgen_var_553;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_553, 1);
+    stream->write((uint64_t*)&cgen_var_553, 8);
     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6785,13 +7425,16 @@
     local_filter = filter;
     countingStream->rewind();
     {
-        uint64_t cgen_var_462 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_462);
-        uint64_t cgen_var_463 = (uint64_t)local_srcImage;
-        countingStream->putBe64(cgen_var_463);
+        uint64_t cgen_var_554;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_554, 1);
+        countingStream->write((uint64_t*)&cgen_var_554, 8);
+        uint64_t cgen_var_555;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_555, 1);
+        countingStream->write((uint64_t*)&cgen_var_555, 8);
         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-        uint64_t cgen_var_464 = (uint64_t)local_dstImage;
-        countingStream->putBe64(cgen_var_464);
+        uint64_t cgen_var_556;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_556, 1);
+        countingStream->write((uint64_t*)&cgen_var_556, 8);
         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6805,13 +7448,16 @@
     uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
     stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
-    uint64_t cgen_var_465 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_465);
-    uint64_t cgen_var_466 = (uint64_t)local_srcImage;
-    stream->putBe64(cgen_var_466);
+    uint64_t cgen_var_557;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_557, 1);
+    stream->write((uint64_t*)&cgen_var_557, 8);
+    uint64_t cgen_var_558;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_558, 1);
+    stream->write((uint64_t*)&cgen_var_558, 8);
     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-    uint64_t cgen_var_467 = (uint64_t)local_dstImage;
-    stream->putBe64(cgen_var_467);
+    uint64_t cgen_var_559;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_559, 1);
+    stream->write((uint64_t*)&cgen_var_559, 8);
     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6866,12 +7512,15 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_468 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_468);
-        uint64_t cgen_var_469 = (uint64_t)local_srcBuffer;
-        countingStream->putBe64(cgen_var_469);
-        uint64_t cgen_var_470 = (uint64_t)local_dstImage;
-        countingStream->putBe64(cgen_var_470);
+        uint64_t cgen_var_560;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_560, 1);
+        countingStream->write((uint64_t*)&cgen_var_560, 8);
+        uint64_t cgen_var_561;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_561, 1);
+        countingStream->write((uint64_t*)&cgen_var_561, 8);
+        uint64_t cgen_var_562;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_562, 1);
+        countingStream->write((uint64_t*)&cgen_var_562, 8);
         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6884,12 +7533,15 @@
     uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
     stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
-    uint64_t cgen_var_471 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_471);
-    uint64_t cgen_var_472 = (uint64_t)local_srcBuffer;
-    stream->putBe64(cgen_var_472);
-    uint64_t cgen_var_473 = (uint64_t)local_dstImage;
-    stream->putBe64(cgen_var_473);
+    uint64_t cgen_var_563;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_563, 1);
+    stream->write((uint64_t*)&cgen_var_563, 8);
+    uint64_t cgen_var_564;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_564, 1);
+    stream->write((uint64_t*)&cgen_var_564, 8);
+    uint64_t cgen_var_565;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_565, 1);
+    stream->write((uint64_t*)&cgen_var_565, 8);
     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -6943,13 +7595,16 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_474 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_474);
-        uint64_t cgen_var_475 = (uint64_t)local_srcImage;
-        countingStream->putBe64(cgen_var_475);
+        uint64_t cgen_var_566;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_566, 1);
+        countingStream->write((uint64_t*)&cgen_var_566, 8);
+        uint64_t cgen_var_567;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_567, 1);
+        countingStream->write((uint64_t*)&cgen_var_567, 8);
         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-        uint64_t cgen_var_476 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_476);
+        uint64_t cgen_var_568;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_568, 1);
+        countingStream->write((uint64_t*)&cgen_var_568, 8);
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
         {
@@ -6961,13 +7616,16 @@
     uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
     stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_477 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_477);
-    uint64_t cgen_var_478 = (uint64_t)local_srcImage;
-    stream->putBe64(cgen_var_478);
+    uint64_t cgen_var_569;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_569, 1);
+    stream->write((uint64_t*)&cgen_var_569, 8);
+    uint64_t cgen_var_570;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_570, 1);
+    stream->write((uint64_t*)&cgen_var_570, 8);
     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-    uint64_t cgen_var_479 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_479);
+    uint64_t cgen_var_571;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_571, 1);
+    stream->write((uint64_t*)&cgen_var_571, 8);
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
     {
@@ -7005,10 +7663,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_480 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_480);
-        uint64_t cgen_var_481 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_481);
+        uint64_t cgen_var_572;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_572, 1);
+        countingStream->write((uint64_t*)&cgen_var_572, 8);
+        uint64_t cgen_var_573;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
+        countingStream->write((uint64_t*)&cgen_var_573, 8);
         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
         countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
         countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
@@ -7018,10 +7678,12 @@
     uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
     stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_482 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_482);
-    uint64_t cgen_var_483 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_483);
+    uint64_t cgen_var_574;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
+    stream->write((uint64_t*)&cgen_var_574, 8);
+    uint64_t cgen_var_575;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_575, 1);
+    stream->write((uint64_t*)&cgen_var_575, 8);
     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
     stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
     stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
@@ -7053,10 +7715,12 @@
     local_data = data;
     countingStream->rewind();
     {
-        uint64_t cgen_var_484 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_484);
-        uint64_t cgen_var_485 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_485);
+        uint64_t cgen_var_576;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
+        countingStream->write((uint64_t*)&cgen_var_576, 8);
+        uint64_t cgen_var_577;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_577, 1);
+        countingStream->write((uint64_t*)&cgen_var_577, 8);
         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
         countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
@@ -7066,10 +7730,12 @@
     uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
     stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
-    uint64_t cgen_var_486 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_486);
-    uint64_t cgen_var_487 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_487);
+    uint64_t cgen_var_578;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_578, 1);
+    stream->write((uint64_t*)&cgen_var_578, 8);
+    uint64_t cgen_var_579;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_579, 1);
+    stream->write((uint64_t*)&cgen_var_579, 8);
     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
     stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_data, sizeof(uint32_t));
@@ -7128,10 +7794,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_488 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_488);
-        uint64_t cgen_var_489 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_489);
+        uint64_t cgen_var_580;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_580, 1);
+        countingStream->write((uint64_t*)&cgen_var_580, 8);
+        uint64_t cgen_var_581;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_581, 1);
+        countingStream->write((uint64_t*)&cgen_var_581, 8);
         countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
         marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
         countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
@@ -7145,10 +7813,12 @@
     uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
     stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
-    uint64_t cgen_var_490 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_490);
-    uint64_t cgen_var_491 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_491);
+    uint64_t cgen_var_582;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
+    stream->write((uint64_t*)&cgen_var_582, 8);
+    uint64_t cgen_var_583;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_583, 1);
+    stream->write((uint64_t*)&cgen_var_583, 8);
     stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
     marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
     stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
@@ -7211,10 +7881,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_492 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_492);
-        uint64_t cgen_var_493 = (uint64_t)local_image;
-        countingStream->putBe64(cgen_var_493);
+        uint64_t cgen_var_584;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_584, 1);
+        countingStream->write((uint64_t*)&cgen_var_584, 8);
+        uint64_t cgen_var_585;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_585, 1);
+        countingStream->write((uint64_t*)&cgen_var_585, 8);
         countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
         marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
         countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
@@ -7228,10 +7900,12 @@
     uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
     stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
-    uint64_t cgen_var_494 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_494);
-    uint64_t cgen_var_495 = (uint64_t)local_image;
-    stream->putBe64(cgen_var_495);
+    uint64_t cgen_var_586;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_586, 1);
+    stream->write((uint64_t*)&cgen_var_586, 8);
+    uint64_t cgen_var_587;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_587, 1);
+    stream->write((uint64_t*)&cgen_var_587, 8);
     stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
     marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
     stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
@@ -7296,8 +7970,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_496 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_496);
+        uint64_t cgen_var_588;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_588, 1);
+        countingStream->write((uint64_t*)&cgen_var_588, 8);
         countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
         {
@@ -7314,8 +7989,9 @@
     uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
     stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
-    uint64_t cgen_var_497 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_497);
+    uint64_t cgen_var_589;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
+    stream->write((uint64_t*)&cgen_var_589, 8);
     stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
     {
@@ -7376,13 +8052,16 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_498 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_498);
-        uint64_t cgen_var_499 = (uint64_t)local_srcImage;
-        countingStream->putBe64(cgen_var_499);
+        uint64_t cgen_var_590;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_590, 1);
+        countingStream->write((uint64_t*)&cgen_var_590, 8);
+        uint64_t cgen_var_591;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_591, 1);
+        countingStream->write((uint64_t*)&cgen_var_591, 8);
         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-        uint64_t cgen_var_500 = (uint64_t)local_dstImage;
-        countingStream->putBe64(cgen_var_500);
+        uint64_t cgen_var_592;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_592, 1);
+        countingStream->write((uint64_t*)&cgen_var_592, 8);
         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -7395,13 +8074,16 @@
     uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
     stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
-    uint64_t cgen_var_501 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_501);
-    uint64_t cgen_var_502 = (uint64_t)local_srcImage;
-    stream->putBe64(cgen_var_502);
+    uint64_t cgen_var_593;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
+    stream->write((uint64_t*)&cgen_var_593, 8);
+    uint64_t cgen_var_594;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_594, 1);
+    stream->write((uint64_t*)&cgen_var_594, 8);
     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
-    uint64_t cgen_var_503 = (uint64_t)local_dstImage;
-    stream->putBe64(cgen_var_503);
+    uint64_t cgen_var_595;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_595, 1);
+    stream->write((uint64_t*)&cgen_var_595, 8);
     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
@@ -7430,10 +8112,12 @@
     local_stageMask = stageMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_504 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_504);
-        uint64_t cgen_var_505 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_505);
+        uint64_t cgen_var_596;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_596, 1);
+        countingStream->write((uint64_t*)&cgen_var_596, 8);
+        uint64_t cgen_var_597;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_597, 1);
+        countingStream->write((uint64_t*)&cgen_var_597, 8);
         countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
     }
     uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -7441,10 +8125,12 @@
     uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
     stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
-    uint64_t cgen_var_506 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_506);
-    uint64_t cgen_var_507 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_507);
+    uint64_t cgen_var_598;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
+    stream->write((uint64_t*)&cgen_var_598, 8);
+    uint64_t cgen_var_599;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_599, 1);
+    stream->write((uint64_t*)&cgen_var_599, 8);
     stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
     pool->freeAll();
 }
@@ -7468,10 +8154,12 @@
     local_stageMask = stageMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_508 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_508);
-        uint64_t cgen_var_509 = (uint64_t)local_event;
-        countingStream->putBe64(cgen_var_509);
+        uint64_t cgen_var_600;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_600, 1);
+        countingStream->write((uint64_t*)&cgen_var_600, 8);
+        uint64_t cgen_var_601;
+        countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_601, 1);
+        countingStream->write((uint64_t*)&cgen_var_601, 8);
         countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
     }
     uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -7479,10 +8167,12 @@
     uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
     stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
-    uint64_t cgen_var_510 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_510);
-    uint64_t cgen_var_511 = (uint64_t)local_event;
-    stream->putBe64(cgen_var_511);
+    uint64_t cgen_var_602;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
+    stream->write((uint64_t*)&cgen_var_602, 8);
+    uint64_t cgen_var_603;
+    stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_603, 1);
+    stream->write((uint64_t*)&cgen_var_603, 8);
     stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
     pool->freeAll();
 }
@@ -7582,11 +8272,17 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_512 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_512);
+        uint64_t cgen_var_604;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_604, 1);
+        countingStream->write((uint64_t*)&cgen_var_604, 8);
         countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkEvent*)local_pEvents, ((eventCount)) * sizeof(VkEvent));
+        if (((eventCount)))
+        {
+            uint64_t* cgen_var_605;
+            countingStream->alloc((void**)&cgen_var_605, ((eventCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_605, ((eventCount)));
+            countingStream->write((uint64_t*)cgen_var_605, 8);
+        }
         countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
         countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
         countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
@@ -7610,11 +8306,17 @@
     uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
     stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
-    uint64_t cgen_var_513 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_513);
+    uint64_t cgen_var_606;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
+    stream->write((uint64_t*)&cgen_var_606, 8);
     stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkEvent*)local_pEvents, ((eventCount)) * sizeof(VkEvent));
+    if (((eventCount)))
+    {
+        uint64_t* cgen_var_607;
+        stream->alloc((void**)&cgen_var_607, ((eventCount)) * 8);
+        stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_607, ((eventCount)));
+        stream->write((uint64_t*)cgen_var_607, 8);
+    }
     stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
     stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
     stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
@@ -7719,8 +8421,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_514 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_514);
+        uint64_t cgen_var_608;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_608, 1);
+        countingStream->write((uint64_t*)&cgen_var_608, 8);
         countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
         countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
         countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
@@ -7745,8 +8448,9 @@
     uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
     stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
-    uint64_t cgen_var_515 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_515);
+    uint64_t cgen_var_609;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
+    stream->write((uint64_t*)&cgen_var_609, 8);
     stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
     stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
     stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
@@ -7790,10 +8494,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_516 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_516);
-        uint64_t cgen_var_517 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_517);
+        uint64_t cgen_var_610;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_610, 1);
+        countingStream->write((uint64_t*)&cgen_var_610, 8);
+        uint64_t cgen_var_611;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_611, 1);
+        countingStream->write((uint64_t*)&cgen_var_611, 8);
         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
         countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
     }
@@ -7802,10 +8508,12 @@
     uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
     stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
-    uint64_t cgen_var_518 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_518);
-    uint64_t cgen_var_519 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_519);
+    uint64_t cgen_var_612;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_612, 1);
+    stream->write((uint64_t*)&cgen_var_612, 8);
+    uint64_t cgen_var_613;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_613, 1);
+    stream->write((uint64_t*)&cgen_var_613, 8);
     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
     stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
     pool->freeAll();
@@ -7830,10 +8538,12 @@
     local_query = query;
     countingStream->rewind();
     {
-        uint64_t cgen_var_520 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_520);
-        uint64_t cgen_var_521 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_521);
+        uint64_t cgen_var_614;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
+        countingStream->write((uint64_t*)&cgen_var_614, 8);
+        uint64_t cgen_var_615;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_615, 1);
+        countingStream->write((uint64_t*)&cgen_var_615, 8);
         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
     }
     uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -7841,10 +8551,12 @@
     uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
     stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
-    uint64_t cgen_var_522 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_522);
-    uint64_t cgen_var_523 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_523);
+    uint64_t cgen_var_616;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_616, 1);
+    stream->write((uint64_t*)&cgen_var_616, 8);
+    uint64_t cgen_var_617;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_617, 1);
+    stream->write((uint64_t*)&cgen_var_617, 8);
     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
     pool->freeAll();
 }
@@ -7871,10 +8583,12 @@
     local_queryCount = queryCount;
     countingStream->rewind();
     {
-        uint64_t cgen_var_524 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_524);
-        uint64_t cgen_var_525 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_525);
+        uint64_t cgen_var_618;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_618, 1);
+        countingStream->write((uint64_t*)&cgen_var_618, 8);
+        uint64_t cgen_var_619;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_619, 1);
+        countingStream->write((uint64_t*)&cgen_var_619, 8);
         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
     }
@@ -7883,10 +8597,12 @@
     uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
     stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
-    uint64_t cgen_var_526 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_526);
-    uint64_t cgen_var_527 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_527);
+    uint64_t cgen_var_620;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_620, 1);
+    stream->write((uint64_t*)&cgen_var_620, 8);
+    uint64_t cgen_var_621;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_621, 1);
+    stream->write((uint64_t*)&cgen_var_621, 8);
     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
     pool->freeAll();
@@ -7914,11 +8630,13 @@
     local_query = query;
     countingStream->rewind();
     {
-        uint64_t cgen_var_528 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_528);
+        uint64_t cgen_var_622;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
+        countingStream->write((uint64_t*)&cgen_var_622, 8);
         countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
-        uint64_t cgen_var_529 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_529);
+        uint64_t cgen_var_623;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_623, 1);
+        countingStream->write((uint64_t*)&cgen_var_623, 8);
         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
     }
     uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -7926,11 +8644,13 @@
     uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
     stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
-    uint64_t cgen_var_530 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_530);
+    uint64_t cgen_var_624;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_624, 1);
+    stream->write((uint64_t*)&cgen_var_624, 8);
     stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
-    uint64_t cgen_var_531 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_531);
+    uint64_t cgen_var_625;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_625, 1);
+    stream->write((uint64_t*)&cgen_var_625, 8);
     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
     pool->freeAll();
 }
@@ -7970,14 +8690,17 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_532 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_532);
-        uint64_t cgen_var_533 = (uint64_t)local_queryPool;
-        countingStream->putBe64(cgen_var_533);
+        uint64_t cgen_var_626;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_626, 1);
+        countingStream->write((uint64_t*)&cgen_var_626, 8);
+        uint64_t cgen_var_627;
+        countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_627, 1);
+        countingStream->write((uint64_t*)&cgen_var_627, 8);
         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
-        uint64_t cgen_var_534 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_534);
+        uint64_t cgen_var_628;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_628, 1);
+        countingStream->write((uint64_t*)&cgen_var_628, 8);
         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
         countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
         countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
@@ -7987,14 +8710,17 @@
     uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
     stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
-    uint64_t cgen_var_535 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_535);
-    uint64_t cgen_var_536 = (uint64_t)local_queryPool;
-    stream->putBe64(cgen_var_536);
+    uint64_t cgen_var_629;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
+    stream->write((uint64_t*)&cgen_var_629, 8);
+    uint64_t cgen_var_630;
+    stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
+    stream->write((uint64_t*)&cgen_var_630, 8);
     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
-    uint64_t cgen_var_537 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_537);
+    uint64_t cgen_var_631;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_631, 1);
+    stream->write((uint64_t*)&cgen_var_631, 8);
     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
     stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
     stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
@@ -8033,10 +8759,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_538 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_538);
-        uint64_t cgen_var_539 = (uint64_t)local_layout;
-        countingStream->putBe64(cgen_var_539);
+        uint64_t cgen_var_632;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_632, 1);
+        countingStream->write((uint64_t*)&cgen_var_632, 8);
+        uint64_t cgen_var_633;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_633, 1);
+        countingStream->write((uint64_t*)&cgen_var_633, 8);
         countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
         countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
@@ -8047,10 +8775,12 @@
     uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
     stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
-    uint64_t cgen_var_540 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_540);
-    uint64_t cgen_var_541 = (uint64_t)local_layout;
-    stream->putBe64(cgen_var_541);
+    uint64_t cgen_var_634;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
+    stream->write((uint64_t*)&cgen_var_634, 8);
+    uint64_t cgen_var_635;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_635, 1);
+    stream->write((uint64_t*)&cgen_var_635, 8);
     stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
     stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
     stream->write((uint32_t*)&local_size, sizeof(uint32_t));
@@ -8085,8 +8815,9 @@
     local_contents = contents;
     countingStream->rewind();
     {
-        uint64_t cgen_var_542 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_542);
+        uint64_t cgen_var_636;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_636, 1);
+        countingStream->write((uint64_t*)&cgen_var_636, 8);
         marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
         countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
     }
@@ -8095,8 +8826,9 @@
     uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
     stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
-    uint64_t cgen_var_543 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_543);
+    uint64_t cgen_var_637;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
+    stream->write((uint64_t*)&cgen_var_637, 8);
     marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
     stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
     pool->freeAll();
@@ -8117,8 +8849,9 @@
     local_contents = contents;
     countingStream->rewind();
     {
-        uint64_t cgen_var_544 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_544);
+        uint64_t cgen_var_638;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_638, 1);
+        countingStream->write((uint64_t*)&cgen_var_638, 8);
         countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
     }
     uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -8126,8 +8859,9 @@
     uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
     stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
-    uint64_t cgen_var_545 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_545);
+    uint64_t cgen_var_639;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
+    stream->write((uint64_t*)&cgen_var_639, 8);
     stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
     pool->freeAll();
 }
@@ -8144,16 +8878,18 @@
     resources->unwrapMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)&local_commandBuffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_546 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_546);
+        uint64_t cgen_var_640;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_640, 1);
+        countingStream->write((uint64_t*)&cgen_var_640, 8);
     }
     uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
     stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
-    uint64_t cgen_var_547 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_547);
+    uint64_t cgen_var_641;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
+    stream->write((uint64_t*)&cgen_var_641, 8);
     pool->freeAll();
 }
 
@@ -8183,22 +8919,34 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_548 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_548);
+        uint64_t cgen_var_642;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
+        countingStream->write((uint64_t*)&cgen_var_642, 8);
         countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkCommandBuffer*)local_pCommandBuffers, ((commandBufferCount)) * sizeof(VkCommandBuffer));
+        if (((commandBufferCount)))
+        {
+            uint64_t* cgen_var_643;
+            countingStream->alloc((void**)&cgen_var_643, ((commandBufferCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_643, ((commandBufferCount)));
+            countingStream->write((uint64_t*)cgen_var_643, 8);
+        }
     }
     uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
     stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
-    uint64_t cgen_var_549 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_549);
+    uint64_t cgen_var_644;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
+    stream->write((uint64_t*)&cgen_var_644, 8);
     stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkCommandBuffer*)local_pCommandBuffers, ((commandBufferCount)) * sizeof(VkCommandBuffer));
+    if (((commandBufferCount)))
+    {
+        uint64_t* cgen_var_645;
+        stream->alloc((void**)&cgen_var_645, ((commandBufferCount)) * 8);
+        stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_645, ((commandBufferCount)));
+        stream->write((uint64_t*)cgen_var_645, 8);
+    }
     pool->freeAll();
 }
 
@@ -8245,8 +8993,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_550 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_550);
+        uint64_t cgen_var_646;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_646, 1);
+        countingStream->write((uint64_t*)&cgen_var_646, 8);
         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
         {
@@ -8258,8 +9007,9 @@
     uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
     stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
     stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
-    uint64_t cgen_var_551 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_551);
+    uint64_t cgen_var_647;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_647, 1);
+    stream->write((uint64_t*)&cgen_var_647, 8);
     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
     {
@@ -8268,6 +9018,8 @@
     pool->freeAll();
     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
     stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindBufferMemory2_VkResult_return;
 }
 
@@ -8304,8 +9056,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_552 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_552);
+        uint64_t cgen_var_648;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_648, 1);
+        countingStream->write((uint64_t*)&cgen_var_648, 8);
         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
         {
@@ -8317,8 +9070,9 @@
     uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
     stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
     stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
-    uint64_t cgen_var_553 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_553);
+    uint64_t cgen_var_649;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_649, 1);
+    stream->write((uint64_t*)&cgen_var_649, 8);
     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
     {
@@ -8327,6 +9081,8 @@
     pool->freeAll();
     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
     stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindImageMemory2_VkResult_return;
 }
 
@@ -8352,8 +9108,9 @@
     local_remoteDeviceIndex = remoteDeviceIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_554 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_554);
+        uint64_t cgen_var_650;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_650, 1);
+        countingStream->write((uint64_t*)&cgen_var_650, 8);
         countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
@@ -8364,8 +9121,9 @@
     uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
     stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
-    uint64_t cgen_var_555 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_555);
+    uint64_t cgen_var_651;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
+    stream->write((uint64_t*)&cgen_var_651, 8);
     stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
     stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
     stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
@@ -8389,8 +9147,9 @@
     local_deviceMask = deviceMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_556 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_556);
+        uint64_t cgen_var_652;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_652, 1);
+        countingStream->write((uint64_t*)&cgen_var_652, 8);
         countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
     }
     uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -8398,8 +9157,9 @@
     uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
     stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
-    uint64_t cgen_var_557 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_557);
+    uint64_t cgen_var_653;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
+    stream->write((uint64_t*)&cgen_var_653, 8);
     stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
     pool->freeAll();
 }
@@ -8434,8 +9194,9 @@
     local_groupCountZ = groupCountZ;
     countingStream->rewind();
     {
-        uint64_t cgen_var_558 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_558);
+        uint64_t cgen_var_654;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
+        countingStream->write((uint64_t*)&cgen_var_654, 8);
         countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
@@ -8448,8 +9209,9 @@
     uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
     stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
-    uint64_t cgen_var_559 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_559);
+    uint64_t cgen_var_655;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
+    stream->write((uint64_t*)&cgen_var_655, 8);
     stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
     stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
     stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
@@ -8473,18 +9235,19 @@
     resources->unwrapMapping()->mapHandles_VkInstance((VkInstance*)&local_instance);
     countingStream->rewind();
     {
-        uint64_t cgen_var_560 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_560);
+        uint64_t cgen_var_656;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_656, 1);
+        countingStream->write((uint64_t*)&cgen_var_656, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_561 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
-        countingStream->putBe64(cgen_var_561);
+        uint64_t cgen_var_657 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
+        countingStream->putBe64(cgen_var_657);
         if (pPhysicalDeviceGroupCount)
         {
             countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_562 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
-        countingStream->putBe64(cgen_var_562);
+        uint64_t cgen_var_658 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
+        countingStream->putBe64(cgen_var_658);
         if (pPhysicalDeviceGroupProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
@@ -8498,18 +9261,19 @@
     uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
     stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
     stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
-    uint64_t cgen_var_563 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_563);
+    uint64_t cgen_var_659;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_659, 1);
+    stream->write((uint64_t*)&cgen_var_659, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_564 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
-    stream->putBe64(cgen_var_564);
+    uint64_t cgen_var_660 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
+    stream->putBe64(cgen_var_660);
     if (pPhysicalDeviceGroupCount)
     {
         stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_565 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
-    stream->putBe64(cgen_var_565);
+    uint64_t cgen_var_661 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
+    stream->putBe64(cgen_var_661);
     if (pPhysicalDeviceGroupProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
@@ -8545,6 +9309,8 @@
     pool->freeAll();
     VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
     stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumeratePhysicalDeviceGroups_VkResult_return;
 }
 
@@ -8573,8 +9339,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_568 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_568);
+        uint64_t cgen_var_664;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
+        countingStream->write((uint64_t*)&cgen_var_664, 8);
         marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
     }
@@ -8583,8 +9350,9 @@
     uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
     stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
-    uint64_t cgen_var_569 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_569);
+    uint64_t cgen_var_665;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_665, 1);
+    stream->write((uint64_t*)&cgen_var_665, 8);
     marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
@@ -8616,8 +9384,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_570 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_570);
+        uint64_t cgen_var_666;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_666, 1);
+        countingStream->write((uint64_t*)&cgen_var_666, 8);
         marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
     }
@@ -8626,8 +9395,9 @@
     uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
     stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
-    uint64_t cgen_var_571 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_571);
+    uint64_t cgen_var_667;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_667, 1);
+    stream->write((uint64_t*)&cgen_var_667, 8);
     marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
@@ -8660,19 +9430,20 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_572 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_572);
+        uint64_t cgen_var_668;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_668, 1);
+        countingStream->write((uint64_t*)&cgen_var_668, 8);
         marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_573 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-        countingStream->putBe64(cgen_var_573);
+        uint64_t cgen_var_669 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+        countingStream->putBe64(cgen_var_669);
         if (pSparseMemoryRequirementCount)
         {
             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_574 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-        countingStream->putBe64(cgen_var_574);
+        uint64_t cgen_var_670 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+        countingStream->putBe64(cgen_var_670);
         if (pSparseMemoryRequirements)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -8686,19 +9457,20 @@
     uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
     stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
-    uint64_t cgen_var_575 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_575);
+    uint64_t cgen_var_671;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
+    stream->write((uint64_t*)&cgen_var_671, 8);
     marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_576 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-    stream->putBe64(cgen_var_576);
+    uint64_t cgen_var_672 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+    stream->putBe64(cgen_var_672);
     if (pSparseMemoryRequirementCount)
     {
         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_577 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-    stream->putBe64(cgen_var_577);
+    uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+    stream->putBe64(cgen_var_673);
     if (pSparseMemoryRequirements)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -8747,8 +9519,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_580 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_580);
+        uint64_t cgen_var_676;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_676, 1);
+        countingStream->write((uint64_t*)&cgen_var_676, 8);
         marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     }
     uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -8756,8 +9529,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
     stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
-    uint64_t cgen_var_581 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_581);
+    uint64_t cgen_var_677;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_677, 1);
+    stream->write((uint64_t*)&cgen_var_677, 8);
     marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     pool->freeAll();
@@ -8786,8 +9560,9 @@
     local_format = format;
     countingStream->rewind();
     {
-        uint64_t cgen_var_582 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_582);
+        uint64_t cgen_var_678;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_678, 1);
+        countingStream->write((uint64_t*)&cgen_var_678, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
     }
@@ -8796,8 +9571,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
-    uint64_t cgen_var_583 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_583);
+    uint64_t cgen_var_679;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_679, 1);
+    stream->write((uint64_t*)&cgen_var_679, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
     unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
@@ -8829,8 +9605,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_584 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_584);
+        uint64_t cgen_var_680;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_680, 1);
+        countingStream->write((uint64_t*)&cgen_var_680, 8);
         marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
         marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
     }
@@ -8839,14 +9616,17 @@
     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
-    uint64_t cgen_var_585 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_585);
+    uint64_t cgen_var_681;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
+    stream->write((uint64_t*)&cgen_var_681, 8);
     marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
     marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
     unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
 }
 
@@ -8864,18 +9644,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_586 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_586);
+        uint64_t cgen_var_682;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
+        countingStream->write((uint64_t*)&cgen_var_682, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_587 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-        countingStream->putBe64(cgen_var_587);
+        uint64_t cgen_var_683 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+        countingStream->putBe64(cgen_var_683);
         if (pQueueFamilyPropertyCount)
         {
             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_588 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-        countingStream->putBe64(cgen_var_588);
+        uint64_t cgen_var_684 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+        countingStream->putBe64(cgen_var_684);
         if (pQueueFamilyProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -8889,18 +9670,19 @@
     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
-    uint64_t cgen_var_589 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_589);
+    uint64_t cgen_var_685;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
+    stream->write((uint64_t*)&cgen_var_685, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_590 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-    stream->putBe64(cgen_var_590);
+    uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+    stream->putBe64(cgen_var_686);
     if (pQueueFamilyPropertyCount)
     {
         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_591 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-    stream->putBe64(cgen_var_591);
+    uint64_t cgen_var_687 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+    stream->putBe64(cgen_var_687);
     if (pQueueFamilyProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -8949,8 +9731,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_594 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_594);
+        uint64_t cgen_var_690;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
+        countingStream->write((uint64_t*)&cgen_var_690, 8);
         marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     }
     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -8958,8 +9741,9 @@
     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
-    uint64_t cgen_var_595 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_595);
+    uint64_t cgen_var_691;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_691, 1);
+    stream->write((uint64_t*)&cgen_var_691, 8);
     marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     pool->freeAll();
@@ -8991,19 +9775,20 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_596 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_596);
+        uint64_t cgen_var_692;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
+        countingStream->write((uint64_t*)&cgen_var_692, 8);
         marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_597 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_597);
+        uint64_t cgen_var_693 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_693);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_598 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_598);
+        uint64_t cgen_var_694 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_694);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -9017,19 +9802,20 @@
     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
-    uint64_t cgen_var_599 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_599);
+    uint64_t cgen_var_695;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
+    stream->write((uint64_t*)&cgen_var_695, 8);
     marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_600 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_600);
+    uint64_t cgen_var_696 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_696);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_601 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_601);
+    uint64_t cgen_var_697 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_697);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -9084,10 +9870,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_604 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_604);
-        uint64_t cgen_var_605 = (uint64_t)local_commandPool;
-        countingStream->putBe64(cgen_var_605);
+        uint64_t cgen_var_700;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_700, 1);
+        countingStream->write((uint64_t*)&cgen_var_700, 8);
+        uint64_t cgen_var_701;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_701, 1);
+        countingStream->write((uint64_t*)&cgen_var_701, 8);
         countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
     }
     uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -9095,10 +9883,12 @@
     uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
     stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
     stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
-    uint64_t cgen_var_606 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_606);
-    uint64_t cgen_var_607 = (uint64_t)local_commandPool;
-    stream->putBe64(cgen_var_607);
+    uint64_t cgen_var_702;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_702, 1);
+    stream->write((uint64_t*)&cgen_var_702, 8);
+    uint64_t cgen_var_703;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_703, 1);
+    stream->write((uint64_t*)&cgen_var_703, 8);
     stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
     pool->freeAll();
 }
@@ -9128,24 +9918,29 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_608 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_608);
+        uint64_t cgen_var_704;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_704, 1);
+        countingStream->write((uint64_t*)&cgen_var_704, 8);
         marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+        uint64_t cgen_var_705;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_705, 1);
+        countingStream->write((uint64_t*)&cgen_var_705, 8);
     }
     uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
     stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
-    uint64_t cgen_var_609 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_609);
+    uint64_t cgen_var_706;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_706, 1);
+    stream->write((uint64_t*)&cgen_var_706, 8);
     marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkQueue*)pQueue, sizeof(VkQueue));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkQueue*)pQueue, sizeof(VkQueue));
+    uint64_t cgen_var_707;
+    stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_707, 1);
+    stream->write((uint64_t*)&cgen_var_707, 8);
+    uint64_t cgen_var_708;
+    stream->read((uint64_t*)&cgen_var_708, 8);
+    stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_708, (VkQueue*)pQueue, 1);
     pool->freeAll();
 }
 
@@ -9187,38 +9982,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_610 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_610);
+        uint64_t cgen_var_709;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
+        countingStream->write((uint64_t*)&cgen_var_709, 8);
         marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_611 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_611);
+        uint64_t cgen_var_710 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_710);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+        uint64_t cgen_var_711;
+        countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_711, 1);
+        countingStream->write((uint64_t*)&cgen_var_711, 8);
     }
     uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
     stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
-    uint64_t cgen_var_612 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_612);
+    uint64_t cgen_var_712;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_712, 1);
+    stream->write((uint64_t*)&cgen_var_712, 8);
     marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_613 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_613);
+    uint64_t cgen_var_713 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_713);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    uint64_t cgen_var_714;
+    stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_714, 1);
+    stream->write((uint64_t*)&cgen_var_714, 8);
+    uint64_t cgen_var_715;
+    stream->read((uint64_t*)&cgen_var_715, 8);
+    stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_715, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
     if (pYcbcrConversion)
     {
         resources->createMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
@@ -9226,6 +10026,8 @@
     pool->freeAll();
     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSamplerYcbcrConversion_VkResult_return;
 }
 
@@ -9258,13 +10060,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_614 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_614);
-        uint64_t cgen_var_615 = (uint64_t)local_ycbcrConversion;
-        countingStream->putBe64(cgen_var_615);
+        uint64_t cgen_var_716;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_716, 1);
+        countingStream->write((uint64_t*)&cgen_var_716, 8);
+        uint64_t cgen_var_717;
+        countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_717, 1);
+        countingStream->write((uint64_t*)&cgen_var_717, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_616 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_616);
+        uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_718);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9275,13 +10079,15 @@
     uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
     stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
-    uint64_t cgen_var_617 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_617);
-    uint64_t cgen_var_618 = (uint64_t)local_ycbcrConversion;
-    stream->putBe64(cgen_var_618);
+    uint64_t cgen_var_719;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
+    stream->write((uint64_t*)&cgen_var_719, 8);
+    uint64_t cgen_var_720;
+    stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_720, 1);
+    stream->write((uint64_t*)&cgen_var_720, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_619 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_619);
+    uint64_t cgen_var_721 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_721);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9328,38 +10134,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_620 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_620);
+        uint64_t cgen_var_722;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_722, 1);
+        countingStream->write((uint64_t*)&cgen_var_722, 8);
         marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_621 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_621);
+        uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_723);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        uint64_t cgen_var_724;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_724, 1);
+        countingStream->write((uint64_t*)&cgen_var_724, 8);
     }
     uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
     stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
-    uint64_t cgen_var_622 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_622);
+    uint64_t cgen_var_725;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_725, 1);
+    stream->write((uint64_t*)&cgen_var_725, 8);
     marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_623 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_623);
+    uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_726);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    uint64_t cgen_var_727;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_727, 1);
+    stream->write((uint64_t*)&cgen_var_727, 8);
+    uint64_t cgen_var_728;
+    stream->read((uint64_t*)&cgen_var_728, 8);
+    stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_728, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
     if (pDescriptorUpdateTemplate)
     {
         resources->createMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
@@ -9367,6 +10178,8 @@
     pool->freeAll();
     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDescriptorUpdateTemplate_VkResult_return;
 }
 
@@ -9399,13 +10212,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_624 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_624);
-        uint64_t cgen_var_625 = (uint64_t)local_descriptorUpdateTemplate;
-        countingStream->putBe64(cgen_var_625);
+        uint64_t cgen_var_729;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_729, 1);
+        countingStream->write((uint64_t*)&cgen_var_729, 8);
+        uint64_t cgen_var_730;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_730, 1);
+        countingStream->write((uint64_t*)&cgen_var_730, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_626 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_626);
+        uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_731);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9416,13 +10231,15 @@
     uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
     stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
-    uint64_t cgen_var_627 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_627);
-    uint64_t cgen_var_628 = (uint64_t)local_descriptorUpdateTemplate;
-    stream->putBe64(cgen_var_628);
+    uint64_t cgen_var_732;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_732, 1);
+    stream->write((uint64_t*)&cgen_var_732, 8);
+    uint64_t cgen_var_733;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_733, 1);
+    stream->write((uint64_t*)&cgen_var_733, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_629 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_629);
+    uint64_t cgen_var_734 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_734);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9458,15 +10275,18 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_630 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_630);
-        uint64_t cgen_var_631 = (uint64_t)local_descriptorSet;
-        countingStream->putBe64(cgen_var_631);
-        uint64_t cgen_var_632 = (uint64_t)local_descriptorUpdateTemplate;
-        countingStream->putBe64(cgen_var_632);
+        uint64_t cgen_var_735;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_735, 1);
+        countingStream->write((uint64_t*)&cgen_var_735, 8);
+        uint64_t cgen_var_736;
+        countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_736, 1);
+        countingStream->write((uint64_t*)&cgen_var_736, 8);
+        uint64_t cgen_var_737;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_737, 1);
+        countingStream->write((uint64_t*)&cgen_var_737, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_633 = (uint64_t)(uintptr_t)local_pData;
-        countingStream->putBe64(cgen_var_633);
+        uint64_t cgen_var_738 = (uint64_t)(uintptr_t)local_pData;
+        countingStream->putBe64(cgen_var_738);
         if (local_pData)
         {
             countingStream->write((void*)local_pData, sizeof(uint8_t));
@@ -9477,15 +10297,18 @@
     uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
     stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
     stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
-    uint64_t cgen_var_634 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_634);
-    uint64_t cgen_var_635 = (uint64_t)local_descriptorSet;
-    stream->putBe64(cgen_var_635);
-    uint64_t cgen_var_636 = (uint64_t)local_descriptorUpdateTemplate;
-    stream->putBe64(cgen_var_636);
+    uint64_t cgen_var_739;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_739, 1);
+    stream->write((uint64_t*)&cgen_var_739, 8);
+    uint64_t cgen_var_740;
+    stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_740, 1);
+    stream->write((uint64_t*)&cgen_var_740, 8);
+    uint64_t cgen_var_741;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_741, 1);
+    stream->write((uint64_t*)&cgen_var_741, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_637 = (uint64_t)(uintptr_t)local_pData;
-    stream->putBe64(cgen_var_637);
+    uint64_t cgen_var_742 = (uint64_t)(uintptr_t)local_pData;
+    stream->putBe64(cgen_var_742);
     if (local_pData)
     {
         stream->write((void*)local_pData, sizeof(uint8_t));
@@ -9518,8 +10341,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_638 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_638);
+        uint64_t cgen_var_743;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_743, 1);
+        countingStream->write((uint64_t*)&cgen_var_743, 8);
         marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
         marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     }
@@ -9528,8 +10352,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
     stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
-    uint64_t cgen_var_639 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_639);
+    uint64_t cgen_var_744;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_744, 1);
+    stream->write((uint64_t*)&cgen_var_744, 8);
     marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
     marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
@@ -9561,8 +10386,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_640 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_640);
+        uint64_t cgen_var_745;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_745, 1);
+        countingStream->write((uint64_t*)&cgen_var_745, 8);
         marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
         marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
     }
@@ -9571,8 +10397,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
     stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
-    uint64_t cgen_var_641 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_641);
+    uint64_t cgen_var_746;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_746, 1);
+    stream->write((uint64_t*)&cgen_var_746, 8);
     marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
     marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
     unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
@@ -9604,8 +10431,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_642 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_642);
+        uint64_t cgen_var_747;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_747, 1);
+        countingStream->write((uint64_t*)&cgen_var_747, 8);
         marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
         marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
     }
@@ -9614,8 +10442,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
     stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
-    uint64_t cgen_var_643 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_643);
+    uint64_t cgen_var_748;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
+    stream->write((uint64_t*)&cgen_var_748, 8);
     marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
     marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
     unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
@@ -9647,8 +10476,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_644 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_644);
+        uint64_t cgen_var_749;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_749, 1);
+        countingStream->write((uint64_t*)&cgen_var_749, 8);
         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
         marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
     }
@@ -9657,8 +10487,9 @@
     uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
     stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
-    uint64_t cgen_var_645 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_645);
+    uint64_t cgen_var_750;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_750, 1);
+    stream->write((uint64_t*)&cgen_var_750, 8);
     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
     marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
     unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
@@ -9696,13 +10527,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_646 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_646);
-        uint64_t cgen_var_647 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_647);
+        uint64_t cgen_var_751;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_751, 1);
+        countingStream->write((uint64_t*)&cgen_var_751, 8);
+        uint64_t cgen_var_752;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_752, 1);
+        countingStream->write((uint64_t*)&cgen_var_752, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_648 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_648);
+        uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_753);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9713,13 +10546,15 @@
     uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
     stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_649 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_649);
-    uint64_t cgen_var_650 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_650);
+    uint64_t cgen_var_754;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_754, 1);
+    stream->write((uint64_t*)&cgen_var_754, 8);
+    uint64_t cgen_var_755;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_755, 1);
+    stream->write((uint64_t*)&cgen_var_755, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_651 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_651);
+    uint64_t cgen_var_756 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_756);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -9748,11 +10583,13 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_652 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_652);
+        uint64_t cgen_var_757;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_757, 1);
+        countingStream->write((uint64_t*)&cgen_var_757, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
-        uint64_t cgen_var_653 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_653);
+        uint64_t cgen_var_758;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_758, 1);
+        countingStream->write((uint64_t*)&cgen_var_758, 8);
         countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
     }
     uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -9760,16 +10597,20 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_654 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_654);
+    uint64_t cgen_var_759;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
+    stream->write((uint64_t*)&cgen_var_759, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
-    uint64_t cgen_var_655 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_655);
+    uint64_t cgen_var_760;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
+    stream->write((uint64_t*)&cgen_var_760, 8);
     stream->write((VkBool32*)pSupported, sizeof(VkBool32));
     stream->read((VkBool32*)pSupported, sizeof(VkBool32));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
 }
 
@@ -9790,10 +10631,12 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_656 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_656);
-        uint64_t cgen_var_657 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_657);
+        uint64_t cgen_var_761;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
+        countingStream->write((uint64_t*)&cgen_var_761, 8);
+        uint64_t cgen_var_762;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_762, 1);
+        countingStream->write((uint64_t*)&cgen_var_762, 8);
         marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
     }
     uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -9801,15 +10644,19 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_658 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_658);
-    uint64_t cgen_var_659 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_659);
+    uint64_t cgen_var_763;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
+    stream->write((uint64_t*)&cgen_var_763, 8);
+    uint64_t cgen_var_764;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_764, 1);
+    stream->write((uint64_t*)&cgen_var_764, 8);
     marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
     unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
 }
 
@@ -9831,20 +10678,22 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_660 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_660);
-        uint64_t cgen_var_661 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_661);
+        uint64_t cgen_var_765;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_765, 1);
+        countingStream->write((uint64_t*)&cgen_var_765, 8);
+        uint64_t cgen_var_766;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_766, 1);
+        countingStream->write((uint64_t*)&cgen_var_766, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
-        countingStream->putBe64(cgen_var_662);
+        uint64_t cgen_var_767 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
+        countingStream->putBe64(cgen_var_767);
         if (pSurfaceFormatCount)
         {
             countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pSurfaceFormats;
-        countingStream->putBe64(cgen_var_663);
+        uint64_t cgen_var_768 = (uint64_t)(uintptr_t)pSurfaceFormats;
+        countingStream->putBe64(cgen_var_768);
         if (pSurfaceFormats)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
@@ -9858,20 +10707,22 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
-    uint64_t cgen_var_664 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_664);
-    uint64_t cgen_var_665 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_665);
+    uint64_t cgen_var_769;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_769, 1);
+    stream->write((uint64_t*)&cgen_var_769, 8);
+    uint64_t cgen_var_770;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
+    stream->write((uint64_t*)&cgen_var_770, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
-    stream->putBe64(cgen_var_666);
+    uint64_t cgen_var_771 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
+    stream->putBe64(cgen_var_771);
     if (pSurfaceFormatCount)
     {
         stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_667 = (uint64_t)(uintptr_t)pSurfaceFormats;
-    stream->putBe64(cgen_var_667);
+    uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormats;
+    stream->putBe64(cgen_var_772);
     if (pSurfaceFormats)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
@@ -9907,6 +10758,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
 }
 
@@ -9928,20 +10781,22 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_670 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_670);
-        uint64_t cgen_var_671 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_671);
+        uint64_t cgen_var_775;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_775, 1);
+        countingStream->write((uint64_t*)&cgen_var_775, 8);
+        uint64_t cgen_var_776;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_776, 1);
+        countingStream->write((uint64_t*)&cgen_var_776, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_672 = (uint64_t)(uintptr_t)pPresentModeCount;
-        countingStream->putBe64(cgen_var_672);
+        uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pPresentModeCount;
+        countingStream->putBe64(cgen_var_777);
         if (pPresentModeCount)
         {
             countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pPresentModes;
-        countingStream->putBe64(cgen_var_673);
+        uint64_t cgen_var_778 = (uint64_t)(uintptr_t)pPresentModes;
+        countingStream->putBe64(cgen_var_778);
         if (pPresentModes)
         {
             countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
@@ -9952,20 +10807,22 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_674 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_674);
-    uint64_t cgen_var_675 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_675);
+    uint64_t cgen_var_779;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_779, 1);
+    stream->write((uint64_t*)&cgen_var_779, 8);
+    uint64_t cgen_var_780;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_780, 1);
+    stream->write((uint64_t*)&cgen_var_780, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_676 = (uint64_t)(uintptr_t)pPresentModeCount;
-    stream->putBe64(cgen_var_676);
+    uint64_t cgen_var_781 = (uint64_t)(uintptr_t)pPresentModeCount;
+    stream->putBe64(cgen_var_781);
     if (pPresentModeCount)
     {
         stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pPresentModes;
-    stream->putBe64(cgen_var_677);
+    uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModes;
+    stream->putBe64(cgen_var_782);
     if (pPresentModes)
     {
         stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
@@ -9995,6 +10852,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
 }
 
@@ -10038,38 +10897,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_680 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_680);
+        uint64_t cgen_var_785;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_785, 1);
+        countingStream->write((uint64_t*)&cgen_var_785, 8);
         marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_681 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_681);
+        uint64_t cgen_var_786 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_786);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+        uint64_t cgen_var_787;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_787, 1);
+        countingStream->write((uint64_t*)&cgen_var_787, 8);
     }
     uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
     stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
-    uint64_t cgen_var_682 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_682);
+    uint64_t cgen_var_788;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_788, 1);
+    stream->write((uint64_t*)&cgen_var_788, 8);
     marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_683 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_683);
+    uint64_t cgen_var_789 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_789);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+    uint64_t cgen_var_790;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_790, 1);
+    stream->write((uint64_t*)&cgen_var_790, 8);
+    uint64_t cgen_var_791;
+    stream->read((uint64_t*)&cgen_var_791, 8);
+    stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_791, (VkSwapchainKHR*)pSwapchain, 1);
     if (pSwapchain)
     {
         resources->createMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)pSwapchain, 1);
@@ -10077,6 +10941,8 @@
     pool->freeAll();
     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSwapchainKHR_VkResult_return;
 }
 
@@ -10109,13 +10975,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_684 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_684);
-        uint64_t cgen_var_685 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_685);
+        uint64_t cgen_var_792;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_792, 1);
+        countingStream->write((uint64_t*)&cgen_var_792, 8);
+        uint64_t cgen_var_793;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_793, 1);
+        countingStream->write((uint64_t*)&cgen_var_793, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_686 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_686);
+        uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_794);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -10126,13 +10994,15 @@
     uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
     stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
-    uint64_t cgen_var_687 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_687);
-    uint64_t cgen_var_688 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_688);
+    uint64_t cgen_var_795;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_795, 1);
+    stream->write((uint64_t*)&cgen_var_795, 8);
+    uint64_t cgen_var_796;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_796, 1);
+    stream->write((uint64_t*)&cgen_var_796, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_689 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_689);
+    uint64_t cgen_var_797 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_797);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -10159,24 +11029,31 @@
     resources->unwrapMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&local_swapchain);
     countingStream->rewind();
     {
-        uint64_t cgen_var_690 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_690);
-        uint64_t cgen_var_691 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_691);
+        uint64_t cgen_var_798;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_798, 1);
+        countingStream->write((uint64_t*)&cgen_var_798, 8);
+        uint64_t cgen_var_799;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_799, 1);
+        countingStream->write((uint64_t*)&cgen_var_799, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pSwapchainImageCount;
-        countingStream->putBe64(cgen_var_692);
+        uint64_t cgen_var_800 = (uint64_t)(uintptr_t)pSwapchainImageCount;
+        countingStream->putBe64(cgen_var_800);
         if (pSwapchainImageCount)
         {
             countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_693 = (uint64_t)(uintptr_t)pSwapchainImages;
-        countingStream->putBe64(cgen_var_693);
+        uint64_t cgen_var_801 = (uint64_t)(uintptr_t)pSwapchainImages;
+        countingStream->putBe64(cgen_var_801);
         if (pSwapchainImages)
         {
-            // WARNING HANDLE TYPE POINTER
-            countingStream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+            if ((*(pSwapchainImageCount)))
+            {
+                uint64_t* cgen_var_802;
+                countingStream->alloc((void**)&cgen_var_802, (*(pSwapchainImageCount)) * 8);
+                countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_802, (*(pSwapchainImageCount)));
+                countingStream->write((uint64_t*)cgen_var_802, 8);
+            }
         }
     }
     uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -10184,24 +11061,31 @@
     uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
     stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_694 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_694);
-    uint64_t cgen_var_695 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_695);
+    uint64_t cgen_var_803;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
+    stream->write((uint64_t*)&cgen_var_803, 8);
+    uint64_t cgen_var_804;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
+    stream->write((uint64_t*)&cgen_var_804, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_696 = (uint64_t)(uintptr_t)pSwapchainImageCount;
-    stream->putBe64(cgen_var_696);
+    uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
+    stream->putBe64(cgen_var_805);
     if (pSwapchainImageCount)
     {
         stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_697 = (uint64_t)(uintptr_t)pSwapchainImages;
-    stream->putBe64(cgen_var_697);
+    uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
+    stream->putBe64(cgen_var_806);
     if (pSwapchainImages)
     {
-        // WARNING HANDLE TYPE POINTER
-        stream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+        if ((*(pSwapchainImageCount)))
+        {
+            uint64_t* cgen_var_807;
+            stream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
+            stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
+            stream->write((uint64_t*)cgen_var_807, 8);
+        }
     }
     // WARNING PTR CHECK
     uint32_t* check_pSwapchainImageCount;
@@ -10223,12 +11107,19 @@
         {
             fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
         }
-        // WARNING HANDLE TYPE POINTER
-        stream->read((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+        if ((*(pSwapchainImageCount)))
+        {
+            uint64_t* cgen_var_810;
+            stream->alloc((void**)&cgen_var_810, (*(pSwapchainImageCount)) * 8);
+            stream->read((uint64_t*)cgen_var_810, 8);
+            stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_810, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
+        }
     }
     pool->freeAll();
     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetSwapchainImagesKHR_VkResult_return;
 }
 
@@ -10260,15 +11151,19 @@
     resources->unwrapMapping()->mapHandles_VkFence((VkFence*)&local_fence);
     countingStream->rewind();
     {
-        uint64_t cgen_var_700 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_700);
-        uint64_t cgen_var_701 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_701);
+        uint64_t cgen_var_811;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_811, 1);
+        countingStream->write((uint64_t*)&cgen_var_811, 8);
+        uint64_t cgen_var_812;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_812, 1);
+        countingStream->write((uint64_t*)&cgen_var_812, 8);
         countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
-        uint64_t cgen_var_702 = (uint64_t)local_semaphore;
-        countingStream->putBe64(cgen_var_702);
-        uint64_t cgen_var_703 = (uint64_t)local_fence;
-        countingStream->putBe64(cgen_var_703);
+        uint64_t cgen_var_813;
+        countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_813, 1);
+        countingStream->write((uint64_t*)&cgen_var_813, 8);
+        uint64_t cgen_var_814;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_814, 1);
+        countingStream->write((uint64_t*)&cgen_var_814, 8);
         countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
     }
     uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -10276,20 +11171,26 @@
     uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
     stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
-    uint64_t cgen_var_704 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_704);
-    uint64_t cgen_var_705 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_705);
+    uint64_t cgen_var_815;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_815, 1);
+    stream->write((uint64_t*)&cgen_var_815, 8);
+    uint64_t cgen_var_816;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_816, 1);
+    stream->write((uint64_t*)&cgen_var_816, 8);
     stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
-    uint64_t cgen_var_706 = (uint64_t)local_semaphore;
-    stream->putBe64(cgen_var_706);
-    uint64_t cgen_var_707 = (uint64_t)local_fence;
-    stream->putBe64(cgen_var_707);
+    uint64_t cgen_var_817;
+    stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_817, 1);
+    stream->write((uint64_t*)&cgen_var_817, 8);
+    uint64_t cgen_var_818;
+    stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_818, 1);
+    stream->write((uint64_t*)&cgen_var_818, 8);
     stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
     stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
     pool->freeAll();
     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
     stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAcquireNextImageKHR_VkResult_return;
 }
 
@@ -10317,8 +11218,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_708 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_708);
+        uint64_t cgen_var_819;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_819, 1);
+        countingStream->write((uint64_t*)&cgen_var_819, 8);
         marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
     }
     uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -10326,12 +11228,15 @@
     uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
     stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
-    uint64_t cgen_var_709 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_709);
+    uint64_t cgen_var_820;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_820, 1);
+    stream->write((uint64_t*)&cgen_var_820, 8);
     marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
     pool->freeAll();
     VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
     stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkQueuePresentKHR_VkResult_return;
 }
 
@@ -10348,8 +11253,9 @@
     resources->unwrapMapping()->mapHandles_VkDevice((VkDevice*)&local_device);
     countingStream->rewind();
     {
-        uint64_t cgen_var_710 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_710);
+        uint64_t cgen_var_821;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_821, 1);
+        countingStream->write((uint64_t*)&cgen_var_821, 8);
         marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
     }
     uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -10357,13 +11263,16 @@
     uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
     stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_711 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_711);
+    uint64_t cgen_var_822;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_822, 1);
+    stream->write((uint64_t*)&cgen_var_822, 8);
     marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
     unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
     pool->freeAll();
     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
 }
 
@@ -10384,13 +11293,15 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_712 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_712);
-        uint64_t cgen_var_713 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_713);
+        uint64_t cgen_var_823;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_823, 1);
+        countingStream->write((uint64_t*)&cgen_var_823, 8);
+        uint64_t cgen_var_824;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_824, 1);
+        countingStream->write((uint64_t*)&cgen_var_824, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_714 = (uint64_t)(uintptr_t)pModes;
-        countingStream->putBe64(cgen_var_714);
+        uint64_t cgen_var_825 = (uint64_t)(uintptr_t)pModes;
+        countingStream->putBe64(cgen_var_825);
         if (pModes)
         {
             countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
@@ -10401,13 +11312,15 @@
     uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
     stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_715 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_715);
-    uint64_t cgen_var_716 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_716);
+    uint64_t cgen_var_826;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
+    stream->write((uint64_t*)&cgen_var_826, 8);
+    uint64_t cgen_var_827;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_827, 1);
+    stream->write((uint64_t*)&cgen_var_827, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_717 = (uint64_t)(uintptr_t)pModes;
-    stream->putBe64(cgen_var_717);
+    uint64_t cgen_var_828 = (uint64_t)(uintptr_t)pModes;
+    stream->putBe64(cgen_var_828);
     if (pModes)
     {
         stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
@@ -10426,6 +11339,8 @@
     pool->freeAll();
     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
 }
 
@@ -10447,20 +11362,22 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_719 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_719);
-        uint64_t cgen_var_720 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_720);
+        uint64_t cgen_var_830;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_830, 1);
+        countingStream->write((uint64_t*)&cgen_var_830, 8);
+        uint64_t cgen_var_831;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_831, 1);
+        countingStream->write((uint64_t*)&cgen_var_831, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_721 = (uint64_t)(uintptr_t)pRectCount;
-        countingStream->putBe64(cgen_var_721);
+        uint64_t cgen_var_832 = (uint64_t)(uintptr_t)pRectCount;
+        countingStream->putBe64(cgen_var_832);
         if (pRectCount)
         {
             countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_722 = (uint64_t)(uintptr_t)pRects;
-        countingStream->putBe64(cgen_var_722);
+        uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pRects;
+        countingStream->putBe64(cgen_var_833);
         if (pRects)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
@@ -10474,20 +11391,22 @@
     uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
     stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_723 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_723);
-    uint64_t cgen_var_724 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_724);
+    uint64_t cgen_var_834;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_834, 1);
+    stream->write((uint64_t*)&cgen_var_834, 8);
+    uint64_t cgen_var_835;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_835, 1);
+    stream->write((uint64_t*)&cgen_var_835, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_725 = (uint64_t)(uintptr_t)pRectCount;
-    stream->putBe64(cgen_var_725);
+    uint64_t cgen_var_836 = (uint64_t)(uintptr_t)pRectCount;
+    stream->putBe64(cgen_var_836);
     if (pRectCount)
     {
         stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_726 = (uint64_t)(uintptr_t)pRects;
-    stream->putBe64(cgen_var_726);
+    uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRects;
+    stream->putBe64(cgen_var_837);
     if (pRects)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
@@ -10523,6 +11442,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
 }
 
@@ -10551,8 +11472,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_729 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_729);
+        uint64_t cgen_var_840;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_840, 1);
+        countingStream->write((uint64_t*)&cgen_var_840, 8);
         marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
         countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
     }
@@ -10561,14 +11483,17 @@
     uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
     stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_730 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_730);
+    uint64_t cgen_var_841;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
+    stream->write((uint64_t*)&cgen_var_841, 8);
     marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
     stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
     stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
     pool->freeAll();
     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAcquireNextImage2KHR_VkResult_return;
 }
 
@@ -10588,18 +11513,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_731 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_731);
+        uint64_t cgen_var_842;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_842, 1);
+        countingStream->write((uint64_t*)&cgen_var_842, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_732 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_732);
+        uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_843);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_733 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_733);
+        uint64_t cgen_var_844 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_844);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10613,18 +11539,19 @@
     uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_734 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_734);
+    uint64_t cgen_var_845;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
+    stream->write((uint64_t*)&cgen_var_845, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_735 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_735);
+    uint64_t cgen_var_846 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_846);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_736 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_736);
+    uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_847);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10660,6 +11587,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
 }
 
@@ -10677,18 +11606,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_739 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_739);
+        uint64_t cgen_var_850;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
+        countingStream->write((uint64_t*)&cgen_var_850, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_740 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_740);
+        uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_851);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_741 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_741);
+        uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_852);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10702,18 +11632,19 @@
     uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_742 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_742);
+    uint64_t cgen_var_853;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_853, 1);
+    stream->write((uint64_t*)&cgen_var_853, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_743 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_743);
+    uint64_t cgen_var_854 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_854);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_744 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_744);
+    uint64_t cgen_var_855 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_855);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10749,6 +11680,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
 }
 
@@ -10769,23 +11702,29 @@
     local_planeIndex = planeIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_747 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_747);
+        uint64_t cgen_var_858;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
+        countingStream->write((uint64_t*)&cgen_var_858, 8);
         countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
         // WARNING PTR CHECK
-        uint64_t cgen_var_748 = (uint64_t)(uintptr_t)pDisplayCount;
-        countingStream->putBe64(cgen_var_748);
+        uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pDisplayCount;
+        countingStream->putBe64(cgen_var_859);
         if (pDisplayCount)
         {
             countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_749 = (uint64_t)(uintptr_t)pDisplays;
-        countingStream->putBe64(cgen_var_749);
+        uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pDisplays;
+        countingStream->putBe64(cgen_var_860);
         if (pDisplays)
         {
-            // WARNING HANDLE TYPE POINTER
-            countingStream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+            if ((*(pDisplayCount)))
+            {
+                uint64_t* cgen_var_861;
+                countingStream->alloc((void**)&cgen_var_861, (*(pDisplayCount)) * 8);
+                countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_861, (*(pDisplayCount)));
+                countingStream->write((uint64_t*)cgen_var_861, 8);
+            }
         }
     }
     uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -10793,23 +11732,29 @@
     uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
     stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
-    uint64_t cgen_var_750 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_750);
+    uint64_t cgen_var_862;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_862, 1);
+    stream->write((uint64_t*)&cgen_var_862, 8);
     stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_751 = (uint64_t)(uintptr_t)pDisplayCount;
-    stream->putBe64(cgen_var_751);
+    uint64_t cgen_var_863 = (uint64_t)(uintptr_t)pDisplayCount;
+    stream->putBe64(cgen_var_863);
     if (pDisplayCount)
     {
         stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_752 = (uint64_t)(uintptr_t)pDisplays;
-    stream->putBe64(cgen_var_752);
+    uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplays;
+    stream->putBe64(cgen_var_864);
     if (pDisplays)
     {
-        // WARNING HANDLE TYPE POINTER
-        stream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+        if ((*(pDisplayCount)))
+        {
+            uint64_t* cgen_var_865;
+            stream->alloc((void**)&cgen_var_865, (*(pDisplayCount)) * 8);
+            stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_865, (*(pDisplayCount)));
+            stream->write((uint64_t*)cgen_var_865, 8);
+        }
     }
     // WARNING PTR CHECK
     uint32_t* check_pDisplayCount;
@@ -10831,12 +11776,19 @@
         {
             fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
         }
-        // WARNING HANDLE TYPE POINTER
-        stream->read((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+        if ((*(pDisplayCount)))
+        {
+            uint64_t* cgen_var_868;
+            stream->alloc((void**)&cgen_var_868, (*(pDisplayCount)) * 8);
+            stream->read((uint64_t*)cgen_var_868, 8);
+            stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_868, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
+        }
     }
     pool->freeAll();
     VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
 }
 
@@ -10858,20 +11810,22 @@
     resources->unwrapMapping()->mapHandles_VkDisplayKHR((VkDisplayKHR*)&local_display);
     countingStream->rewind();
     {
-        uint64_t cgen_var_755 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_755);
-        uint64_t cgen_var_756 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_756);
+        uint64_t cgen_var_869;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_869, 1);
+        countingStream->write((uint64_t*)&cgen_var_869, 8);
+        uint64_t cgen_var_870;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_870, 1);
+        countingStream->write((uint64_t*)&cgen_var_870, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_757 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_757);
+        uint64_t cgen_var_871 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_871);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_758 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_758);
+        uint64_t cgen_var_872 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_872);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10885,20 +11839,22 @@
     uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
     stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_759 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_759);
-    uint64_t cgen_var_760 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_760);
+    uint64_t cgen_var_873;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
+    stream->write((uint64_t*)&cgen_var_873, 8);
+    uint64_t cgen_var_874;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_874, 1);
+    stream->write((uint64_t*)&cgen_var_874, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_761 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_761);
+    uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_875);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_762 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_762);
+    uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_876);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -10934,6 +11890,8 @@
     pool->freeAll();
     VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDisplayModePropertiesKHR_VkResult_return;
 }
 
@@ -10979,42 +11937,49 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_765 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_765);
-        uint64_t cgen_var_766 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_766);
+        uint64_t cgen_var_879;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_879, 1);
+        countingStream->write((uint64_t*)&cgen_var_879, 8);
+        uint64_t cgen_var_880;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_880, 1);
+        countingStream->write((uint64_t*)&cgen_var_880, 8);
         marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_767 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_767);
+        uint64_t cgen_var_881 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_881);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+        uint64_t cgen_var_882;
+        countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_882, 1);
+        countingStream->write((uint64_t*)&cgen_var_882, 8);
     }
     uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
     stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
-    uint64_t cgen_var_768 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_768);
-    uint64_t cgen_var_769 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_769);
+    uint64_t cgen_var_883;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_883, 1);
+    stream->write((uint64_t*)&cgen_var_883, 8);
+    uint64_t cgen_var_884;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_884, 1);
+    stream->write((uint64_t*)&cgen_var_884, 8);
     marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_770 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_770);
+    uint64_t cgen_var_885 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_885);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+    uint64_t cgen_var_886;
+    stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_886, 1);
+    stream->write((uint64_t*)&cgen_var_886, 8);
+    uint64_t cgen_var_887;
+    stream->read((uint64_t*)&cgen_var_887, 8);
+    stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_887, (VkDisplayModeKHR*)pMode, 1);
     if (pMode)
     {
         resources->createMapping()->mapHandles_VkDisplayModeKHR((VkDisplayModeKHR*)pMode, 1);
@@ -11022,6 +11987,8 @@
     pool->freeAll();
     VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDisplayModeKHR_VkResult_return;
 }
 
@@ -11045,10 +12012,12 @@
     local_planeIndex = planeIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_771 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_771);
-        uint64_t cgen_var_772 = (uint64_t)local_mode;
-        countingStream->putBe64(cgen_var_772);
+        uint64_t cgen_var_888;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
+        countingStream->write((uint64_t*)&cgen_var_888, 8);
+        uint64_t cgen_var_889;
+        countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_889, 1);
+        countingStream->write((uint64_t*)&cgen_var_889, 8);
         countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
         marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
     }
@@ -11057,16 +12026,20 @@
     uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
     stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_773 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_773);
-    uint64_t cgen_var_774 = (uint64_t)local_mode;
-    stream->putBe64(cgen_var_774);
+    uint64_t cgen_var_890;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_890, 1);
+    stream->write((uint64_t*)&cgen_var_890, 8);
+    uint64_t cgen_var_891;
+    stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_891, 1);
+    stream->write((uint64_t*)&cgen_var_891, 8);
     stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
     marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
     unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
     pool->freeAll();
     VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
 }
 
@@ -11108,41 +12081,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_775 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_775);
+        uint64_t cgen_var_892;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_892, 1);
+        countingStream->write((uint64_t*)&cgen_var_892, 8);
         marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_776 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_776);
+        uint64_t cgen_var_893 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_893);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_894;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_894, 1);
+        countingStream->write((uint64_t*)&cgen_var_894, 8);
     }
     uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
     stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_777 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_777);
+    uint64_t cgen_var_895;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_895, 1);
+    stream->write((uint64_t*)&cgen_var_895, 8);
     marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_778 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_778);
+    uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_896);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_897;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_897, 1);
+    stream->write((uint64_t*)&cgen_var_897, 8);
+    uint64_t cgen_var_898;
+    stream->read((uint64_t*)&cgen_var_898, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_898, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
 }
 
@@ -11195,49 +12175,68 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_779 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_779);
+        uint64_t cgen_var_899;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_899, 1);
+        countingStream->write((uint64_t*)&cgen_var_899, 8);
         countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
         {
             marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_780 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_780);
+        uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_900);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+        if (((swapchainCount)))
+        {
+            uint64_t* cgen_var_901;
+            countingStream->alloc((void**)&cgen_var_901, ((swapchainCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_901, ((swapchainCount)));
+            countingStream->write((uint64_t*)cgen_var_901, 8);
+        }
     }
     uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
     stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
-    uint64_t cgen_var_781 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_781);
+    uint64_t cgen_var_902;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_902, 1);
+    stream->write((uint64_t*)&cgen_var_902, 8);
     stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
     {
         marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_782 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_782);
+    uint64_t cgen_var_903 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_903);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+    if (((swapchainCount)))
+    {
+        uint64_t* cgen_var_904;
+        stream->alloc((void**)&cgen_var_904, ((swapchainCount)) * 8);
+        stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_904, ((swapchainCount)));
+        stream->write((uint64_t*)cgen_var_904, 8);
+    }
+    if (((swapchainCount)))
+    {
+        uint64_t* cgen_var_905;
+        stream->alloc((void**)&cgen_var_905, ((swapchainCount)) * 8);
+        stream->read((uint64_t*)cgen_var_905, 8);
+        stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_905, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
+    }
     pool->freeAll();
     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSharedSwapchainsKHR_VkResult_return;
 }
 
@@ -11281,41 +12280,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_783 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_783);
+        uint64_t cgen_var_906;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_906, 1);
+        countingStream->write((uint64_t*)&cgen_var_906, 8);
         marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_784 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_784);
+        uint64_t cgen_var_907 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_907);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_908;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_908, 1);
+        countingStream->write((uint64_t*)&cgen_var_908, 8);
     }
     uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
     stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_785 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_785);
+    uint64_t cgen_var_909;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_909, 1);
+    stream->write((uint64_t*)&cgen_var_909, 8);
     marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_786 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_786);
+    uint64_t cgen_var_910 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_910);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_911;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_911, 1);
+    stream->write((uint64_t*)&cgen_var_911, 8);
+    uint64_t cgen_var_912;
+    stream->read((uint64_t*)&cgen_var_912, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_912, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateXlibSurfaceKHR_VkResult_return;
 }
 
@@ -11338,8 +12344,9 @@
     local_visualID = visualID;
     countingStream->rewind();
     {
-        uint64_t cgen_var_787 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_787);
+        uint64_t cgen_var_913;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_913, 1);
+        countingStream->write((uint64_t*)&cgen_var_913, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
         countingStream->write((Display*)dpy, sizeof(Display));
         countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
@@ -11349,8 +12356,9 @@
     uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_788 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_788);
+    uint64_t cgen_var_914;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_914, 1);
+    stream->write((uint64_t*)&cgen_var_914, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     stream->write((Display*)dpy, sizeof(Display));
     stream->write((VisualID*)&local_visualID, sizeof(VisualID));
@@ -11358,6 +12366,8 @@
     pool->freeAll();
     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
     stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
 }
 
@@ -11401,41 +12411,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_789 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_789);
+        uint64_t cgen_var_915;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_915, 1);
+        countingStream->write((uint64_t*)&cgen_var_915, 8);
         marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_790 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_790);
+        uint64_t cgen_var_916 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_916);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_917;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_917, 1);
+        countingStream->write((uint64_t*)&cgen_var_917, 8);
     }
     uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
     stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_791 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_791);
+    uint64_t cgen_var_918;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_918, 1);
+    stream->write((uint64_t*)&cgen_var_918, 8);
     marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_792 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_792);
+    uint64_t cgen_var_919 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_919);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_920;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_920, 1);
+    stream->write((uint64_t*)&cgen_var_920, 8);
+    uint64_t cgen_var_921;
+    stream->read((uint64_t*)&cgen_var_921, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_921, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateXcbSurfaceKHR_VkResult_return;
 }
 
@@ -11458,8 +12475,9 @@
     local_visual_id = visual_id;
     countingStream->rewind();
     {
-        uint64_t cgen_var_793 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_793);
+        uint64_t cgen_var_922;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_922, 1);
+        countingStream->write((uint64_t*)&cgen_var_922, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
         countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
         countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
@@ -11469,8 +12487,9 @@
     uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_794 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_794);
+    uint64_t cgen_var_923;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_923, 1);
+    stream->write((uint64_t*)&cgen_var_923, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
     stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
@@ -11478,6 +12497,8 @@
     pool->freeAll();
     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
     stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
 }
 
@@ -11521,41 +12542,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_795 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_795);
+        uint64_t cgen_var_924;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
+        countingStream->write((uint64_t*)&cgen_var_924, 8);
         marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_796 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_796);
+        uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_925);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_926;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
+        countingStream->write((uint64_t*)&cgen_var_926, 8);
     }
     uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
     stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_797 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_797);
+    uint64_t cgen_var_927;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_927, 1);
+    stream->write((uint64_t*)&cgen_var_927, 8);
     marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_798 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_798);
+    uint64_t cgen_var_928 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_928);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_929;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_929, 1);
+    stream->write((uint64_t*)&cgen_var_929, 8);
+    uint64_t cgen_var_930;
+    stream->read((uint64_t*)&cgen_var_930, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_930, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateWaylandSurfaceKHR_VkResult_return;
 }
 
@@ -11575,8 +12603,9 @@
     local_queueFamilyIndex = queueFamilyIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_799 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_799);
+        uint64_t cgen_var_931;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_931, 1);
+        countingStream->write((uint64_t*)&cgen_var_931, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
         countingStream->write((wl_display*)display, sizeof(wl_display));
     }
@@ -11585,14 +12614,17 @@
     uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_800 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_800);
+    uint64_t cgen_var_932;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_932, 1);
+    stream->write((uint64_t*)&cgen_var_932, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     stream->write((wl_display*)display, sizeof(wl_display));
     stream->read((wl_display*)display, sizeof(wl_display));
     pool->freeAll();
     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
     stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
 }
 
@@ -11636,41 +12668,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_801 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_801);
+        uint64_t cgen_var_933;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
+        countingStream->write((uint64_t*)&cgen_var_933, 8);
         marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_802);
+        uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_934);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_935;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
+        countingStream->write((uint64_t*)&cgen_var_935, 8);
     }
     uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
     stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_803 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_803);
+    uint64_t cgen_var_936;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_936, 1);
+    stream->write((uint64_t*)&cgen_var_936, 8);
     marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_804);
+    uint64_t cgen_var_937 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_937);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_938;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_938, 1);
+    stream->write((uint64_t*)&cgen_var_938, 8);
+    uint64_t cgen_var_939;
+    stream->read((uint64_t*)&cgen_var_939, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_939, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateMirSurfaceKHR_VkResult_return;
 }
 
@@ -11690,8 +12729,9 @@
     local_queueFamilyIndex = queueFamilyIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_805 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_805);
+        uint64_t cgen_var_940;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_940, 1);
+        countingStream->write((uint64_t*)&cgen_var_940, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
         countingStream->write((MirConnection*)connection, sizeof(MirConnection));
     }
@@ -11700,14 +12740,17 @@
     uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_806 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_806);
+    uint64_t cgen_var_941;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_941, 1);
+    stream->write((uint64_t*)&cgen_var_941, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     stream->write((MirConnection*)connection, sizeof(MirConnection));
     stream->read((MirConnection*)connection, sizeof(MirConnection));
     pool->freeAll();
     VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
     stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
 }
 
@@ -11751,41 +12794,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_807 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_807);
+        uint64_t cgen_var_942;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
+        countingStream->write((uint64_t*)&cgen_var_942, 8);
         marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_808 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_808);
+        uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_943);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_944;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
+        countingStream->write((uint64_t*)&cgen_var_944, 8);
     }
     uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
     stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_809 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_809);
+    uint64_t cgen_var_945;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_945, 1);
+    stream->write((uint64_t*)&cgen_var_945, 8);
     marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_810 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_810);
+    uint64_t cgen_var_946 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_946);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_947;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_947, 1);
+    stream->write((uint64_t*)&cgen_var_947, 8);
+    uint64_t cgen_var_948;
+    stream->read((uint64_t*)&cgen_var_948, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_948, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateAndroidSurfaceKHR_VkResult_return;
 }
 
@@ -11829,41 +12879,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_811 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_811);
+        uint64_t cgen_var_949;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_949, 1);
+        countingStream->write((uint64_t*)&cgen_var_949, 8);
         marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_812);
+        uint64_t cgen_var_950 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_950);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_951;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_951, 1);
+        countingStream->write((uint64_t*)&cgen_var_951, 8);
     }
     uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
     stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
-    uint64_t cgen_var_813 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_813);
+    uint64_t cgen_var_952;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_952, 1);
+    stream->write((uint64_t*)&cgen_var_952, 8);
     marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_814 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_814);
+    uint64_t cgen_var_953 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_953);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_954;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_954, 1);
+    stream->write((uint64_t*)&cgen_var_954, 8);
+    uint64_t cgen_var_955;
+    stream->read((uint64_t*)&cgen_var_955, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_955, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateWin32SurfaceKHR_VkResult_return;
 }
 
@@ -11882,8 +12939,9 @@
     local_queueFamilyIndex = queueFamilyIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_815 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_815);
+        uint64_t cgen_var_956;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
+        countingStream->write((uint64_t*)&cgen_var_956, 8);
         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     }
     uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -11891,12 +12949,15 @@
     uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
     stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_816 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_816);
+    uint64_t cgen_var_957;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_957, 1);
+    stream->write((uint64_t*)&cgen_var_957, 8);
     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
     pool->freeAll();
     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
     stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
 }
 
@@ -11919,8 +12980,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_817 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_817);
+        uint64_t cgen_var_958;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_958, 1);
+        countingStream->write((uint64_t*)&cgen_var_958, 8);
         marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     }
     uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -11928,8 +12990,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_818 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_818);
+    uint64_t cgen_var_959;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_959, 1);
+    stream->write((uint64_t*)&cgen_var_959, 8);
     marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
     pool->freeAll();
@@ -11948,8 +13011,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_819 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_819);
+        uint64_t cgen_var_960;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_960, 1);
+        countingStream->write((uint64_t*)&cgen_var_960, 8);
         marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
     }
     uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -11957,8 +13021,9 @@
     uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_820 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_820);
+    uint64_t cgen_var_961;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
+    stream->write((uint64_t*)&cgen_var_961, 8);
     marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
     unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
     pool->freeAll();
@@ -11980,8 +13045,9 @@
     local_format = format;
     countingStream->rewind();
     {
-        uint64_t cgen_var_821 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_821);
+        uint64_t cgen_var_962;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
+        countingStream->write((uint64_t*)&cgen_var_962, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
     }
@@ -11990,8 +13056,9 @@
     uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_822 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_822);
+    uint64_t cgen_var_963;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
+    stream->write((uint64_t*)&cgen_var_963, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
     unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
@@ -12023,8 +13090,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_823 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_823);
+        uint64_t cgen_var_964;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
+        countingStream->write((uint64_t*)&cgen_var_964, 8);
         marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
         marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
     }
@@ -12033,14 +13101,17 @@
     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_824 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_824);
+    uint64_t cgen_var_965;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
+    stream->write((uint64_t*)&cgen_var_965, 8);
     marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
     marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
     unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
 }
 
@@ -12058,18 +13129,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_825 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_825);
+        uint64_t cgen_var_966;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
+        countingStream->write((uint64_t*)&cgen_var_966, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_826 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-        countingStream->putBe64(cgen_var_826);
+        uint64_t cgen_var_967 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+        countingStream->putBe64(cgen_var_967);
         if (pQueueFamilyPropertyCount)
         {
             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_827 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-        countingStream->putBe64(cgen_var_827);
+        uint64_t cgen_var_968 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+        countingStream->putBe64(cgen_var_968);
         if (pQueueFamilyProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -12083,18 +13155,19 @@
     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_828 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_828);
+    uint64_t cgen_var_969;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
+    stream->write((uint64_t*)&cgen_var_969, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_829 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
-    stream->putBe64(cgen_var_829);
+    uint64_t cgen_var_970 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
+    stream->putBe64(cgen_var_970);
     if (pQueueFamilyPropertyCount)
     {
         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
-    stream->putBe64(cgen_var_830);
+    uint64_t cgen_var_971 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
+    stream->putBe64(cgen_var_971);
     if (pQueueFamilyProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
@@ -12143,8 +13216,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_833 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_833);
+        uint64_t cgen_var_974;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
+        countingStream->write((uint64_t*)&cgen_var_974, 8);
         marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     }
     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -12152,8 +13226,9 @@
     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_834 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_834);
+    uint64_t cgen_var_975;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
+    stream->write((uint64_t*)&cgen_var_975, 8);
     marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
     pool->freeAll();
@@ -12185,19 +13260,20 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_835 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_835);
+        uint64_t cgen_var_976;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
+        countingStream->write((uint64_t*)&cgen_var_976, 8);
         marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_836 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_836);
+        uint64_t cgen_var_977 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_977);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_837);
+        uint64_t cgen_var_978 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_978);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -12211,19 +13287,20 @@
     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_838 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_838);
+    uint64_t cgen_var_979;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
+    stream->write((uint64_t*)&cgen_var_979, 8);
     marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_839 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_839);
+    uint64_t cgen_var_980 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_980);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_840);
+    uint64_t cgen_var_981 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_981);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -12283,8 +13360,9 @@
     local_remoteDeviceIndex = remoteDeviceIndex;
     countingStream->rewind();
     {
-        uint64_t cgen_var_843 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_843);
+        uint64_t cgen_var_984;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_984, 1);
+        countingStream->write((uint64_t*)&cgen_var_984, 8);
         countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
@@ -12295,8 +13373,9 @@
     uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
     stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_844 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_844);
+    uint64_t cgen_var_985;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_985, 1);
+    stream->write((uint64_t*)&cgen_var_985, 8);
     stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
     stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
     stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
@@ -12320,8 +13399,9 @@
     local_deviceMask = deviceMask;
     countingStream->rewind();
     {
-        uint64_t cgen_var_845 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_845);
+        uint64_t cgen_var_986;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_986, 1);
+        countingStream->write((uint64_t*)&cgen_var_986, 8);
         countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
     }
     uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -12329,8 +13409,9 @@
     uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
     stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
-    uint64_t cgen_var_846 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_846);
+    uint64_t cgen_var_987;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_987, 1);
+    stream->write((uint64_t*)&cgen_var_987, 8);
     stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
     pool->freeAll();
 }
@@ -12365,8 +13446,9 @@
     local_groupCountZ = groupCountZ;
     countingStream->rewind();
     {
-        uint64_t cgen_var_847 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_847);
+        uint64_t cgen_var_988;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_988, 1);
+        countingStream->write((uint64_t*)&cgen_var_988, 8);
         countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
@@ -12379,8 +13461,9 @@
     uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
     stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
-    uint64_t cgen_var_848 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_848);
+    uint64_t cgen_var_989;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_989, 1);
+    stream->write((uint64_t*)&cgen_var_989, 8);
     stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
     stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
     stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
@@ -12413,10 +13496,12 @@
     local_flags = flags;
     countingStream->rewind();
     {
-        uint64_t cgen_var_849 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_849);
-        uint64_t cgen_var_850 = (uint64_t)local_commandPool;
-        countingStream->putBe64(cgen_var_850);
+        uint64_t cgen_var_990;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
+        countingStream->write((uint64_t*)&cgen_var_990, 8);
+        uint64_t cgen_var_991;
+        countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_991, 1);
+        countingStream->write((uint64_t*)&cgen_var_991, 8);
         countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
     }
     uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -12424,10 +13509,12 @@
     uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
     stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
-    uint64_t cgen_var_851 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_851);
-    uint64_t cgen_var_852 = (uint64_t)local_commandPool;
-    stream->putBe64(cgen_var_852);
+    uint64_t cgen_var_992;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_992, 1);
+    stream->write((uint64_t*)&cgen_var_992, 8);
+    uint64_t cgen_var_993;
+    stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_993, 1);
+    stream->write((uint64_t*)&cgen_var_993, 8);
     stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
     pool->freeAll();
 }
@@ -12448,18 +13535,19 @@
     resources->unwrapMapping()->mapHandles_VkInstance((VkInstance*)&local_instance);
     countingStream->rewind();
     {
-        uint64_t cgen_var_853 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_853);
+        uint64_t cgen_var_994;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_994, 1);
+        countingStream->write((uint64_t*)&cgen_var_994, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_854 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
-        countingStream->putBe64(cgen_var_854);
+        uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
+        countingStream->putBe64(cgen_var_995);
         if (pPhysicalDeviceGroupCount)
         {
             countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_855 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
-        countingStream->putBe64(cgen_var_855);
+        uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
+        countingStream->putBe64(cgen_var_996);
         if (pPhysicalDeviceGroupProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
@@ -12473,18 +13561,19 @@
     uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
     stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
-    uint64_t cgen_var_856 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_856);
+    uint64_t cgen_var_997;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_997, 1);
+    stream->write((uint64_t*)&cgen_var_997, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
-    stream->putBe64(cgen_var_857);
+    uint64_t cgen_var_998 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
+    stream->putBe64(cgen_var_998);
     if (pPhysicalDeviceGroupCount)
     {
         stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
-    stream->putBe64(cgen_var_858);
+    uint64_t cgen_var_999 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
+    stream->putBe64(cgen_var_999);
     if (pPhysicalDeviceGroupProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
@@ -12520,6 +13609,8 @@
     pool->freeAll();
     VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
     stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
 }
 
@@ -12550,8 +13641,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_861 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_861);
+        uint64_t cgen_var_1002;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1002, 1);
+        countingStream->write((uint64_t*)&cgen_var_1002, 8);
         marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
         marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     }
@@ -12560,8 +13652,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_862 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_862);
+    uint64_t cgen_var_1003;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1003, 1);
+    stream->write((uint64_t*)&cgen_var_1003, 8);
     marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
     marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
@@ -12597,8 +13690,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_863 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_863);
+        uint64_t cgen_var_1004;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1004, 1);
+        countingStream->write((uint64_t*)&cgen_var_1004, 8);
         marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
     }
@@ -12607,14 +13701,17 @@
     uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
     stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
-    uint64_t cgen_var_864 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_864);
+    uint64_t cgen_var_1005;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
+    stream->write((uint64_t*)&cgen_var_1005, 8);
     marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
     pool->freeAll();
     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryWin32HandleKHR_VkResult_return;
 }
 
@@ -12637,8 +13734,9 @@
     local_handle = handle;
     countingStream->rewind();
     {
-        uint64_t cgen_var_865 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_865);
+        uint64_t cgen_var_1006;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1006, 1);
+        countingStream->write((uint64_t*)&cgen_var_1006, 8);
         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
         countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
         marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
@@ -12648,8 +13746,9 @@
     uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
     stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_866 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_866);
+    uint64_t cgen_var_1007;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
+    stream->write((uint64_t*)&cgen_var_1007, 8);
     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
     stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
     marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
@@ -12657,6 +13756,8 @@
     pool->freeAll();
     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
 }
 
@@ -12687,8 +13788,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_867 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_867);
+        uint64_t cgen_var_1008;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1008, 1);
+        countingStream->write((uint64_t*)&cgen_var_1008, 8);
         marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
         countingStream->write((int*)pFd, sizeof(int));
     }
@@ -12697,14 +13799,17 @@
     uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
     stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
-    uint64_t cgen_var_868 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_868);
+    uint64_t cgen_var_1009;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
+    stream->write((uint64_t*)&cgen_var_1009, 8);
     marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
     stream->write((int*)pFd, sizeof(int));
     stream->read((int*)pFd, sizeof(int));
     pool->freeAll();
     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryFdKHR_VkResult_return;
 }
 
@@ -12727,8 +13832,9 @@
     local_fd = fd;
     countingStream->rewind();
     {
-        uint64_t cgen_var_869 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_869);
+        uint64_t cgen_var_1010;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
+        countingStream->write((uint64_t*)&cgen_var_1010, 8);
         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
         countingStream->write((int*)&local_fd, sizeof(int));
         marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
@@ -12738,8 +13844,9 @@
     uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
     stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_870 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_870);
+    uint64_t cgen_var_1011;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
+    stream->write((uint64_t*)&cgen_var_1011, 8);
     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
     stream->write((int*)&local_fd, sizeof(int));
     marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
@@ -12747,6 +13854,8 @@
     pool->freeAll();
     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryFdPropertiesKHR_VkResult_return;
 }
 
@@ -12779,8 +13888,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_871 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_871);
+        uint64_t cgen_var_1012;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1012, 1);
+        countingStream->write((uint64_t*)&cgen_var_1012, 8);
         marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
         marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
     }
@@ -12789,8 +13899,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_872 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_872);
+    uint64_t cgen_var_1013;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1013, 1);
+    stream->write((uint64_t*)&cgen_var_1013, 8);
     marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
     marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
     unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
@@ -12825,8 +13936,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_873 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_873);
+        uint64_t cgen_var_1014;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
+        countingStream->write((uint64_t*)&cgen_var_1014, 8);
         marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
     }
     uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -12834,12 +13946,15 @@
     uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
     stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
-    uint64_t cgen_var_874 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_874);
+    uint64_t cgen_var_1015;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
+    stream->write((uint64_t*)&cgen_var_1015, 8);
     marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
     pool->freeAll();
     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
     stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
 }
 
@@ -12868,8 +13983,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_875 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_875);
+        uint64_t cgen_var_1016;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
+        countingStream->write((uint64_t*)&cgen_var_1016, 8);
         marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
     }
@@ -12878,14 +13994,17 @@
     uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
     stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
-    uint64_t cgen_var_876 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_876);
+    uint64_t cgen_var_1017;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1017, 1);
+    stream->write((uint64_t*)&cgen_var_1017, 8);
     marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
     pool->freeAll();
     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
 }
 
@@ -12915,8 +14034,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_877 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_877);
+        uint64_t cgen_var_1018;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1018, 1);
+        countingStream->write((uint64_t*)&cgen_var_1018, 8);
         marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
     }
     uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -12924,12 +14044,15 @@
     uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
     stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
-    uint64_t cgen_var_878 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_878);
+    uint64_t cgen_var_1019;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
+    stream->write((uint64_t*)&cgen_var_1019, 8);
     marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
     pool->freeAll();
     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
     stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkImportSemaphoreFdKHR_VkResult_return;
 }
 
@@ -12958,8 +14081,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_879 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_879);
+        uint64_t cgen_var_1020;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
+        countingStream->write((uint64_t*)&cgen_var_1020, 8);
         marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
         countingStream->write((int*)pFd, sizeof(int));
     }
@@ -12968,14 +14092,17 @@
     uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
     stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
-    uint64_t cgen_var_880 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_880);
+    uint64_t cgen_var_1021;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
+    stream->write((uint64_t*)&cgen_var_1021, 8);
     marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
     stream->write((int*)pFd, sizeof(int));
     stream->read((int*)pFd, sizeof(int));
     pool->freeAll();
     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetSemaphoreFdKHR_VkResult_return;
 }
 
@@ -13024,11 +14151,13 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_881 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_881);
+        uint64_t cgen_var_1022;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1022, 1);
+        countingStream->write((uint64_t*)&cgen_var_1022, 8);
         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-        uint64_t cgen_var_882 = (uint64_t)local_layout;
-        countingStream->putBe64(cgen_var_882);
+        uint64_t cgen_var_1023;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1023, 1);
+        countingStream->write((uint64_t*)&cgen_var_1023, 8);
         countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
@@ -13041,11 +14170,13 @@
     uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
     stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
-    uint64_t cgen_var_883 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_883);
+    uint64_t cgen_var_1024;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1024, 1);
+    stream->write((uint64_t*)&cgen_var_1024, 8);
     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    uint64_t cgen_var_884 = (uint64_t)local_layout;
-    stream->putBe64(cgen_var_884);
+    uint64_t cgen_var_1025;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1025, 1);
+    stream->write((uint64_t*)&cgen_var_1025, 8);
     stream->write((uint32_t*)&local_set, sizeof(uint32_t));
     stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
@@ -13085,16 +14216,19 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_885 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_885);
-        uint64_t cgen_var_886 = (uint64_t)local_descriptorUpdateTemplate;
-        countingStream->putBe64(cgen_var_886);
-        uint64_t cgen_var_887 = (uint64_t)local_layout;
-        countingStream->putBe64(cgen_var_887);
+        uint64_t cgen_var_1026;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1026, 1);
+        countingStream->write((uint64_t*)&cgen_var_1026, 8);
+        uint64_t cgen_var_1027;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1027, 1);
+        countingStream->write((uint64_t*)&cgen_var_1027, 8);
+        uint64_t cgen_var_1028;
+        countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
+        countingStream->write((uint64_t*)&cgen_var_1028, 8);
         countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
         // WARNING PTR CHECK
-        uint64_t cgen_var_888 = (uint64_t)(uintptr_t)local_pData;
-        countingStream->putBe64(cgen_var_888);
+        uint64_t cgen_var_1029 = (uint64_t)(uintptr_t)local_pData;
+        countingStream->putBe64(cgen_var_1029);
         if (local_pData)
         {
             countingStream->write((void*)local_pData, sizeof(uint8_t));
@@ -13105,16 +14239,19 @@
     uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
     stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
-    uint64_t cgen_var_889 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_889);
-    uint64_t cgen_var_890 = (uint64_t)local_descriptorUpdateTemplate;
-    stream->putBe64(cgen_var_890);
-    uint64_t cgen_var_891 = (uint64_t)local_layout;
-    stream->putBe64(cgen_var_891);
+    uint64_t cgen_var_1030;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1030, 1);
+    stream->write((uint64_t*)&cgen_var_1030, 8);
+    uint64_t cgen_var_1031;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1031, 1);
+    stream->write((uint64_t*)&cgen_var_1031, 8);
+    uint64_t cgen_var_1032;
+    stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1032, 1);
+    stream->write((uint64_t*)&cgen_var_1032, 8);
     stream->write((uint32_t*)&local_set, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_892 = (uint64_t)(uintptr_t)local_pData;
-    stream->putBe64(cgen_var_892);
+    uint64_t cgen_var_1033 = (uint64_t)(uintptr_t)local_pData;
+    stream->putBe64(cgen_var_1033);
     if (local_pData)
     {
         stream->write((void*)local_pData, sizeof(uint8_t));
@@ -13166,41 +14303,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_893 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_893);
+        uint64_t cgen_var_1034;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
+        countingStream->write((uint64_t*)&cgen_var_1034, 8);
         marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_894 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_894);
+        uint64_t cgen_var_1035 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1035);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        uint64_t cgen_var_1036;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1036, 1);
+        countingStream->write((uint64_t*)&cgen_var_1036, 8);
     }
     uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
     stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
-    uint64_t cgen_var_895 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_895);
+    uint64_t cgen_var_1037;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1037, 1);
+    stream->write((uint64_t*)&cgen_var_1037, 8);
     marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_896);
+    uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1038);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    uint64_t cgen_var_1039;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1039, 1);
+    stream->write((uint64_t*)&cgen_var_1039, 8);
+    uint64_t cgen_var_1040;
+    stream->read((uint64_t*)&cgen_var_1040, 8);
+    stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1040, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
     pool->freeAll();
     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
 }
 
@@ -13233,13 +14377,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_897 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_897);
-        uint64_t cgen_var_898 = (uint64_t)local_descriptorUpdateTemplate;
-        countingStream->putBe64(cgen_var_898);
+        uint64_t cgen_var_1041;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1041, 1);
+        countingStream->write((uint64_t*)&cgen_var_1041, 8);
+        uint64_t cgen_var_1042;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
+        countingStream->write((uint64_t*)&cgen_var_1042, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_899 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_899);
+        uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1043);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -13250,13 +14396,15 @@
     uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
     stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
-    uint64_t cgen_var_900 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_900);
-    uint64_t cgen_var_901 = (uint64_t)local_descriptorUpdateTemplate;
-    stream->putBe64(cgen_var_901);
+    uint64_t cgen_var_1044;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1044, 1);
+    stream->write((uint64_t*)&cgen_var_1044, 8);
+    uint64_t cgen_var_1045;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1045, 1);
+    stream->write((uint64_t*)&cgen_var_1045, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_902 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_902);
+    uint64_t cgen_var_1046 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1046);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -13291,15 +14439,18 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_903 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_903);
-        uint64_t cgen_var_904 = (uint64_t)local_descriptorSet;
-        countingStream->putBe64(cgen_var_904);
-        uint64_t cgen_var_905 = (uint64_t)local_descriptorUpdateTemplate;
-        countingStream->putBe64(cgen_var_905);
+        uint64_t cgen_var_1047;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1047, 1);
+        countingStream->write((uint64_t*)&cgen_var_1047, 8);
+        uint64_t cgen_var_1048;
+        countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1048, 1);
+        countingStream->write((uint64_t*)&cgen_var_1048, 8);
+        uint64_t cgen_var_1049;
+        countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1049, 1);
+        countingStream->write((uint64_t*)&cgen_var_1049, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_906 = (uint64_t)(uintptr_t)local_pData;
-        countingStream->putBe64(cgen_var_906);
+        uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pData;
+        countingStream->putBe64(cgen_var_1050);
         if (local_pData)
         {
             countingStream->write((void*)local_pData, sizeof(uint8_t));
@@ -13310,15 +14461,18 @@
     uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
     stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
-    uint64_t cgen_var_907 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_907);
-    uint64_t cgen_var_908 = (uint64_t)local_descriptorSet;
-    stream->putBe64(cgen_var_908);
-    uint64_t cgen_var_909 = (uint64_t)local_descriptorUpdateTemplate;
-    stream->putBe64(cgen_var_909);
+    uint64_t cgen_var_1051;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1051, 1);
+    stream->write((uint64_t*)&cgen_var_1051, 8);
+    uint64_t cgen_var_1052;
+    stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1052, 1);
+    stream->write((uint64_t*)&cgen_var_1052, 8);
+    uint64_t cgen_var_1053;
+    stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1053, 1);
+    stream->write((uint64_t*)&cgen_var_1053, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_910 = (uint64_t)(uintptr_t)local_pData;
-    stream->putBe64(cgen_var_910);
+    uint64_t cgen_var_1054 = (uint64_t)(uintptr_t)local_pData;
+    stream->putBe64(cgen_var_1054);
     if (local_pData)
     {
         stream->write((void*)local_pData, sizeof(uint8_t));
@@ -13366,41 +14520,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_911 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_911);
+        uint64_t cgen_var_1055;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1055, 1);
+        countingStream->write((uint64_t*)&cgen_var_1055, 8);
         marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_912);
+        uint64_t cgen_var_1056 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1056);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+        uint64_t cgen_var_1057;
+        countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1057, 1);
+        countingStream->write((uint64_t*)&cgen_var_1057, 8);
     }
     uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
     stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_913 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_913);
+    uint64_t cgen_var_1058;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1058, 1);
+    stream->write((uint64_t*)&cgen_var_1058, 8);
     marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_914 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_914);
+    uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1059);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    uint64_t cgen_var_1060;
+    stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1060, 1);
+    stream->write((uint64_t*)&cgen_var_1060, 8);
+    uint64_t cgen_var_1061;
+    stream->read((uint64_t*)&cgen_var_1061, 8);
+    stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1061, (VkRenderPass*)pRenderPass, 1);
     pool->freeAll();
     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateRenderPass2KHR_VkResult_return;
 }
 
@@ -13440,8 +14601,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_915 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_915);
+        uint64_t cgen_var_1062;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1062, 1);
+        countingStream->write((uint64_t*)&cgen_var_1062, 8);
         marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
         marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
     }
@@ -13450,8 +14612,9 @@
     uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
     stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_916 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_916);
+    uint64_t cgen_var_1063;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1063, 1);
+    stream->write((uint64_t*)&cgen_var_1063, 8);
     marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
     marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
     pool->freeAll();
@@ -13493,8 +14656,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_917 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_917);
+        uint64_t cgen_var_1064;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1064, 1);
+        countingStream->write((uint64_t*)&cgen_var_1064, 8);
         marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
         marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
     }
@@ -13503,8 +14667,9 @@
     uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
     stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_918 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_918);
+    uint64_t cgen_var_1065;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1065, 1);
+    stream->write((uint64_t*)&cgen_var_1065, 8);
     marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
     marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
     pool->freeAll();
@@ -13534,8 +14699,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_919 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_919);
+        uint64_t cgen_var_1066;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1066, 1);
+        countingStream->write((uint64_t*)&cgen_var_1066, 8);
         marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
     }
     uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -13543,8 +14709,9 @@
     uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
     stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_920 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_920);
+    uint64_t cgen_var_1067;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
+    stream->write((uint64_t*)&cgen_var_1067, 8);
     marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
     pool->freeAll();
 }
@@ -13567,23 +14734,29 @@
     resources->unwrapMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&local_swapchain);
     countingStream->rewind();
     {
-        uint64_t cgen_var_921 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_921);
-        uint64_t cgen_var_922 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_922);
+        uint64_t cgen_var_1068;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1068, 1);
+        countingStream->write((uint64_t*)&cgen_var_1068, 8);
+        uint64_t cgen_var_1069;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1069, 1);
+        countingStream->write((uint64_t*)&cgen_var_1069, 8);
     }
     uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
     stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
-    uint64_t cgen_var_923 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_923);
-    uint64_t cgen_var_924 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_924);
+    uint64_t cgen_var_1070;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
+    stream->write((uint64_t*)&cgen_var_1070, 8);
+    uint64_t cgen_var_1071;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1071, 1);
+    stream->write((uint64_t*)&cgen_var_1071, 8);
     pool->freeAll();
     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetSwapchainStatusKHR_VkResult_return;
 }
 
@@ -13614,8 +14787,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_925 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_925);
+        uint64_t cgen_var_1072;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1072, 1);
+        countingStream->write((uint64_t*)&cgen_var_1072, 8);
         marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
         marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
     }
@@ -13624,8 +14798,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
     stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
-    uint64_t cgen_var_926 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_926);
+    uint64_t cgen_var_1073;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1073, 1);
+    stream->write((uint64_t*)&cgen_var_1073, 8);
     marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
     marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
     unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
@@ -13660,8 +14835,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_927 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_927);
+        uint64_t cgen_var_1074;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1074, 1);
+        countingStream->write((uint64_t*)&cgen_var_1074, 8);
         marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
     }
     uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -13669,12 +14845,15 @@
     uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
     stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
-    uint64_t cgen_var_928 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_928);
+    uint64_t cgen_var_1075;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
+    stream->write((uint64_t*)&cgen_var_1075, 8);
     marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
     pool->freeAll();
     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
     stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkImportFenceWin32HandleKHR_VkResult_return;
 }
 
@@ -13703,8 +14882,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_929 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_929);
+        uint64_t cgen_var_1076;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1076, 1);
+        countingStream->write((uint64_t*)&cgen_var_1076, 8);
         marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
     }
@@ -13713,14 +14893,17 @@
     uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
     stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
-    uint64_t cgen_var_930 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_930);
+    uint64_t cgen_var_1077;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1077, 1);
+    stream->write((uint64_t*)&cgen_var_1077, 8);
     marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
     pool->freeAll();
     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetFenceWin32HandleKHR_VkResult_return;
 }
 
@@ -13750,8 +14933,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_931 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_931);
+        uint64_t cgen_var_1078;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1078, 1);
+        countingStream->write((uint64_t*)&cgen_var_1078, 8);
         marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
     }
     uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -13759,12 +14943,15 @@
     uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
     stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
-    uint64_t cgen_var_932 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_932);
+    uint64_t cgen_var_1079;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
+    stream->write((uint64_t*)&cgen_var_1079, 8);
     marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
     pool->freeAll();
     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
     stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkImportFenceFdKHR_VkResult_return;
 }
 
@@ -13793,8 +14980,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_933 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_933);
+        uint64_t cgen_var_1080;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
+        countingStream->write((uint64_t*)&cgen_var_1080, 8);
         marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
         countingStream->write((int*)pFd, sizeof(int));
     }
@@ -13803,14 +14991,17 @@
     uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
     stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
-    uint64_t cgen_var_934 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_934);
+    uint64_t cgen_var_1081;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
+    stream->write((uint64_t*)&cgen_var_1081, 8);
     marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
     stream->write((int*)pFd, sizeof(int));
     stream->read((int*)pFd, sizeof(int));
     pool->freeAll();
     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetFenceFdKHR_VkResult_return;
 }
 
@@ -13843,8 +15034,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_935 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_935);
+        uint64_t cgen_var_1082;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1082, 1);
+        countingStream->write((uint64_t*)&cgen_var_1082, 8);
         marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
         marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
     }
@@ -13853,14 +15045,17 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_936 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_936);
+    uint64_t cgen_var_1083;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1083, 1);
+    stream->write((uint64_t*)&cgen_var_1083, 8);
     marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
     marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
     unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
 }
 
@@ -13890,19 +15085,20 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_937 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_937);
+        uint64_t cgen_var_1084;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1084, 1);
+        countingStream->write((uint64_t*)&cgen_var_1084, 8);
         marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_938 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
-        countingStream->putBe64(cgen_var_938);
+        uint64_t cgen_var_1085 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
+        countingStream->putBe64(cgen_var_1085);
         if (pSurfaceFormatCount)
         {
             countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_939 = (uint64_t)(uintptr_t)pSurfaceFormats;
-        countingStream->putBe64(cgen_var_939);
+        uint64_t cgen_var_1086 = (uint64_t)(uintptr_t)pSurfaceFormats;
+        countingStream->putBe64(cgen_var_1086);
         if (pSurfaceFormats)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
@@ -13916,19 +15112,20 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_940 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_940);
+    uint64_t cgen_var_1087;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
+    stream->write((uint64_t*)&cgen_var_1087, 8);
     marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_941 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
-    stream->putBe64(cgen_var_941);
+    uint64_t cgen_var_1088 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
+    stream->putBe64(cgen_var_1088);
     if (pSurfaceFormatCount)
     {
         stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_942 = (uint64_t)(uintptr_t)pSurfaceFormats;
-    stream->putBe64(cgen_var_942);
+    uint64_t cgen_var_1089 = (uint64_t)(uintptr_t)pSurfaceFormats;
+    stream->putBe64(cgen_var_1089);
     if (pSurfaceFormats)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
@@ -13964,6 +15161,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
 }
 
@@ -13985,18 +15184,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_945 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_945);
+        uint64_t cgen_var_1092;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
+        countingStream->write((uint64_t*)&cgen_var_1092, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_946 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_946);
+        uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_1093);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_947 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_947);
+        uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_1094);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14010,18 +15210,19 @@
     uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_948 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_948);
+    uint64_t cgen_var_1095;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1095, 1);
+    stream->write((uint64_t*)&cgen_var_1095, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_949 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_949);
+    uint64_t cgen_var_1096 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_1096);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_950 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_950);
+    uint64_t cgen_var_1097 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_1097);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14057,6 +15258,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
 }
 
@@ -14074,18 +15277,19 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_953 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_953);
+        uint64_t cgen_var_1100;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
+        countingStream->write((uint64_t*)&cgen_var_1100, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_954 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_954);
+        uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_1101);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_955 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_955);
+        uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_1102);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14099,18 +15303,19 @@
     uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
     stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_956 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_956);
+    uint64_t cgen_var_1103;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1103, 1);
+    stream->write((uint64_t*)&cgen_var_1103, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_957 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_957);
+    uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_1104);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_958 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_958);
+    uint64_t cgen_var_1105 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_1105);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14146,6 +15351,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
 }
 
@@ -14167,20 +15374,22 @@
     resources->unwrapMapping()->mapHandles_VkDisplayKHR((VkDisplayKHR*)&local_display);
     countingStream->rewind();
     {
-        uint64_t cgen_var_961 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_961);
-        uint64_t cgen_var_962 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_962);
+        uint64_t cgen_var_1108;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
+        countingStream->write((uint64_t*)&cgen_var_1108, 8);
+        uint64_t cgen_var_1109;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1109, 1);
+        countingStream->write((uint64_t*)&cgen_var_1109, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_963 = (uint64_t)(uintptr_t)pPropertyCount;
-        countingStream->putBe64(cgen_var_963);
+        uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pPropertyCount;
+        countingStream->putBe64(cgen_var_1110);
         if (pPropertyCount)
         {
             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_964 = (uint64_t)(uintptr_t)pProperties;
-        countingStream->putBe64(cgen_var_964);
+        uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pProperties;
+        countingStream->putBe64(cgen_var_1111);
         if (pProperties)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14194,20 +15403,22 @@
     uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
     stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_965 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_965);
-    uint64_t cgen_var_966 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_966);
+    uint64_t cgen_var_1112;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1112, 1);
+    stream->write((uint64_t*)&cgen_var_1112, 8);
+    uint64_t cgen_var_1113;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1113, 1);
+    stream->write((uint64_t*)&cgen_var_1113, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_967 = (uint64_t)(uintptr_t)pPropertyCount;
-    stream->putBe64(cgen_var_967);
+    uint64_t cgen_var_1114 = (uint64_t)(uintptr_t)pPropertyCount;
+    stream->putBe64(cgen_var_1114);
     if (pPropertyCount)
     {
         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_968 = (uint64_t)(uintptr_t)pProperties;
-    stream->putBe64(cgen_var_968);
+    uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pProperties;
+    stream->putBe64(cgen_var_1115);
     if (pProperties)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
@@ -14243,6 +15454,8 @@
     pool->freeAll();
     VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDisplayModeProperties2KHR_VkResult_return;
 }
 
@@ -14271,8 +15484,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_971 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_971);
+        uint64_t cgen_var_1118;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
+        countingStream->write((uint64_t*)&cgen_var_1118, 8);
         marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
         marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
     }
@@ -14281,14 +15495,17 @@
     uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
     stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_972 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_972);
+    uint64_t cgen_var_1119;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1119, 1);
+    stream->write((uint64_t*)&cgen_var_1119, 8);
     marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
     marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
     unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
     pool->freeAll();
     VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
 }
 
@@ -14325,8 +15542,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_973 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_973);
+        uint64_t cgen_var_1120;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1120, 1);
+        countingStream->write((uint64_t*)&cgen_var_1120, 8);
         marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
     }
@@ -14335,8 +15553,9 @@
     uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
     stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_974 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_974);
+    uint64_t cgen_var_1121;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1121, 1);
+    stream->write((uint64_t*)&cgen_var_1121, 8);
     marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
@@ -14368,8 +15587,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_975 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_975);
+        uint64_t cgen_var_1122;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1122, 1);
+        countingStream->write((uint64_t*)&cgen_var_1122, 8);
         marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
     }
@@ -14378,8 +15598,9 @@
     uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
     stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_976 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_976);
+    uint64_t cgen_var_1123;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1123, 1);
+    stream->write((uint64_t*)&cgen_var_1123, 8);
     marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
@@ -14412,19 +15633,20 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_977 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_977);
+        uint64_t cgen_var_1124;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1124, 1);
+        countingStream->write((uint64_t*)&cgen_var_1124, 8);
         marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_978 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-        countingStream->putBe64(cgen_var_978);
+        uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+        countingStream->putBe64(cgen_var_1125);
         if (pSparseMemoryRequirementCount)
         {
             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_979 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-        countingStream->putBe64(cgen_var_979);
+        uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+        countingStream->putBe64(cgen_var_1126);
         if (pSparseMemoryRequirements)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -14438,19 +15660,20 @@
     uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
     stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_980 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_980);
+    uint64_t cgen_var_1127;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
+    stream->write((uint64_t*)&cgen_var_1127, 8);
     marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_981 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
-    stream->putBe64(cgen_var_981);
+    uint64_t cgen_var_1128 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
+    stream->putBe64(cgen_var_1128);
     if (pSparseMemoryRequirementCount)
     {
         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
-    stream->putBe64(cgen_var_982);
+    uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
+    stream->putBe64(cgen_var_1129);
     if (pSparseMemoryRequirements)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
@@ -14528,41 +15751,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_985 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_985);
+        uint64_t cgen_var_1132;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
+        countingStream->write((uint64_t*)&cgen_var_1132, 8);
         marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_986 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_986);
+        uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1133);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+        uint64_t cgen_var_1134;
+        countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1134, 1);
+        countingStream->write((uint64_t*)&cgen_var_1134, 8);
     }
     uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
     stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
-    uint64_t cgen_var_987 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_987);
+    uint64_t cgen_var_1135;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
+    stream->write((uint64_t*)&cgen_var_1135, 8);
     marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_988 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_988);
+    uint64_t cgen_var_1136 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1136);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    uint64_t cgen_var_1137;
+    stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1137, 1);
+    stream->write((uint64_t*)&cgen_var_1137, 8);
+    uint64_t cgen_var_1138;
+    stream->read((uint64_t*)&cgen_var_1138, 8);
+    stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1138, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
     pool->freeAll();
     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
     stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
 }
 
@@ -14595,13 +15825,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_989 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_989);
-        uint64_t cgen_var_990 = (uint64_t)local_ycbcrConversion;
-        countingStream->putBe64(cgen_var_990);
+        uint64_t cgen_var_1139;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
+        countingStream->write((uint64_t*)&cgen_var_1139, 8);
+        uint64_t cgen_var_1140;
+        countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1140, 1);
+        countingStream->write((uint64_t*)&cgen_var_1140, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_991 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_991);
+        uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1141);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -14612,13 +15844,15 @@
     uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
     stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
-    uint64_t cgen_var_992 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_992);
-    uint64_t cgen_var_993 = (uint64_t)local_ycbcrConversion;
-    stream->putBe64(cgen_var_993);
+    uint64_t cgen_var_1142;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
+    stream->write((uint64_t*)&cgen_var_1142, 8);
+    uint64_t cgen_var_1143;
+    stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1143, 1);
+    stream->write((uint64_t*)&cgen_var_1143, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_994 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_994);
+    uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1144);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -14661,8 +15895,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_995 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_995);
+        uint64_t cgen_var_1145;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1145, 1);
+        countingStream->write((uint64_t*)&cgen_var_1145, 8);
         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
         {
@@ -14674,8 +15909,9 @@
     uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
     stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_996 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_996);
+    uint64_t cgen_var_1146;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1146, 1);
+    stream->write((uint64_t*)&cgen_var_1146, 8);
     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
     {
@@ -14684,6 +15920,8 @@
     pool->freeAll();
     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindBufferMemory2KHR_VkResult_return;
 }
 
@@ -14720,8 +15958,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_997 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_997);
+        uint64_t cgen_var_1147;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
+        countingStream->write((uint64_t*)&cgen_var_1147, 8);
         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
         {
@@ -14733,8 +15972,9 @@
     uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
     stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
     stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
-    uint64_t cgen_var_998 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_998);
+    uint64_t cgen_var_1148;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1148, 1);
+    stream->write((uint64_t*)&cgen_var_1148, 8);
     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
     {
@@ -14743,6 +15983,8 @@
     pool->freeAll();
     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
     stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkBindImageMemory2KHR_VkResult_return;
 }
 
@@ -14773,8 +16015,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_999 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_999);
+        uint64_t cgen_var_1149;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1149, 1);
+        countingStream->write((uint64_t*)&cgen_var_1149, 8);
         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
         marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
     }
@@ -14783,8 +16026,9 @@
     uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
     stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
-    uint64_t cgen_var_1000 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1000);
+    uint64_t cgen_var_1150;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
+    stream->write((uint64_t*)&cgen_var_1150, 8);
     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
     marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
     unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
@@ -14825,13 +16069,16 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1001 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1001);
-        uint64_t cgen_var_1002 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_1002);
+        uint64_t cgen_var_1151;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1151, 1);
+        countingStream->write((uint64_t*)&cgen_var_1151, 8);
+        uint64_t cgen_var_1152;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1152, 1);
+        countingStream->write((uint64_t*)&cgen_var_1152, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-        uint64_t cgen_var_1003 = (uint64_t)local_countBuffer;
-        countingStream->putBe64(cgen_var_1003);
+        uint64_t cgen_var_1153;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1153, 1);
+        countingStream->write((uint64_t*)&cgen_var_1153, 8);
         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -14841,13 +16088,16 @@
     uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
     stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
-    uint64_t cgen_var_1004 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1004);
-    uint64_t cgen_var_1005 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_1005);
+    uint64_t cgen_var_1154;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1154, 1);
+    stream->write((uint64_t*)&cgen_var_1154, 8);
+    uint64_t cgen_var_1155;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1155, 1);
+    stream->write((uint64_t*)&cgen_var_1155, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-    uint64_t cgen_var_1006 = (uint64_t)local_countBuffer;
-    stream->putBe64(cgen_var_1006);
+    uint64_t cgen_var_1156;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1156, 1);
+    stream->write((uint64_t*)&cgen_var_1156, 8);
     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -14886,13 +16136,16 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1007 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1007);
-        uint64_t cgen_var_1008 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_1008);
+        uint64_t cgen_var_1157;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1157, 1);
+        countingStream->write((uint64_t*)&cgen_var_1157, 8);
+        uint64_t cgen_var_1158;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1158, 1);
+        countingStream->write((uint64_t*)&cgen_var_1158, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-        uint64_t cgen_var_1009 = (uint64_t)local_countBuffer;
-        countingStream->putBe64(cgen_var_1009);
+        uint64_t cgen_var_1159;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1159, 1);
+        countingStream->write((uint64_t*)&cgen_var_1159, 8);
         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -14902,13 +16155,16 @@
     uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
     stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
-    uint64_t cgen_var_1010 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1010);
-    uint64_t cgen_var_1011 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_1011);
+    uint64_t cgen_var_1160;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1160, 1);
+    stream->write((uint64_t*)&cgen_var_1160, 8);
+    uint64_t cgen_var_1161;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1161, 1);
+    stream->write((uint64_t*)&cgen_var_1161, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-    uint64_t cgen_var_1012 = (uint64_t)local_countBuffer;
-    stream->putBe64(cgen_var_1012);
+    uint64_t cgen_var_1162;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1162, 1);
+    stream->write((uint64_t*)&cgen_var_1162, 8);
     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -14957,38 +16213,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1013 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1013);
+        uint64_t cgen_var_1163;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1163, 1);
+        countingStream->write((uint64_t*)&cgen_var_1163, 8);
         marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1014);
+        uint64_t cgen_var_1164 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1164);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+        uint64_t cgen_var_1165;
+        countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1165, 1);
+        countingStream->write((uint64_t*)&cgen_var_1165, 8);
     }
     uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
     stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1015 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1015);
+    uint64_t cgen_var_1166;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1166, 1);
+    stream->write((uint64_t*)&cgen_var_1166, 8);
     marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1016 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1016);
+    uint64_t cgen_var_1167 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1167);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+    uint64_t cgen_var_1168;
+    stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1168, 1);
+    stream->write((uint64_t*)&cgen_var_1168, 8);
+    uint64_t cgen_var_1169;
+    stream->read((uint64_t*)&cgen_var_1169, 8);
+    stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1169, (VkDebugReportCallbackEXT*)pCallback, 1);
     if (pCallback)
     {
         resources->createMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)pCallback, 1);
@@ -14996,6 +16257,8 @@
     pool->freeAll();
     VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDebugReportCallbackEXT_VkResult_return;
 }
 
@@ -15028,13 +16291,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1017 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1017);
-        uint64_t cgen_var_1018 = (uint64_t)local_callback;
-        countingStream->putBe64(cgen_var_1018);
+        uint64_t cgen_var_1170;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1170, 1);
+        countingStream->write((uint64_t*)&cgen_var_1170, 8);
+        uint64_t cgen_var_1171;
+        countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1171, 1);
+        countingStream->write((uint64_t*)&cgen_var_1171, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1019 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1019);
+        uint64_t cgen_var_1172 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1172);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -15045,13 +16310,15 @@
     uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
     stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1020 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1020);
-    uint64_t cgen_var_1021 = (uint64_t)local_callback;
-    stream->putBe64(cgen_var_1021);
+    uint64_t cgen_var_1173;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1173, 1);
+    stream->write((uint64_t*)&cgen_var_1173, 8);
+    uint64_t cgen_var_1174;
+    stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1174, 1);
+    stream->write((uint64_t*)&cgen_var_1174, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1022 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1022);
+    uint64_t cgen_var_1175 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1175);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -15101,8 +16368,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1023 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1023);
+        uint64_t cgen_var_1176;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1176, 1);
+        countingStream->write((uint64_t*)&cgen_var_1176, 8);
         countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
         countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
         countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
@@ -15116,8 +16384,9 @@
     uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
     stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1024 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1024);
+    uint64_t cgen_var_1177;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1177, 1);
+    stream->write((uint64_t*)&cgen_var_1177, 8);
     stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
     stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
     stream->write((uint64_t*)&local_object, sizeof(uint64_t));
@@ -15166,8 +16435,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1025 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1025);
+        uint64_t cgen_var_1178;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
+        countingStream->write((uint64_t*)&cgen_var_1178, 8);
         marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
     }
     uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15175,12 +16445,15 @@
     uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
     stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1026 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1026);
+    uint64_t cgen_var_1179;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
+    stream->write((uint64_t*)&cgen_var_1179, 8);
     marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
     pool->freeAll();
     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
     stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
 }
 
@@ -15208,8 +16481,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1027 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1027);
+        uint64_t cgen_var_1180;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
+        countingStream->write((uint64_t*)&cgen_var_1180, 8);
         marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
     }
     uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15217,12 +16491,15 @@
     uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
     stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1028 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1028);
+    uint64_t cgen_var_1181;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1181, 1);
+    stream->write((uint64_t*)&cgen_var_1181, 8);
     marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
     pool->freeAll();
     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
     stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
 }
 
@@ -15250,8 +16527,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1029 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1029);
+        uint64_t cgen_var_1182;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1182, 1);
+        countingStream->write((uint64_t*)&cgen_var_1182, 8);
         marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
     }
     uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15259,8 +16537,9 @@
     uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
     stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1030 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1030);
+    uint64_t cgen_var_1183;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1183, 1);
+    stream->write((uint64_t*)&cgen_var_1183, 8);
     marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
     pool->freeAll();
 }
@@ -15277,16 +16556,18 @@
     resources->unwrapMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)&local_commandBuffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1031 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1031);
+        uint64_t cgen_var_1184;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1184, 1);
+        countingStream->write((uint64_t*)&cgen_var_1184, 8);
     }
     uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
     stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1032 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1032);
+    uint64_t cgen_var_1185;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1185, 1);
+    stream->write((uint64_t*)&cgen_var_1185, 8);
     pool->freeAll();
 }
 
@@ -15314,8 +16595,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1033 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1033);
+        uint64_t cgen_var_1186;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1186, 1);
+        countingStream->write((uint64_t*)&cgen_var_1186, 8);
         marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
     }
     uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15323,8 +16605,9 @@
     uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
     stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1034 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1034);
+    uint64_t cgen_var_1187;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1187, 1);
+    stream->write((uint64_t*)&cgen_var_1187, 8);
     marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
     pool->freeAll();
 }
@@ -15367,13 +16650,16 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1035 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1035);
-        uint64_t cgen_var_1036 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_1036);
+        uint64_t cgen_var_1188;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1188, 1);
+        countingStream->write((uint64_t*)&cgen_var_1188, 8);
+        uint64_t cgen_var_1189;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1189, 1);
+        countingStream->write((uint64_t*)&cgen_var_1189, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-        uint64_t cgen_var_1037 = (uint64_t)local_countBuffer;
-        countingStream->putBe64(cgen_var_1037);
+        uint64_t cgen_var_1190;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1190, 1);
+        countingStream->write((uint64_t*)&cgen_var_1190, 8);
         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -15383,13 +16669,16 @@
     uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
     stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
-    uint64_t cgen_var_1038 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1038);
-    uint64_t cgen_var_1039 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_1039);
+    uint64_t cgen_var_1191;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1191, 1);
+    stream->write((uint64_t*)&cgen_var_1191, 8);
+    uint64_t cgen_var_1192;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1192, 1);
+    stream->write((uint64_t*)&cgen_var_1192, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-    uint64_t cgen_var_1040 = (uint64_t)local_countBuffer;
-    stream->putBe64(cgen_var_1040);
+    uint64_t cgen_var_1193;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1193, 1);
+    stream->write((uint64_t*)&cgen_var_1193, 8);
     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -15428,13 +16717,16 @@
     local_stride = stride;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1041 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1041);
-        uint64_t cgen_var_1042 = (uint64_t)local_buffer;
-        countingStream->putBe64(cgen_var_1042);
+        uint64_t cgen_var_1194;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1194, 1);
+        countingStream->write((uint64_t*)&cgen_var_1194, 8);
+        uint64_t cgen_var_1195;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1195, 1);
+        countingStream->write((uint64_t*)&cgen_var_1195, 8);
         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-        uint64_t cgen_var_1043 = (uint64_t)local_countBuffer;
-        countingStream->putBe64(cgen_var_1043);
+        uint64_t cgen_var_1196;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1196, 1);
+        countingStream->write((uint64_t*)&cgen_var_1196, 8);
         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -15444,13 +16736,16 @@
     uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
     stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
-    uint64_t cgen_var_1044 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1044);
-    uint64_t cgen_var_1045 = (uint64_t)local_buffer;
-    stream->putBe64(cgen_var_1045);
+    uint64_t cgen_var_1197;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1197, 1);
+    stream->write((uint64_t*)&cgen_var_1197, 8);
+    uint64_t cgen_var_1198;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1198, 1);
+    stream->write((uint64_t*)&cgen_var_1198, 8);
     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
-    uint64_t cgen_var_1046 = (uint64_t)local_countBuffer;
-    stream->putBe64(cgen_var_1046);
+    uint64_t cgen_var_1199;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1199, 1);
+    stream->write((uint64_t*)&cgen_var_1199, 8);
     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
@@ -15491,22 +16786,24 @@
     local_infoType = infoType;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1047 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1047);
-        uint64_t cgen_var_1048 = (uint64_t)local_pipeline;
-        countingStream->putBe64(cgen_var_1048);
+        uint64_t cgen_var_1200;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1200, 1);
+        countingStream->write((uint64_t*)&cgen_var_1200, 8);
+        uint64_t cgen_var_1201;
+        countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1201, 1);
+        countingStream->write((uint64_t*)&cgen_var_1201, 8);
         countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
         countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1049 = (uint64_t)(uintptr_t)pInfoSize;
-        countingStream->putBe64(cgen_var_1049);
+        uint64_t cgen_var_1202 = (uint64_t)(uintptr_t)pInfoSize;
+        countingStream->putBe64(cgen_var_1202);
         if (pInfoSize)
         {
             countingStream->write((size_t*)pInfoSize, sizeof(size_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)pInfo;
-        countingStream->putBe64(cgen_var_1050);
+        uint64_t cgen_var_1203 = (uint64_t)(uintptr_t)pInfo;
+        countingStream->putBe64(cgen_var_1203);
         if (pInfo)
         {
             countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
@@ -15517,22 +16814,24 @@
     uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
     stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
     stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
-    uint64_t cgen_var_1051 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1051);
-    uint64_t cgen_var_1052 = (uint64_t)local_pipeline;
-    stream->putBe64(cgen_var_1052);
+    uint64_t cgen_var_1204;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
+    stream->write((uint64_t*)&cgen_var_1204, 8);
+    uint64_t cgen_var_1205;
+    stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1205, 1);
+    stream->write((uint64_t*)&cgen_var_1205, 8);
     stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
     stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)pInfoSize;
-    stream->putBe64(cgen_var_1053);
+    uint64_t cgen_var_1206 = (uint64_t)(uintptr_t)pInfoSize;
+    stream->putBe64(cgen_var_1206);
     if (pInfoSize)
     {
         stream->write((size_t*)pInfoSize, sizeof(size_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_1054 = (uint64_t)(uintptr_t)pInfo;
-    stream->putBe64(cgen_var_1054);
+    uint64_t cgen_var_1207 = (uint64_t)(uintptr_t)pInfo;
+    stream->putBe64(cgen_var_1207);
     if (pInfo)
     {
         stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
@@ -15562,6 +16861,8 @@
     pool->freeAll();
     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
     stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetShaderInfoAMD_VkResult_return;
 }
 
@@ -15602,8 +16903,9 @@
     local_externalHandleType = externalHandleType;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1057 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1057);
+        uint64_t cgen_var_1210;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1210, 1);
+        countingStream->write((uint64_t*)&cgen_var_1210, 8);
         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
@@ -15617,8 +16919,9 @@
     uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
     stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
-    uint64_t cgen_var_1058 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1058);
+    uint64_t cgen_var_1211;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1211, 1);
+    stream->write((uint64_t*)&cgen_var_1211, 8);
     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
@@ -15630,6 +16933,8 @@
     pool->freeAll();
     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
 }
 
@@ -15657,10 +16962,12 @@
     local_handleType = handleType;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1059 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1059);
-        uint64_t cgen_var_1060 = (uint64_t)local_memory;
-        countingStream->putBe64(cgen_var_1060);
+        uint64_t cgen_var_1212;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1212, 1);
+        countingStream->write((uint64_t*)&cgen_var_1212, 8);
+        uint64_t cgen_var_1213;
+        countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1213, 1);
+        countingStream->write((uint64_t*)&cgen_var_1213, 8);
         countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
     }
@@ -15669,16 +16976,20 @@
     uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
     stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
-    uint64_t cgen_var_1061 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1061);
-    uint64_t cgen_var_1062 = (uint64_t)local_memory;
-    stream->putBe64(cgen_var_1062);
+    uint64_t cgen_var_1214;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
+    stream->write((uint64_t*)&cgen_var_1214, 8);
+    uint64_t cgen_var_1215;
+    stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1215, 1);
+    stream->write((uint64_t*)&cgen_var_1215, 8);
     stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
     pool->freeAll();
     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryWin32HandleNV_VkResult_return;
 }
 
@@ -15726,41 +17037,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1063 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1063);
+        uint64_t cgen_var_1216;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1216, 1);
+        countingStream->write((uint64_t*)&cgen_var_1216, 8);
         marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1064);
+        uint64_t cgen_var_1217 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1217);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_1218;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1218, 1);
+        countingStream->write((uint64_t*)&cgen_var_1218, 8);
     }
     uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
     stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
-    uint64_t cgen_var_1065 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1065);
+    uint64_t cgen_var_1219;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1219, 1);
+    stream->write((uint64_t*)&cgen_var_1219, 8);
     marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1066 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1066);
+    uint64_t cgen_var_1220 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1220);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_1221;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1221, 1);
+    stream->write((uint64_t*)&cgen_var_1221, 8);
+    uint64_t cgen_var_1222;
+    stream->read((uint64_t*)&cgen_var_1222, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1222, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
     stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateViSurfaceNN_VkResult_return;
 }
 
@@ -15794,8 +17112,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1067 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1067);
+        uint64_t cgen_var_1223;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
+        countingStream->write((uint64_t*)&cgen_var_1223, 8);
         marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
     }
     uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15803,8 +17122,9 @@
     uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
     stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1068 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1068);
+    uint64_t cgen_var_1224;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1224, 1);
+    stream->write((uint64_t*)&cgen_var_1224, 8);
     marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
     pool->freeAll();
 }
@@ -15821,16 +17141,18 @@
     resources->unwrapMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)&local_commandBuffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1069 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1069);
+        uint64_t cgen_var_1225;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1225, 1);
+        countingStream->write((uint64_t*)&cgen_var_1225, 8);
     }
     uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
     stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1070 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1070);
+    uint64_t cgen_var_1226;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
+    stream->write((uint64_t*)&cgen_var_1226, 8);
     pool->freeAll();
 }
 
@@ -15860,8 +17182,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1071 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1071);
+        uint64_t cgen_var_1227;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1227, 1);
+        countingStream->write((uint64_t*)&cgen_var_1227, 8);
         marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
     }
     uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15869,8 +17192,9 @@
     uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
     stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1072 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1072);
+    uint64_t cgen_var_1228;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1228, 1);
+    stream->write((uint64_t*)&cgen_var_1228, 8);
     marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
     pool->freeAll();
 }
@@ -15899,8 +17223,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1073 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1073);
+        uint64_t cgen_var_1229;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
+        countingStream->write((uint64_t*)&cgen_var_1229, 8);
         marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
     }
     uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -15908,8 +17233,9 @@
     uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
     stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1074 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1074);
+    uint64_t cgen_var_1230;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1230, 1);
+    stream->write((uint64_t*)&cgen_var_1230, 8);
     marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
     pool->freeAll();
 }
@@ -15952,38 +17278,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1075 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1075);
+        uint64_t cgen_var_1231;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1231, 1);
+        countingStream->write((uint64_t*)&cgen_var_1231, 8);
         marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1076 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1076);
+        uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1232);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+        uint64_t cgen_var_1233;
+        countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1233, 1);
+        countingStream->write((uint64_t*)&cgen_var_1233, 8);
     }
     uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
     stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1077 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1077);
+    uint64_t cgen_var_1234;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1234, 1);
+    stream->write((uint64_t*)&cgen_var_1234, 8);
     marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1078 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1078);
+    uint64_t cgen_var_1235 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1235);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+    uint64_t cgen_var_1236;
+    stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1236, 1);
+    stream->write((uint64_t*)&cgen_var_1236, 8);
+    uint64_t cgen_var_1237;
+    stream->read((uint64_t*)&cgen_var_1237, 8);
+    stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1237, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
     if (pIndirectCommandsLayout)
     {
         resources->createMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
@@ -15991,6 +17322,8 @@
     pool->freeAll();
     VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
     stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
 }
 
@@ -16023,13 +17356,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1079 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1079);
-        uint64_t cgen_var_1080 = (uint64_t)local_indirectCommandsLayout;
-        countingStream->putBe64(cgen_var_1080);
+        uint64_t cgen_var_1238;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
+        countingStream->write((uint64_t*)&cgen_var_1238, 8);
+        uint64_t cgen_var_1239;
+        countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1239, 1);
+        countingStream->write((uint64_t*)&cgen_var_1239, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1081 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1081);
+        uint64_t cgen_var_1240 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1240);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -16040,13 +17375,15 @@
     uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
     stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1082 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1082);
-    uint64_t cgen_var_1083 = (uint64_t)local_indirectCommandsLayout;
-    stream->putBe64(cgen_var_1083);
+    uint64_t cgen_var_1241;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1241, 1);
+    stream->write((uint64_t*)&cgen_var_1241, 8);
+    uint64_t cgen_var_1242;
+    stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1242, 1);
+    stream->write((uint64_t*)&cgen_var_1242, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1084 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1084);
+    uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1243);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -16093,38 +17430,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1085 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1085);
+        uint64_t cgen_var_1244;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1244, 1);
+        countingStream->write((uint64_t*)&cgen_var_1244, 8);
         marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1086 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1086);
+        uint64_t cgen_var_1245 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1245);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+        uint64_t cgen_var_1246;
+        countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1246, 1);
+        countingStream->write((uint64_t*)&cgen_var_1246, 8);
     }
     uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
     stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1087 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1087);
+    uint64_t cgen_var_1247;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1247, 1);
+    stream->write((uint64_t*)&cgen_var_1247, 8);
     marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1088 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1088);
+    uint64_t cgen_var_1248 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1248);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+    uint64_t cgen_var_1249;
+    stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1249, 1);
+    stream->write((uint64_t*)&cgen_var_1249, 8);
+    uint64_t cgen_var_1250;
+    stream->read((uint64_t*)&cgen_var_1250, 8);
+    stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1250, (VkObjectTableNVX*)pObjectTable, 1);
     if (pObjectTable)
     {
         resources->createMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)pObjectTable, 1);
@@ -16132,6 +17474,8 @@
     pool->freeAll();
     VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
     stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateObjectTableNVX_VkResult_return;
 }
 
@@ -16164,13 +17508,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1089 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1089);
-        uint64_t cgen_var_1090 = (uint64_t)local_objectTable;
-        countingStream->putBe64(cgen_var_1090);
+        uint64_t cgen_var_1251;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1251, 1);
+        countingStream->write((uint64_t*)&cgen_var_1251, 8);
+        uint64_t cgen_var_1252;
+        countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1252, 1);
+        countingStream->write((uint64_t*)&cgen_var_1252, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1091);
+        uint64_t cgen_var_1253 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1253);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -16181,13 +17527,15 @@
     uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
     stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1092 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1092);
-    uint64_t cgen_var_1093 = (uint64_t)local_objectTable;
-    stream->putBe64(cgen_var_1093);
+    uint64_t cgen_var_1254;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1254, 1);
+    stream->write((uint64_t*)&cgen_var_1254, 8);
+    uint64_t cgen_var_1255;
+    stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1255, 1);
+    stream->write((uint64_t*)&cgen_var_1255, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1094);
+    uint64_t cgen_var_1256 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1256);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -16225,10 +17573,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1095 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1095);
-        uint64_t cgen_var_1096 = (uint64_t)local_objectTable;
-        countingStream->putBe64(cgen_var_1096);
+        uint64_t cgen_var_1257;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
+        countingStream->write((uint64_t*)&cgen_var_1257, 8);
+        uint64_t cgen_var_1258;
+        countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1258, 1);
+        countingStream->write((uint64_t*)&cgen_var_1258, 8);
         countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
         (void)local_ppObjectTableEntries;
         countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
@@ -16238,16 +17588,20 @@
     uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
     stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1097 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1097);
-    uint64_t cgen_var_1098 = (uint64_t)local_objectTable;
-    stream->putBe64(cgen_var_1098);
+    uint64_t cgen_var_1259;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1259, 1);
+    stream->write((uint64_t*)&cgen_var_1259, 8);
+    uint64_t cgen_var_1260;
+    stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1260, 1);
+    stream->write((uint64_t*)&cgen_var_1260, 8);
     stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
     (void)local_ppObjectTableEntries;
     stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
     pool->freeAll();
     VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
     stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkRegisterObjectsNVX_VkResult_return;
 }
 
@@ -16284,10 +17638,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1099 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1099);
-        uint64_t cgen_var_1100 = (uint64_t)local_objectTable;
-        countingStream->putBe64(cgen_var_1100);
+        uint64_t cgen_var_1261;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1261, 1);
+        countingStream->write((uint64_t*)&cgen_var_1261, 8);
+        uint64_t cgen_var_1262;
+        countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1262, 1);
+        countingStream->write((uint64_t*)&cgen_var_1262, 8);
         countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
         countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
         countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
@@ -16297,16 +17653,20 @@
     uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
     stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1101 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1101);
-    uint64_t cgen_var_1102 = (uint64_t)local_objectTable;
-    stream->putBe64(cgen_var_1102);
+    uint64_t cgen_var_1263;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1263, 1);
+    stream->write((uint64_t*)&cgen_var_1263, 8);
+    uint64_t cgen_var_1264;
+    stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1264, 1);
+    stream->write((uint64_t*)&cgen_var_1264, 8);
     stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
     stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
     stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
     pool->freeAll();
     VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
     stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkUnregisterObjectsNVX_VkResult_return;
 }
 
@@ -16324,8 +17684,9 @@
     resources->unwrapMapping()->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)&local_physicalDevice);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1103 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1103);
+        uint64_t cgen_var_1265;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1265, 1);
+        countingStream->write((uint64_t*)&cgen_var_1265, 8);
         marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
         marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
     }
@@ -16334,8 +17695,9 @@
     uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
     stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
-    uint64_t cgen_var_1104 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1104);
+    uint64_t cgen_var_1266;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1266, 1);
+    stream->write((uint64_t*)&cgen_var_1266, 8);
     marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
     marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
     unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
@@ -16381,8 +17743,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1105 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1105);
+        uint64_t cgen_var_1267;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
+        countingStream->write((uint64_t*)&cgen_var_1267, 8);
         countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
@@ -16395,8 +17758,9 @@
     uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
     stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
-    uint64_t cgen_var_1106 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1106);
+    uint64_t cgen_var_1268;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
+    stream->write((uint64_t*)&cgen_var_1268, 8);
     stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
     stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
@@ -16424,23 +17788,29 @@
     resources->unwrapMapping()->mapHandles_VkDisplayKHR((VkDisplayKHR*)&local_display);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1107 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1107);
-        uint64_t cgen_var_1108 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_1108);
+        uint64_t cgen_var_1269;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1269, 1);
+        countingStream->write((uint64_t*)&cgen_var_1269, 8);
+        uint64_t cgen_var_1270;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1270, 1);
+        countingStream->write((uint64_t*)&cgen_var_1270, 8);
     }
     uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
     stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1109 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1109);
-    uint64_t cgen_var_1110 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_1110);
+    uint64_t cgen_var_1271;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1271, 1);
+    stream->write((uint64_t*)&cgen_var_1271, 8);
+    uint64_t cgen_var_1272;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1272, 1);
+    stream->write((uint64_t*)&cgen_var_1272, 8);
     pool->freeAll();
     VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
     stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkReleaseDisplayEXT_VkResult_return;
 }
 
@@ -16463,26 +17833,32 @@
     resources->unwrapMapping()->mapHandles_VkDisplayKHR((VkDisplayKHR*)&local_display);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1111 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1111);
+        uint64_t cgen_var_1273;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1273, 1);
+        countingStream->write((uint64_t*)&cgen_var_1273, 8);
         countingStream->write((Display*)dpy, sizeof(Display));
-        uint64_t cgen_var_1112 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_1112);
+        uint64_t cgen_var_1274;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1274, 1);
+        countingStream->write((uint64_t*)&cgen_var_1274, 8);
     }
     uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
     stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1113 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1113);
+    uint64_t cgen_var_1275;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1275, 1);
+    stream->write((uint64_t*)&cgen_var_1275, 8);
     stream->write((Display*)dpy, sizeof(Display));
-    uint64_t cgen_var_1114 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_1114);
+    uint64_t cgen_var_1276;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1276, 1);
+    stream->write((uint64_t*)&cgen_var_1276, 8);
     stream->read((Display*)dpy, sizeof(Display));
     pool->freeAll();
     VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
     stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkAcquireXlibDisplayEXT_VkResult_return;
 }
 
@@ -16503,30 +17879,37 @@
     local_rrOutput = rrOutput;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1115 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1115);
+        uint64_t cgen_var_1277;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1277, 1);
+        countingStream->write((uint64_t*)&cgen_var_1277, 8);
         countingStream->write((Display*)dpy, sizeof(Display));
         countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+        uint64_t cgen_var_1278;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1278, 1);
+        countingStream->write((uint64_t*)&cgen_var_1278, 8);
     }
     uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
     stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1116 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1116);
+    uint64_t cgen_var_1279;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1279, 1);
+    stream->write((uint64_t*)&cgen_var_1279, 8);
     stream->write((Display*)dpy, sizeof(Display));
     stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+    uint64_t cgen_var_1280;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1280, 1);
+    stream->write((uint64_t*)&cgen_var_1280, 8);
     stream->read((Display*)dpy, sizeof(Display));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+    uint64_t cgen_var_1281;
+    stream->read((uint64_t*)&cgen_var_1281, 8);
+    stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1281, (VkDisplayKHR*)pDisplay, 1);
     pool->freeAll();
     VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
     stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetRandROutputDisplayEXT_VkResult_return;
 }
 
@@ -16549,10 +17932,12 @@
     resources->unwrapMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&local_surface);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1117 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1117);
-        uint64_t cgen_var_1118 = (uint64_t)local_surface;
-        countingStream->putBe64(cgen_var_1118);
+        uint64_t cgen_var_1282;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1282, 1);
+        countingStream->write((uint64_t*)&cgen_var_1282, 8);
+        uint64_t cgen_var_1283;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1283, 1);
+        countingStream->write((uint64_t*)&cgen_var_1283, 8);
         marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
     }
     uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -16560,15 +17945,19 @@
     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
-    uint64_t cgen_var_1119 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1119);
-    uint64_t cgen_var_1120 = (uint64_t)local_surface;
-    stream->putBe64(cgen_var_1120);
+    uint64_t cgen_var_1284;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1284, 1);
+    stream->write((uint64_t*)&cgen_var_1284, 8);
+    uint64_t cgen_var_1285;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1285, 1);
+    stream->write((uint64_t*)&cgen_var_1285, 8);
     marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
     unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
     pool->freeAll();
     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
     stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
 }
 
@@ -16602,10 +17991,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1121 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1121);
-        uint64_t cgen_var_1122 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_1122);
+        uint64_t cgen_var_1286;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1286, 1);
+        countingStream->write((uint64_t*)&cgen_var_1286, 8);
+        uint64_t cgen_var_1287;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1287, 1);
+        countingStream->write((uint64_t*)&cgen_var_1287, 8);
         marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
     }
     uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -16613,14 +18004,18 @@
     uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
     stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1123 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1123);
-    uint64_t cgen_var_1124 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_1124);
+    uint64_t cgen_var_1288;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1288, 1);
+    stream->write((uint64_t*)&cgen_var_1288, 8);
+    uint64_t cgen_var_1289;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1289, 1);
+    stream->write((uint64_t*)&cgen_var_1289, 8);
     marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
     pool->freeAll();
     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
     stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkDisplayPowerControlEXT_VkResult_return;
 }
 
@@ -16662,41 +18057,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1125 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1125);
+        uint64_t cgen_var_1290;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1290, 1);
+        countingStream->write((uint64_t*)&cgen_var_1290, 8);
         marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1126);
+        uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1291);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+        uint64_t cgen_var_1292;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1292, 1);
+        countingStream->write((uint64_t*)&cgen_var_1292, 8);
     }
     uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
     stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1127 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1127);
+    uint64_t cgen_var_1293;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1293, 1);
+    stream->write((uint64_t*)&cgen_var_1293, 8);
     marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1128 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1128);
+    uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1294);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFence*)pFence, sizeof(VkFence));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkFence*)pFence, sizeof(VkFence));
+    uint64_t cgen_var_1295;
+    stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1295, 1);
+    stream->write((uint64_t*)&cgen_var_1295, 8);
+    uint64_t cgen_var_1296;
+    stream->read((uint64_t*)&cgen_var_1296, 8);
+    stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1296, (VkFence*)pFence, 1);
     pool->freeAll();
     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
     stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkRegisterDeviceEventEXT_VkResult_return;
 }
 
@@ -16742,45 +18144,54 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1129 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1129);
-        uint64_t cgen_var_1130 = (uint64_t)local_display;
-        countingStream->putBe64(cgen_var_1130);
+        uint64_t cgen_var_1297;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
+        countingStream->write((uint64_t*)&cgen_var_1297, 8);
+        uint64_t cgen_var_1298;
+        countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
+        countingStream->write((uint64_t*)&cgen_var_1298, 8);
         marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1131);
+        uint64_t cgen_var_1299 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1299);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+        uint64_t cgen_var_1300;
+        countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1300, 1);
+        countingStream->write((uint64_t*)&cgen_var_1300, 8);
     }
     uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
     stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1132 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1132);
-    uint64_t cgen_var_1133 = (uint64_t)local_display;
-    stream->putBe64(cgen_var_1133);
+    uint64_t cgen_var_1301;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
+    stream->write((uint64_t*)&cgen_var_1301, 8);
+    uint64_t cgen_var_1302;
+    stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
+    stream->write((uint64_t*)&cgen_var_1302, 8);
     marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1134);
+    uint64_t cgen_var_1303 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1303);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkFence*)pFence, sizeof(VkFence));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkFence*)pFence, sizeof(VkFence));
+    uint64_t cgen_var_1304;
+    stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1304, 1);
+    stream->write((uint64_t*)&cgen_var_1304, 8);
+    uint64_t cgen_var_1305;
+    stream->read((uint64_t*)&cgen_var_1305, 8);
+    stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1305, (VkFence*)pFence, 1);
     pool->freeAll();
     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
     stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkRegisterDisplayEventEXT_VkResult_return;
 }
 
@@ -16804,10 +18215,12 @@
     local_counter = counter;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1135 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1135);
-        uint64_t cgen_var_1136 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_1136);
+        uint64_t cgen_var_1306;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1306, 1);
+        countingStream->write((uint64_t*)&cgen_var_1306, 8);
+        uint64_t cgen_var_1307;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1307, 1);
+        countingStream->write((uint64_t*)&cgen_var_1307, 8);
         countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
         countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
     }
@@ -16816,16 +18229,20 @@
     uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
     stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1137 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1137);
-    uint64_t cgen_var_1138 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_1138);
+    uint64_t cgen_var_1308;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1308, 1);
+    stream->write((uint64_t*)&cgen_var_1308, 8);
+    uint64_t cgen_var_1309;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1309, 1);
+    stream->write((uint64_t*)&cgen_var_1309, 8);
     stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
     stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
     stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
     pool->freeAll();
     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
     stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetSwapchainCounterEXT_VkResult_return;
 }
 
@@ -16848,10 +18265,12 @@
     resources->unwrapMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&local_swapchain);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1139 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1139);
-        uint64_t cgen_var_1140 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_1140);
+        uint64_t cgen_var_1310;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1310, 1);
+        countingStream->write((uint64_t*)&cgen_var_1310, 8);
+        uint64_t cgen_var_1311;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1311, 1);
+        countingStream->write((uint64_t*)&cgen_var_1311, 8);
         marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
     }
     uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -16859,15 +18278,19 @@
     uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
     stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
     stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
-    uint64_t cgen_var_1141 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1141);
-    uint64_t cgen_var_1142 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_1142);
+    uint64_t cgen_var_1312;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
+    stream->write((uint64_t*)&cgen_var_1312, 8);
+    uint64_t cgen_var_1313;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1313, 1);
+    stream->write((uint64_t*)&cgen_var_1313, 8);
     marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
     unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
     pool->freeAll();
     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
     stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
 }
 
@@ -16889,20 +18312,22 @@
     resources->unwrapMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&local_swapchain);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1143 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1143);
-        uint64_t cgen_var_1144 = (uint64_t)local_swapchain;
-        countingStream->putBe64(cgen_var_1144);
+        uint64_t cgen_var_1314;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
+        countingStream->write((uint64_t*)&cgen_var_1314, 8);
+        uint64_t cgen_var_1315;
+        countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1315, 1);
+        countingStream->write((uint64_t*)&cgen_var_1315, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1145 = (uint64_t)(uintptr_t)pPresentationTimingCount;
-        countingStream->putBe64(cgen_var_1145);
+        uint64_t cgen_var_1316 = (uint64_t)(uintptr_t)pPresentationTimingCount;
+        countingStream->putBe64(cgen_var_1316);
         if (pPresentationTimingCount)
         {
             countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)pPresentationTimings;
-        countingStream->putBe64(cgen_var_1146);
+        uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)pPresentationTimings;
+        countingStream->putBe64(cgen_var_1317);
         if (pPresentationTimings)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
@@ -16916,20 +18341,22 @@
     uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
     stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
-    uint64_t cgen_var_1147 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1147);
-    uint64_t cgen_var_1148 = (uint64_t)local_swapchain;
-    stream->putBe64(cgen_var_1148);
+    uint64_t cgen_var_1318;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1318, 1);
+    stream->write((uint64_t*)&cgen_var_1318, 8);
+    uint64_t cgen_var_1319;
+    stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1319, 1);
+    stream->write((uint64_t*)&cgen_var_1319, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)pPresentationTimingCount;
-    stream->putBe64(cgen_var_1149);
+    uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)pPresentationTimingCount;
+    stream->putBe64(cgen_var_1320);
     if (pPresentationTimingCount)
     {
         stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_1150 = (uint64_t)(uintptr_t)pPresentationTimings;
-    stream->putBe64(cgen_var_1150);
+    uint64_t cgen_var_1321 = (uint64_t)(uintptr_t)pPresentationTimings;
+    stream->putBe64(cgen_var_1321);
     if (pPresentationTimings)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
@@ -16965,6 +18392,8 @@
     pool->freeAll();
     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
     stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
 }
 
@@ -17016,8 +18445,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1153 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1153);
+        uint64_t cgen_var_1324;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1324, 1);
+        countingStream->write((uint64_t*)&cgen_var_1324, 8);
         countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
         countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
         for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
@@ -17030,8 +18460,9 @@
     uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
     stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1154 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1154);
+    uint64_t cgen_var_1325;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1325, 1);
+    stream->write((uint64_t*)&cgen_var_1325, 8);
     stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
     stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
@@ -17091,11 +18522,17 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1155 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1155);
+        uint64_t cgen_var_1326;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
+        countingStream->write((uint64_t*)&cgen_var_1326, 8);
         countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSwapchainKHR*)local_pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+        if (((swapchainCount)))
+        {
+            uint64_t* cgen_var_1327;
+            countingStream->alloc((void**)&cgen_var_1327, ((swapchainCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1327, ((swapchainCount)));
+            countingStream->write((uint64_t*)cgen_var_1327, 8);
+        }
         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
         {
             marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
@@ -17106,11 +18543,17 @@
     uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
     stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1156 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1156);
+    uint64_t cgen_var_1328;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
+    stream->write((uint64_t*)&cgen_var_1328, 8);
     stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSwapchainKHR*)local_pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+    if (((swapchainCount)))
+    {
+        uint64_t* cgen_var_1329;
+        stream->alloc((void**)&cgen_var_1329, ((swapchainCount)) * 8);
+        stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1329, ((swapchainCount)));
+        stream->write((uint64_t*)cgen_var_1329, 8);
+    }
     for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
     {
         marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
@@ -17158,41 +18601,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1157 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1157);
+        uint64_t cgen_var_1330;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1330, 1);
+        countingStream->write((uint64_t*)&cgen_var_1330, 8);
         marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1158 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1158);
+        uint64_t cgen_var_1331 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1331);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_1332;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1332, 1);
+        countingStream->write((uint64_t*)&cgen_var_1332, 8);
     }
     uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
     stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
-    uint64_t cgen_var_1159 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1159);
+    uint64_t cgen_var_1333;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1333, 1);
+    stream->write((uint64_t*)&cgen_var_1333, 8);
     marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1160 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1160);
+    uint64_t cgen_var_1334 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1334);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_1335;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1335, 1);
+    stream->write((uint64_t*)&cgen_var_1335, 8);
+    uint64_t cgen_var_1336;
+    stream->read((uint64_t*)&cgen_var_1336, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1336, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
     stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateIOSSurfaceMVK_VkResult_return;
 }
 
@@ -17236,41 +18686,48 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1161 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1161);
+        uint64_t cgen_var_1337;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1337, 1);
+        countingStream->write((uint64_t*)&cgen_var_1337, 8);
         marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1162 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1162);
+        uint64_t cgen_var_1338 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1338);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+        uint64_t cgen_var_1339;
+        countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1339, 1);
+        countingStream->write((uint64_t*)&cgen_var_1339, 8);
     }
     uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
     stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
-    uint64_t cgen_var_1163 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1163);
+    uint64_t cgen_var_1340;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1340, 1);
+    stream->write((uint64_t*)&cgen_var_1340, 8);
     marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1164 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1164);
+    uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1341);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    uint64_t cgen_var_1342;
+    stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1342, 1);
+    stream->write((uint64_t*)&cgen_var_1342, 8);
+    uint64_t cgen_var_1343;
+    stream->read((uint64_t*)&cgen_var_1343, 8);
+    stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1343, (VkSurfaceKHR*)pSurface, 1);
     pool->freeAll();
     VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
     stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateMacOSSurfaceMVK_VkResult_return;
 }
 
@@ -17304,8 +18761,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1165 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1165);
+        uint64_t cgen_var_1344;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
+        countingStream->write((uint64_t*)&cgen_var_1344, 8);
         marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
     }
     uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17313,12 +18771,15 @@
     uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
     stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1166 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1166);
+    uint64_t cgen_var_1345;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1345, 1);
+    stream->write((uint64_t*)&cgen_var_1345, 8);
     marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
     pool->freeAll();
     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
     stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
 }
 
@@ -17346,8 +18807,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1167 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1167);
+        uint64_t cgen_var_1346;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
+        countingStream->write((uint64_t*)&cgen_var_1346, 8);
         marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
     }
     uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17355,12 +18817,15 @@
     uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
     stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1168 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1168);
+    uint64_t cgen_var_1347;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1347, 1);
+    stream->write((uint64_t*)&cgen_var_1347, 8);
     marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
     pool->freeAll();
     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
     stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
 }
 
@@ -17388,8 +18853,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1169 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_1169);
+        uint64_t cgen_var_1348;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1348, 1);
+        countingStream->write((uint64_t*)&cgen_var_1348, 8);
         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     }
     uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17397,8 +18863,9 @@
     uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
     stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1170 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_1170);
+    uint64_t cgen_var_1349;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1349, 1);
+    stream->write((uint64_t*)&cgen_var_1349, 8);
     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     pool->freeAll();
 }
@@ -17415,16 +18882,18 @@
     resources->unwrapMapping()->mapHandles_VkQueue((VkQueue*)&local_queue);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1171 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_1171);
+        uint64_t cgen_var_1350;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1350, 1);
+        countingStream->write((uint64_t*)&cgen_var_1350, 8);
     }
     uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
     stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1172 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_1172);
+    uint64_t cgen_var_1351;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1351, 1);
+    stream->write((uint64_t*)&cgen_var_1351, 8);
     pool->freeAll();
 }
 
@@ -17452,8 +18921,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1173 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_1173);
+        uint64_t cgen_var_1352;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1352, 1);
+        countingStream->write((uint64_t*)&cgen_var_1352, 8);
         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     }
     uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17461,8 +18931,9 @@
     uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
     stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1174 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_1174);
+    uint64_t cgen_var_1353;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1353, 1);
+    stream->write((uint64_t*)&cgen_var_1353, 8);
     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     pool->freeAll();
 }
@@ -17491,8 +18962,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1175 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1175);
+        uint64_t cgen_var_1354;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1354, 1);
+        countingStream->write((uint64_t*)&cgen_var_1354, 8);
         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     }
     uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17500,8 +18972,9 @@
     uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
     stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1176 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1176);
+    uint64_t cgen_var_1355;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1355, 1);
+    stream->write((uint64_t*)&cgen_var_1355, 8);
     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     pool->freeAll();
 }
@@ -17518,16 +18991,18 @@
     resources->unwrapMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)&local_commandBuffer);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1177 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1177);
+        uint64_t cgen_var_1356;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1356, 1);
+        countingStream->write((uint64_t*)&cgen_var_1356, 8);
     }
     uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
     stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1178 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1178);
+    uint64_t cgen_var_1357;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1357, 1);
+    stream->write((uint64_t*)&cgen_var_1357, 8);
     pool->freeAll();
 }
 
@@ -17555,8 +19030,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1179 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1179);
+        uint64_t cgen_var_1358;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1358, 1);
+        countingStream->write((uint64_t*)&cgen_var_1358, 8);
         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     }
     uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17564,8 +19040,9 @@
     uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
     stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1180 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1180);
+    uint64_t cgen_var_1359;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1359, 1);
+    stream->write((uint64_t*)&cgen_var_1359, 8);
     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
     pool->freeAll();
 }
@@ -17608,38 +19085,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1181 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1181);
+        uint64_t cgen_var_1360;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1360, 1);
+        countingStream->write((uint64_t*)&cgen_var_1360, 8);
         marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1182 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1182);
+        uint64_t cgen_var_1361 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1361);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+        uint64_t cgen_var_1362;
+        countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1362, 1);
+        countingStream->write((uint64_t*)&cgen_var_1362, 8);
     }
     uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
     stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1183 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1183);
+    uint64_t cgen_var_1363;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
+    stream->write((uint64_t*)&cgen_var_1363, 8);
     marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1184 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1184);
+    uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1364);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+    uint64_t cgen_var_1365;
+    stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1365, 1);
+    stream->write((uint64_t*)&cgen_var_1365, 8);
+    uint64_t cgen_var_1366;
+    stream->read((uint64_t*)&cgen_var_1366, 8);
+    stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1366, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
     if (pMessenger)
     {
         resources->createMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)pMessenger, 1);
@@ -17647,6 +19129,8 @@
     pool->freeAll();
     VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
     stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateDebugUtilsMessengerEXT_VkResult_return;
 }
 
@@ -17679,13 +19163,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1185 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1185);
-        uint64_t cgen_var_1186 = (uint64_t)local_messenger;
-        countingStream->putBe64(cgen_var_1186);
+        uint64_t cgen_var_1367;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1367, 1);
+        countingStream->write((uint64_t*)&cgen_var_1367, 8);
+        uint64_t cgen_var_1368;
+        countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1368, 1);
+        countingStream->write((uint64_t*)&cgen_var_1368, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1187 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1187);
+        uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1369);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -17696,13 +19182,15 @@
     uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
     stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1188 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1188);
-    uint64_t cgen_var_1189 = (uint64_t)local_messenger;
-    stream->putBe64(cgen_var_1189);
+    uint64_t cgen_var_1370;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1370, 1);
+    stream->write((uint64_t*)&cgen_var_1370, 8);
+    uint64_t cgen_var_1371;
+    stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1371, 1);
+    stream->write((uint64_t*)&cgen_var_1371, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1190 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1190);
+    uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1372);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -17741,8 +19229,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1191 = (uint64_t)local_instance;
-        countingStream->putBe64(cgen_var_1191);
+        uint64_t cgen_var_1373;
+        countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1373, 1);
+        countingStream->write((uint64_t*)&cgen_var_1373, 8);
         countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
         countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
         marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
@@ -17752,8 +19241,9 @@
     uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
     stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1192 = (uint64_t)local_instance;
-    stream->putBe64(cgen_var_1192);
+    uint64_t cgen_var_1374;
+    stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1374, 1);
+    stream->write((uint64_t*)&cgen_var_1374, 8);
     stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
     stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
     marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
@@ -17782,8 +19272,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1193 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1193);
+        uint64_t cgen_var_1375;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1375, 1);
+        countingStream->write((uint64_t*)&cgen_var_1375, 8);
         countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
         marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
     }
@@ -17792,14 +19283,17 @@
     uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
     stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
     stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
-    uint64_t cgen_var_1194 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1194);
+    uint64_t cgen_var_1376;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1376, 1);
+    stream->write((uint64_t*)&cgen_var_1376, 8);
     stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
     marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
     unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
     pool->freeAll();
     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
     stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
 }
 
@@ -17828,8 +19322,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1195 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1195);
+        uint64_t cgen_var_1377;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1377, 1);
+        countingStream->write((uint64_t*)&cgen_var_1377, 8);
         marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
         countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
     }
@@ -17838,14 +19333,17 @@
     uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
     stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
-    uint64_t cgen_var_1196 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1196);
+    uint64_t cgen_var_1378;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1378, 1);
+    stream->write((uint64_t*)&cgen_var_1378, 8);
     marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
     stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
     stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
     pool->freeAll();
     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
 }
 
@@ -17885,8 +19383,9 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1197 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1197);
+        uint64_t cgen_var_1379;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1379, 1);
+        countingStream->write((uint64_t*)&cgen_var_1379, 8);
         marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
     }
     uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
@@ -17894,8 +19393,9 @@
     uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
     stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1198 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1198);
+    uint64_t cgen_var_1380;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
+    stream->write((uint64_t*)&cgen_var_1380, 8);
     marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
     pool->freeAll();
 }
@@ -17916,8 +19416,9 @@
     local_samples = samples;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1199 = (uint64_t)local_physicalDevice;
-        countingStream->putBe64(cgen_var_1199);
+        uint64_t cgen_var_1381;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1381, 1);
+        countingStream->write((uint64_t*)&cgen_var_1381, 8);
         countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
         marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
     }
@@ -17926,8 +19427,9 @@
     uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
     stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1200 = (uint64_t)local_physicalDevice;
-    stream->putBe64(cgen_var_1200);
+    uint64_t cgen_var_1382;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1382, 1);
+    stream->write((uint64_t*)&cgen_var_1382, 8);
     stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
     marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
     unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
@@ -17984,38 +19486,43 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1201 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1201);
+        uint64_t cgen_var_1383;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
+        countingStream->write((uint64_t*)&cgen_var_1383, 8);
         marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1202 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1202);
+        uint64_t cgen_var_1384 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1384);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
         }
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+        uint64_t cgen_var_1385;
+        countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1385, 1);
+        countingStream->write((uint64_t*)&cgen_var_1385, 8);
     }
     uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
     stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1203 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1203);
+    uint64_t cgen_var_1386;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1386, 1);
+    stream->write((uint64_t*)&cgen_var_1386, 8);
     marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1204 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1204);
+    uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1387);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
     }
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
-    // WARNING HANDLE TYPE POINTER
-    stream->read((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+    uint64_t cgen_var_1388;
+    stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1388, 1);
+    stream->write((uint64_t*)&cgen_var_1388, 8);
+    uint64_t cgen_var_1389;
+    stream->read((uint64_t*)&cgen_var_1389, 8);
+    stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1389, (VkValidationCacheEXT*)pValidationCache, 1);
     if (pValidationCache)
     {
         resources->createMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)pValidationCache, 1);
@@ -18023,6 +19530,8 @@
     pool->freeAll();
     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
     stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkCreateValidationCacheEXT_VkResult_return;
 }
 
@@ -18055,13 +19564,15 @@
     local_pAllocator = nullptr;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1205 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1205);
-        uint64_t cgen_var_1206 = (uint64_t)local_validationCache;
-        countingStream->putBe64(cgen_var_1206);
+        uint64_t cgen_var_1390;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1390, 1);
+        countingStream->write((uint64_t*)&cgen_var_1390, 8);
+        uint64_t cgen_var_1391;
+        countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1391, 1);
+        countingStream->write((uint64_t*)&cgen_var_1391, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1207 = (uint64_t)(uintptr_t)local_pAllocator;
-        countingStream->putBe64(cgen_var_1207);
+        uint64_t cgen_var_1392 = (uint64_t)(uintptr_t)local_pAllocator;
+        countingStream->putBe64(cgen_var_1392);
         if (local_pAllocator)
         {
             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -18072,13 +19583,15 @@
     uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
     stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1208 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1208);
-    uint64_t cgen_var_1209 = (uint64_t)local_validationCache;
-    stream->putBe64(cgen_var_1209);
+    uint64_t cgen_var_1393;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1393, 1);
+    stream->write((uint64_t*)&cgen_var_1393, 8);
+    uint64_t cgen_var_1394;
+    stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1394, 1);
+    stream->write((uint64_t*)&cgen_var_1394, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1210 = (uint64_t)(uintptr_t)local_pAllocator;
-    stream->putBe64(cgen_var_1210);
+    uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
+    stream->putBe64(cgen_var_1395);
     if (local_pAllocator)
     {
         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
@@ -18117,29 +19630,45 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1211 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1211);
-        uint64_t cgen_var_1212 = (uint64_t)local_dstCache;
-        countingStream->putBe64(cgen_var_1212);
+        uint64_t cgen_var_1396;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1396, 1);
+        countingStream->write((uint64_t*)&cgen_var_1396, 8);
+        uint64_t cgen_var_1397;
+        countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1397, 1);
+        countingStream->write((uint64_t*)&cgen_var_1397, 8);
         countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
-        // WARNING HANDLE TYPE POINTER
-        countingStream->write((VkValidationCacheEXT*)local_pSrcCaches, ((srcCacheCount)) * sizeof(VkValidationCacheEXT));
+        if (((srcCacheCount)))
+        {
+            uint64_t* cgen_var_1398;
+            countingStream->alloc((void**)&cgen_var_1398, ((srcCacheCount)) * 8);
+            countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1398, ((srcCacheCount)));
+            countingStream->write((uint64_t*)cgen_var_1398, 8);
+        }
     }
     uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
     countingStream->rewind();
     uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
     stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1213 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1213);
-    uint64_t cgen_var_1214 = (uint64_t)local_dstCache;
-    stream->putBe64(cgen_var_1214);
+    uint64_t cgen_var_1399;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1399, 1);
+    stream->write((uint64_t*)&cgen_var_1399, 8);
+    uint64_t cgen_var_1400;
+    stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1400, 1);
+    stream->write((uint64_t*)&cgen_var_1400, 8);
     stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    stream->write((VkValidationCacheEXT*)local_pSrcCaches, ((srcCacheCount)) * sizeof(VkValidationCacheEXT));
+    if (((srcCacheCount)))
+    {
+        uint64_t* cgen_var_1401;
+        stream->alloc((void**)&cgen_var_1401, ((srcCacheCount)) * 8);
+        stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1401, ((srcCacheCount)));
+        stream->write((uint64_t*)cgen_var_1401, 8);
+    }
     pool->freeAll();
     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
     stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkMergeValidationCachesEXT_VkResult_return;
 }
 
@@ -18161,20 +19690,22 @@
     resources->unwrapMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&local_validationCache);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1215 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1215);
-        uint64_t cgen_var_1216 = (uint64_t)local_validationCache;
-        countingStream->putBe64(cgen_var_1216);
+        uint64_t cgen_var_1402;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
+        countingStream->write((uint64_t*)&cgen_var_1402, 8);
+        uint64_t cgen_var_1403;
+        countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1403, 1);
+        countingStream->write((uint64_t*)&cgen_var_1403, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1217 = (uint64_t)(uintptr_t)pDataSize;
-        countingStream->putBe64(cgen_var_1217);
+        uint64_t cgen_var_1404 = (uint64_t)(uintptr_t)pDataSize;
+        countingStream->putBe64(cgen_var_1404);
         if (pDataSize)
         {
             countingStream->write((size_t*)pDataSize, sizeof(size_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_1218 = (uint64_t)(uintptr_t)pData;
-        countingStream->putBe64(cgen_var_1218);
+        uint64_t cgen_var_1405 = (uint64_t)(uintptr_t)pData;
+        countingStream->putBe64(cgen_var_1405);
         if (pData)
         {
             countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
@@ -18185,20 +19716,22 @@
     uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
     stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1219 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1219);
-    uint64_t cgen_var_1220 = (uint64_t)local_validationCache;
-    stream->putBe64(cgen_var_1220);
+    uint64_t cgen_var_1406;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1406, 1);
+    stream->write((uint64_t*)&cgen_var_1406, 8);
+    uint64_t cgen_var_1407;
+    stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1407, 1);
+    stream->write((uint64_t*)&cgen_var_1407, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1221 = (uint64_t)(uintptr_t)pDataSize;
-    stream->putBe64(cgen_var_1221);
+    uint64_t cgen_var_1408 = (uint64_t)(uintptr_t)pDataSize;
+    stream->putBe64(cgen_var_1408);
     if (pDataSize)
     {
         stream->write((size_t*)pDataSize, sizeof(size_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_1222 = (uint64_t)(uintptr_t)pData;
-    stream->putBe64(cgen_var_1222);
+    uint64_t cgen_var_1409 = (uint64_t)(uintptr_t)pData;
+    stream->putBe64(cgen_var_1409);
     if (pData)
     {
         stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
@@ -18228,6 +19761,8 @@
     pool->freeAll();
     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
     stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetValidationCacheDataEXT_VkResult_return;
 }
 
@@ -18262,12 +19797,13 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1225 = (uint64_t)local_device;
-        countingStream->putBe64(cgen_var_1225);
+        uint64_t cgen_var_1412;
+        countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
+        countingStream->write((uint64_t*)&cgen_var_1412, 8);
         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
         // WARNING PTR CHECK
-        uint64_t cgen_var_1226 = (uint64_t)(uintptr_t)local_pHostPointer;
-        countingStream->putBe64(cgen_var_1226);
+        uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pHostPointer;
+        countingStream->putBe64(cgen_var_1413);
         if (local_pHostPointer)
         {
             countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
@@ -18279,12 +19815,13 @@
     uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
     stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
     stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
-    uint64_t cgen_var_1227 = (uint64_t)local_device;
-    stream->putBe64(cgen_var_1227);
+    uint64_t cgen_var_1414;
+    stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
+    stream->write((uint64_t*)&cgen_var_1414, 8);
     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
     // WARNING PTR CHECK
-    uint64_t cgen_var_1228 = (uint64_t)(uintptr_t)local_pHostPointer;
-    stream->putBe64(cgen_var_1228);
+    uint64_t cgen_var_1415 = (uint64_t)(uintptr_t)local_pHostPointer;
+    stream->putBe64(cgen_var_1415);
     if (local_pHostPointer)
     {
         stream->write((void*)local_pHostPointer, sizeof(uint8_t));
@@ -18294,6 +19831,8 @@
     pool->freeAll();
     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
     stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
+    countingStream->clearPool();
+    stream->clearPool();
     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
 }
 
@@ -18324,11 +19863,13 @@
     local_marker = marker;
     countingStream->rewind();
     {
-        uint64_t cgen_var_1229 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1229);
+        uint64_t cgen_var_1416;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1416, 1);
+        countingStream->write((uint64_t*)&cgen_var_1416, 8);
         countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
-        uint64_t cgen_var_1230 = (uint64_t)local_dstBuffer;
-        countingStream->putBe64(cgen_var_1230);
+        uint64_t cgen_var_1417;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1417, 1);
+        countingStream->write((uint64_t*)&cgen_var_1417, 8);
         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
         countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
     }
@@ -18337,11 +19878,13 @@
     uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
     stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
-    uint64_t cgen_var_1231 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1231);
+    uint64_t cgen_var_1418;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
+    stream->write((uint64_t*)&cgen_var_1418, 8);
     stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
-    uint64_t cgen_var_1232 = (uint64_t)local_dstBuffer;
-    stream->putBe64(cgen_var_1232);
+    uint64_t cgen_var_1419;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1419, 1);
+    stream->write((uint64_t*)&cgen_var_1419, 8);
     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
     stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
     pool->freeAll();
@@ -18374,11 +19917,12 @@
     }
     countingStream->rewind();
     {
-        uint64_t cgen_var_1233 = (uint64_t)local_commandBuffer;
-        countingStream->putBe64(cgen_var_1233);
+        uint64_t cgen_var_1420;
+        countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1420, 1);
+        countingStream->write((uint64_t*)&cgen_var_1420, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1234 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
-        countingStream->putBe64(cgen_var_1234);
+        uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
+        countingStream->putBe64(cgen_var_1421);
         if (local_pCheckpointMarker)
         {
             countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
@@ -18389,11 +19933,12 @@
     uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
     stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
     stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
-    uint64_t cgen_var_1235 = (uint64_t)local_commandBuffer;
-    stream->putBe64(cgen_var_1235);
+    uint64_t cgen_var_1422;
+    stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1422, 1);
+    stream->write((uint64_t*)&cgen_var_1422, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1236 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
-    stream->putBe64(cgen_var_1236);
+    uint64_t cgen_var_1423 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
+    stream->putBe64(cgen_var_1423);
     if (local_pCheckpointMarker)
     {
         stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
@@ -18415,18 +19960,19 @@
     resources->unwrapMapping()->mapHandles_VkQueue((VkQueue*)&local_queue);
     countingStream->rewind();
     {
-        uint64_t cgen_var_1237 = (uint64_t)local_queue;
-        countingStream->putBe64(cgen_var_1237);
+        uint64_t cgen_var_1424;
+        countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1424, 1);
+        countingStream->write((uint64_t*)&cgen_var_1424, 8);
         // WARNING PTR CHECK
-        uint64_t cgen_var_1238 = (uint64_t)(uintptr_t)pCheckpointDataCount;
-        countingStream->putBe64(cgen_var_1238);
+        uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)pCheckpointDataCount;
+        countingStream->putBe64(cgen_var_1425);
         if (pCheckpointDataCount)
         {
             countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
         }
         // WARNING PTR CHECK
-        uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pCheckpointData;
-        countingStream->putBe64(cgen_var_1239);
+        uint64_t cgen_var_1426 = (uint64_t)(uintptr_t)pCheckpointData;
+        countingStream->putBe64(cgen_var_1426);
         if (pCheckpointData)
         {
             for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
@@ -18440,18 +19986,19 @@
     uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
     stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
     stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
-    uint64_t cgen_var_1240 = (uint64_t)local_queue;
-    stream->putBe64(cgen_var_1240);
+    uint64_t cgen_var_1427;
+    stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1427, 1);
+    stream->write((uint64_t*)&cgen_var_1427, 8);
     // WARNING PTR CHECK
-    uint64_t cgen_var_1241 = (uint64_t)(uintptr_t)pCheckpointDataCount;
-    stream->putBe64(cgen_var_1241);
+    uint64_t cgen_var_1428 = (uint64_t)(uintptr_t)pCheckpointDataCount;
+    stream->putBe64(cgen_var_1428);
     if (pCheckpointDataCount)
     {
         stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pCheckpointData;
-    stream->putBe64(cgen_var_1242);
+    uint64_t cgen_var_1429 = (uint64_t)(uintptr_t)pCheckpointData;
+    stream->putBe64(cgen_var_1429);
     if (pCheckpointData)
     {
         for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
diff --git a/system/vulkan_enc/VulkanHandleMapping.cpp b/system/vulkan_enc/VulkanHandleMapping.cpp
new file mode 100644
index 0000000..649244f
--- /dev/null
+++ b/system/vulkan_enc/VulkanHandleMapping.cpp
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <vulkan/vulkan.h>
+
+#include "VulkanHandleMapping.h"
+
+namespace goldfish_vk {
+
+#define DEFAULT_HANDLE_MAP_DEFINE(type) \
+void DefaultHandleMapping::mapHandles_##type(type*, size_t) { return; } \
+void DefaultHandleMapping::mapHandles_##type##_u64(const type* handles, uint64_t* handle_u64s, size_t count) { \
+    for (size_t i = 0; i < count; ++i) { handle_u64s[i] = (uint64_t)(uintptr_t)handles[i]; } \
+} \
+void DefaultHandleMapping::mapHandles_u64_##type(const uint64_t* handle_u64s, type* handles, size_t count) { \
+    for (size_t i = 0; i < count; ++i) { handles[i] = (type)(uintptr_t)handle_u64s[i]; } \
+} \
+
+GOLDFISH_VK_LIST_HANDLE_TYPES(DEFAULT_HANDLE_MAP_DEFINE)
+
+} // namespace goldfish_vk
+
diff --git a/system/vulkan_enc/VulkanHandleMapping.h b/system/vulkan_enc/VulkanHandleMapping.h
index 49ce1e9..5c03d7f 100644
--- a/system/vulkan_enc/VulkanHandleMapping.h
+++ b/system/vulkan_enc/VulkanHandleMapping.h
@@ -16,6 +16,8 @@
 
 #include <vulkan/vulkan.h>
 
+#include "VulkanHandles.h"
+
 namespace goldfish_vk {
 
 class VulkanHandleMapping {
@@ -23,115 +25,24 @@
     VulkanHandleMapping() = default;
     virtual ~VulkanHandleMapping() { }
 
-    virtual void mapHandles_VkInstance(VkInstance* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDevice(VkDevice* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkQueue(VkQueue* handles, size_t count = 1) = 0;
+#define DECLARE_HANDLE_MAP_PURE_VIRTUAL_METHOD(type) \
+    virtual void mapHandles_##type(type* handles, size_t count = 1) = 0; \
+    virtual void mapHandles_##type##_u64(const type* handles, uint64_t* handle_u64s, size_t count = 1) = 0; \
+    virtual void mapHandles_u64_##type(const uint64_t* handle_u64s, type* handles, size_t count = 1) = 0; \
 
-    virtual void mapHandles_VkSemaphore(VkSemaphore* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkCommandBuffer(VkCommandBuffer* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDeviceMemory(VkDeviceMemory* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkBuffer(VkBuffer* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkImage(VkImage* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkShaderModule(VkShaderModule* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipelineLayout(VkPipelineLayout* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkRenderPass(VkRenderPass* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipeline(VkPipeline* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipelineCache(VkPipelineCache* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorSetLayout(VkDescriptorSetLayout* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkSampler(VkSampler* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorPool(VkDescriptorPool* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkImageView(VkImageView* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorSet(VkDescriptorSet* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkBufferView(VkBufferView* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkCommandPool(VkCommandPool* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkFramebuffer(VkFramebuffer* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkPhysicalDevice(VkPhysicalDevice* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkFence(VkFence* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkEvent(VkEvent* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkQueryPool(VkQueryPool* handles, size_t count = 1) = 0;
-
-    virtual void mapHandles_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorUpdateTemplate(VkDescriptorUpdateTemplate* handles, size_t count = 1) = 0;
-
-#ifdef VK_KHR_swapchain
-    virtual void mapHandles_VkSurfaceKHR(VkSurfaceKHR* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkSwapchainKHR(VkSwapchainKHR* handles, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_KHR_display
-    virtual void mapHandles_VkDisplayKHR(VkDisplayKHR* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDisplayModeKHR(VkDisplayModeKHR* handles, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_NVX_device_generated_commands
-    virtual void mapHandles_VkObjectTableNVX(VkObjectTableNVX* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkIndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX* handles, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_EXT_validation_cache
-    virtual void mapHandles_VkValidationCacheEXT(VkValidationCacheEXT* handles, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_EXT_debug_report
-    virtual void mapHandles_VkDebugReportCallbackEXT(VkDebugReportCallbackEXT* handles, size_t count = 1) = 0;
-    virtual void mapHandles_VkDebugUtilsMessengerEXT(VkDebugUtilsMessengerEXT* handles, size_t count = 1) = 0;
-#endif
-
-    // Methods to store the result in a uint64_t array.
-    virtual void mapHandles_VkInstance_u64(const VkInstance* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDevice_u64(const VkDevice* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkQueue_u64(const VkQueue* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-
-    virtual void mapHandles_VkSemaphore_u64(const VkSemaphore* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkCommandBuffer_u64(const VkCommandBuffer* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDeviceMemory_u64(const VkDeviceMemory* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkBuffer_u64(const VkBuffer* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkImage_u64(const VkImage* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkShaderModule_u64(const VkShaderModule* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipelineLayout_u64(const VkPipelineLayout* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkRenderPass_u64(const VkRenderPass* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipeline_u64(const VkPipeline* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkPipelineCache_u64(const VkPipelineCache* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorSetLayout_u64(const VkDescriptorSetLayout* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkSampler_u64(const VkSampler* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorPool_u64(const VkDescriptorPool* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkImageView_u64(const VkImageView* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorSet_u64(const VkDescriptorSet* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkBufferView_u64(const VkBufferView* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkCommandPool_u64(const VkCommandPool* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkFramebuffer_u64(const VkFramebuffer* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkPhysicalDevice_u64(const VkPhysicalDevice* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkFence_u64(const VkFence* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkEvent_u64(const VkEvent* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkQueryPool_u64(const VkQueryPool* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-
-    virtual void mapHandles_VkSamplerYcbcrConversion_u64(const VkSamplerYcbcrConversion* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDescriptorUpdateTemplate_u64(const VkDescriptorUpdateTemplate* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-
-#ifdef VK_KHR_swapchain
-    virtual void mapHandles_VkSurfaceKHR_u64(const VkSurfaceKHR* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkSwapchainKHR_u64(const VkSwapchainKHR* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_KHR_display
-    virtual void mapHandles_VkDisplayKHR_u64(const VkDisplayKHR* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDisplayModeKHR_u64(const VkDisplayModeKHR* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_NVX_device_generated_commands
-    virtual void mapHandles_VkObjectTableNVX_u64(const VkObjectTableNVX* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkIndirectCommandsLayoutNVX_u64(const VkIndirectCommandsLayoutNVX* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_EXT_validation_cache
-    virtual void mapHandles_VkValidationCacheEXT_u64(const VkValidationCacheEXT* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-#endif
-
-#ifdef VK_EXT_debug_report
-    virtual void mapHandles_VkDebugReportCallbackEXT_u64(const VkDebugReportCallbackEXT* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-    virtual void mapHandles_VkDebugUtilsMessengerEXT_u64(const VkDebugUtilsMessengerEXT* handles, uint64_t* handle_u64s, size_t count = 1) = 0;
-#endif
-
+    GOLDFISH_VK_LIST_HANDLE_TYPES(DECLARE_HANDLE_MAP_PURE_VIRTUAL_METHOD)
 };
 
-} // namespace goldfish_vk
+class DefaultHandleMapping : public VulkanHandleMapping {
+public:
+    virtual ~DefaultHandleMapping() { }
+
+#define DECLARE_HANDLE_MAP_OVERRIDE(type) \
+    void mapHandles_##type(type* handles, size_t count) override; \
+    void mapHandles_##type##_u64(const type* handles, uint64_t* handle_u64s, size_t count) override; \
+    void mapHandles_u64_##type(const uint64_t* handle_u64s, type* handles, size_t count) override; \
+
+    GOLDFISH_VK_LIST_HANDLE_TYPES(DECLARE_HANDLE_MAP_OVERRIDE)
+};
+
+} // namespace goldfish_vk
\ No newline at end of file
diff --git a/system/vulkan_enc/VulkanHandles.h b/system/vulkan_enc/VulkanHandles.h
new file mode 100644
index 0000000..498fae2
--- /dev/null
+++ b/system/vulkan_enc/VulkanHandles.h
@@ -0,0 +1,64 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include <vulkan/vulkan.h>
+
+#define GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
+    f(VkInstance) \
+    f(VkPhysicalDevice) \
+    f(VkDevice) \
+    f(VkQueue) \
+    f(VkCommandBuffer) \
+
+#define GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
+    f(VkBuffer) \
+    f(VkBufferView) \
+    f(VkImage) \
+    f(VkImageView) \
+    f(VkShaderModule) \
+    f(VkDescriptorPool) \
+    f(VkDescriptorSetLayout) \
+    f(VkDescriptorSet) \
+    f(VkSampler) \
+    f(VkPipeline) \
+    f(VkPipelineCache) \
+    f(VkPipelineLayout) \
+    f(VkRenderPass) \
+    f(VkFramebuffer) \
+    f(VkCommandPool) \
+    f(VkFence) \
+    f(VkSemaphore) \
+    f(VkEvent) \
+    f(VkQueryPool) \
+    f(VkSamplerYcbcrConversion) \
+    f(VkDescriptorUpdateTemplate) \
+    f(VkSurfaceKHR) \
+    f(VkSwapchainKHR) \
+    f(VkDisplayKHR) \
+    f(VkDisplayModeKHR) \
+    f(VkObjectTableNVX) \
+    f(VkIndirectCommandsLayoutNVX) \
+    f(VkValidationCacheEXT) \
+    f(VkDebugReportCallbackEXT) \
+    f(VkDebugUtilsMessengerEXT) \
+
+#define GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f) \
+    f(VkDeviceMemory) \
+    GOLDFISH_VK_LIST_TRIVIAL_NON_DISPATCHABLE_HANDLE_TYPES(f) \
+
+#define GOLDFISH_VK_LIST_HANDLE_TYPES(f) \
+    GOLDFISH_VK_LIST_DISPATCHABLE_HANDLE_TYPES(f) \
+    GOLDFISH_VK_LIST_NON_DISPATCHABLE_HANDLE_TYPES(f)
diff --git a/system/vulkan_enc/VulkanStream.cpp b/system/vulkan_enc/VulkanStream.cpp
index 44764d1..f862bf7 100644
--- a/system/vulkan_enc/VulkanStream.cpp
+++ b/system/vulkan_enc/VulkanStream.cpp
@@ -26,7 +26,7 @@
 
 class VulkanStream::Impl : public android::base::Stream {
 public:
-    Impl(IOStream* stream) : mStream(stream) { }
+    Impl(IOStream* stream) : mStream(stream) { unsetHandleMapping(); }
 
     ~Impl() { }
 
@@ -54,6 +54,22 @@
         return size;
     }
 
+    void clearPool() {
+        mPool.freeAll();
+    }
+
+    void setHandleMapping(VulkanHandleMapping* mapping) {
+        mCurrentHandleMapping = mapping;
+    }
+
+    void unsetHandleMapping() {
+        mCurrentHandleMapping = &mDefaultHandleMapping;
+    }
+
+    VulkanHandleMapping* handleMapping() const {
+        return mCurrentHandleMapping;
+    }
+
 private:
     size_t oustandingWriteBuffer() const {
         return mWritePos;
@@ -94,6 +110,8 @@
     size_t mWritePos = 0;
     std::vector<uint8_t> mWriteBuffer;
     IOStream* mStream = nullptr;
+    DefaultHandleMapping mDefaultHandleMapping;
+    VulkanHandleMapping* mCurrentHandleMapping;
 };
 
 VulkanStream::VulkanStream(IOStream *stream) :
@@ -145,6 +163,22 @@
     return mImpl->write(buffer, size);
 }
 
+void VulkanStream::clearPool() {
+    mImpl->clearPool();
+}
+
+void VulkanStream::setHandleMapping(VulkanHandleMapping* mapping) {
+    mImpl->setHandleMapping(mapping);
+}
+
+void VulkanStream::unsetHandleMapping() {
+    mImpl->unsetHandleMapping();
+}
+
+VulkanHandleMapping* VulkanStream::handleMapping() const {
+    return mImpl->handleMapping();
+}
+
 VulkanCountingStream::VulkanCountingStream() : VulkanStream(nullptr) { }
 VulkanCountingStream::~VulkanCountingStream() = default;
 
@@ -163,4 +197,4 @@
     m_read = 0;
 }
 
-} // namespace goldfish_vk
\ No newline at end of file
+} // namespace goldfish_vk
diff --git a/system/vulkan_enc/VulkanStream.h b/system/vulkan_enc/VulkanStream.h
index 99f88ab..b763f32 100644
--- a/system/vulkan_enc/VulkanStream.h
+++ b/system/vulkan_enc/VulkanStream.h
@@ -16,6 +16,8 @@
 #include "android/base/files/Stream.h"
 #include "android/base/files/StreamSerializing.h"
 
+#include "VulkanHandleMapping.h"
+
 #include <memory>
 
 class IOStream;
@@ -41,6 +43,13 @@
     ssize_t read(void *buffer, size_t size) override;
     ssize_t write(const void *buffer, size_t size) override;
 
+    // Frees everything that got alloc'ed.
+    void clearPool();
+
+    void setHandleMapping(VulkanHandleMapping* mapping);
+    void unsetHandleMapping();
+    VulkanHandleMapping* handleMapping() const;
+
 private:
     class Impl;
     std::unique_ptr<Impl> mImpl;
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
index 508d92c..34ac224 100644
--- a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
@@ -867,15 +867,30 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forMarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_16;
+        vkStream->alloc((void**)&cgen_var_16, forMarshaling->waitSemaphoreCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSemaphore_u64(forMarshaling->pWaitSemaphores, cgen_var_16, forMarshaling->waitSemaphoreCount);
+        vkStream->write((uint64_t*)cgen_var_16, 8);
+    }
     vkStream->write((const VkPipelineStageFlags*)forMarshaling->pWaitDstStageMask, forMarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
     vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkCommandBuffer*)forMarshaling->pCommandBuffers, forMarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
+    if (forMarshaling->commandBufferCount)
+    {
+        uint64_t* cgen_var_17;
+        vkStream->alloc((void**)&cgen_var_17, forMarshaling->commandBufferCount * 8);
+        vkStream->handleMapping()->mapHandles_VkCommandBuffer_u64(forMarshaling->pCommandBuffers, cgen_var_17, forMarshaling->commandBufferCount);
+        vkStream->write((uint64_t*)cgen_var_17, 8);
+    }
     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSemaphore*)forMarshaling->pSignalSemaphores, forMarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+    if (forMarshaling->signalSemaphoreCount)
+    {
+        uint64_t* cgen_var_18;
+        vkStream->alloc((void**)&cgen_var_18, forMarshaling->signalSemaphoreCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSemaphore_u64(forMarshaling->pSignalSemaphores, cgen_var_18, forMarshaling->signalSemaphoreCount);
+        vkStream->write((uint64_t*)cgen_var_18, 8);
+    }
 }
 
 void unmarshal_VkSubmitInfo(
@@ -894,18 +909,33 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forUnmarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_19;
+        vkStream->alloc((void**)&cgen_var_19, forUnmarshaling->waitSemaphoreCount * 8);
+        vkStream->read((uint64_t*)cgen_var_19, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSemaphore(cgen_var_19, (VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pWaitDstStageMask, forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
     vkStream->read((VkPipelineStageFlags*)forUnmarshaling->pWaitDstStageMask, forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pCommandBuffers, forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkCommandBuffer*)forUnmarshaling->pCommandBuffers, forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
+    if (forUnmarshaling->commandBufferCount)
+    {
+        uint64_t* cgen_var_20;
+        vkStream->alloc((void**)&cgen_var_20, forUnmarshaling->commandBufferCount * 8);
+        vkStream->read((uint64_t*)cgen_var_20, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_20, (VkCommandBuffer*)forUnmarshaling->pCommandBuffers, forUnmarshaling->commandBufferCount);
+    }
     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+    if (forUnmarshaling->signalSemaphoreCount)
+    {
+        uint64_t* cgen_var_21;
+        vkStream->alloc((void**)&cgen_var_21, forUnmarshaling->signalSemaphoreCount * 8);
+        vkStream->read((uint64_t*)cgen_var_21, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSemaphore(cgen_var_21, (VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount);
+    }
 }
 
 void marshal_VkMemoryAllocateInfo(
@@ -954,8 +984,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_16 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_16);
+    uint64_t cgen_var_22;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_22, 1);
+    vkStream->write((uint64_t*)&cgen_var_22, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
 }
@@ -974,7 +1005,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_23;
+    vkStream->read((uint64_t*)&cgen_var_23, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_23, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
 }
@@ -1043,8 +1076,9 @@
 {
     vkStream->write((VkDeviceSize*)&forMarshaling->resourceOffset, sizeof(VkDeviceSize));
     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
-    uint64_t cgen_var_18 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_18);
+    uint64_t cgen_var_24;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_24, 1);
+    vkStream->write((uint64_t*)&cgen_var_24, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
     vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags, sizeof(VkSparseMemoryBindFlags));
 }
@@ -1055,7 +1089,9 @@
 {
     vkStream->read((VkDeviceSize*)&forUnmarshaling->resourceOffset, sizeof(VkDeviceSize));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_25;
+    vkStream->read((uint64_t*)&cgen_var_25, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_25, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
     vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, sizeof(VkSparseMemoryBindFlags));
 }
@@ -1064,8 +1100,9 @@
     VulkanStream* vkStream,
     const VkSparseBufferMemoryBindInfo* forMarshaling)
 {
-    uint64_t cgen_var_20 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_20);
+    uint64_t cgen_var_26;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_26, 1);
+    vkStream->write((uint64_t*)&cgen_var_26, 8);
     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
     {
@@ -1077,7 +1114,9 @@
     VulkanStream* vkStream,
     VkSparseBufferMemoryBindInfo* forUnmarshaling)
 {
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_27;
+    vkStream->read((uint64_t*)&cgen_var_27, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_27, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
@@ -1090,8 +1129,9 @@
     VulkanStream* vkStream,
     const VkSparseImageOpaqueMemoryBindInfo* forMarshaling)
 {
-    uint64_t cgen_var_22 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_22);
+    uint64_t cgen_var_28;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_28, 1);
+    vkStream->write((uint64_t*)&cgen_var_28, 8);
     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
     {
@@ -1103,7 +1143,9 @@
     VulkanStream* vkStream,
     VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling)
 {
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_29;
+    vkStream->read((uint64_t*)&cgen_var_29, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_29, (VkImage*)&forUnmarshaling->image, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
@@ -1155,8 +1197,9 @@
     marshal_VkImageSubresource(vkStream, (VkImageSubresource*)(&forMarshaling->subresource));
     marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->offset));
     marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
-    uint64_t cgen_var_24 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_24);
+    uint64_t cgen_var_30;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_30, 1);
+    vkStream->write((uint64_t*)&cgen_var_30, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
     vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags, sizeof(VkSparseMemoryBindFlags));
 }
@@ -1168,7 +1211,9 @@
     unmarshal_VkImageSubresource(vkStream, (VkImageSubresource*)(&forUnmarshaling->subresource));
     unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->offset));
     unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_31;
+    vkStream->read((uint64_t*)&cgen_var_31, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_31, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
     vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, sizeof(VkSparseMemoryBindFlags));
 }
@@ -1177,8 +1222,9 @@
     VulkanStream* vkStream,
     const VkSparseImageMemoryBindInfo* forMarshaling)
 {
-    uint64_t cgen_var_26 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_26);
+    uint64_t cgen_var_32;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_32, 1);
+    vkStream->write((uint64_t*)&cgen_var_32, 8);
     vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
     {
@@ -1190,7 +1236,9 @@
     VulkanStream* vkStream,
     VkSparseImageMemoryBindInfo* forUnmarshaling)
 {
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_33;
+    vkStream->read((uint64_t*)&cgen_var_33, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_33, (VkImage*)&forUnmarshaling->image, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseImageMemoryBind));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
@@ -1212,8 +1260,13 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forMarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_34;
+        vkStream->alloc((void**)&cgen_var_34, forMarshaling->waitSemaphoreCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSemaphore_u64(forMarshaling->pWaitSemaphores, cgen_var_34, forMarshaling->waitSemaphoreCount);
+        vkStream->write((uint64_t*)cgen_var_34, 8);
+    }
     vkStream->write((uint32_t*)&forMarshaling->bufferBindCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->bufferBindCount; ++i)
     {
@@ -1230,8 +1283,13 @@
         marshal_VkSparseImageMemoryBindInfo(vkStream, (const VkSparseImageMemoryBindInfo*)(forMarshaling->pImageBinds + i));
     }
     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSemaphore*)forMarshaling->pSignalSemaphores, forMarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+    if (forMarshaling->signalSemaphoreCount)
+    {
+        uint64_t* cgen_var_35;
+        vkStream->alloc((void**)&cgen_var_35, forMarshaling->signalSemaphoreCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSemaphore_u64(forMarshaling->pSignalSemaphores, cgen_var_35, forMarshaling->signalSemaphoreCount);
+        vkStream->write((uint64_t*)cgen_var_35, 8);
+    }
 }
 
 void unmarshal_VkBindSparseInfo(
@@ -1250,8 +1308,13 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forUnmarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_36;
+        vkStream->alloc((void**)&cgen_var_36, forUnmarshaling->waitSemaphoreCount * 8);
+        vkStream->read((uint64_t*)cgen_var_36, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSemaphore(cgen_var_36, (VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount);
+    }
     vkStream->read((uint32_t*)&forUnmarshaling->bufferBindCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pBufferBinds, forUnmarshaling->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferBindCount; ++i)
@@ -1272,8 +1335,13 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+    if (forUnmarshaling->signalSemaphoreCount)
+    {
+        uint64_t* cgen_var_37;
+        vkStream->alloc((void**)&cgen_var_37, forUnmarshaling->signalSemaphoreCount * 8);
+        vkStream->read((uint64_t*)cgen_var_37, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSemaphore(cgen_var_37, (VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount);
+    }
 }
 
 void marshal_VkFenceCreateInfo(
@@ -1428,8 +1496,8 @@
     vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_28 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
-    vkStream->putBe64(cgen_var_28);
+    uint64_t cgen_var_38 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
+    vkStream->putBe64(cgen_var_38);
     if (forMarshaling->pQueueFamilyIndices)
     {
         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
@@ -1477,8 +1545,9 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkBufferViewCreateFlags*)&forMarshaling->flags, sizeof(VkBufferViewCreateFlags));
-    uint64_t cgen_var_30 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_30);
+    uint64_t cgen_var_40;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_40, 1);
+    vkStream->write((uint64_t*)&cgen_var_40, 8);
     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
     vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
@@ -1499,7 +1568,9 @@
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
     vkStream->read((VkBufferViewCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferViewCreateFlags));
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_41;
+    vkStream->read((uint64_t*)&cgen_var_41, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_41, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
@@ -1529,8 +1600,8 @@
     vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_32 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
-    vkStream->putBe64(cgen_var_32);
+    uint64_t cgen_var_42 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
+    vkStream->putBe64(cgen_var_42);
     if (forMarshaling->pQueueFamilyIndices)
     {
         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
@@ -1650,8 +1721,9 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkImageViewCreateFlags*)&forMarshaling->flags, sizeof(VkImageViewCreateFlags));
-    uint64_t cgen_var_34 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_34);
+    uint64_t cgen_var_44;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_44, 1);
+    vkStream->write((uint64_t*)&cgen_var_44, 8);
     vkStream->write((VkImageViewType*)&forMarshaling->viewType, sizeof(VkImageViewType));
     vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
     marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->components));
@@ -1673,7 +1745,9 @@
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
     vkStream->read((VkImageViewCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageViewCreateFlags));
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_45;
+    vkStream->read((uint64_t*)&cgen_var_45, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_45, (VkImage*)&forUnmarshaling->image, 1);
     vkStream->read((VkImageViewType*)&forUnmarshaling->viewType, sizeof(VkImageViewType));
     vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
     unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->components));
@@ -1814,12 +1888,13 @@
     }
     vkStream->write((VkPipelineShaderStageCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineShaderStageCreateFlags));
     vkStream->write((VkShaderStageFlagBits*)&forMarshaling->stage, sizeof(VkShaderStageFlagBits));
-    uint64_t cgen_var_36 = (uint64_t)forMarshaling->module;
-    vkStream->putBe64(cgen_var_36);
+    uint64_t cgen_var_46;
+    vkStream->handleMapping()->mapHandles_VkShaderModule_u64(&forMarshaling->module, &cgen_var_46, 1);
+    vkStream->write((uint64_t*)&cgen_var_46, 8);
     vkStream->putString(forMarshaling->pName);
     // WARNING PTR CHECK
-    uint64_t cgen_var_37 = (uint64_t)(uintptr_t)forMarshaling->pSpecializationInfo;
-    vkStream->putBe64(cgen_var_37);
+    uint64_t cgen_var_47 = (uint64_t)(uintptr_t)forMarshaling->pSpecializationInfo;
+    vkStream->putBe64(cgen_var_47);
     if (forMarshaling->pSpecializationInfo)
     {
         marshal_VkSpecializationInfo(vkStream, (const VkSpecializationInfo*)(forMarshaling->pSpecializationInfo));
@@ -1842,7 +1917,9 @@
     }
     vkStream->read((VkPipelineShaderStageCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineShaderStageCreateFlags));
     vkStream->read((VkShaderStageFlagBits*)&forUnmarshaling->stage, sizeof(VkShaderStageFlagBits));
-    forUnmarshaling->module = (VkShaderModule)vkStream->getBe64();
+    uint64_t cgen_var_48;
+    vkStream->read((uint64_t*)&cgen_var_48, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_48, (VkShaderModule*)&forUnmarshaling->module, 1);
     vkStream->loadStringInPlace((char**)&forUnmarshaling->pName);
     // WARNING PTR CHECK
     forUnmarshaling->pSpecializationInfo = (const VkSpecializationInfo*)(uintptr_t)vkStream->getBe64();
@@ -2102,8 +2179,8 @@
     vkStream->write((VkPipelineViewportStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineViewportStateCreateFlags));
     vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_40 = (uint64_t)(uintptr_t)forMarshaling->pViewports;
-    vkStream->putBe64(cgen_var_40);
+    uint64_t cgen_var_50 = (uint64_t)(uintptr_t)forMarshaling->pViewports;
+    vkStream->putBe64(cgen_var_50);
     if (forMarshaling->pViewports)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
@@ -2113,8 +2190,8 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->scissorCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_41 = (uint64_t)(uintptr_t)forMarshaling->pScissors;
-    vkStream->putBe64(cgen_var_41);
+    uint64_t cgen_var_51 = (uint64_t)(uintptr_t)forMarshaling->pScissors;
+    vkStream->putBe64(cgen_var_51);
     if (forMarshaling->pScissors)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->scissorCount; ++i)
@@ -2232,8 +2309,8 @@
     vkStream->write((VkBool32*)&forMarshaling->sampleShadingEnable, sizeof(VkBool32));
     vkStream->write((float*)&forMarshaling->minSampleShading, sizeof(float));
     // WARNING PTR CHECK
-    uint64_t cgen_var_44 = (uint64_t)(uintptr_t)forMarshaling->pSampleMask;
-    vkStream->putBe64(cgen_var_44);
+    uint64_t cgen_var_54 = (uint64_t)(uintptr_t)forMarshaling->pSampleMask;
+    vkStream->putBe64(cgen_var_54);
     if (forMarshaling->pSampleMask)
     {
         vkStream->write((const VkSampleMask*)forMarshaling->pSampleMask, (((forMarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
@@ -2482,55 +2559,58 @@
     marshal_VkPipelineVertexInputStateCreateInfo(vkStream, (const VkPipelineVertexInputStateCreateInfo*)(forMarshaling->pVertexInputState));
     marshal_VkPipelineInputAssemblyStateCreateInfo(vkStream, (const VkPipelineInputAssemblyStateCreateInfo*)(forMarshaling->pInputAssemblyState));
     // WARNING PTR CHECK
-    uint64_t cgen_var_46 = (uint64_t)(uintptr_t)forMarshaling->pTessellationState;
-    vkStream->putBe64(cgen_var_46);
+    uint64_t cgen_var_56 = (uint64_t)(uintptr_t)forMarshaling->pTessellationState;
+    vkStream->putBe64(cgen_var_56);
     if (forMarshaling->pTessellationState)
     {
         marshal_VkPipelineTessellationStateCreateInfo(vkStream, (const VkPipelineTessellationStateCreateInfo*)(forMarshaling->pTessellationState));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_47 = (uint64_t)(uintptr_t)forMarshaling->pViewportState;
-    vkStream->putBe64(cgen_var_47);
+    uint64_t cgen_var_57 = (uint64_t)(uintptr_t)forMarshaling->pViewportState;
+    vkStream->putBe64(cgen_var_57);
     if (forMarshaling->pViewportState)
     {
         marshal_VkPipelineViewportStateCreateInfo(vkStream, (const VkPipelineViewportStateCreateInfo*)(forMarshaling->pViewportState));
     }
     marshal_VkPipelineRasterizationStateCreateInfo(vkStream, (const VkPipelineRasterizationStateCreateInfo*)(forMarshaling->pRasterizationState));
     // WARNING PTR CHECK
-    uint64_t cgen_var_48 = (uint64_t)(uintptr_t)forMarshaling->pMultisampleState;
-    vkStream->putBe64(cgen_var_48);
+    uint64_t cgen_var_58 = (uint64_t)(uintptr_t)forMarshaling->pMultisampleState;
+    vkStream->putBe64(cgen_var_58);
     if (forMarshaling->pMultisampleState)
     {
         marshal_VkPipelineMultisampleStateCreateInfo(vkStream, (const VkPipelineMultisampleStateCreateInfo*)(forMarshaling->pMultisampleState));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_49 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilState;
-    vkStream->putBe64(cgen_var_49);
+    uint64_t cgen_var_59 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilState;
+    vkStream->putBe64(cgen_var_59);
     if (forMarshaling->pDepthStencilState)
     {
         marshal_VkPipelineDepthStencilStateCreateInfo(vkStream, (const VkPipelineDepthStencilStateCreateInfo*)(forMarshaling->pDepthStencilState));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_50 = (uint64_t)(uintptr_t)forMarshaling->pColorBlendState;
-    vkStream->putBe64(cgen_var_50);
+    uint64_t cgen_var_60 = (uint64_t)(uintptr_t)forMarshaling->pColorBlendState;
+    vkStream->putBe64(cgen_var_60);
     if (forMarshaling->pColorBlendState)
     {
         marshal_VkPipelineColorBlendStateCreateInfo(vkStream, (const VkPipelineColorBlendStateCreateInfo*)(forMarshaling->pColorBlendState));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_51 = (uint64_t)(uintptr_t)forMarshaling->pDynamicState;
-    vkStream->putBe64(cgen_var_51);
+    uint64_t cgen_var_61 = (uint64_t)(uintptr_t)forMarshaling->pDynamicState;
+    vkStream->putBe64(cgen_var_61);
     if (forMarshaling->pDynamicState)
     {
         marshal_VkPipelineDynamicStateCreateInfo(vkStream, (const VkPipelineDynamicStateCreateInfo*)(forMarshaling->pDynamicState));
     }
-    uint64_t cgen_var_52 = (uint64_t)forMarshaling->layout;
-    vkStream->putBe64(cgen_var_52);
-    uint64_t cgen_var_53 = (uint64_t)forMarshaling->renderPass;
-    vkStream->putBe64(cgen_var_53);
+    uint64_t cgen_var_62;
+    vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->layout, &cgen_var_62, 1);
+    vkStream->write((uint64_t*)&cgen_var_62, 8);
+    uint64_t cgen_var_63;
+    vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_63, 1);
+    vkStream->write((uint64_t*)&cgen_var_63, 8);
     vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
-    uint64_t cgen_var_54 = (uint64_t)forMarshaling->basePipelineHandle;
-    vkStream->putBe64(cgen_var_54);
+    uint64_t cgen_var_64;
+    vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->basePipelineHandle, &cgen_var_64, 1);
+    vkStream->write((uint64_t*)&cgen_var_64, 8);
     vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
@@ -2603,10 +2683,16 @@
         vkStream->alloc((void**)&forUnmarshaling->pDynamicState, sizeof(const VkPipelineDynamicStateCreateInfo));
         unmarshal_VkPipelineDynamicStateCreateInfo(vkStream, (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState));
     }
-    forUnmarshaling->layout = (VkPipelineLayout)vkStream->getBe64();
-    forUnmarshaling->renderPass = (VkRenderPass)vkStream->getBe64();
+    uint64_t cgen_var_71;
+    vkStream->read((uint64_t*)&cgen_var_71, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_71, (VkPipelineLayout*)&forUnmarshaling->layout, 1);
+    uint64_t cgen_var_72;
+    vkStream->read((uint64_t*)&cgen_var_72, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_72, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
-    forUnmarshaling->basePipelineHandle = (VkPipeline)vkStream->getBe64();
+    uint64_t cgen_var_73;
+    vkStream->read((uint64_t*)&cgen_var_73, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipeline(&cgen_var_73, (VkPipeline*)&forUnmarshaling->basePipelineHandle, 1);
     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
@@ -2624,10 +2710,12 @@
     }
     vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
     marshal_VkPipelineShaderStageCreateInfo(vkStream, (VkPipelineShaderStageCreateInfo*)(&forMarshaling->stage));
-    uint64_t cgen_var_64 = (uint64_t)forMarshaling->layout;
-    vkStream->putBe64(cgen_var_64);
-    uint64_t cgen_var_65 = (uint64_t)forMarshaling->basePipelineHandle;
-    vkStream->putBe64(cgen_var_65);
+    uint64_t cgen_var_74;
+    vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->layout, &cgen_var_74, 1);
+    vkStream->write((uint64_t*)&cgen_var_74, 8);
+    uint64_t cgen_var_75;
+    vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->basePipelineHandle, &cgen_var_75, 1);
+    vkStream->write((uint64_t*)&cgen_var_75, 8);
     vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
@@ -2647,8 +2735,12 @@
     }
     vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
     unmarshal_VkPipelineShaderStageCreateInfo(vkStream, (VkPipelineShaderStageCreateInfo*)(&forUnmarshaling->stage));
-    forUnmarshaling->layout = (VkPipelineLayout)vkStream->getBe64();
-    forUnmarshaling->basePipelineHandle = (VkPipeline)vkStream->getBe64();
+    uint64_t cgen_var_76;
+    vkStream->read((uint64_t*)&cgen_var_76, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_76, (VkPipelineLayout*)&forUnmarshaling->layout, 1);
+    uint64_t cgen_var_77;
+    vkStream->read((uint64_t*)&cgen_var_77, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipeline(&cgen_var_77, (VkPipeline*)&forUnmarshaling->basePipelineHandle, 1);
     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
@@ -2684,8 +2776,13 @@
     }
     vkStream->write((VkPipelineLayoutCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineLayoutCreateFlags));
     vkStream->write((uint32_t*)&forMarshaling->setLayoutCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDescriptorSetLayout*)forMarshaling->pSetLayouts, forMarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+    if (forMarshaling->setLayoutCount)
+    {
+        uint64_t* cgen_var_78;
+        vkStream->alloc((void**)&cgen_var_78, forMarshaling->setLayoutCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(forMarshaling->pSetLayouts, cgen_var_78, forMarshaling->setLayoutCount);
+        vkStream->write((uint64_t*)cgen_var_78, 8);
+    }
     vkStream->write((uint32_t*)&forMarshaling->pushConstantRangeCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->pushConstantRangeCount; ++i)
     {
@@ -2710,8 +2807,13 @@
     vkStream->read((VkPipelineLayoutCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineLayoutCreateFlags));
     vkStream->read((uint32_t*)&forUnmarshaling->setLayoutCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts, forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+    if (forUnmarshaling->setLayoutCount)
+    {
+        uint64_t* cgen_var_79;
+        vkStream->alloc((void**)&cgen_var_79, forUnmarshaling->setLayoutCount * 8);
+        vkStream->read((uint64_t*)cgen_var_79, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(cgen_var_79, (VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->setLayoutCount);
+    }
     vkStream->read((uint32_t*)&forUnmarshaling->pushConstantRangeCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pPushConstantRanges, forUnmarshaling->pushConstantRangeCount * sizeof(const VkPushConstantRange));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pushConstantRangeCount; ++i)
@@ -2791,12 +2893,17 @@
     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
     vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
     // WARNING PTR CHECK
-    uint64_t cgen_var_68 = (uint64_t)(uintptr_t)forMarshaling->pImmutableSamplers;
-    vkStream->putBe64(cgen_var_68);
+    uint64_t cgen_var_80 = (uint64_t)(uintptr_t)forMarshaling->pImmutableSamplers;
+    vkStream->putBe64(cgen_var_80);
     if (forMarshaling->pImmutableSamplers)
     {
-        // WARNING HANDLE TYPE POINTER
-        vkStream->write((const VkSampler*)forMarshaling->pImmutableSamplers, forMarshaling->descriptorCount * sizeof(const VkSampler));
+        if (forMarshaling->descriptorCount)
+        {
+            uint64_t* cgen_var_81;
+            vkStream->alloc((void**)&cgen_var_81, forMarshaling->descriptorCount * 8);
+            vkStream->handleMapping()->mapHandles_VkSampler_u64(forMarshaling->pImmutableSamplers, cgen_var_81, forMarshaling->descriptorCount);
+            vkStream->write((uint64_t*)cgen_var_81, 8);
+        }
     }
 }
 
@@ -2813,8 +2920,13 @@
     if (forUnmarshaling->pImmutableSamplers)
     {
         vkStream->alloc((void**)&forUnmarshaling->pImmutableSamplers, forUnmarshaling->descriptorCount * sizeof(const VkSampler));
-        // WARNING HANDLE TYPE POINTER
-        vkStream->read((VkSampler*)forUnmarshaling->pImmutableSamplers, forUnmarshaling->descriptorCount * sizeof(const VkSampler));
+        if (forUnmarshaling->descriptorCount)
+        {
+            uint64_t* cgen_var_83;
+            vkStream->alloc((void**)&cgen_var_83, forUnmarshaling->descriptorCount * 8);
+            vkStream->read((uint64_t*)cgen_var_83, 8);
+            vkStream->handleMapping()->mapHandles_u64_VkSampler(cgen_var_83, (VkSampler*)forUnmarshaling->pImmutableSamplers, forUnmarshaling->descriptorCount);
+        }
     }
 }
 
@@ -2934,11 +3046,17 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_70 = (uint64_t)forMarshaling->descriptorPool;
-    vkStream->putBe64(cgen_var_70);
+    uint64_t cgen_var_84;
+    vkStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&forMarshaling->descriptorPool, &cgen_var_84, 1);
+    vkStream->write((uint64_t*)&cgen_var_84, 8);
     vkStream->write((uint32_t*)&forMarshaling->descriptorSetCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDescriptorSetLayout*)forMarshaling->pSetLayouts, forMarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+    if (forMarshaling->descriptorSetCount)
+    {
+        uint64_t* cgen_var_85;
+        vkStream->alloc((void**)&cgen_var_85, forMarshaling->descriptorSetCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(forMarshaling->pSetLayouts, cgen_var_85, forMarshaling->descriptorSetCount);
+        vkStream->write((uint64_t*)cgen_var_85, 8);
+    }
 }
 
 void unmarshal_VkDescriptorSetAllocateInfo(
@@ -2955,21 +3073,30 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->descriptorPool = (VkDescriptorPool)vkStream->getBe64();
+    uint64_t cgen_var_86;
+    vkStream->read((uint64_t*)&cgen_var_86, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_86, (VkDescriptorPool*)&forUnmarshaling->descriptorPool, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->descriptorSetCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+    if (forUnmarshaling->descriptorSetCount)
+    {
+        uint64_t* cgen_var_87;
+        vkStream->alloc((void**)&cgen_var_87, forUnmarshaling->descriptorSetCount * 8);
+        vkStream->read((uint64_t*)cgen_var_87, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(cgen_var_87, (VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount);
+    }
 }
 
 void marshal_VkDescriptorImageInfo(
     VulkanStream* vkStream,
     const VkDescriptorImageInfo* forMarshaling)
 {
-    uint64_t cgen_var_72 = (uint64_t)forMarshaling->sampler;
-    vkStream->putBe64(cgen_var_72);
-    uint64_t cgen_var_73 = (uint64_t)forMarshaling->imageView;
-    vkStream->putBe64(cgen_var_73);
+    uint64_t cgen_var_88;
+    vkStream->handleMapping()->mapHandles_VkSampler_u64(&forMarshaling->sampler, &cgen_var_88, 1);
+    vkStream->write((uint64_t*)&cgen_var_88, 8);
+    uint64_t cgen_var_89;
+    vkStream->handleMapping()->mapHandles_VkImageView_u64(&forMarshaling->imageView, &cgen_var_89, 1);
+    vkStream->write((uint64_t*)&cgen_var_89, 8);
     vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
 }
 
@@ -2977,8 +3104,12 @@
     VulkanStream* vkStream,
     VkDescriptorImageInfo* forUnmarshaling)
 {
-    forUnmarshaling->sampler = (VkSampler)vkStream->getBe64();
-    forUnmarshaling->imageView = (VkImageView)vkStream->getBe64();
+    uint64_t cgen_var_90;
+    vkStream->read((uint64_t*)&cgen_var_90, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_90, (VkSampler*)&forUnmarshaling->sampler, 1);
+    uint64_t cgen_var_91;
+    vkStream->read((uint64_t*)&cgen_var_91, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_91, (VkImageView*)&forUnmarshaling->imageView, 1);
     vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
 }
 
@@ -2986,8 +3117,9 @@
     VulkanStream* vkStream,
     const VkDescriptorBufferInfo* forMarshaling)
 {
-    uint64_t cgen_var_76 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_76);
+    uint64_t cgen_var_92;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_92, 1);
+    vkStream->write((uint64_t*)&cgen_var_92, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
     vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
 }
@@ -2996,7 +3128,9 @@
     VulkanStream* vkStream,
     VkDescriptorBufferInfo* forUnmarshaling)
 {
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_93;
+    vkStream->read((uint64_t*)&cgen_var_93, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_93, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
 }
@@ -3013,15 +3147,16 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_78 = (uint64_t)forMarshaling->dstSet;
-    vkStream->putBe64(cgen_var_78);
+    uint64_t cgen_var_94;
+    vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->dstSet, &cgen_var_94, 1);
+    vkStream->write((uint64_t*)&cgen_var_94, 8);
     vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
     vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
     // WARNING PTR CHECK
-    uint64_t cgen_var_79 = (uint64_t)(uintptr_t)forMarshaling->pImageInfo;
-    vkStream->putBe64(cgen_var_79);
+    uint64_t cgen_var_95 = (uint64_t)(uintptr_t)forMarshaling->pImageInfo;
+    vkStream->putBe64(cgen_var_95);
     if (forMarshaling->pImageInfo)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i)
@@ -3030,8 +3165,8 @@
         }
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_80 = (uint64_t)(uintptr_t)forMarshaling->pBufferInfo;
-    vkStream->putBe64(cgen_var_80);
+    uint64_t cgen_var_96 = (uint64_t)(uintptr_t)forMarshaling->pBufferInfo;
+    vkStream->putBe64(cgen_var_96);
     if (forMarshaling->pBufferInfo)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i)
@@ -3040,12 +3175,17 @@
         }
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_81 = (uint64_t)(uintptr_t)forMarshaling->pTexelBufferView;
-    vkStream->putBe64(cgen_var_81);
+    uint64_t cgen_var_97 = (uint64_t)(uintptr_t)forMarshaling->pTexelBufferView;
+    vkStream->putBe64(cgen_var_97);
     if (forMarshaling->pTexelBufferView)
     {
-        // WARNING HANDLE TYPE POINTER
-        vkStream->write((const VkBufferView*)forMarshaling->pTexelBufferView, forMarshaling->descriptorCount * sizeof(const VkBufferView));
+        if (forMarshaling->descriptorCount)
+        {
+            uint64_t* cgen_var_98;
+            vkStream->alloc((void**)&cgen_var_98, forMarshaling->descriptorCount * 8);
+            vkStream->handleMapping()->mapHandles_VkBufferView_u64(forMarshaling->pTexelBufferView, cgen_var_98, forMarshaling->descriptorCount);
+            vkStream->write((uint64_t*)cgen_var_98, 8);
+        }
     }
 }
 
@@ -3063,7 +3203,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->dstSet = (VkDescriptorSet)vkStream->getBe64();
+    uint64_t cgen_var_99;
+    vkStream->read((uint64_t*)&cgen_var_99, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(&cgen_var_99, (VkDescriptorSet*)&forUnmarshaling->dstSet, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
@@ -3093,8 +3235,13 @@
     if (forUnmarshaling->pTexelBufferView)
     {
         vkStream->alloc((void**)&forUnmarshaling->pTexelBufferView, forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
-        // WARNING HANDLE TYPE POINTER
-        vkStream->read((VkBufferView*)forUnmarshaling->pTexelBufferView, forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
+        if (forUnmarshaling->descriptorCount)
+        {
+            uint64_t* cgen_var_103;
+            vkStream->alloc((void**)&cgen_var_103, forUnmarshaling->descriptorCount * 8);
+            vkStream->read((uint64_t*)cgen_var_103, 8);
+            vkStream->handleMapping()->mapHandles_u64_VkBufferView(cgen_var_103, (VkBufferView*)forUnmarshaling->pTexelBufferView, forUnmarshaling->descriptorCount);
+        }
     }
 }
 
@@ -3110,12 +3257,14 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_86 = (uint64_t)forMarshaling->srcSet;
-    vkStream->putBe64(cgen_var_86);
+    uint64_t cgen_var_104;
+    vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->srcSet, &cgen_var_104, 1);
+    vkStream->write((uint64_t*)&cgen_var_104, 8);
     vkStream->write((uint32_t*)&forMarshaling->srcBinding, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->srcArrayElement, sizeof(uint32_t));
-    uint64_t cgen_var_87 = (uint64_t)forMarshaling->dstSet;
-    vkStream->putBe64(cgen_var_87);
+    uint64_t cgen_var_105;
+    vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->dstSet, &cgen_var_105, 1);
+    vkStream->write((uint64_t*)&cgen_var_105, 8);
     vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
@@ -3135,10 +3284,14 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->srcSet = (VkDescriptorSet)vkStream->getBe64();
+    uint64_t cgen_var_106;
+    vkStream->read((uint64_t*)&cgen_var_106, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(&cgen_var_106, (VkDescriptorSet*)&forUnmarshaling->srcSet, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->srcBinding, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->srcArrayElement, sizeof(uint32_t));
-    forUnmarshaling->dstSet = (VkDescriptorSet)vkStream->getBe64();
+    uint64_t cgen_var_107;
+    vkStream->read((uint64_t*)&cgen_var_107, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(&cgen_var_107, (VkDescriptorSet*)&forUnmarshaling->dstSet, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
@@ -3157,11 +3310,17 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkFramebufferCreateFlags*)&forMarshaling->flags, sizeof(VkFramebufferCreateFlags));
-    uint64_t cgen_var_90 = (uint64_t)forMarshaling->renderPass;
-    vkStream->putBe64(cgen_var_90);
+    uint64_t cgen_var_108;
+    vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_108, 1);
+    vkStream->write((uint64_t*)&cgen_var_108, 8);
     vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkImageView*)forMarshaling->pAttachments, forMarshaling->attachmentCount * sizeof(const VkImageView));
+    if (forMarshaling->attachmentCount)
+    {
+        uint64_t* cgen_var_109;
+        vkStream->alloc((void**)&cgen_var_109, forMarshaling->attachmentCount * 8);
+        vkStream->handleMapping()->mapHandles_VkImageView_u64(forMarshaling->pAttachments, cgen_var_109, forMarshaling->attachmentCount);
+        vkStream->write((uint64_t*)cgen_var_109, 8);
+    }
     vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->layers, sizeof(uint32_t));
@@ -3182,11 +3341,18 @@
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
     vkStream->read((VkFramebufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkFramebufferCreateFlags));
-    forUnmarshaling->renderPass = (VkRenderPass)vkStream->getBe64();
+    uint64_t cgen_var_110;
+    vkStream->read((uint64_t*)&cgen_var_110, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_110, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkImageView));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkImageView*)forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkImageView));
+    if (forUnmarshaling->attachmentCount)
+    {
+        uint64_t* cgen_var_111;
+        vkStream->alloc((void**)&cgen_var_111, forUnmarshaling->attachmentCount * 8);
+        vkStream->read((uint64_t*)cgen_var_111, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkImageView(cgen_var_111, (VkImageView*)forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount);
+    }
     vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->layers, sizeof(uint32_t));
@@ -3255,8 +3421,8 @@
         marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pColorAttachments + i));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_92 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
-    vkStream->putBe64(cgen_var_92);
+    uint64_t cgen_var_112 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
+    vkStream->putBe64(cgen_var_112);
     if (forMarshaling->pResolveAttachments)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
@@ -3265,8 +3431,8 @@
         }
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_93 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
-    vkStream->putBe64(cgen_var_93);
+    uint64_t cgen_var_113 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
+    vkStream->putBe64(cgen_var_113);
     if (forMarshaling->pDepthStencilAttachment)
     {
         marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pDepthStencilAttachment));
@@ -3452,8 +3618,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_96 = (uint64_t)forMarshaling->commandPool;
-    vkStream->putBe64(cgen_var_96);
+    uint64_t cgen_var_116;
+    vkStream->handleMapping()->mapHandles_VkCommandPool_u64(&forMarshaling->commandPool, &cgen_var_116, 1);
+    vkStream->write((uint64_t*)&cgen_var_116, 8);
     vkStream->write((VkCommandBufferLevel*)&forMarshaling->level, sizeof(VkCommandBufferLevel));
     vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
 }
@@ -3472,7 +3639,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->commandPool = (VkCommandPool)vkStream->getBe64();
+    uint64_t cgen_var_117;
+    vkStream->read((uint64_t*)&cgen_var_117, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_117, (VkCommandPool*)&forUnmarshaling->commandPool, 1);
     vkStream->read((VkCommandBufferLevel*)&forUnmarshaling->level, sizeof(VkCommandBufferLevel));
     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
 }
@@ -3489,11 +3658,13 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_98 = (uint64_t)forMarshaling->renderPass;
-    vkStream->putBe64(cgen_var_98);
+    uint64_t cgen_var_118;
+    vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_118, 1);
+    vkStream->write((uint64_t*)&cgen_var_118, 8);
     vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
-    uint64_t cgen_var_99 = (uint64_t)forMarshaling->framebuffer;
-    vkStream->putBe64(cgen_var_99);
+    uint64_t cgen_var_119;
+    vkStream->handleMapping()->mapHandles_VkFramebuffer_u64(&forMarshaling->framebuffer, &cgen_var_119, 1);
+    vkStream->write((uint64_t*)&cgen_var_119, 8);
     vkStream->write((VkBool32*)&forMarshaling->occlusionQueryEnable, sizeof(VkBool32));
     vkStream->write((VkQueryControlFlags*)&forMarshaling->queryFlags, sizeof(VkQueryControlFlags));
     vkStream->write((VkQueryPipelineStatisticFlags*)&forMarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
@@ -3513,9 +3684,13 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->renderPass = (VkRenderPass)vkStream->getBe64();
+    uint64_t cgen_var_120;
+    vkStream->read((uint64_t*)&cgen_var_120, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_120, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
-    forUnmarshaling->framebuffer = (VkFramebuffer)vkStream->getBe64();
+    uint64_t cgen_var_121;
+    vkStream->read((uint64_t*)&cgen_var_121, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_121, (VkFramebuffer*)&forUnmarshaling->framebuffer, 1);
     vkStream->read((VkBool32*)&forUnmarshaling->occlusionQueryEnable, sizeof(VkBool32));
     vkStream->read((VkQueryControlFlags*)&forUnmarshaling->queryFlags, sizeof(VkQueryControlFlags));
     vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
@@ -3535,8 +3710,8 @@
     }
     vkStream->write((VkCommandBufferUsageFlags*)&forMarshaling->flags, sizeof(VkCommandBufferUsageFlags));
     // WARNING PTR CHECK
-    uint64_t cgen_var_102 = (uint64_t)(uintptr_t)forMarshaling->pInheritanceInfo;
-    vkStream->putBe64(cgen_var_102);
+    uint64_t cgen_var_122 = (uint64_t)(uintptr_t)forMarshaling->pInheritanceInfo;
+    vkStream->putBe64(cgen_var_122);
     if (forMarshaling->pInheritanceInfo)
     {
         marshal_VkCommandBufferInheritanceInfo(vkStream, (const VkCommandBufferInheritanceInfo*)(forMarshaling->pInheritanceInfo));
@@ -3835,8 +4010,9 @@
     vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
-    uint64_t cgen_var_104 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_104);
+    uint64_t cgen_var_124;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_124, 1);
+    vkStream->write((uint64_t*)&cgen_var_124, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
     vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
 }
@@ -3859,7 +4035,9 @@
     vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_125;
+    vkStream->read((uint64_t*)&cgen_var_125, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_125, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
 }
@@ -3882,8 +4060,9 @@
     vkStream->write((VkImageLayout*)&forMarshaling->newLayout, sizeof(VkImageLayout));
     vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
-    uint64_t cgen_var_106 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_106);
+    uint64_t cgen_var_126;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_126, 1);
+    vkStream->write((uint64_t*)&cgen_var_126, 8);
     marshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
 }
 
@@ -3907,7 +4086,9 @@
     vkStream->read((VkImageLayout*)&forUnmarshaling->newLayout, sizeof(VkImageLayout));
     vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_127;
+    vkStream->read((uint64_t*)&cgen_var_127, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_127, (VkImage*)&forUnmarshaling->image, 1);
     unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
 }
 
@@ -3923,15 +4104,17 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_108 = (uint64_t)forMarshaling->renderPass;
-    vkStream->putBe64(cgen_var_108);
-    uint64_t cgen_var_109 = (uint64_t)forMarshaling->framebuffer;
-    vkStream->putBe64(cgen_var_109);
+    uint64_t cgen_var_128;
+    vkStream->handleMapping()->mapHandles_VkRenderPass_u64(&forMarshaling->renderPass, &cgen_var_128, 1);
+    vkStream->write((uint64_t*)&cgen_var_128, 8);
+    uint64_t cgen_var_129;
+    vkStream->handleMapping()->mapHandles_VkFramebuffer_u64(&forMarshaling->framebuffer, &cgen_var_129, 1);
+    vkStream->write((uint64_t*)&cgen_var_129, 8);
     marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->renderArea));
     vkStream->write((uint32_t*)&forMarshaling->clearValueCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_110 = (uint64_t)(uintptr_t)forMarshaling->pClearValues;
-    vkStream->putBe64(cgen_var_110);
+    uint64_t cgen_var_130 = (uint64_t)(uintptr_t)forMarshaling->pClearValues;
+    vkStream->putBe64(cgen_var_130);
     if (forMarshaling->pClearValues)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->clearValueCount; ++i)
@@ -3955,8 +4138,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->renderPass = (VkRenderPass)vkStream->getBe64();
-    forUnmarshaling->framebuffer = (VkFramebuffer)vkStream->getBe64();
+    uint64_t cgen_var_131;
+    vkStream->read((uint64_t*)&cgen_var_131, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_131, (VkRenderPass*)&forUnmarshaling->renderPass, 1);
+    uint64_t cgen_var_132;
+    vkStream->read((uint64_t*)&cgen_var_132, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_132, (VkFramebuffer*)&forUnmarshaling->framebuffer, 1);
     unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->renderArea));
     vkStream->read((uint32_t*)&forUnmarshaling->clearValueCount, sizeof(uint32_t));
     // WARNING PTR CHECK
@@ -4143,10 +4330,12 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_114 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_114);
-    uint64_t cgen_var_115 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_115);
+    uint64_t cgen_var_134;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_134, 1);
+    vkStream->write((uint64_t*)&cgen_var_134, 8);
+    uint64_t cgen_var_135;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_135, 1);
+    vkStream->write((uint64_t*)&cgen_var_135, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
@@ -4164,8 +4353,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_136;
+    vkStream->read((uint64_t*)&cgen_var_136, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_136, (VkBuffer*)&forUnmarshaling->buffer, 1);
+    uint64_t cgen_var_137;
+    vkStream->read((uint64_t*)&cgen_var_137, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_137, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
@@ -4181,10 +4374,12 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_118 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_118);
-    uint64_t cgen_var_119 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_119);
+    uint64_t cgen_var_138;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_138, 1);
+    vkStream->write((uint64_t*)&cgen_var_138, 8);
+    uint64_t cgen_var_139;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_139, 1);
+    vkStream->write((uint64_t*)&cgen_var_139, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
@@ -4202,8 +4397,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_140;
+    vkStream->read((uint64_t*)&cgen_var_140, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_140, (VkImage*)&forUnmarshaling->image, 1);
+    uint64_t cgen_var_141;
+    vkStream->read((uint64_t*)&cgen_var_141, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_141, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
@@ -4291,10 +4490,12 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_122 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_122);
-    uint64_t cgen_var_123 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_123);
+    uint64_t cgen_var_142;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_142, 1);
+    vkStream->write((uint64_t*)&cgen_var_142, 8);
+    uint64_t cgen_var_143;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_143, 1);
+    vkStream->write((uint64_t*)&cgen_var_143, 8);
 }
 
 void unmarshal_VkMemoryDedicatedAllocateInfo(
@@ -4311,8 +4512,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_144;
+    vkStream->read((uint64_t*)&cgen_var_144, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_144, (VkImage*)&forUnmarshaling->image, 1);
+    uint64_t cgen_var_145;
+    vkStream->read((uint64_t*)&cgen_var_145, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_145, (VkBuffer*)&forUnmarshaling->buffer, 1);
 }
 
 void marshal_VkMemoryAllocateFlagsInfo(
@@ -4633,8 +4838,13 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkPhysicalDevice*)forMarshaling->pPhysicalDevices, forMarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+    if (forMarshaling->physicalDeviceCount)
+    {
+        uint64_t* cgen_var_146;
+        vkStream->alloc((void**)&cgen_var_146, forMarshaling->physicalDeviceCount * 8);
+        vkStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(forMarshaling->pPhysicalDevices, cgen_var_146, forMarshaling->physicalDeviceCount);
+        vkStream->write((uint64_t*)cgen_var_146, 8);
+    }
 }
 
 void unmarshal_VkDeviceGroupDeviceCreateInfo(
@@ -4653,8 +4863,13 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+    if (forUnmarshaling->physicalDeviceCount)
+    {
+        uint64_t* cgen_var_147;
+        vkStream->alloc((void**)&cgen_var_147, forUnmarshaling->physicalDeviceCount * 8);
+        vkStream->read((uint64_t*)cgen_var_147, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_147, (VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount);
+    }
 }
 
 void marshal_VkBufferMemoryRequirementsInfo2(
@@ -4669,8 +4884,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_126 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_126);
+    uint64_t cgen_var_148;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_148, 1);
+    vkStream->write((uint64_t*)&cgen_var_148, 8);
 }
 
 void unmarshal_VkBufferMemoryRequirementsInfo2(
@@ -4687,7 +4903,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_149;
+    vkStream->read((uint64_t*)&cgen_var_149, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_149, (VkBuffer*)&forUnmarshaling->buffer, 1);
 }
 
 void marshal_VkImageMemoryRequirementsInfo2(
@@ -4702,8 +4920,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_128 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_128);
+    uint64_t cgen_var_150;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_150, 1);
+    vkStream->write((uint64_t*)&cgen_var_150, 8);
 }
 
 void unmarshal_VkImageMemoryRequirementsInfo2(
@@ -4720,7 +4939,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_151;
+    vkStream->read((uint64_t*)&cgen_var_151, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_151, (VkImage*)&forUnmarshaling->image, 1);
 }
 
 void marshal_VkImageSparseMemoryRequirementsInfo2(
@@ -4735,8 +4956,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_130 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_130);
+    uint64_t cgen_var_152;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_152, 1);
+    vkStream->write((uint64_t*)&cgen_var_152, 8);
 }
 
 void unmarshal_VkImageSparseMemoryRequirementsInfo2(
@@ -4753,7 +4975,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
+    uint64_t cgen_var_153;
+    vkStream->read((uint64_t*)&cgen_var_153, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_153, (VkImage*)&forUnmarshaling->image, 1);
 }
 
 void marshal_VkMemoryRequirements2(
@@ -5618,8 +5842,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_132 = (uint64_t)forMarshaling->conversion;
-    vkStream->putBe64(cgen_var_132);
+    uint64_t cgen_var_154;
+    vkStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&forMarshaling->conversion, &cgen_var_154, 1);
+    vkStream->write((uint64_t*)&cgen_var_154, 8);
 }
 
 void unmarshal_VkSamplerYcbcrConversionInfo(
@@ -5636,7 +5861,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->conversion = (VkSamplerYcbcrConversion)vkStream->getBe64();
+    uint64_t cgen_var_155;
+    vkStream->read((uint64_t*)&cgen_var_155, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_155, (VkSamplerYcbcrConversion*)&forUnmarshaling->conversion, 1);
 }
 
 void marshal_VkBindImagePlaneMemoryInfo(
@@ -5810,11 +6037,13 @@
         marshal_VkDescriptorUpdateTemplateEntry(vkStream, (const VkDescriptorUpdateTemplateEntry*)(forMarshaling->pDescriptorUpdateEntries + i));
     }
     vkStream->write((VkDescriptorUpdateTemplateType*)&forMarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
-    uint64_t cgen_var_134 = (uint64_t)forMarshaling->descriptorSetLayout;
-    vkStream->putBe64(cgen_var_134);
+    uint64_t cgen_var_156;
+    vkStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&forMarshaling->descriptorSetLayout, &cgen_var_156, 1);
+    vkStream->write((uint64_t*)&cgen_var_156, 8);
     vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    uint64_t cgen_var_135 = (uint64_t)forMarshaling->pipelineLayout;
-    vkStream->putBe64(cgen_var_135);
+    uint64_t cgen_var_157;
+    vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->pipelineLayout, &cgen_var_157, 1);
+    vkStream->write((uint64_t*)&cgen_var_157, 8);
     vkStream->write((uint32_t*)&forMarshaling->set, sizeof(uint32_t));
 }
 
@@ -5840,9 +6069,13 @@
         unmarshal_VkDescriptorUpdateTemplateEntry(vkStream, (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i));
     }
     vkStream->read((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
-    forUnmarshaling->descriptorSetLayout = (VkDescriptorSetLayout)vkStream->getBe64();
+    uint64_t cgen_var_158;
+    vkStream->read((uint64_t*)&cgen_var_158, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_158, (VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout, 1);
     vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    forUnmarshaling->pipelineLayout = (VkPipelineLayout)vkStream->getBe64();
+    uint64_t cgen_var_159;
+    vkStream->read((uint64_t*)&cgen_var_159, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_159, (VkPipelineLayout*)&forUnmarshaling->pipelineLayout, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->set, sizeof(uint32_t));
 }
 
@@ -6495,8 +6728,9 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkSwapchainCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
-    uint64_t cgen_var_138 = (uint64_t)forMarshaling->surface;
-    vkStream->putBe64(cgen_var_138);
+    uint64_t cgen_var_160;
+    vkStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&forMarshaling->surface, &cgen_var_160, 1);
+    vkStream->write((uint64_t*)&cgen_var_160, 8);
     vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
     vkStream->write((VkFormat*)&forMarshaling->imageFormat, sizeof(VkFormat));
     vkStream->write((VkColorSpaceKHR*)&forMarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
@@ -6506,8 +6740,8 @@
     vkStream->write((VkSharingMode*)&forMarshaling->imageSharingMode, sizeof(VkSharingMode));
     vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_139 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
-    vkStream->putBe64(cgen_var_139);
+    uint64_t cgen_var_161 = (uint64_t)(uintptr_t)forMarshaling->pQueueFamilyIndices;
+    vkStream->putBe64(cgen_var_161);
     if (forMarshaling->pQueueFamilyIndices)
     {
         vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
@@ -6516,8 +6750,9 @@
     vkStream->write((VkCompositeAlphaFlagBitsKHR*)&forMarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
     vkStream->write((VkPresentModeKHR*)&forMarshaling->presentMode, sizeof(VkPresentModeKHR));
     vkStream->write((VkBool32*)&forMarshaling->clipped, sizeof(VkBool32));
-    uint64_t cgen_var_140 = (uint64_t)forMarshaling->oldSwapchain;
-    vkStream->putBe64(cgen_var_140);
+    uint64_t cgen_var_162;
+    vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->oldSwapchain, &cgen_var_162, 1);
+    vkStream->write((uint64_t*)&cgen_var_162, 8);
 }
 
 void unmarshal_VkSwapchainCreateInfoKHR(
@@ -6535,7 +6770,9 @@
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
     vkStream->read((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
-    forUnmarshaling->surface = (VkSurfaceKHR)vkStream->getBe64();
+    uint64_t cgen_var_163;
+    vkStream->read((uint64_t*)&cgen_var_163, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_163, (VkSurfaceKHR*)&forUnmarshaling->surface, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
     vkStream->read((VkFormat*)&forUnmarshaling->imageFormat, sizeof(VkFormat));
     vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
@@ -6555,7 +6792,9 @@
     vkStream->read((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
     vkStream->read((VkPresentModeKHR*)&forUnmarshaling->presentMode, sizeof(VkPresentModeKHR));
     vkStream->read((VkBool32*)&forUnmarshaling->clipped, sizeof(VkBool32));
-    forUnmarshaling->oldSwapchain = (VkSwapchainKHR)vkStream->getBe64();
+    uint64_t cgen_var_165;
+    vkStream->read((uint64_t*)&cgen_var_165, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_165, (VkSwapchainKHR*)&forUnmarshaling->oldSwapchain, 1);
 }
 
 void marshal_VkPresentInfoKHR(
@@ -6571,15 +6810,25 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forMarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_166;
+        vkStream->alloc((void**)&cgen_var_166, forMarshaling->waitSemaphoreCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSemaphore_u64(forMarshaling->pWaitSemaphores, cgen_var_166, forMarshaling->waitSemaphoreCount);
+        vkStream->write((uint64_t*)cgen_var_166, 8);
+    }
     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkSwapchainKHR*)forMarshaling->pSwapchains, forMarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+    if (forMarshaling->swapchainCount)
+    {
+        uint64_t* cgen_var_167;
+        vkStream->alloc((void**)&cgen_var_167, forMarshaling->swapchainCount * 8);
+        vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(forMarshaling->pSwapchains, cgen_var_167, forMarshaling->swapchainCount);
+        vkStream->write((uint64_t*)cgen_var_167, 8);
+    }
     vkStream->write((const uint32_t*)forMarshaling->pImageIndices, forMarshaling->swapchainCount * sizeof(const uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_144 = (uint64_t)(uintptr_t)forMarshaling->pResults;
-    vkStream->putBe64(cgen_var_144);
+    uint64_t cgen_var_168 = (uint64_t)(uintptr_t)forMarshaling->pResults;
+    vkStream->putBe64(cgen_var_168);
     if (forMarshaling->pResults)
     {
         vkStream->write((VkResult*)forMarshaling->pResults, forMarshaling->swapchainCount * sizeof(VkResult));
@@ -6602,12 +6851,22 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    if (forUnmarshaling->waitSemaphoreCount)
+    {
+        uint64_t* cgen_var_169;
+        vkStream->alloc((void**)&cgen_var_169, forUnmarshaling->waitSemaphoreCount * 8);
+        vkStream->read((uint64_t*)cgen_var_169, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSemaphore(cgen_var_169, (VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount);
+    }
     vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkSwapchainKHR*)forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+    if (forUnmarshaling->swapchainCount)
+    {
+        uint64_t* cgen_var_170;
+        vkStream->alloc((void**)&cgen_var_170, forUnmarshaling->swapchainCount * 8);
+        vkStream->read((uint64_t*)cgen_var_170, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_170, (VkSwapchainKHR*)forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
     vkStream->read((uint32_t*)forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
     // WARNING PTR CHECK
@@ -6631,8 +6890,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_146 = (uint64_t)forMarshaling->swapchain;
-    vkStream->putBe64(cgen_var_146);
+    uint64_t cgen_var_172;
+    vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_172, 1);
+    vkStream->write((uint64_t*)&cgen_var_172, 8);
 }
 
 void unmarshal_VkImageSwapchainCreateInfoKHR(
@@ -6649,7 +6909,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->swapchain = (VkSwapchainKHR)vkStream->getBe64();
+    uint64_t cgen_var_173;
+    vkStream->read((uint64_t*)&cgen_var_173, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_173, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
 }
 
 void marshal_VkBindImageMemorySwapchainInfoKHR(
@@ -6664,8 +6926,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_148 = (uint64_t)forMarshaling->swapchain;
-    vkStream->putBe64(cgen_var_148);
+    uint64_t cgen_var_174;
+    vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_174, 1);
+    vkStream->write((uint64_t*)&cgen_var_174, 8);
     vkStream->write((uint32_t*)&forMarshaling->imageIndex, sizeof(uint32_t));
 }
 
@@ -6683,7 +6946,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->swapchain = (VkSwapchainKHR)vkStream->getBe64();
+    uint64_t cgen_var_175;
+    vkStream->read((uint64_t*)&cgen_var_175, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_175, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->imageIndex, sizeof(uint32_t));
 }
 
@@ -6699,13 +6964,16 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_150 = (uint64_t)forMarshaling->swapchain;
-    vkStream->putBe64(cgen_var_150);
+    uint64_t cgen_var_176;
+    vkStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&forMarshaling->swapchain, &cgen_var_176, 1);
+    vkStream->write((uint64_t*)&cgen_var_176, 8);
     vkStream->write((uint64_t*)&forMarshaling->timeout, sizeof(uint64_t));
-    uint64_t cgen_var_151 = (uint64_t)forMarshaling->semaphore;
-    vkStream->putBe64(cgen_var_151);
-    uint64_t cgen_var_152 = (uint64_t)forMarshaling->fence;
-    vkStream->putBe64(cgen_var_152);
+    uint64_t cgen_var_177;
+    vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_177, 1);
+    vkStream->write((uint64_t*)&cgen_var_177, 8);
+    uint64_t cgen_var_178;
+    vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_178, 1);
+    vkStream->write((uint64_t*)&cgen_var_178, 8);
     vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
 }
 
@@ -6723,10 +6991,16 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->swapchain = (VkSwapchainKHR)vkStream->getBe64();
+    uint64_t cgen_var_179;
+    vkStream->read((uint64_t*)&cgen_var_179, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_179, (VkSwapchainKHR*)&forUnmarshaling->swapchain, 1);
     vkStream->read((uint64_t*)&forUnmarshaling->timeout, sizeof(uint64_t));
-    forUnmarshaling->semaphore = (VkSemaphore)vkStream->getBe64();
-    forUnmarshaling->fence = (VkFence)vkStream->getBe64();
+    uint64_t cgen_var_180;
+    vkStream->read((uint64_t*)&cgen_var_180, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
+    uint64_t cgen_var_181;
+    vkStream->read((uint64_t*)&cgen_var_181, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_181, (VkFence*)&forUnmarshaling->fence, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
 }
 
@@ -6839,8 +7113,9 @@
     VulkanStream* vkStream,
     const VkDisplayPropertiesKHR* forMarshaling)
 {
-    uint64_t cgen_var_156 = (uint64_t)forMarshaling->display;
-    vkStream->putBe64(cgen_var_156);
+    uint64_t cgen_var_182;
+    vkStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&forMarshaling->display, &cgen_var_182, 1);
+    vkStream->write((uint64_t*)&cgen_var_182, 8);
     vkStream->putString(forMarshaling->displayName);
     marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalDimensions));
     marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalResolution));
@@ -6853,7 +7128,9 @@
     VulkanStream* vkStream,
     VkDisplayPropertiesKHR* forUnmarshaling)
 {
-    forUnmarshaling->display = (VkDisplayKHR)vkStream->getBe64();
+    uint64_t cgen_var_183;
+    vkStream->read((uint64_t*)&cgen_var_183, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_183, (VkDisplayKHR*)&forUnmarshaling->display, 1);
     vkStream->loadStringInPlace((char**)&forUnmarshaling->displayName);
     unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalDimensions));
     unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalResolution));
@@ -6882,8 +7159,9 @@
     VulkanStream* vkStream,
     const VkDisplayModePropertiesKHR* forMarshaling)
 {
-    uint64_t cgen_var_158 = (uint64_t)forMarshaling->displayMode;
-    vkStream->putBe64(cgen_var_158);
+    uint64_t cgen_var_184;
+    vkStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&forMarshaling->displayMode, &cgen_var_184, 1);
+    vkStream->write((uint64_t*)&cgen_var_184, 8);
     marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
 }
 
@@ -6891,7 +7169,9 @@
     VulkanStream* vkStream,
     VkDisplayModePropertiesKHR* forUnmarshaling)
 {
-    forUnmarshaling->displayMode = (VkDisplayModeKHR)vkStream->getBe64();
+    uint64_t cgen_var_185;
+    vkStream->read((uint64_t*)&cgen_var_185, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_185, (VkDisplayModeKHR*)&forUnmarshaling->displayMode, 1);
     unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
 }
 
@@ -6963,8 +7243,9 @@
     VulkanStream* vkStream,
     const VkDisplayPlanePropertiesKHR* forMarshaling)
 {
-    uint64_t cgen_var_160 = (uint64_t)forMarshaling->currentDisplay;
-    vkStream->putBe64(cgen_var_160);
+    uint64_t cgen_var_186;
+    vkStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&forMarshaling->currentDisplay, &cgen_var_186, 1);
+    vkStream->write((uint64_t*)&cgen_var_186, 8);
     vkStream->write((uint32_t*)&forMarshaling->currentStackIndex, sizeof(uint32_t));
 }
 
@@ -6972,7 +7253,9 @@
     VulkanStream* vkStream,
     VkDisplayPlanePropertiesKHR* forUnmarshaling)
 {
-    forUnmarshaling->currentDisplay = (VkDisplayKHR)vkStream->getBe64();
+    uint64_t cgen_var_187;
+    vkStream->read((uint64_t*)&cgen_var_187, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_187, (VkDisplayKHR*)&forUnmarshaling->currentDisplay, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->currentStackIndex, sizeof(uint32_t));
 }
 
@@ -6989,8 +7272,9 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkDisplaySurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
-    uint64_t cgen_var_162 = (uint64_t)forMarshaling->displayMode;
-    vkStream->putBe64(cgen_var_162);
+    uint64_t cgen_var_188;
+    vkStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&forMarshaling->displayMode, &cgen_var_188, 1);
+    vkStream->write((uint64_t*)&cgen_var_188, 8);
     vkStream->write((uint32_t*)&forMarshaling->planeIndex, sizeof(uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->planeStackIndex, sizeof(uint32_t));
     vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->transform, sizeof(VkSurfaceTransformFlagBitsKHR));
@@ -7014,7 +7298,9 @@
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
     vkStream->read((VkDisplaySurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
-    forUnmarshaling->displayMode = (VkDisplayModeKHR)vkStream->getBe64();
+    uint64_t cgen_var_189;
+    vkStream->read((uint64_t*)&cgen_var_189, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_189, (VkDisplayModeKHR*)&forUnmarshaling->displayMode, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->planeIndex, sizeof(uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->planeStackIndex, sizeof(uint32_t));
     vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->transform, sizeof(VkSurfaceTransformFlagBitsKHR));
@@ -7077,8 +7363,8 @@
     }
     vkStream->write((VkXlibSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
     // WARNING PTR CHECK
-    uint64_t cgen_var_164 = (uint64_t)(uintptr_t)forMarshaling->dpy;
-    vkStream->putBe64(cgen_var_164);
+    uint64_t cgen_var_190 = (uint64_t)(uintptr_t)forMarshaling->dpy;
+    vkStream->putBe64(cgen_var_190);
     if (forMarshaling->dpy)
     {
         vkStream->write((Display*)forMarshaling->dpy, sizeof(Display));
@@ -7127,8 +7413,8 @@
     }
     vkStream->write((VkXcbSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
     // WARNING PTR CHECK
-    uint64_t cgen_var_166 = (uint64_t)(uintptr_t)forMarshaling->connection;
-    vkStream->putBe64(cgen_var_166);
+    uint64_t cgen_var_192 = (uint64_t)(uintptr_t)forMarshaling->connection;
+    vkStream->putBe64(cgen_var_192);
     if (forMarshaling->connection)
     {
         vkStream->write((xcb_connection_t*)forMarshaling->connection, sizeof(xcb_connection_t));
@@ -7177,15 +7463,15 @@
     }
     vkStream->write((VkWaylandSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
     // WARNING PTR CHECK
-    uint64_t cgen_var_168 = (uint64_t)(uintptr_t)forMarshaling->display;
-    vkStream->putBe64(cgen_var_168);
+    uint64_t cgen_var_194 = (uint64_t)(uintptr_t)forMarshaling->display;
+    vkStream->putBe64(cgen_var_194);
     if (forMarshaling->display)
     {
         vkStream->write((wl_display*)forMarshaling->display, sizeof(wl_display));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_169 = (uint64_t)(uintptr_t)forMarshaling->surface;
-    vkStream->putBe64(cgen_var_169);
+    uint64_t cgen_var_195 = (uint64_t)(uintptr_t)forMarshaling->surface;
+    vkStream->putBe64(cgen_var_195);
     if (forMarshaling->surface)
     {
         vkStream->write((wl_surface*)forMarshaling->surface, sizeof(wl_surface));
@@ -7239,15 +7525,15 @@
     }
     vkStream->write((VkMirSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
     // WARNING PTR CHECK
-    uint64_t cgen_var_172 = (uint64_t)(uintptr_t)forMarshaling->connection;
-    vkStream->putBe64(cgen_var_172);
+    uint64_t cgen_var_198 = (uint64_t)(uintptr_t)forMarshaling->connection;
+    vkStream->putBe64(cgen_var_198);
     if (forMarshaling->connection)
     {
         vkStream->write((MirConnection*)forMarshaling->connection, sizeof(MirConnection));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_173 = (uint64_t)(uintptr_t)forMarshaling->mirSurface;
-    vkStream->putBe64(cgen_var_173);
+    uint64_t cgen_var_199 = (uint64_t)(uintptr_t)forMarshaling->mirSurface;
+    vkStream->putBe64(cgen_var_199);
     if (forMarshaling->mirSurface)
     {
         vkStream->write((MirSurface*)forMarshaling->mirSurface, sizeof(MirSurface));
@@ -7301,8 +7587,8 @@
     }
     vkStream->write((VkAndroidSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
     // WARNING PTR CHECK
-    uint64_t cgen_var_176 = (uint64_t)(uintptr_t)forMarshaling->window;
-    vkStream->putBe64(cgen_var_176);
+    uint64_t cgen_var_202 = (uint64_t)(uintptr_t)forMarshaling->window;
+    vkStream->putBe64(cgen_var_202);
     if (forMarshaling->window)
     {
         vkStream->write((ANativeWindow*)forMarshaling->window, sizeof(ANativeWindow));
@@ -7440,8 +7726,8 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_178 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
-    vkStream->putBe64(cgen_var_178);
+    uint64_t cgen_var_204 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
+    vkStream->putBe64(cgen_var_204);
     if (forMarshaling->pAttributes)
     {
         vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
@@ -7519,8 +7805,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_180 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_180);
+    uint64_t cgen_var_206;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_206, 1);
+    vkStream->write((uint64_t*)&cgen_var_206, 8);
     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
@@ -7538,7 +7825,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_207;
+    vkStream->read((uint64_t*)&cgen_var_207, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_207, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
@@ -7622,8 +7911,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_182 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_182);
+    uint64_t cgen_var_208;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_208, 1);
+    vkStream->write((uint64_t*)&cgen_var_208, 8);
     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
@@ -7641,7 +7931,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_209;
+    vkStream->read((uint64_t*)&cgen_var_209, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_209, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
@@ -7660,13 +7952,23 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->acquireCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDeviceMemory*)forMarshaling->pAcquireSyncs, forMarshaling->acquireCount * sizeof(const VkDeviceMemory));
+    if (forMarshaling->acquireCount)
+    {
+        uint64_t* cgen_var_210;
+        vkStream->alloc((void**)&cgen_var_210, forMarshaling->acquireCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(forMarshaling->pAcquireSyncs, cgen_var_210, forMarshaling->acquireCount);
+        vkStream->write((uint64_t*)cgen_var_210, 8);
+    }
     vkStream->write((const uint64_t*)forMarshaling->pAcquireKeys, forMarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->write((const uint32_t*)forMarshaling->pAcquireTimeouts, forMarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->releaseCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDeviceMemory*)forMarshaling->pReleaseSyncs, forMarshaling->releaseCount * sizeof(const VkDeviceMemory));
+    if (forMarshaling->releaseCount)
+    {
+        uint64_t* cgen_var_211;
+        vkStream->alloc((void**)&cgen_var_211, forMarshaling->releaseCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(forMarshaling->pReleaseSyncs, cgen_var_211, forMarshaling->releaseCount);
+        vkStream->write((uint64_t*)cgen_var_211, 8);
+    }
     vkStream->write((const uint64_t*)forMarshaling->pReleaseKeys, forMarshaling->releaseCount * sizeof(const uint64_t));
 }
 
@@ -7686,16 +7988,26 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->acquireCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+    if (forUnmarshaling->acquireCount)
+    {
+        uint64_t* cgen_var_212;
+        vkStream->alloc((void**)&cgen_var_212, forUnmarshaling->acquireCount * 8);
+        vkStream->read((uint64_t*)cgen_var_212, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(cgen_var_212, (VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->read((uint64_t*)forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->alloc((void**)&forUnmarshaling->pAcquireTimeouts, forUnmarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->read((uint32_t*)forUnmarshaling->pAcquireTimeouts, forUnmarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->releaseCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+    if (forUnmarshaling->releaseCount)
+    {
+        uint64_t* cgen_var_213;
+        vkStream->alloc((void**)&cgen_var_213, forUnmarshaling->releaseCount * 8);
+        vkStream->read((uint64_t*)cgen_var_213, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(cgen_var_213, (VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
     vkStream->read((uint64_t*)forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
 }
@@ -7718,8 +8030,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_184 = (uint64_t)forMarshaling->semaphore;
-    vkStream->putBe64(cgen_var_184);
+    uint64_t cgen_var_214;
+    vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_214, 1);
+    vkStream->write((uint64_t*)&cgen_var_214, 8);
     vkStream->write((VkSemaphoreImportFlags*)&forMarshaling->flags, sizeof(VkSemaphoreImportFlags));
     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
     vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
@@ -7740,7 +8053,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->semaphore = (VkSemaphore)vkStream->getBe64();
+    uint64_t cgen_var_215;
+    vkStream->read((uint64_t*)&cgen_var_215, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_215, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
     vkStream->read((VkSemaphoreImportFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreImportFlags));
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
     vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
@@ -7760,8 +8075,8 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_186 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
-    vkStream->putBe64(cgen_var_186);
+    uint64_t cgen_var_216 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
+    vkStream->putBe64(cgen_var_216);
     if (forMarshaling->pAttributes)
     {
         vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
@@ -7809,16 +8124,16 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreValuesCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_188 = (uint64_t)(uintptr_t)forMarshaling->pWaitSemaphoreValues;
-    vkStream->putBe64(cgen_var_188);
+    uint64_t cgen_var_218 = (uint64_t)(uintptr_t)forMarshaling->pWaitSemaphoreValues;
+    vkStream->putBe64(cgen_var_218);
     if (forMarshaling->pWaitSemaphoreValues)
     {
         vkStream->write((const uint64_t*)forMarshaling->pWaitSemaphoreValues, forMarshaling->waitSemaphoreValuesCount * sizeof(const uint64_t));
     }
     vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreValuesCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_189 = (uint64_t)(uintptr_t)forMarshaling->pSignalSemaphoreValues;
-    vkStream->putBe64(cgen_var_189);
+    uint64_t cgen_var_219 = (uint64_t)(uintptr_t)forMarshaling->pSignalSemaphoreValues;
+    vkStream->putBe64(cgen_var_219);
     if (forMarshaling->pSignalSemaphoreValues)
     {
         vkStream->write((const uint64_t*)forMarshaling->pSignalSemaphoreValues, forMarshaling->signalSemaphoreValuesCount * sizeof(const uint64_t));
@@ -7869,8 +8184,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_192 = (uint64_t)forMarshaling->semaphore;
-    vkStream->putBe64(cgen_var_192);
+    uint64_t cgen_var_222;
+    vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_222, 1);
+    vkStream->write((uint64_t*)&cgen_var_222, 8);
     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
@@ -7888,7 +8204,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->semaphore = (VkSemaphore)vkStream->getBe64();
+    uint64_t cgen_var_223;
+    vkStream->read((uint64_t*)&cgen_var_223, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_223, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
@@ -7906,8 +8224,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_194 = (uint64_t)forMarshaling->semaphore;
-    vkStream->putBe64(cgen_var_194);
+    uint64_t cgen_var_224;
+    vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_224, 1);
+    vkStream->write((uint64_t*)&cgen_var_224, 8);
     vkStream->write((VkSemaphoreImportFlags*)&forMarshaling->flags, sizeof(VkSemaphoreImportFlags));
     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
     vkStream->write((int*)&forMarshaling->fd, sizeof(int));
@@ -7927,7 +8246,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->semaphore = (VkSemaphore)vkStream->getBe64();
+    uint64_t cgen_var_225;
+    vkStream->read((uint64_t*)&cgen_var_225, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_225, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
     vkStream->read((VkSemaphoreImportFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreImportFlags));
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
     vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
@@ -7945,8 +8266,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_196 = (uint64_t)forMarshaling->semaphore;
-    vkStream->putBe64(cgen_var_196);
+    uint64_t cgen_var_226;
+    vkStream->handleMapping()->mapHandles_VkSemaphore_u64(&forMarshaling->semaphore, &cgen_var_226, 1);
+    vkStream->write((uint64_t*)&cgen_var_226, 8);
     vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
@@ -7964,7 +8286,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->semaphore = (VkSemaphore)vkStream->getBe64();
+    uint64_t cgen_var_227;
+    vkStream->read((uint64_t*)&cgen_var_227, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_227, (VkSemaphore*)&forUnmarshaling->semaphore, 1);
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
@@ -8030,8 +8354,8 @@
 {
     vkStream->write((uint32_t*)&forMarshaling->rectangleCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_198 = (uint64_t)(uintptr_t)forMarshaling->pRectangles;
-    vkStream->putBe64(cgen_var_198);
+    uint64_t cgen_var_228 = (uint64_t)(uintptr_t)forMarshaling->pRectangles;
+    vkStream->putBe64(cgen_var_228);
     if (forMarshaling->pRectangles)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->rectangleCount; ++i)
@@ -8072,8 +8396,8 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_200 = (uint64_t)(uintptr_t)forMarshaling->pRegions;
-    vkStream->putBe64(cgen_var_200);
+    uint64_t cgen_var_230 = (uint64_t)(uintptr_t)forMarshaling->pRegions;
+    vkStream->putBe64(cgen_var_230);
     if (forMarshaling->pRegions)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->swapchainCount; ++i)
@@ -8224,8 +8548,8 @@
         marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pColorAttachments + i));
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_202 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
-    vkStream->putBe64(cgen_var_202);
+    uint64_t cgen_var_232 = (uint64_t)(uintptr_t)forMarshaling->pResolveAttachments;
+    vkStream->putBe64(cgen_var_232);
     if (forMarshaling->pResolveAttachments)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
@@ -8234,8 +8558,8 @@
         }
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_203 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
-    vkStream->putBe64(cgen_var_203);
+    uint64_t cgen_var_233 = (uint64_t)(uintptr_t)forMarshaling->pDepthStencilAttachment;
+    vkStream->putBe64(cgen_var_233);
     if (forMarshaling->pDepthStencilAttachment)
     {
         marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pDepthStencilAttachment));
@@ -8525,8 +8849,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_206 = (uint64_t)forMarshaling->fence;
-    vkStream->putBe64(cgen_var_206);
+    uint64_t cgen_var_236;
+    vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_236, 1);
+    vkStream->write((uint64_t*)&cgen_var_236, 8);
     vkStream->write((VkFenceImportFlags*)&forMarshaling->flags, sizeof(VkFenceImportFlags));
     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
     vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
@@ -8547,7 +8872,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->fence = (VkFence)vkStream->getBe64();
+    uint64_t cgen_var_237;
+    vkStream->read((uint64_t*)&cgen_var_237, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_237, (VkFence*)&forUnmarshaling->fence, 1);
     vkStream->read((VkFenceImportFlags*)&forUnmarshaling->flags, sizeof(VkFenceImportFlags));
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
     vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
@@ -8567,8 +8894,8 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_208 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
-    vkStream->putBe64(cgen_var_208);
+    uint64_t cgen_var_238 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
+    vkStream->putBe64(cgen_var_238);
     if (forMarshaling->pAttributes)
     {
         vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
@@ -8614,8 +8941,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_210 = (uint64_t)forMarshaling->fence;
-    vkStream->putBe64(cgen_var_210);
+    uint64_t cgen_var_240;
+    vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_240, 1);
+    vkStream->write((uint64_t*)&cgen_var_240, 8);
     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
@@ -8633,7 +8961,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->fence = (VkFence)vkStream->getBe64();
+    uint64_t cgen_var_241;
+    vkStream->read((uint64_t*)&cgen_var_241, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_241, (VkFence*)&forUnmarshaling->fence, 1);
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
@@ -8651,8 +8981,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_212 = (uint64_t)forMarshaling->fence;
-    vkStream->putBe64(cgen_var_212);
+    uint64_t cgen_var_242;
+    vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_242, 1);
+    vkStream->write((uint64_t*)&cgen_var_242, 8);
     vkStream->write((VkFenceImportFlags*)&forMarshaling->flags, sizeof(VkFenceImportFlags));
     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
     vkStream->write((int*)&forMarshaling->fd, sizeof(int));
@@ -8672,7 +9003,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->fence = (VkFence)vkStream->getBe64();
+    uint64_t cgen_var_243;
+    vkStream->read((uint64_t*)&cgen_var_243, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_243, (VkFence*)&forUnmarshaling->fence, 1);
     vkStream->read((VkFenceImportFlags*)&forUnmarshaling->flags, sizeof(VkFenceImportFlags));
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
     vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
@@ -8690,8 +9023,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_214 = (uint64_t)forMarshaling->fence;
-    vkStream->putBe64(cgen_var_214);
+    uint64_t cgen_var_244;
+    vkStream->handleMapping()->mapHandles_VkFence_u64(&forMarshaling->fence, &cgen_var_244, 1);
+    vkStream->write((uint64_t*)&cgen_var_244, 8);
     vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
@@ -8709,7 +9043,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->fence = (VkFence)vkStream->getBe64();
+    uint64_t cgen_var_245;
+    vkStream->read((uint64_t*)&cgen_var_245, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_245, (VkFence*)&forUnmarshaling->fence, 1);
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
@@ -8729,8 +9065,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_216 = (uint64_t)forMarshaling->surface;
-    vkStream->putBe64(cgen_var_216);
+    uint64_t cgen_var_246;
+    vkStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&forMarshaling->surface, &cgen_var_246, 1);
+    vkStream->write((uint64_t*)&cgen_var_246, 8);
 }
 
 void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(
@@ -8747,7 +9084,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->surface = (VkSurfaceKHR)vkStream->getBe64();
+    uint64_t cgen_var_247;
+    vkStream->read((uint64_t*)&cgen_var_247, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_247, (VkSurfaceKHR*)&forUnmarshaling->surface, 1);
 }
 
 void marshal_VkSurfaceCapabilities2KHR(
@@ -8926,8 +9265,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_218 = (uint64_t)forMarshaling->mode;
-    vkStream->putBe64(cgen_var_218);
+    uint64_t cgen_var_248;
+    vkStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&forMarshaling->mode, &cgen_var_248, 1);
+    vkStream->write((uint64_t*)&cgen_var_248, 8);
     vkStream->write((uint32_t*)&forMarshaling->planeIndex, sizeof(uint32_t));
 }
 
@@ -8945,7 +9285,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->mode = (VkDisplayModeKHR)vkStream->getBe64();
+    uint64_t cgen_var_249;
+    vkStream->read((uint64_t*)&cgen_var_249, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_249, (VkDisplayModeKHR*)&forUnmarshaling->mode, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->planeIndex, sizeof(uint32_t));
 }
 
@@ -9087,11 +9429,11 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((VkDebugReportFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugReportFlagsEXT));
-    uint64_t cgen_var_220 = (uint64_t)forMarshaling->pfnCallback;
-    vkStream->putBe64(cgen_var_220);
+    uint64_t cgen_var_250 = (uint64_t)forMarshaling->pfnCallback;
+    vkStream->putBe64(cgen_var_250);
     // WARNING PTR CHECK
-    uint64_t cgen_var_221 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
-    vkStream->putBe64(cgen_var_221);
+    uint64_t cgen_var_251 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
+    vkStream->putBe64(cgen_var_251);
     if (forMarshaling->pUserData)
     {
         vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
@@ -9360,10 +9702,12 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_224 = (uint64_t)forMarshaling->image;
-    vkStream->putBe64(cgen_var_224);
-    uint64_t cgen_var_225 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_225);
+    uint64_t cgen_var_254;
+    vkStream->handleMapping()->mapHandles_VkImage_u64(&forMarshaling->image, &cgen_var_254, 1);
+    vkStream->write((uint64_t*)&cgen_var_254, 8);
+    uint64_t cgen_var_255;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_255, 1);
+    vkStream->write((uint64_t*)&cgen_var_255, 8);
 }
 
 void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
@@ -9380,8 +9724,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->image = (VkImage)vkStream->getBe64();
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_256;
+    vkStream->read((uint64_t*)&cgen_var_256, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_256, (VkImage*)&forUnmarshaling->image, 1);
+    uint64_t cgen_var_257;
+    vkStream->read((uint64_t*)&cgen_var_257, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_257, (VkBuffer*)&forUnmarshaling->buffer, 1);
 }
 
 #endif
@@ -9617,8 +9965,8 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     // WARNING PTR CHECK
-    uint64_t cgen_var_228 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
-    vkStream->putBe64(cgen_var_228);
+    uint64_t cgen_var_258 = (uint64_t)(uintptr_t)forMarshaling->pAttributes;
+    vkStream->putBe64(cgen_var_258);
     if (forMarshaling->pAttributes)
     {
         vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
@@ -9665,13 +10013,23 @@
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
     vkStream->write((uint32_t*)&forMarshaling->acquireCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDeviceMemory*)forMarshaling->pAcquireSyncs, forMarshaling->acquireCount * sizeof(const VkDeviceMemory));
+    if (forMarshaling->acquireCount)
+    {
+        uint64_t* cgen_var_260;
+        vkStream->alloc((void**)&cgen_var_260, forMarshaling->acquireCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(forMarshaling->pAcquireSyncs, cgen_var_260, forMarshaling->acquireCount);
+        vkStream->write((uint64_t*)cgen_var_260, 8);
+    }
     vkStream->write((const uint64_t*)forMarshaling->pAcquireKeys, forMarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->write((const uint32_t*)forMarshaling->pAcquireTimeoutMilliseconds, forMarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->write((uint32_t*)&forMarshaling->releaseCount, sizeof(uint32_t));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->write((const VkDeviceMemory*)forMarshaling->pReleaseSyncs, forMarshaling->releaseCount * sizeof(const VkDeviceMemory));
+    if (forMarshaling->releaseCount)
+    {
+        uint64_t* cgen_var_261;
+        vkStream->alloc((void**)&cgen_var_261, forMarshaling->releaseCount * 8);
+        vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(forMarshaling->pReleaseSyncs, cgen_var_261, forMarshaling->releaseCount);
+        vkStream->write((uint64_t*)cgen_var_261, 8);
+    }
     vkStream->write((const uint64_t*)forMarshaling->pReleaseKeys, forMarshaling->releaseCount * sizeof(const uint64_t));
 }
 
@@ -9691,16 +10049,26 @@
     }
     vkStream->read((uint32_t*)&forUnmarshaling->acquireCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+    if (forUnmarshaling->acquireCount)
+    {
+        uint64_t* cgen_var_262;
+        vkStream->alloc((void**)&cgen_var_262, forUnmarshaling->acquireCount * 8);
+        vkStream->read((uint64_t*)cgen_var_262, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(cgen_var_262, (VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->read((uint64_t*)forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
     vkStream->alloc((void**)&forUnmarshaling->pAcquireTimeoutMilliseconds, forUnmarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->read((uint32_t*)forUnmarshaling->pAcquireTimeoutMilliseconds, forUnmarshaling->acquireCount * sizeof(const uint32_t));
     vkStream->read((uint32_t*)&forUnmarshaling->releaseCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
-    // WARNING HANDLE TYPE POINTER
-    vkStream->read((VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+    if (forUnmarshaling->releaseCount)
+    {
+        uint64_t* cgen_var_263;
+        vkStream->alloc((void**)&cgen_var_263, forUnmarshaling->releaseCount * 8);
+        vkStream->read((uint64_t*)cgen_var_263, 8);
+        vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(cgen_var_263, (VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount);
+    }
     vkStream->alloc((void**)&forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
     vkStream->read((uint64_t*)forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
 }
@@ -9758,8 +10126,8 @@
     }
     vkStream->write((VkViSurfaceCreateFlagsNN*)&forMarshaling->flags, sizeof(VkViSurfaceCreateFlagsNN));
     // WARNING PTR CHECK
-    uint64_t cgen_var_230 = (uint64_t)(uintptr_t)forMarshaling->window;
-    vkStream->putBe64(cgen_var_230);
+    uint64_t cgen_var_264 = (uint64_t)(uintptr_t)forMarshaling->window;
+    vkStream->putBe64(cgen_var_264);
     if (forMarshaling->window)
     {
         vkStream->write((void*)forMarshaling->window, sizeof(uint8_t));
@@ -9808,8 +10176,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_232 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_232);
+    uint64_t cgen_var_266;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_266, 1);
+    vkStream->write((uint64_t*)&cgen_var_266, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
     vkStream->write((VkConditionalRenderingFlagsEXT*)&forMarshaling->flags, sizeof(VkConditionalRenderingFlagsEXT));
 }
@@ -9828,7 +10197,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_267;
+    vkStream->read((uint64_t*)&cgen_var_267, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_267, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
     vkStream->read((VkConditionalRenderingFlagsEXT*)&forUnmarshaling->flags, sizeof(VkConditionalRenderingFlagsEXT));
 }
@@ -9978,8 +10349,9 @@
     const VkIndirectCommandsTokenNVX* forMarshaling)
 {
     vkStream->write((VkIndirectCommandsTokenTypeNVX*)&forMarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
-    uint64_t cgen_var_234 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_234);
+    uint64_t cgen_var_268;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_268, 1);
+    vkStream->write((uint64_t*)&cgen_var_268, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
 }
 
@@ -9988,7 +10360,9 @@
     VkIndirectCommandsTokenNVX* forUnmarshaling)
 {
     vkStream->read((VkIndirectCommandsTokenTypeNVX*)&forUnmarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_269;
+    vkStream->read((uint64_t*)&cgen_var_269, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_269, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
 }
 
@@ -10069,23 +10443,28 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_236 = (uint64_t)forMarshaling->objectTable;
-    vkStream->putBe64(cgen_var_236);
-    uint64_t cgen_var_237 = (uint64_t)forMarshaling->indirectCommandsLayout;
-    vkStream->putBe64(cgen_var_237);
+    uint64_t cgen_var_270;
+    vkStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&forMarshaling->objectTable, &cgen_var_270, 1);
+    vkStream->write((uint64_t*)&cgen_var_270, 8);
+    uint64_t cgen_var_271;
+    vkStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&forMarshaling->indirectCommandsLayout, &cgen_var_271, 1);
+    vkStream->write((uint64_t*)&cgen_var_271, 8);
     vkStream->write((uint32_t*)&forMarshaling->indirectCommandsTokenCount, sizeof(uint32_t));
     for (uint32_t i = 0; i < (uint32_t)forMarshaling->indirectCommandsTokenCount; ++i)
     {
         marshal_VkIndirectCommandsTokenNVX(vkStream, (const VkIndirectCommandsTokenNVX*)(forMarshaling->pIndirectCommandsTokens + i));
     }
     vkStream->write((uint32_t*)&forMarshaling->maxSequencesCount, sizeof(uint32_t));
-    uint64_t cgen_var_238 = (uint64_t)forMarshaling->targetCommandBuffer;
-    vkStream->putBe64(cgen_var_238);
-    uint64_t cgen_var_239 = (uint64_t)forMarshaling->sequencesCountBuffer;
-    vkStream->putBe64(cgen_var_239);
+    uint64_t cgen_var_272;
+    vkStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&forMarshaling->targetCommandBuffer, &cgen_var_272, 1);
+    vkStream->write((uint64_t*)&cgen_var_272, 8);
+    uint64_t cgen_var_273;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->sequencesCountBuffer, &cgen_var_273, 1);
+    vkStream->write((uint64_t*)&cgen_var_273, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->sequencesCountOffset, sizeof(VkDeviceSize));
-    uint64_t cgen_var_240 = (uint64_t)forMarshaling->sequencesIndexBuffer;
-    vkStream->putBe64(cgen_var_240);
+    uint64_t cgen_var_274;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->sequencesIndexBuffer, &cgen_var_274, 1);
+    vkStream->write((uint64_t*)&cgen_var_274, 8);
     vkStream->write((VkDeviceSize*)&forMarshaling->sequencesIndexOffset, sizeof(VkDeviceSize));
 }
 
@@ -10103,8 +10482,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->objectTable = (VkObjectTableNVX)vkStream->getBe64();
-    forUnmarshaling->indirectCommandsLayout = (VkIndirectCommandsLayoutNVX)vkStream->getBe64();
+    uint64_t cgen_var_275;
+    vkStream->read((uint64_t*)&cgen_var_275, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_275, (VkObjectTableNVX*)&forUnmarshaling->objectTable, 1);
+    uint64_t cgen_var_276;
+    vkStream->read((uint64_t*)&cgen_var_276, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_276, (VkIndirectCommandsLayoutNVX*)&forUnmarshaling->indirectCommandsLayout, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->indirectCommandsTokenCount, sizeof(uint32_t));
     vkStream->alloc((void**)&forUnmarshaling->pIndirectCommandsTokens, forUnmarshaling->indirectCommandsTokenCount * sizeof(const VkIndirectCommandsTokenNVX));
     for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->indirectCommandsTokenCount; ++i)
@@ -10112,10 +10495,16 @@
         unmarshal_VkIndirectCommandsTokenNVX(vkStream, (VkIndirectCommandsTokenNVX*)(forUnmarshaling->pIndirectCommandsTokens + i));
     }
     vkStream->read((uint32_t*)&forUnmarshaling->maxSequencesCount, sizeof(uint32_t));
-    forUnmarshaling->targetCommandBuffer = (VkCommandBuffer)vkStream->getBe64();
-    forUnmarshaling->sequencesCountBuffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_277;
+    vkStream->read((uint64_t*)&cgen_var_277, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkCommandBuffer(&cgen_var_277, (VkCommandBuffer*)&forUnmarshaling->targetCommandBuffer, 1);
+    uint64_t cgen_var_278;
+    vkStream->read((uint64_t*)&cgen_var_278, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_278, (VkBuffer*)&forUnmarshaling->sequencesCountBuffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->sequencesCountOffset, sizeof(VkDeviceSize));
-    forUnmarshaling->sequencesIndexBuffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_279;
+    vkStream->read((uint64_t*)&cgen_var_279, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_279, (VkBuffer*)&forUnmarshaling->sequencesIndexBuffer, 1);
     vkStream->read((VkDeviceSize*)&forUnmarshaling->sequencesIndexOffset, sizeof(VkDeviceSize));
 }
 
@@ -10131,10 +10520,12 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_246 = (uint64_t)forMarshaling->objectTable;
-    vkStream->putBe64(cgen_var_246);
-    uint64_t cgen_var_247 = (uint64_t)forMarshaling->indirectCommandsLayout;
-    vkStream->putBe64(cgen_var_247);
+    uint64_t cgen_var_280;
+    vkStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&forMarshaling->objectTable, &cgen_var_280, 1);
+    vkStream->write((uint64_t*)&cgen_var_280, 8);
+    uint64_t cgen_var_281;
+    vkStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&forMarshaling->indirectCommandsLayout, &cgen_var_281, 1);
+    vkStream->write((uint64_t*)&cgen_var_281, 8);
     vkStream->write((uint32_t*)&forMarshaling->maxSequencesCount, sizeof(uint32_t));
 }
 
@@ -10152,8 +10543,12 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->objectTable = (VkObjectTableNVX)vkStream->getBe64();
-    forUnmarshaling->indirectCommandsLayout = (VkIndirectCommandsLayoutNVX)vkStream->getBe64();
+    uint64_t cgen_var_282;
+    vkStream->read((uint64_t*)&cgen_var_282, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_282, (VkObjectTableNVX*)&forUnmarshaling->objectTable, 1);
+    uint64_t cgen_var_283;
+    vkStream->read((uint64_t*)&cgen_var_283, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_283, (VkIndirectCommandsLayoutNVX*)&forUnmarshaling->indirectCommandsLayout, 1);
     vkStream->read((uint32_t*)&forUnmarshaling->maxSequencesCount, sizeof(uint32_t));
 }
 
@@ -10230,8 +10625,9 @@
 {
     vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    uint64_t cgen_var_250 = (uint64_t)forMarshaling->pipeline;
-    vkStream->putBe64(cgen_var_250);
+    uint64_t cgen_var_284;
+    vkStream->handleMapping()->mapHandles_VkPipeline_u64(&forMarshaling->pipeline, &cgen_var_284, 1);
+    vkStream->write((uint64_t*)&cgen_var_284, 8);
 }
 
 void unmarshal_VkObjectTablePipelineEntryNVX(
@@ -10240,7 +10636,9 @@
 {
     vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    forUnmarshaling->pipeline = (VkPipeline)vkStream->getBe64();
+    uint64_t cgen_var_285;
+    vkStream->read((uint64_t*)&cgen_var_285, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipeline(&cgen_var_285, (VkPipeline*)&forUnmarshaling->pipeline, 1);
 }
 
 void marshal_VkObjectTableDescriptorSetEntryNVX(
@@ -10249,10 +10647,12 @@
 {
     vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    uint64_t cgen_var_252 = (uint64_t)forMarshaling->pipelineLayout;
-    vkStream->putBe64(cgen_var_252);
-    uint64_t cgen_var_253 = (uint64_t)forMarshaling->descriptorSet;
-    vkStream->putBe64(cgen_var_253);
+    uint64_t cgen_var_286;
+    vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->pipelineLayout, &cgen_var_286, 1);
+    vkStream->write((uint64_t*)&cgen_var_286, 8);
+    uint64_t cgen_var_287;
+    vkStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&forMarshaling->descriptorSet, &cgen_var_287, 1);
+    vkStream->write((uint64_t*)&cgen_var_287, 8);
 }
 
 void unmarshal_VkObjectTableDescriptorSetEntryNVX(
@@ -10261,8 +10661,12 @@
 {
     vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    forUnmarshaling->pipelineLayout = (VkPipelineLayout)vkStream->getBe64();
-    forUnmarshaling->descriptorSet = (VkDescriptorSet)vkStream->getBe64();
+    uint64_t cgen_var_288;
+    vkStream->read((uint64_t*)&cgen_var_288, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_288, (VkPipelineLayout*)&forUnmarshaling->pipelineLayout, 1);
+    uint64_t cgen_var_289;
+    vkStream->read((uint64_t*)&cgen_var_289, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDescriptorSet(&cgen_var_289, (VkDescriptorSet*)&forUnmarshaling->descriptorSet, 1);
 }
 
 void marshal_VkObjectTableVertexBufferEntryNVX(
@@ -10271,8 +10675,9 @@
 {
     vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    uint64_t cgen_var_256 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_256);
+    uint64_t cgen_var_290;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_290, 1);
+    vkStream->write((uint64_t*)&cgen_var_290, 8);
 }
 
 void unmarshal_VkObjectTableVertexBufferEntryNVX(
@@ -10281,7 +10686,9 @@
 {
     vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_291;
+    vkStream->read((uint64_t*)&cgen_var_291, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_291, (VkBuffer*)&forUnmarshaling->buffer, 1);
 }
 
 void marshal_VkObjectTableIndexBufferEntryNVX(
@@ -10290,8 +10697,9 @@
 {
     vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    uint64_t cgen_var_258 = (uint64_t)forMarshaling->buffer;
-    vkStream->putBe64(cgen_var_258);
+    uint64_t cgen_var_292;
+    vkStream->handleMapping()->mapHandles_VkBuffer_u64(&forMarshaling->buffer, &cgen_var_292, 1);
+    vkStream->write((uint64_t*)&cgen_var_292, 8);
     vkStream->write((VkIndexType*)&forMarshaling->indexType, sizeof(VkIndexType));
 }
 
@@ -10301,7 +10709,9 @@
 {
     vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    forUnmarshaling->buffer = (VkBuffer)vkStream->getBe64();
+    uint64_t cgen_var_293;
+    vkStream->read((uint64_t*)&cgen_var_293, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_293, (VkBuffer*)&forUnmarshaling->buffer, 1);
     vkStream->read((VkIndexType*)&forUnmarshaling->indexType, sizeof(VkIndexType));
 }
 
@@ -10311,8 +10721,9 @@
 {
     vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    uint64_t cgen_var_260 = (uint64_t)forMarshaling->pipelineLayout;
-    vkStream->putBe64(cgen_var_260);
+    uint64_t cgen_var_294;
+    vkStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&forMarshaling->pipelineLayout, &cgen_var_294, 1);
+    vkStream->write((uint64_t*)&cgen_var_294, 8);
     vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
 }
 
@@ -10322,7 +10733,9 @@
 {
     vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
     vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
-    forUnmarshaling->pipelineLayout = (VkPipelineLayout)vkStream->getBe64();
+    uint64_t cgen_var_295;
+    vkStream->read((uint64_t*)&cgen_var_295, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_295, (VkPipelineLayout*)&forUnmarshaling->pipelineLayout, 1);
     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
 }
 
@@ -10359,8 +10772,8 @@
     vkStream->write((VkBool32*)&forMarshaling->viewportWScalingEnable, sizeof(VkBool32));
     vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_262 = (uint64_t)(uintptr_t)forMarshaling->pViewportWScalings;
-    vkStream->putBe64(cgen_var_262);
+    uint64_t cgen_var_296 = (uint64_t)(uintptr_t)forMarshaling->pViewportWScalings;
+    vkStream->putBe64(cgen_var_296);
     if (forMarshaling->pViewportWScalings)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
@@ -10654,8 +11067,8 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_264 = (uint64_t)(uintptr_t)forMarshaling->pTimes;
-    vkStream->putBe64(cgen_var_264);
+    uint64_t cgen_var_298 = (uint64_t)(uintptr_t)forMarshaling->pTimes;
+    vkStream->putBe64(cgen_var_298);
     if (forMarshaling->pTimes)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->swapchainCount; ++i)
@@ -10769,8 +11182,8 @@
     vkStream->write((VkPipelineViewportSwizzleStateCreateFlagsNV*)&forMarshaling->flags, sizeof(VkPipelineViewportSwizzleStateCreateFlagsNV));
     vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_266 = (uint64_t)(uintptr_t)forMarshaling->pViewportSwizzles;
-    vkStream->putBe64(cgen_var_266);
+    uint64_t cgen_var_300 = (uint64_t)(uintptr_t)forMarshaling->pViewportSwizzles;
+    vkStream->putBe64(cgen_var_300);
     if (forMarshaling->pViewportSwizzles)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
@@ -10858,8 +11271,8 @@
     vkStream->write((VkDiscardRectangleModeEXT*)&forMarshaling->discardRectangleMode, sizeof(VkDiscardRectangleModeEXT));
     vkStream->write((uint32_t*)&forMarshaling->discardRectangleCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_268 = (uint64_t)(uintptr_t)forMarshaling->pDiscardRectangles;
-    vkStream->putBe64(cgen_var_268);
+    uint64_t cgen_var_302 = (uint64_t)(uintptr_t)forMarshaling->pDiscardRectangles;
+    vkStream->putBe64(cgen_var_302);
     if (forMarshaling->pDiscardRectangles)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->discardRectangleCount; ++i)
@@ -11066,8 +11479,8 @@
     }
     vkStream->write((VkIOSSurfaceCreateFlagsMVK*)&forMarshaling->flags, sizeof(VkIOSSurfaceCreateFlagsMVK));
     // WARNING PTR CHECK
-    uint64_t cgen_var_270 = (uint64_t)(uintptr_t)forMarshaling->pView;
-    vkStream->putBe64(cgen_var_270);
+    uint64_t cgen_var_304 = (uint64_t)(uintptr_t)forMarshaling->pView;
+    vkStream->putBe64(cgen_var_304);
     if (forMarshaling->pView)
     {
         vkStream->write((const void*)forMarshaling->pView, sizeof(const uint8_t));
@@ -11114,8 +11527,8 @@
     }
     vkStream->write((VkMacOSSurfaceCreateFlagsMVK*)&forMarshaling->flags, sizeof(VkMacOSSurfaceCreateFlagsMVK));
     // WARNING PTR CHECK
-    uint64_t cgen_var_272 = (uint64_t)(uintptr_t)forMarshaling->pView;
-    vkStream->putBe64(cgen_var_272);
+    uint64_t cgen_var_306 = (uint64_t)(uintptr_t)forMarshaling->pView;
+    vkStream->putBe64(cgen_var_306);
     if (forMarshaling->pView)
     {
         vkStream->write((const void*)forMarshaling->pView, sizeof(const uint8_t));
@@ -11281,8 +11694,8 @@
     vkStream->putString(forMarshaling->pMessage);
     vkStream->write((uint32_t*)&forMarshaling->queueLabelCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_274 = (uint64_t)(uintptr_t)forMarshaling->pQueueLabels;
-    vkStream->putBe64(cgen_var_274);
+    uint64_t cgen_var_308 = (uint64_t)(uintptr_t)forMarshaling->pQueueLabels;
+    vkStream->putBe64(cgen_var_308);
     if (forMarshaling->pQueueLabels)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->queueLabelCount; ++i)
@@ -11292,8 +11705,8 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->cmdBufLabelCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_275 = (uint64_t)(uintptr_t)forMarshaling->pCmdBufLabels;
-    vkStream->putBe64(cgen_var_275);
+    uint64_t cgen_var_309 = (uint64_t)(uintptr_t)forMarshaling->pCmdBufLabels;
+    vkStream->putBe64(cgen_var_309);
     if (forMarshaling->pCmdBufLabels)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->cmdBufLabelCount; ++i)
@@ -11303,8 +11716,8 @@
     }
     vkStream->write((uint32_t*)&forMarshaling->objectCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_276 = (uint64_t)(uintptr_t)forMarshaling->pObjects;
-    vkStream->putBe64(cgen_var_276);
+    uint64_t cgen_var_310 = (uint64_t)(uintptr_t)forMarshaling->pObjects;
+    vkStream->putBe64(cgen_var_310);
     if (forMarshaling->pObjects)
     {
         for (uint32_t i = 0; i < (uint32_t)forMarshaling->objectCount; ++i)
@@ -11382,11 +11795,11 @@
     vkStream->write((VkDebugUtilsMessengerCreateFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
     vkStream->write((VkDebugUtilsMessageSeverityFlagsEXT*)&forMarshaling->messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
     vkStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&forMarshaling->messageType, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
-    uint64_t cgen_var_280 = (uint64_t)forMarshaling->pfnUserCallback;
-    vkStream->putBe64(cgen_var_280);
+    uint64_t cgen_var_314 = (uint64_t)forMarshaling->pfnUserCallback;
+    vkStream->putBe64(cgen_var_314);
     // WARNING PTR CHECK
-    uint64_t cgen_var_281 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
-    vkStream->putBe64(cgen_var_281);
+    uint64_t cgen_var_315 = (uint64_t)(uintptr_t)forMarshaling->pUserData;
+    vkStream->putBe64(cgen_var_315);
     if (forMarshaling->pUserData)
     {
         vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
@@ -11579,8 +11992,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_284 = (uint64_t)forMarshaling->memory;
-    vkStream->putBe64(cgen_var_284);
+    uint64_t cgen_var_318;
+    vkStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&forMarshaling->memory, &cgen_var_318, 1);
+    vkStream->write((uint64_t*)&cgen_var_318, 8);
 }
 
 void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
@@ -11597,7 +12011,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->memory = (VkDeviceMemory)vkStream->getBe64();
+    uint64_t cgen_var_319;
+    vkStream->read((uint64_t*)&cgen_var_319, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_319, (VkDeviceMemory*)&forUnmarshaling->memory, 1);
 }
 
 void marshal_VkExternalFormatANDROID(
@@ -12130,8 +12546,8 @@
     vkStream->write((VkBool32*)&forMarshaling->coverageModulationTableEnable, sizeof(VkBool32));
     vkStream->write((uint32_t*)&forMarshaling->coverageModulationTableCount, sizeof(uint32_t));
     // WARNING PTR CHECK
-    uint64_t cgen_var_286 = (uint64_t)(uintptr_t)forMarshaling->pCoverageModulationTable;
-    vkStream->putBe64(cgen_var_286);
+    uint64_t cgen_var_320 = (uint64_t)(uintptr_t)forMarshaling->pCoverageModulationTable;
+    vkStream->putBe64(cgen_var_320);
     if (forMarshaling->pCoverageModulationTable)
     {
         vkStream->write((const float*)forMarshaling->pCoverageModulationTable, forMarshaling->coverageModulationTableCount * sizeof(const float));
@@ -12220,8 +12636,9 @@
         vkStream->write((const void*)forMarshaling->pNext, sizeof(VkStructureType));
         marshal_extension_struct(vkStream, forMarshaling->pNext);
     }
-    uint64_t cgen_var_288 = (uint64_t)forMarshaling->validationCache;
-    vkStream->putBe64(cgen_var_288);
+    uint64_t cgen_var_322;
+    vkStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&forMarshaling->validationCache, &cgen_var_322, 1);
+    vkStream->write((uint64_t*)&cgen_var_322, 8);
 }
 
 void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
@@ -12238,7 +12655,9 @@
         vkStream->read((void*)forUnmarshaling->pNext, sizeof(VkStructureType));
         unmarshal_extension_struct(vkStream, (void*)(forUnmarshaling->pNext));
     }
-    forUnmarshaling->validationCache = (VkValidationCacheEXT)vkStream->getBe64();
+    uint64_t cgen_var_323;
+    vkStream->read((uint64_t*)&cgen_var_323, 8);
+    vkStream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_323, (VkValidationCacheEXT*)&forUnmarshaling->validationCache, 1);
 }
 
 #endif
@@ -12543,8 +12962,8 @@
     }
     vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
     // WARNING PTR CHECK
-    uint64_t cgen_var_290 = (uint64_t)(uintptr_t)forMarshaling->pHostPointer;
-    vkStream->putBe64(cgen_var_290);
+    uint64_t cgen_var_324 = (uint64_t)(uintptr_t)forMarshaling->pHostPointer;
+    vkStream->putBe64(cgen_var_324);
     if (forMarshaling->pHostPointer)
     {
         vkStream->write((void*)forMarshaling->pHostPointer, sizeof(uint8_t));
@@ -12842,8 +13261,8 @@
     }
     vkStream->write((VkPipelineStageFlagBits*)&forMarshaling->stage, sizeof(VkPipelineStageFlagBits));
     // WARNING PTR CHECK
-    uint64_t cgen_var_292 = (uint64_t)(uintptr_t)forMarshaling->pCheckpointMarker;
-    vkStream->putBe64(cgen_var_292);
+    uint64_t cgen_var_326 = (uint64_t)(uintptr_t)forMarshaling->pCheckpointMarker;
+    vkStream->putBe64(cgen_var_326);
     if (forMarshaling->pCheckpointMarker)
     {
         vkStream->write((void*)forMarshaling->pCheckpointMarker, sizeof(uint8_t));