diff --git a/Android.mk b/Android.mk
index 8d5dd677e222575188c26e23658f57ebfd7427ac..9235b63e0ecb5a8e332b9b1c703e9922d70e23b8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -138,7 +138,6 @@ include $(GOLDFISH_OPENGL_PATH)/system/renderControl_enc/Android.mk
 
 ifeq (true,$(BUILD_EMULATOR_VULKAN)) # Vulkan libs
     include $(GOLDFISH_OPENGL_PATH)/android-emu/Android.mk
-    include $(GOLDFISH_OPENGL_PATH)/system/vulkan_cereal/Android.mk
     include $(GOLDFISH_OPENGL_PATH)/system/vulkan_enc/Android.mk
 endif
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f6e826a22deac0bfae4254fe30964e6da1620a7..b2b1f180bd44217e5521f36b16b8a0626dd9c04e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,6 @@ add_subdirectory(system/GLESv1_enc)
 add_subdirectory(system/GLESv2_enc)
 add_subdirectory(system/renderControl_enc)
 add_subdirectory(android-emu)
-add_subdirectory(system/vulkan_cereal)
 add_subdirectory(system/vulkan_enc)
 add_subdirectory(system/OpenglSystemCommon)
 add_subdirectory(system/GLESv1)
diff --git a/cmake_transform.py b/cmake_transform.py
index a7c6a04d2b578b4d2f60831f70677e859eed1b61..834dd4b1767c332eab6224d7d8238fc6bb9093b4 100644
--- a/cmake_transform.py
+++ b/cmake_transform.py
@@ -94,14 +94,22 @@ def generate_module(module):
 
     # Make sure we remove the lib prefix from all our dependencies.
     libs = [remove_lib_prefix(l) for l in module['libs']]
+    staticlibs = [remove_lib_prefix(l) for l in
+                      module.get('staticlibs', [])
+                      if l != "libandroidemu"]
 
     # Configure the target.
     make.append('target_compile_definitions(%s PRIVATE %s)' %
                 (name, ' '.join(defs)))
     make.append('target_compile_options(%s PRIVATE %s)' %
                 (name, ' '.join(flags)))
-    make.append('target_link_libraries(%s PRIVATE %s)' %
-                (name, ' '.join(libs)))
+
+    if len(staticlibs) > 0:
+        make.append('target_link_libraries(%s PRIVATE %s PRIVATE %s)' %
+                    (name, ' '.join(libs), " ".join(staticlibs)))
+    else:
+        make.append('target_link_libraries(%s PRIVATE %s)' %
+                    (name, ' '.join(libs)))
     return make
 
 
diff --git a/json-dump.mk b/json-dump.mk
index 8abc9e7243bfff1e2ec5e581176fc4d677f3c471..2e20cdff95f040ad5fcf713bce96a7ceb0ff8793 100644
--- a/json-dump.mk
+++ b/json-dump.mk
@@ -34,6 +34,7 @@ dump-json-module = \
 	$(call dump-property-list,includes,LOCAL_C_INCLUDES) \
 	$(call dump-property-list,cflags,LOCAL_CFLAGS) \
 	$(call dump-property-list,libs,LOCAL_SHARED_LIBRARIES) \
+	$(call dump-property-list,staticlibs,LOCAL_STATIC_LIBRARIES) \
 	$(call dump-property-list,src,LOCAL_SRC_FILES) \
     $(eval JSON_DUMP += } )\
 
diff --git a/system/GLESv1/CMakeLists.txt b/system/GLESv1/CMakeLists.txt
index 2db93df45134acc18e3cb003df10d098a4797eec..1fdf94360c04765f47b06a3d2afac18320e0783b 100644
--- a/system/GLESv1/CMakeLists.txt
+++ b/system/GLESv1/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(GLESv1_CM_emulation_src gl.cpp)
 android_add_shared_library(GLESv1_CM_emulation)
-target_include_directories(GLESv1_CM_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(GLESv1_CM_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(GLESv1_CM_emulation 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=\"GLES_emulation\"")
 target_compile_options(GLESv1_CM_emulation PRIVATE "-fvisibility=default")
 target_link_libraries(GLESv1_CM_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/GLESv2/CMakeLists.txt b/system/GLESv2/CMakeLists.txt
index 22ec8ffe77638d3b221bd886b76dd527ccd4ff74..48717aa0f76edce5182eeea778fa3d28e2148bb2 100644
--- a/system/GLESv2/CMakeLists.txt
+++ b/system/GLESv2/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(GLESv2_emulation_src gl2.cpp)
 android_add_shared_library(GLESv2_emulation)
-target_include_directories(GLESv2_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(GLESv2_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(GLESv2_emulation 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=\"GLESv2_emulation\"")
 target_compile_options(GLESv2_emulation PRIVATE "-fvisibility=default")
 target_link_libraries(GLESv2_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/OpenglSystemCommon/CMakeLists.txt b/system/OpenglSystemCommon/CMakeLists.txt
index 447ba49a71fb1c9a123acf4923b7120dc54ab1b9..6b419028f40d1312028e48feeeaf24ed857ada5b 100644
--- a/system/OpenglSystemCommon/CMakeLists.txt
+++ b/system/OpenglSystemCommon/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(OpenglSystemCommon_src FormatConversions.cpp HostConnection.cpp QemuPipeStream.cpp ProcessPipe.cpp ThreadInfo_host.cpp)
 android_add_shared_library(OpenglSystemCommon)
-target_include_directories(OpenglSystemCommon PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(OpenglSystemCommon PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(OpenglSystemCommon 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")
 target_compile_options(OpenglSystemCommon PRIVATE "-fvisibility=default")
 target_link_libraries(OpenglSystemCommon PRIVATE android-emu-shared vulkan_enc cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/egl/CMakeLists.txt b/system/egl/CMakeLists.txt
index c2b57e35cd5812ca6cdfe714d7fb970d3bf6d1bb..19ea7dd52b568af9de87aeabbf5f1a81b8cada67 100644
--- a/system/egl/CMakeLists.txt
+++ b/system/egl/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(EGL_emulation_src eglDisplay.cpp egl.cpp ClientAPIExts.cpp)
 android_add_shared_library(EGL_emulation)
-target_include_directories(EGL_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(EGL_emulation PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(EGL_emulation 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=\"EGL_emulation\"" "-DEGL_EGLEXT_PROTOTYPES")
 target_compile_options(EGL_emulation PRIVATE "-fvisibility=default")
 target_link_libraries(EGL_emulation PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/gralloc/CMakeLists.txt b/system/gralloc/CMakeLists.txt
index 7ecbcaee197380b2683927048e6d1078edbaf606..b4ee9ac00350f3f470b065c28113d1fdbb4c76d0 100644
--- a/system/gralloc/CMakeLists.txt
+++ b/system/gralloc/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(gralloc.goldfish_src gralloc.cpp)
 android_add_shared_library(gralloc.goldfish)
-target_include_directories(gralloc.goldfish PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(gralloc.goldfish PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(gralloc.goldfish 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=\"gralloc_goldfish\"")
 target_compile_options(gralloc.goldfish PRIVATE "-fvisibility=default" "-Wno-missing-field-initializers")
 target_link_libraries(gralloc.goldfish PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host)
@@ -12,7 +12,7 @@ target_link_libraries(gralloc.goldfish PRIVATE OpenglSystemCommon android-emu-sh
 # which will re-generate this file.
 set(gralloc.ranchu_src gralloc.cpp)
 android_add_shared_library(gralloc.ranchu)
-target_include_directories(gralloc.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
+target_include_directories(gralloc.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
 target_compile_definitions(gralloc.ranchu 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=\"gralloc_ranchu\"")
 target_compile_options(gralloc.ranchu PRIVATE "-fvisibility=default" "-Wno-missing-field-initializers")
 target_link_libraries(gralloc.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log GLESv2_enc _renderControl_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/vulkan/CMakeLists.txt b/system/vulkan/CMakeLists.txt
index d9f0aa287edcf95c683b9d8cac1ea018aaae5096..d1b92e84f53e7a3674e4c58136d064df1c1e8b3d 100644
--- a/system/vulkan/CMakeLists.txt
+++ b/system/vulkan/CMakeLists.txt
@@ -3,7 +3,7 @@
 # which will re-generate this file.
 set(vulkan.ranchu_src goldfish_vulkan.cpp)
 android_add_shared_library(vulkan.ranchu)
-target_include_directories(vulkan.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/system/vulkan ${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)
+target_include_directories(vulkan.ranchu PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/OpenglSystemCommon ${GOLDFISH_DEVICE_ROOT}/bionic/libc/private ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/system/renderControl_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv2_enc ${GOLDFISH_DEVICE_ROOT}/system/GLESv1_enc ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/system/vulkan ${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)
 target_compile_definitions(vulkan.ranchu 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")
 target_compile_options(vulkan.ranchu PRIVATE "-fvisibility=default" "-Wno-missing-field-initializers" "-fvisibility=hidden" "-fstrict-aliasing")
 target_link_libraries(vulkan.ranchu PRIVATE OpenglSystemCommon android-emu-shared vulkan_enc cutils utils log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/vulkan_cereal/Android.mk b/system/vulkan_cereal/Android.mk
deleted file mode 100644
index 02dc18db227398708c03f47efa9a5ed51cd9d38d..0000000000000000000000000000000000000000
--- a/system/vulkan_cereal/Android.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-
-# Autogenerated makefile
-# 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
-
-ifeq (true,$(GOLDFISH_OPENGL_SHOULD_BUILD))
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23 && echo isApi24OrHigher),isApi24OrHigher)
-
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-static-library,libvulkan_cereal_guest)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-$(call emugl-import,libOpenglCodecCommon$(GOLDFISH_OPENGL_LIB_SUFFIX) libandroidemu)
-
-# Vulkan include dir
-ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
-LOCAL_C_INCLUDES += \
-    $(LOCAL_PATH) \
-    $(LOCAL_PATH)/../vulkan_enc \
-    $(HOST_EMUGL_PATH)/host/include \
-    $(HOST_EMUGL_PATH)/host/include/vulkan
-endif
-
-ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
-LOCAL_C_INCLUDES += \
-    $(LOCAL_PATH) \
-    $(LOCAL_PATH)/../vulkan_enc \
-
-LOCAL_HEADER_LIBRARIES += \
-    vulkan_headers \
-
-endif
-
-LOCAL_CFLAGS += \
-    -DLOG_TAG=\"goldfish_vulkan\" \
-    -Wno-missing-field-initializers \
-    -fvisibility=hidden \
-    -fstrict-aliasing \
-    -DVK_USE_PLATFORM_ANDROID_KHR \
-    -DVK_NO_PROTOTYPES \
-
-LOCAL_SRC_FILES := goldfish_vk_marshaling_guest.cpp \
-
-
-$(call emugl-end-module)
-
-endif # API 24 or later
-endif # GOLDFISH_OPENGL_SHOULD_BUILD
-
diff --git a/system/vulkan_cereal/CMakeLists.txt b/system/vulkan_cereal/CMakeLists.txt
deleted file mode 100644
index 2d4253b84723c4fc032a7ef8aed85a4774c5e0df..0000000000000000000000000000000000000000
--- a/system/vulkan_cereal/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# This is an autogenerated file! Do not edit!
-# instead run make from .../device/generic/goldfish-opengl
-# which will re-generate this file.
-set(vulkan_cereal_guest_src goldfish_vk_marshaling_guest.cpp)
-android_add_library(vulkan_cereal_guest)
-target_include_directories(vulkan_cereal_guest PRIVATE ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal/../vulkan_enc ${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_cereal_guest 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")
-target_compile_options(vulkan_cereal_guest PRIVATE "-fvisibility=default" "-Wno-missing-field-initializers" "-fvisibility=hidden" "-fstrict-aliasing")
-target_link_libraries(vulkan_cereal_guest PRIVATE cutils utils log android-emu-shared OpenglCodecCommon_host)
\ No newline at end of file
diff --git a/system/vulkan_cereal/goldfish_vk_marshaling_guest.h b/system/vulkan_cereal/goldfish_vk_marshaling_guest.h
deleted file mode 100644
index e5e2ad1672c082d6501d1b5e40829ae3886c5d98..0000000000000000000000000000000000000000
--- a/system/vulkan_cereal/goldfish_vk_marshaling_guest.h
+++ /dev/null
@@ -1,7480 +0,0 @@
-// 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.
-
-// Autogenerated module goldfish_vk_marshaling_guest
-// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
-// Please do not modify directly;
-// re-run android/scripts/generate-vulkan-sources.sh,
-// 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 "goldfish_vk_marshaling_guest.h"
-#include "VulkanStream.h"
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-
-
-namespace goldfish_vk {
-
-#ifdef VK_VERSION_1_0
-void marshal_VkApplicationInfo(
-    VulkanStream* vkStream,
-    const VkApplicationInfo* forMarshaling);
-
-void unmarshal_VkApplicationInfo(
-    VulkanStream* vkStream,
-    VkApplicationInfo* forUnmarshaling);
-
-void marshal_VkInstanceCreateInfo(
-    VulkanStream* vkStream,
-    const VkInstanceCreateInfo* forMarshaling);
-
-void unmarshal_VkInstanceCreateInfo(
-    VulkanStream* vkStream,
-    VkInstanceCreateInfo* forUnmarshaling);
-
-void marshal_VkAllocationCallbacks(
-    VulkanStream* vkStream,
-    const VkAllocationCallbacks* forMarshaling);
-
-void unmarshal_VkAllocationCallbacks(
-    VulkanStream* vkStream,
-    VkAllocationCallbacks* forUnmarshaling);
-
-#define OP_vkCreateInstance 20000
-VkResult marshal_vkCreateInstance(
-    VulkanStream* vkStream,
-    const VkInstanceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkInstance* pInstance);
-
-VkResult unmarshal_vkCreateInstance(
-    VulkanStream* vkStream,
-    const VkInstanceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkInstance* pInstance);
-
-#define OP_vkDestroyInstance 20001
-void marshal_vkDestroyInstance(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyInstance(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkEnumeratePhysicalDevices 20002
-VkResult marshal_vkEnumeratePhysicalDevices(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceCount,
-    VkPhysicalDevice* pPhysicalDevices);
-
-VkResult unmarshal_vkEnumeratePhysicalDevices(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceCount,
-    VkPhysicalDevice* pPhysicalDevices);
-
-void marshal_VkPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceFeatures* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceFeatures 20003
-void marshal_vkGetPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures* pFeatures);
-
-void unmarshal_vkGetPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures* pFeatures);
-
-void marshal_VkFormatProperties(
-    VulkanStream* vkStream,
-    const VkFormatProperties* forMarshaling);
-
-void unmarshal_VkFormatProperties(
-    VulkanStream* vkStream,
-    VkFormatProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceFormatProperties 20004
-void marshal_vkGetPhysicalDeviceFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties* pFormatProperties);
-
-void unmarshal_vkGetPhysicalDeviceFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties* pFormatProperties);
-
-void marshal_VkExtent3D(
-    VulkanStream* vkStream,
-    const VkExtent3D* forMarshaling);
-
-void unmarshal_VkExtent3D(
-    VulkanStream* vkStream,
-    VkExtent3D* forUnmarshaling);
-
-void marshal_VkImageFormatProperties(
-    VulkanStream* vkStream,
-    const VkImageFormatProperties* forMarshaling);
-
-void unmarshal_VkImageFormatProperties(
-    VulkanStream* vkStream,
-    VkImageFormatProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceImageFormatProperties 20005
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkImageFormatProperties* pImageFormatProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkImageFormatProperties* pImageFormatProperties);
-
-void marshal_VkPhysicalDeviceLimits(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceLimits* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceLimits(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceLimits* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceSparseProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSparseProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSparseProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSparseProperties* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceProperties 20006
-void marshal_vkGetPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties* pProperties);
-
-void marshal_VkQueueFamilyProperties(
-    VulkanStream* vkStream,
-    const VkQueueFamilyProperties* forMarshaling);
-
-void unmarshal_VkQueueFamilyProperties(
-    VulkanStream* vkStream,
-    VkQueueFamilyProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceQueueFamilyProperties 20007
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties* pQueueFamilyProperties);
-
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties* pQueueFamilyProperties);
-
-void marshal_VkMemoryType(
-    VulkanStream* vkStream,
-    const VkMemoryType* forMarshaling);
-
-void unmarshal_VkMemoryType(
-    VulkanStream* vkStream,
-    VkMemoryType* forUnmarshaling);
-
-void marshal_VkMemoryHeap(
-    VulkanStream* vkStream,
-    const VkMemoryHeap* forMarshaling);
-
-void unmarshal_VkMemoryHeap(
-    VulkanStream* vkStream,
-    VkMemoryHeap* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMemoryProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMemoryProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceMemoryProperties 20008
-void marshal_vkGetPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-
-void unmarshal_vkGetPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-
-#define OP_vkGetInstanceProcAddr 20009
-PFN_vkVoidFunction marshal_vkGetInstanceProcAddr(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const char* pName);
-
-PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const char* pName);
-
-#define OP_vkGetDeviceProcAddr 20010
-PFN_vkVoidFunction marshal_vkGetDeviceProcAddr(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const char* pName);
-
-PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const char* pName);
-
-void marshal_VkDeviceQueueCreateInfo(
-    VulkanStream* vkStream,
-    const VkDeviceQueueCreateInfo* forMarshaling);
-
-void unmarshal_VkDeviceQueueCreateInfo(
-    VulkanStream* vkStream,
-    VkDeviceQueueCreateInfo* forUnmarshaling);
-
-void marshal_VkDeviceCreateInfo(
-    VulkanStream* vkStream,
-    const VkDeviceCreateInfo* forMarshaling);
-
-void unmarshal_VkDeviceCreateInfo(
-    VulkanStream* vkStream,
-    VkDeviceCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateDevice 20011
-VkResult marshal_vkCreateDevice(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDeviceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDevice* pDevice);
-
-VkResult unmarshal_vkCreateDevice(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDeviceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDevice* pDevice);
-
-#define OP_vkDestroyDevice 20012
-void marshal_vkDestroyDevice(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDevice(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkExtensionProperties(
-    VulkanStream* vkStream,
-    const VkExtensionProperties* forMarshaling);
-
-void unmarshal_VkExtensionProperties(
-    VulkanStream* vkStream,
-    VkExtensionProperties* forUnmarshaling);
-
-#define OP_vkEnumerateInstanceExtensionProperties 20013
-VkResult marshal_vkEnumerateInstanceExtensionProperties(
-    VulkanStream* vkStream,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties);
-
-VkResult unmarshal_vkEnumerateInstanceExtensionProperties(
-    VulkanStream* vkStream,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties);
-
-#define OP_vkEnumerateDeviceExtensionProperties 20014
-VkResult marshal_vkEnumerateDeviceExtensionProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties);
-
-VkResult unmarshal_vkEnumerateDeviceExtensionProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties);
-
-void marshal_VkLayerProperties(
-    VulkanStream* vkStream,
-    const VkLayerProperties* forMarshaling);
-
-void unmarshal_VkLayerProperties(
-    VulkanStream* vkStream,
-    VkLayerProperties* forUnmarshaling);
-
-#define OP_vkEnumerateInstanceLayerProperties 20015
-VkResult marshal_vkEnumerateInstanceLayerProperties(
-    VulkanStream* vkStream,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties);
-
-VkResult unmarshal_vkEnumerateInstanceLayerProperties(
-    VulkanStream* vkStream,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties);
-
-#define OP_vkEnumerateDeviceLayerProperties 20016
-VkResult marshal_vkEnumerateDeviceLayerProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties);
-
-VkResult unmarshal_vkEnumerateDeviceLayerProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties);
-
-#define OP_vkGetDeviceQueue 20017
-void marshal_vkGetDeviceQueue(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t queueFamilyIndex,
-    uint32_t queueIndex,
-    VkQueue* pQueue);
-
-void unmarshal_vkGetDeviceQueue(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t queueFamilyIndex,
-    uint32_t queueIndex,
-    VkQueue* pQueue);
-
-void marshal_VkSubmitInfo(
-    VulkanStream* vkStream,
-    const VkSubmitInfo* forMarshaling);
-
-void unmarshal_VkSubmitInfo(
-    VulkanStream* vkStream,
-    VkSubmitInfo* forUnmarshaling);
-
-#define OP_vkQueueSubmit 20018
-VkResult marshal_vkQueueSubmit(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t submitCount,
-    const VkSubmitInfo* pSubmits,
-    VkFence fence);
-
-VkResult unmarshal_vkQueueSubmit(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t submitCount,
-    const VkSubmitInfo* pSubmits,
-    VkFence fence);
-
-#define OP_vkQueueWaitIdle 20019
-VkResult marshal_vkQueueWaitIdle(
-    VulkanStream* vkStream,
-    VkQueue queue);
-
-VkResult unmarshal_vkQueueWaitIdle(
-    VulkanStream* vkStream,
-    VkQueue queue);
-
-#define OP_vkDeviceWaitIdle 20020
-VkResult marshal_vkDeviceWaitIdle(
-    VulkanStream* vkStream,
-    VkDevice device);
-
-VkResult unmarshal_vkDeviceWaitIdle(
-    VulkanStream* vkStream,
-    VkDevice device);
-
-void marshal_VkMemoryAllocateInfo(
-    VulkanStream* vkStream,
-    const VkMemoryAllocateInfo* forMarshaling);
-
-void unmarshal_VkMemoryAllocateInfo(
-    VulkanStream* vkStream,
-    VkMemoryAllocateInfo* forUnmarshaling);
-
-#define OP_vkAllocateMemory 20021
-VkResult marshal_vkAllocateMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryAllocateInfo* pAllocateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDeviceMemory* pMemory);
-
-VkResult unmarshal_vkAllocateMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryAllocateInfo* pAllocateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDeviceMemory* pMemory);
-
-#define OP_vkFreeMemory 20022
-void marshal_vkFreeMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkFreeMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkMapMemory 20023
-VkResult marshal_vkMapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize offset,
-    VkDeviceSize size,
-    VkMemoryMapFlags flags,
-    void** ppData);
-
-VkResult unmarshal_vkMapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize offset,
-    VkDeviceSize size,
-    VkMemoryMapFlags flags,
-    void** ppData);
-
-#define OP_vkUnmapMemory 20024
-void marshal_vkUnmapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory);
-
-void unmarshal_vkUnmapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory);
-
-void marshal_VkMappedMemoryRange(
-    VulkanStream* vkStream,
-    const VkMappedMemoryRange* forMarshaling);
-
-void unmarshal_VkMappedMemoryRange(
-    VulkanStream* vkStream,
-    VkMappedMemoryRange* forUnmarshaling);
-
-#define OP_vkFlushMappedMemoryRanges 20025
-VkResult marshal_vkFlushMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges);
-
-VkResult unmarshal_vkFlushMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges);
-
-#define OP_vkInvalidateMappedMemoryRanges 20026
-VkResult marshal_vkInvalidateMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges);
-
-VkResult unmarshal_vkInvalidateMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges);
-
-#define OP_vkGetDeviceMemoryCommitment 20027
-void marshal_vkGetDeviceMemoryCommitment(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize* pCommittedMemoryInBytes);
-
-void unmarshal_vkGetDeviceMemoryCommitment(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize* pCommittedMemoryInBytes);
-
-#define OP_vkBindBufferMemory 20028
-VkResult marshal_vkBindBufferMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset);
-
-VkResult unmarshal_vkBindBufferMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset);
-
-#define OP_vkBindImageMemory 20029
-VkResult marshal_vkBindImageMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset);
-
-VkResult unmarshal_vkBindImageMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset);
-
-void marshal_VkMemoryRequirements(
-    VulkanStream* vkStream,
-    const VkMemoryRequirements* forMarshaling);
-
-void unmarshal_VkMemoryRequirements(
-    VulkanStream* vkStream,
-    VkMemoryRequirements* forUnmarshaling);
-
-#define OP_vkGetBufferMemoryRequirements 20030
-void marshal_vkGetBufferMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkMemoryRequirements* pMemoryRequirements);
-
-void unmarshal_vkGetBufferMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkMemoryRequirements* pMemoryRequirements);
-
-#define OP_vkGetImageMemoryRequirements 20031
-void marshal_vkGetImageMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkMemoryRequirements* pMemoryRequirements);
-
-void unmarshal_vkGetImageMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkMemoryRequirements* pMemoryRequirements);
-
-void marshal_VkSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    const VkSparseImageFormatProperties* forMarshaling);
-
-void unmarshal_VkSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    VkSparseImageFormatProperties* forUnmarshaling);
-
-void marshal_VkSparseImageMemoryRequirements(
-    VulkanStream* vkStream,
-    const VkSparseImageMemoryRequirements* forMarshaling);
-
-void unmarshal_VkSparseImageMemoryRequirements(
-    VulkanStream* vkStream,
-    VkSparseImageMemoryRequirements* forUnmarshaling);
-
-#define OP_vkGetImageSparseMemoryRequirements 20032
-void marshal_vkGetImageSparseMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-
-void unmarshal_vkGetImageSparseMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-
-#define OP_vkGetPhysicalDeviceSparseImageFormatProperties 20033
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkSampleCountFlagBits samples,
-    VkImageUsageFlags usage,
-    VkImageTiling tiling,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkSampleCountFlagBits samples,
-    VkImageUsageFlags usage,
-    VkImageTiling tiling,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties* pProperties);
-
-void marshal_VkSparseMemoryBind(
-    VulkanStream* vkStream,
-    const VkSparseMemoryBind* forMarshaling);
-
-void unmarshal_VkSparseMemoryBind(
-    VulkanStream* vkStream,
-    VkSparseMemoryBind* forUnmarshaling);
-
-void marshal_VkSparseBufferMemoryBindInfo(
-    VulkanStream* vkStream,
-    const VkSparseBufferMemoryBindInfo* forMarshaling);
-
-void unmarshal_VkSparseBufferMemoryBindInfo(
-    VulkanStream* vkStream,
-    VkSparseBufferMemoryBindInfo* forUnmarshaling);
-
-void marshal_VkSparseImageOpaqueMemoryBindInfo(
-    VulkanStream* vkStream,
-    const VkSparseImageOpaqueMemoryBindInfo* forMarshaling);
-
-void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
-    VulkanStream* vkStream,
-    VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling);
-
-void marshal_VkImageSubresource(
-    VulkanStream* vkStream,
-    const VkImageSubresource* forMarshaling);
-
-void unmarshal_VkImageSubresource(
-    VulkanStream* vkStream,
-    VkImageSubresource* forUnmarshaling);
-
-void marshal_VkOffset3D(
-    VulkanStream* vkStream,
-    const VkOffset3D* forMarshaling);
-
-void unmarshal_VkOffset3D(
-    VulkanStream* vkStream,
-    VkOffset3D* forUnmarshaling);
-
-void marshal_VkSparseImageMemoryBind(
-    VulkanStream* vkStream,
-    const VkSparseImageMemoryBind* forMarshaling);
-
-void unmarshal_VkSparseImageMemoryBind(
-    VulkanStream* vkStream,
-    VkSparseImageMemoryBind* forUnmarshaling);
-
-void marshal_VkSparseImageMemoryBindInfo(
-    VulkanStream* vkStream,
-    const VkSparseImageMemoryBindInfo* forMarshaling);
-
-void unmarshal_VkSparseImageMemoryBindInfo(
-    VulkanStream* vkStream,
-    VkSparseImageMemoryBindInfo* forUnmarshaling);
-
-void marshal_VkBindSparseInfo(
-    VulkanStream* vkStream,
-    const VkBindSparseInfo* forMarshaling);
-
-void unmarshal_VkBindSparseInfo(
-    VulkanStream* vkStream,
-    VkBindSparseInfo* forUnmarshaling);
-
-#define OP_vkQueueBindSparse 20034
-VkResult marshal_vkQueueBindSparse(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t bindInfoCount,
-    const VkBindSparseInfo* pBindInfo,
-    VkFence fence);
-
-VkResult unmarshal_vkQueueBindSparse(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t bindInfoCount,
-    const VkBindSparseInfo* pBindInfo,
-    VkFence fence);
-
-void marshal_VkFenceCreateInfo(
-    VulkanStream* vkStream,
-    const VkFenceCreateInfo* forMarshaling);
-
-void unmarshal_VkFenceCreateInfo(
-    VulkanStream* vkStream,
-    VkFenceCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateFence 20035
-VkResult marshal_vkCreateFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-VkResult unmarshal_vkCreateFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-#define OP_vkDestroyFence 20036
-void marshal_vkDestroyFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkResetFences 20037
-VkResult marshal_vkResetFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences);
-
-VkResult unmarshal_vkResetFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences);
-
-#define OP_vkGetFenceStatus 20038
-VkResult marshal_vkGetFenceStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence);
-
-VkResult unmarshal_vkGetFenceStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence);
-
-#define OP_vkWaitForFences 20039
-VkResult marshal_vkWaitForFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences,
-    VkBool32 waitAll,
-    uint64_t timeout);
-
-VkResult unmarshal_vkWaitForFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences,
-    VkBool32 waitAll,
-    uint64_t timeout);
-
-void marshal_VkSemaphoreCreateInfo(
-    VulkanStream* vkStream,
-    const VkSemaphoreCreateInfo* forMarshaling);
-
-void unmarshal_VkSemaphoreCreateInfo(
-    VulkanStream* vkStream,
-    VkSemaphoreCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateSemaphore 20040
-VkResult marshal_vkCreateSemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSemaphore* pSemaphore);
-
-VkResult unmarshal_vkCreateSemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSemaphore* pSemaphore);
-
-#define OP_vkDestroySemaphore 20041
-void marshal_vkDestroySemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSemaphore semaphore,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSemaphore semaphore,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkEventCreateInfo(
-    VulkanStream* vkStream,
-    const VkEventCreateInfo* forMarshaling);
-
-void unmarshal_VkEventCreateInfo(
-    VulkanStream* vkStream,
-    VkEventCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateEvent 20042
-VkResult marshal_vkCreateEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkEventCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkEvent* pEvent);
-
-VkResult unmarshal_vkCreateEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkEventCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkEvent* pEvent);
-
-#define OP_vkDestroyEvent 20043
-void marshal_vkDestroyEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetEventStatus 20044
-VkResult marshal_vkGetEventStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-VkResult unmarshal_vkGetEventStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-#define OP_vkSetEvent 20045
-VkResult marshal_vkSetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-VkResult unmarshal_vkSetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-#define OP_vkResetEvent 20046
-VkResult marshal_vkResetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-VkResult unmarshal_vkResetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event);
-
-void marshal_VkQueryPoolCreateInfo(
-    VulkanStream* vkStream,
-    const VkQueryPoolCreateInfo* forMarshaling);
-
-void unmarshal_VkQueryPoolCreateInfo(
-    VulkanStream* vkStream,
-    VkQueryPoolCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateQueryPool 20047
-VkResult marshal_vkCreateQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkQueryPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkQueryPool* pQueryPool);
-
-VkResult unmarshal_vkCreateQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkQueryPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkQueryPool* pQueryPool);
-
-#define OP_vkDestroyQueryPool 20048
-void marshal_vkDestroyQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetQueryPoolResults 20049
-VkResult marshal_vkGetQueryPoolResults(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    size_t dataSize,
-    void* pData,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags);
-
-VkResult unmarshal_vkGetQueryPoolResults(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    size_t dataSize,
-    void* pData,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags);
-
-void marshal_VkBufferCreateInfo(
-    VulkanStream* vkStream,
-    const VkBufferCreateInfo* forMarshaling);
-
-void unmarshal_VkBufferCreateInfo(
-    VulkanStream* vkStream,
-    VkBufferCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateBuffer 20050
-VkResult marshal_vkCreateBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBuffer* pBuffer);
-
-VkResult unmarshal_vkCreateBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBuffer* pBuffer);
-
-#define OP_vkDestroyBuffer 20051
-void marshal_vkDestroyBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkBufferViewCreateInfo(
-    VulkanStream* vkStream,
-    const VkBufferViewCreateInfo* forMarshaling);
-
-void unmarshal_VkBufferViewCreateInfo(
-    VulkanStream* vkStream,
-    VkBufferViewCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateBufferView 20052
-VkResult marshal_vkCreateBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBufferView* pView);
-
-VkResult unmarshal_vkCreateBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBufferView* pView);
-
-#define OP_vkDestroyBufferView 20053
-void marshal_vkDestroyBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBufferView bufferView,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBufferView bufferView,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkImageCreateInfo(
-    VulkanStream* vkStream,
-    const VkImageCreateInfo* forMarshaling);
-
-void unmarshal_VkImageCreateInfo(
-    VulkanStream* vkStream,
-    VkImageCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateImage 20054
-VkResult marshal_vkCreateImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImage* pImage);
-
-VkResult unmarshal_vkCreateImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImage* pImage);
-
-#define OP_vkDestroyImage 20055
-void marshal_vkDestroyImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkSubresourceLayout(
-    VulkanStream* vkStream,
-    const VkSubresourceLayout* forMarshaling);
-
-void unmarshal_VkSubresourceLayout(
-    VulkanStream* vkStream,
-    VkSubresourceLayout* forUnmarshaling);
-
-#define OP_vkGetImageSubresourceLayout 20056
-void marshal_vkGetImageSubresourceLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkImageSubresource* pSubresource,
-    VkSubresourceLayout* pLayout);
-
-void unmarshal_vkGetImageSubresourceLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkImageSubresource* pSubresource,
-    VkSubresourceLayout* pLayout);
-
-void marshal_VkComponentMapping(
-    VulkanStream* vkStream,
-    const VkComponentMapping* forMarshaling);
-
-void unmarshal_VkComponentMapping(
-    VulkanStream* vkStream,
-    VkComponentMapping* forUnmarshaling);
-
-void marshal_VkImageSubresourceRange(
-    VulkanStream* vkStream,
-    const VkImageSubresourceRange* forMarshaling);
-
-void unmarshal_VkImageSubresourceRange(
-    VulkanStream* vkStream,
-    VkImageSubresourceRange* forUnmarshaling);
-
-void marshal_VkImageViewCreateInfo(
-    VulkanStream* vkStream,
-    const VkImageViewCreateInfo* forMarshaling);
-
-void unmarshal_VkImageViewCreateInfo(
-    VulkanStream* vkStream,
-    VkImageViewCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateImageView 20057
-VkResult marshal_vkCreateImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImageView* pView);
-
-VkResult unmarshal_vkCreateImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImageView* pView);
-
-#define OP_vkDestroyImageView 20058
-void marshal_vkDestroyImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImageView imageView,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImageView imageView,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkShaderModuleCreateInfo(
-    VulkanStream* vkStream,
-    const VkShaderModuleCreateInfo* forMarshaling);
-
-void unmarshal_VkShaderModuleCreateInfo(
-    VulkanStream* vkStream,
-    VkShaderModuleCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateShaderModule 20059
-VkResult marshal_vkCreateShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkShaderModuleCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkShaderModule* pShaderModule);
-
-VkResult unmarshal_vkCreateShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkShaderModuleCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkShaderModule* pShaderModule);
-
-#define OP_vkDestroyShaderModule 20060
-void marshal_vkDestroyShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkShaderModule shaderModule,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkShaderModule shaderModule,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkPipelineCacheCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineCacheCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineCacheCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineCacheCreateInfo* forUnmarshaling);
-
-#define OP_vkCreatePipelineCache 20061
-VkResult marshal_vkCreatePipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineCacheCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineCache* pPipelineCache);
-
-VkResult unmarshal_vkCreatePipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineCacheCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineCache* pPipelineCache);
-
-#define OP_vkDestroyPipelineCache 20062
-void marshal_vkDestroyPipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyPipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetPipelineCacheData 20063
-VkResult marshal_vkGetPipelineCacheData(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    size_t* pDataSize,
-    void* pData);
-
-VkResult unmarshal_vkGetPipelineCacheData(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    size_t* pDataSize,
-    void* pData);
-
-#define OP_vkMergePipelineCaches 20064
-VkResult marshal_vkMergePipelineCaches(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache dstCache,
-    uint32_t srcCacheCount,
-    const VkPipelineCache* pSrcCaches);
-
-VkResult unmarshal_vkMergePipelineCaches(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache dstCache,
-    uint32_t srcCacheCount,
-    const VkPipelineCache* pSrcCaches);
-
-void marshal_VkSpecializationMapEntry(
-    VulkanStream* vkStream,
-    const VkSpecializationMapEntry* forMarshaling);
-
-void unmarshal_VkSpecializationMapEntry(
-    VulkanStream* vkStream,
-    VkSpecializationMapEntry* forUnmarshaling);
-
-void marshal_VkSpecializationInfo(
-    VulkanStream* vkStream,
-    const VkSpecializationInfo* forMarshaling);
-
-void unmarshal_VkSpecializationInfo(
-    VulkanStream* vkStream,
-    VkSpecializationInfo* forUnmarshaling);
-
-void marshal_VkPipelineShaderStageCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineShaderStageCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineShaderStageCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineShaderStageCreateInfo* forUnmarshaling);
-
-void marshal_VkVertexInputBindingDescription(
-    VulkanStream* vkStream,
-    const VkVertexInputBindingDescription* forMarshaling);
-
-void unmarshal_VkVertexInputBindingDescription(
-    VulkanStream* vkStream,
-    VkVertexInputBindingDescription* forUnmarshaling);
-
-void marshal_VkVertexInputAttributeDescription(
-    VulkanStream* vkStream,
-    const VkVertexInputAttributeDescription* forMarshaling);
-
-void unmarshal_VkVertexInputAttributeDescription(
-    VulkanStream* vkStream,
-    VkVertexInputAttributeDescription* forUnmarshaling);
-
-void marshal_VkPipelineVertexInputStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineVertexInputStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineVertexInputStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineVertexInputStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineInputAssemblyStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineInputAssemblyStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineTessellationStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineTessellationStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineTessellationStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineTessellationStateCreateInfo* forUnmarshaling);
-
-void marshal_VkViewport(
-    VulkanStream* vkStream,
-    const VkViewport* forMarshaling);
-
-void unmarshal_VkViewport(
-    VulkanStream* vkStream,
-    VkViewport* forUnmarshaling);
-
-void marshal_VkOffset2D(
-    VulkanStream* vkStream,
-    const VkOffset2D* forMarshaling);
-
-void unmarshal_VkOffset2D(
-    VulkanStream* vkStream,
-    VkOffset2D* forUnmarshaling);
-
-void marshal_VkExtent2D(
-    VulkanStream* vkStream,
-    const VkExtent2D* forMarshaling);
-
-void unmarshal_VkExtent2D(
-    VulkanStream* vkStream,
-    VkExtent2D* forUnmarshaling);
-
-void marshal_VkRect2D(
-    VulkanStream* vkStream,
-    const VkRect2D* forMarshaling);
-
-void unmarshal_VkRect2D(
-    VulkanStream* vkStream,
-    VkRect2D* forUnmarshaling);
-
-void marshal_VkPipelineViewportStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineViewportStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineViewportStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineViewportStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineRasterizationStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineRasterizationStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineRasterizationStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineRasterizationStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineMultisampleStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineMultisampleStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineMultisampleStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineMultisampleStateCreateInfo* forUnmarshaling);
-
-void marshal_VkStencilOpState(
-    VulkanStream* vkStream,
-    const VkStencilOpState* forMarshaling);
-
-void unmarshal_VkStencilOpState(
-    VulkanStream* vkStream,
-    VkStencilOpState* forUnmarshaling);
-
-void marshal_VkPipelineDepthStencilStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineDepthStencilStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineDepthStencilStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineDepthStencilStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineColorBlendAttachmentState(
-    VulkanStream* vkStream,
-    const VkPipelineColorBlendAttachmentState* forMarshaling);
-
-void unmarshal_VkPipelineColorBlendAttachmentState(
-    VulkanStream* vkStream,
-    VkPipelineColorBlendAttachmentState* forUnmarshaling);
-
-void marshal_VkPipelineColorBlendStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineColorBlendStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineColorBlendStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineColorBlendStateCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineDynamicStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineDynamicStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineDynamicStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineDynamicStateCreateInfo* forUnmarshaling);
-
-void marshal_VkGraphicsPipelineCreateInfo(
-    VulkanStream* vkStream,
-    const VkGraphicsPipelineCreateInfo* forMarshaling);
-
-void unmarshal_VkGraphicsPipelineCreateInfo(
-    VulkanStream* vkStream,
-    VkGraphicsPipelineCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateGraphicsPipelines 20065
-VkResult marshal_vkCreateGraphicsPipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkGraphicsPipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines);
-
-VkResult unmarshal_vkCreateGraphicsPipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkGraphicsPipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines);
-
-void marshal_VkComputePipelineCreateInfo(
-    VulkanStream* vkStream,
-    const VkComputePipelineCreateInfo* forMarshaling);
-
-void unmarshal_VkComputePipelineCreateInfo(
-    VulkanStream* vkStream,
-    VkComputePipelineCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateComputePipelines 20066
-VkResult marshal_vkCreateComputePipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkComputePipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines);
-
-VkResult unmarshal_vkCreateComputePipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkComputePipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines);
-
-#define OP_vkDestroyPipeline 20067
-void marshal_vkDestroyPipeline(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyPipeline(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkPushConstantRange(
-    VulkanStream* vkStream,
-    const VkPushConstantRange* forMarshaling);
-
-void unmarshal_VkPushConstantRange(
-    VulkanStream* vkStream,
-    VkPushConstantRange* forUnmarshaling);
-
-void marshal_VkPipelineLayoutCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineLayoutCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineLayoutCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineLayoutCreateInfo* forUnmarshaling);
-
-#define OP_vkCreatePipelineLayout 20068
-VkResult marshal_vkCreatePipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineLayout* pPipelineLayout);
-
-VkResult unmarshal_vkCreatePipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineLayout* pPipelineLayout);
-
-#define OP_vkDestroyPipelineLayout 20069
-void marshal_vkDestroyPipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineLayout pipelineLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyPipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineLayout pipelineLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkSamplerCreateInfo(
-    VulkanStream* vkStream,
-    const VkSamplerCreateInfo* forMarshaling);
-
-void unmarshal_VkSamplerCreateInfo(
-    VulkanStream* vkStream,
-    VkSamplerCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateSampler 20070
-VkResult marshal_vkCreateSampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSampler* pSampler);
-
-VkResult unmarshal_vkCreateSampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSampler* pSampler);
-
-#define OP_vkDestroySampler 20071
-void marshal_vkDestroySampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSampler sampler,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSampler sampler,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkDescriptorSetLayoutBinding(
-    VulkanStream* vkStream,
-    const VkDescriptorSetLayoutBinding* forMarshaling);
-
-void unmarshal_VkDescriptorSetLayoutBinding(
-    VulkanStream* vkStream,
-    VkDescriptorSetLayoutBinding* forUnmarshaling);
-
-void marshal_VkDescriptorSetLayoutCreateInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorSetLayoutCreateInfo* forMarshaling);
-
-void unmarshal_VkDescriptorSetLayoutCreateInfo(
-    VulkanStream* vkStream,
-    VkDescriptorSetLayoutCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateDescriptorSetLayout 20072
-VkResult marshal_vkCreateDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorSetLayout* pSetLayout);
-
-VkResult unmarshal_vkCreateDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorSetLayout* pSetLayout);
-
-#define OP_vkDestroyDescriptorSetLayout 20073
-void marshal_vkDestroyDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSetLayout descriptorSetLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSetLayout descriptorSetLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkDescriptorPoolSize(
-    VulkanStream* vkStream,
-    const VkDescriptorPoolSize* forMarshaling);
-
-void unmarshal_VkDescriptorPoolSize(
-    VulkanStream* vkStream,
-    VkDescriptorPoolSize* forUnmarshaling);
-
-void marshal_VkDescriptorPoolCreateInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorPoolCreateInfo* forMarshaling);
-
-void unmarshal_VkDescriptorPoolCreateInfo(
-    VulkanStream* vkStream,
-    VkDescriptorPoolCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateDescriptorPool 20074
-VkResult marshal_vkCreateDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorPool* pDescriptorPool);
-
-VkResult unmarshal_vkCreateDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorPool* pDescriptorPool);
-
-#define OP_vkDestroyDescriptorPool 20075
-void marshal_vkDestroyDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkResetDescriptorPool 20076
-VkResult marshal_vkResetDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    VkDescriptorPoolResetFlags flags);
-
-VkResult unmarshal_vkResetDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    VkDescriptorPoolResetFlags flags);
-
-void marshal_VkDescriptorSetAllocateInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorSetAllocateInfo* forMarshaling);
-
-void unmarshal_VkDescriptorSetAllocateInfo(
-    VulkanStream* vkStream,
-    VkDescriptorSetAllocateInfo* forUnmarshaling);
-
-#define OP_vkAllocateDescriptorSets 20077
-VkResult marshal_vkAllocateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetAllocateInfo* pAllocateInfo,
-    VkDescriptorSet* pDescriptorSets);
-
-VkResult unmarshal_vkAllocateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetAllocateInfo* pAllocateInfo,
-    VkDescriptorSet* pDescriptorSets);
-
-#define OP_vkFreeDescriptorSets 20078
-VkResult marshal_vkFreeDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets);
-
-VkResult unmarshal_vkFreeDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets);
-
-void marshal_VkDescriptorImageInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorImageInfo* forMarshaling);
-
-void unmarshal_VkDescriptorImageInfo(
-    VulkanStream* vkStream,
-    VkDescriptorImageInfo* forUnmarshaling);
-
-void marshal_VkDescriptorBufferInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorBufferInfo* forMarshaling);
-
-void unmarshal_VkDescriptorBufferInfo(
-    VulkanStream* vkStream,
-    VkDescriptorBufferInfo* forUnmarshaling);
-
-void marshal_VkWriteDescriptorSet(
-    VulkanStream* vkStream,
-    const VkWriteDescriptorSet* forMarshaling);
-
-void unmarshal_VkWriteDescriptorSet(
-    VulkanStream* vkStream,
-    VkWriteDescriptorSet* forUnmarshaling);
-
-void marshal_VkCopyDescriptorSet(
-    VulkanStream* vkStream,
-    const VkCopyDescriptorSet* forMarshaling);
-
-void unmarshal_VkCopyDescriptorSet(
-    VulkanStream* vkStream,
-    VkCopyDescriptorSet* forUnmarshaling);
-
-#define OP_vkUpdateDescriptorSets 20079
-void marshal_vkUpdateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites,
-    uint32_t descriptorCopyCount,
-    const VkCopyDescriptorSet* pDescriptorCopies);
-
-void unmarshal_vkUpdateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites,
-    uint32_t descriptorCopyCount,
-    const VkCopyDescriptorSet* pDescriptorCopies);
-
-void marshal_VkFramebufferCreateInfo(
-    VulkanStream* vkStream,
-    const VkFramebufferCreateInfo* forMarshaling);
-
-void unmarshal_VkFramebufferCreateInfo(
-    VulkanStream* vkStream,
-    VkFramebufferCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateFramebuffer 20080
-VkResult marshal_vkCreateFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFramebufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFramebuffer* pFramebuffer);
-
-VkResult unmarshal_vkCreateFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFramebufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFramebuffer* pFramebuffer);
-
-#define OP_vkDestroyFramebuffer 20081
-void marshal_vkDestroyFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFramebuffer framebuffer,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFramebuffer framebuffer,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkAttachmentDescription(
-    VulkanStream* vkStream,
-    const VkAttachmentDescription* forMarshaling);
-
-void unmarshal_VkAttachmentDescription(
-    VulkanStream* vkStream,
-    VkAttachmentDescription* forUnmarshaling);
-
-void marshal_VkAttachmentReference(
-    VulkanStream* vkStream,
-    const VkAttachmentReference* forMarshaling);
-
-void unmarshal_VkAttachmentReference(
-    VulkanStream* vkStream,
-    VkAttachmentReference* forUnmarshaling);
-
-void marshal_VkSubpassDescription(
-    VulkanStream* vkStream,
-    const VkSubpassDescription* forMarshaling);
-
-void unmarshal_VkSubpassDescription(
-    VulkanStream* vkStream,
-    VkSubpassDescription* forUnmarshaling);
-
-void marshal_VkSubpassDependency(
-    VulkanStream* vkStream,
-    const VkSubpassDependency* forMarshaling);
-
-void unmarshal_VkSubpassDependency(
-    VulkanStream* vkStream,
-    VkSubpassDependency* forUnmarshaling);
-
-void marshal_VkRenderPassCreateInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassCreateInfo* forMarshaling);
-
-void unmarshal_VkRenderPassCreateInfo(
-    VulkanStream* vkStream,
-    VkRenderPassCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateRenderPass 20082
-VkResult marshal_vkCreateRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass);
-
-VkResult unmarshal_vkCreateRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass);
-
-#define OP_vkDestroyRenderPass 20083
-void marshal_vkDestroyRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetRenderAreaGranularity 20084
-void marshal_vkGetRenderAreaGranularity(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    VkExtent2D* pGranularity);
-
-void unmarshal_vkGetRenderAreaGranularity(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    VkExtent2D* pGranularity);
-
-void marshal_VkCommandPoolCreateInfo(
-    VulkanStream* vkStream,
-    const VkCommandPoolCreateInfo* forMarshaling);
-
-void unmarshal_VkCommandPoolCreateInfo(
-    VulkanStream* vkStream,
-    VkCommandPoolCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateCommandPool 20085
-VkResult marshal_vkCreateCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkCommandPool* pCommandPool);
-
-VkResult unmarshal_vkCreateCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkCommandPool* pCommandPool);
-
-#define OP_vkDestroyCommandPool 20086
-void marshal_vkDestroyCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkResetCommandPool 20087
-VkResult marshal_vkResetCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolResetFlags flags);
-
-VkResult unmarshal_vkResetCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolResetFlags flags);
-
-void marshal_VkCommandBufferAllocateInfo(
-    VulkanStream* vkStream,
-    const VkCommandBufferAllocateInfo* forMarshaling);
-
-void unmarshal_VkCommandBufferAllocateInfo(
-    VulkanStream* vkStream,
-    VkCommandBufferAllocateInfo* forUnmarshaling);
-
-#define OP_vkAllocateCommandBuffers 20088
-VkResult marshal_vkAllocateCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandBufferAllocateInfo* pAllocateInfo,
-    VkCommandBuffer* pCommandBuffers);
-
-VkResult unmarshal_vkAllocateCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandBufferAllocateInfo* pAllocateInfo,
-    VkCommandBuffer* pCommandBuffers);
-
-#define OP_vkFreeCommandBuffers 20089
-void marshal_vkFreeCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers);
-
-void unmarshal_vkFreeCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers);
-
-void marshal_VkCommandBufferInheritanceInfo(
-    VulkanStream* vkStream,
-    const VkCommandBufferInheritanceInfo* forMarshaling);
-
-void unmarshal_VkCommandBufferInheritanceInfo(
-    VulkanStream* vkStream,
-    VkCommandBufferInheritanceInfo* forUnmarshaling);
-
-void marshal_VkCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    const VkCommandBufferBeginInfo* forMarshaling);
-
-void unmarshal_VkCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    VkCommandBufferBeginInfo* forUnmarshaling);
-
-#define OP_vkBeginCommandBuffer 20090
-VkResult marshal_vkBeginCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCommandBufferBeginInfo* pBeginInfo);
-
-VkResult unmarshal_vkBeginCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCommandBufferBeginInfo* pBeginInfo);
-
-#define OP_vkEndCommandBuffer 20091
-VkResult marshal_vkEndCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-VkResult unmarshal_vkEndCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-#define OP_vkResetCommandBuffer 20092
-VkResult marshal_vkResetCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkCommandBufferResetFlags flags);
-
-VkResult unmarshal_vkResetCommandBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkCommandBufferResetFlags flags);
-
-#define OP_vkCmdBindPipeline 20093
-void marshal_vkCmdBindPipeline(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipeline pipeline);
-
-void unmarshal_vkCmdBindPipeline(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipeline pipeline);
-
-#define OP_vkCmdSetViewport 20094
-void marshal_vkCmdSetViewport(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewport* pViewports);
-
-void unmarshal_vkCmdSetViewport(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewport* pViewports);
-
-#define OP_vkCmdSetScissor 20095
-void marshal_vkCmdSetScissor(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstScissor,
-    uint32_t scissorCount,
-    const VkRect2D* pScissors);
-
-void unmarshal_vkCmdSetScissor(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstScissor,
-    uint32_t scissorCount,
-    const VkRect2D* pScissors);
-
-#define OP_vkCmdSetLineWidth 20096
-void marshal_vkCmdSetLineWidth(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float lineWidth);
-
-void unmarshal_vkCmdSetLineWidth(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float lineWidth);
-
-#define OP_vkCmdSetDepthBias 20097
-void marshal_vkCmdSetDepthBias(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float depthBiasConstantFactor,
-    float depthBiasClamp,
-    float depthBiasSlopeFactor);
-
-void unmarshal_vkCmdSetDepthBias(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float depthBiasConstantFactor,
-    float depthBiasClamp,
-    float depthBiasSlopeFactor);
-
-#define OP_vkCmdSetBlendConstants 20098
-void marshal_vkCmdSetBlendConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const float blendConstants);
-
-void unmarshal_vkCmdSetBlendConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const float blendConstants);
-
-#define OP_vkCmdSetDepthBounds 20099
-void marshal_vkCmdSetDepthBounds(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float minDepthBounds,
-    float maxDepthBounds);
-
-void unmarshal_vkCmdSetDepthBounds(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float minDepthBounds,
-    float maxDepthBounds);
-
-#define OP_vkCmdSetStencilCompareMask 20100
-void marshal_vkCmdSetStencilCompareMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t compareMask);
-
-void unmarshal_vkCmdSetStencilCompareMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t compareMask);
-
-#define OP_vkCmdSetStencilWriteMask 20101
-void marshal_vkCmdSetStencilWriteMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t writeMask);
-
-void unmarshal_vkCmdSetStencilWriteMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t writeMask);
-
-#define OP_vkCmdSetStencilReference 20102
-void marshal_vkCmdSetStencilReference(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t reference);
-
-void unmarshal_vkCmdSetStencilReference(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t reference);
-
-#define OP_vkCmdBindDescriptorSets 20103
-void marshal_vkCmdBindDescriptorSets(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t firstSet,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets,
-    uint32_t dynamicOffsetCount,
-    const uint32_t* pDynamicOffsets);
-
-void unmarshal_vkCmdBindDescriptorSets(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t firstSet,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets,
-    uint32_t dynamicOffsetCount,
-    const uint32_t* pDynamicOffsets);
-
-#define OP_vkCmdBindIndexBuffer 20104
-void marshal_vkCmdBindIndexBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkIndexType indexType);
-
-void unmarshal_vkCmdBindIndexBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkIndexType indexType);
-
-#define OP_vkCmdBindVertexBuffers 20105
-void marshal_vkCmdBindVertexBuffers(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstBinding,
-    uint32_t bindingCount,
-    const VkBuffer* pBuffers,
-    const VkDeviceSize* pOffsets);
-
-void unmarshal_vkCmdBindVertexBuffers(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstBinding,
-    uint32_t bindingCount,
-    const VkBuffer* pBuffers,
-    const VkDeviceSize* pOffsets);
-
-#define OP_vkCmdDraw 20106
-void marshal_vkCmdDraw(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t vertexCount,
-    uint32_t instanceCount,
-    uint32_t firstVertex,
-    uint32_t firstInstance);
-
-void unmarshal_vkCmdDraw(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t vertexCount,
-    uint32_t instanceCount,
-    uint32_t firstVertex,
-    uint32_t firstInstance);
-
-#define OP_vkCmdDrawIndexed 20107
-void marshal_vkCmdDrawIndexed(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t indexCount,
-    uint32_t instanceCount,
-    uint32_t firstIndex,
-    int32_t vertexOffset,
-    uint32_t firstInstance);
-
-void unmarshal_vkCmdDrawIndexed(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t indexCount,
-    uint32_t instanceCount,
-    uint32_t firstIndex,
-    int32_t vertexOffset,
-    uint32_t firstInstance);
-
-#define OP_vkCmdDrawIndirect 20108
-void marshal_vkCmdDrawIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride);
-
-#define OP_vkCmdDrawIndexedIndirect 20109
-void marshal_vkCmdDrawIndexedIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndexedIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride);
-
-#define OP_vkCmdDispatch 20110
-void marshal_vkCmdDispatch(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-void unmarshal_vkCmdDispatch(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-#define OP_vkCmdDispatchIndirect 20111
-void marshal_vkCmdDispatchIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset);
-
-void unmarshal_vkCmdDispatchIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset);
-
-void marshal_VkBufferCopy(
-    VulkanStream* vkStream,
-    const VkBufferCopy* forMarshaling);
-
-void unmarshal_VkBufferCopy(
-    VulkanStream* vkStream,
-    VkBufferCopy* forUnmarshaling);
-
-#define OP_vkCmdCopyBuffer 20112
-void marshal_vkCmdCopyBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferCopy* pRegions);
-
-void unmarshal_vkCmdCopyBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferCopy* pRegions);
-
-void marshal_VkImageSubresourceLayers(
-    VulkanStream* vkStream,
-    const VkImageSubresourceLayers* forMarshaling);
-
-void unmarshal_VkImageSubresourceLayers(
-    VulkanStream* vkStream,
-    VkImageSubresourceLayers* forUnmarshaling);
-
-void marshal_VkImageCopy(
-    VulkanStream* vkStream,
-    const VkImageCopy* forMarshaling);
-
-void unmarshal_VkImageCopy(
-    VulkanStream* vkStream,
-    VkImageCopy* forUnmarshaling);
-
-#define OP_vkCmdCopyImage 20113
-void marshal_vkCmdCopyImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageCopy* pRegions);
-
-void unmarshal_vkCmdCopyImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageCopy* pRegions);
-
-void marshal_VkImageBlit(
-    VulkanStream* vkStream,
-    const VkImageBlit* forMarshaling);
-
-void unmarshal_VkImageBlit(
-    VulkanStream* vkStream,
-    VkImageBlit* forUnmarshaling);
-
-#define OP_vkCmdBlitImage 20114
-void marshal_vkCmdBlitImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageBlit* pRegions,
-    VkFilter filter);
-
-void unmarshal_vkCmdBlitImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageBlit* pRegions,
-    VkFilter filter);
-
-void marshal_VkBufferImageCopy(
-    VulkanStream* vkStream,
-    const VkBufferImageCopy* forMarshaling);
-
-void unmarshal_VkBufferImageCopy(
-    VulkanStream* vkStream,
-    VkBufferImageCopy* forUnmarshaling);
-
-#define OP_vkCmdCopyBufferToImage 20115
-void marshal_vkCmdCopyBufferToImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions);
-
-void unmarshal_vkCmdCopyBufferToImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions);
-
-#define OP_vkCmdCopyImageToBuffer 20116
-void marshal_vkCmdCopyImageToBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions);
-
-void unmarshal_vkCmdCopyImageToBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions);
-
-#define OP_vkCmdUpdateBuffer 20117
-void marshal_vkCmdUpdateBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize dataSize,
-    const void* pData);
-
-void unmarshal_vkCmdUpdateBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize dataSize,
-    const void* pData);
-
-#define OP_vkCmdFillBuffer 20118
-void marshal_vkCmdFillBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize size,
-    uint32_t data);
-
-void unmarshal_vkCmdFillBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize size,
-    uint32_t data);
-
-void marshal_VkClearColorValue(
-    VulkanStream* vkStream,
-    const VkClearColorValue* forMarshaling);
-
-void unmarshal_VkClearColorValue(
-    VulkanStream* vkStream,
-    VkClearColorValue* forUnmarshaling);
-
-#define OP_vkCmdClearColorImage 20119
-void marshal_vkCmdClearColorImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearColorValue* pColor,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges);
-
-void unmarshal_vkCmdClearColorImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearColorValue* pColor,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges);
-
-void marshal_VkClearDepthStencilValue(
-    VulkanStream* vkStream,
-    const VkClearDepthStencilValue* forMarshaling);
-
-void unmarshal_VkClearDepthStencilValue(
-    VulkanStream* vkStream,
-    VkClearDepthStencilValue* forUnmarshaling);
-
-#define OP_vkCmdClearDepthStencilImage 20120
-void marshal_vkCmdClearDepthStencilImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearDepthStencilValue* pDepthStencil,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges);
-
-void unmarshal_vkCmdClearDepthStencilImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearDepthStencilValue* pDepthStencil,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges);
-
-void marshal_VkClearValue(
-    VulkanStream* vkStream,
-    const VkClearValue* forMarshaling);
-
-void unmarshal_VkClearValue(
-    VulkanStream* vkStream,
-    VkClearValue* forUnmarshaling);
-
-void marshal_VkClearAttachment(
-    VulkanStream* vkStream,
-    const VkClearAttachment* forMarshaling);
-
-void unmarshal_VkClearAttachment(
-    VulkanStream* vkStream,
-    VkClearAttachment* forUnmarshaling);
-
-void marshal_VkClearRect(
-    VulkanStream* vkStream,
-    const VkClearRect* forMarshaling);
-
-void unmarshal_VkClearRect(
-    VulkanStream* vkStream,
-    VkClearRect* forUnmarshaling);
-
-#define OP_vkCmdClearAttachments 20121
-void marshal_vkCmdClearAttachments(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t attachmentCount,
-    const VkClearAttachment* pAttachments,
-    uint32_t rectCount,
-    const VkClearRect* pRects);
-
-void unmarshal_vkCmdClearAttachments(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t attachmentCount,
-    const VkClearAttachment* pAttachments,
-    uint32_t rectCount,
-    const VkClearRect* pRects);
-
-void marshal_VkImageResolve(
-    VulkanStream* vkStream,
-    const VkImageResolve* forMarshaling);
-
-void unmarshal_VkImageResolve(
-    VulkanStream* vkStream,
-    VkImageResolve* forUnmarshaling);
-
-#define OP_vkCmdResolveImage 20122
-void marshal_vkCmdResolveImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageResolve* pRegions);
-
-void unmarshal_vkCmdResolveImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageResolve* pRegions);
-
-#define OP_vkCmdSetEvent 20123
-void marshal_vkCmdSetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask);
-
-void unmarshal_vkCmdSetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask);
-
-#define OP_vkCmdResetEvent 20124
-void marshal_vkCmdResetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask);
-
-void unmarshal_vkCmdResetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask);
-
-void marshal_VkMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkMemoryBarrier* forMarshaling);
-
-void unmarshal_VkMemoryBarrier(
-    VulkanStream* vkStream,
-    VkMemoryBarrier* forUnmarshaling);
-
-void marshal_VkBufferMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkBufferMemoryBarrier* forMarshaling);
-
-void unmarshal_VkBufferMemoryBarrier(
-    VulkanStream* vkStream,
-    VkBufferMemoryBarrier* forUnmarshaling);
-
-void marshal_VkImageMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkImageMemoryBarrier* forMarshaling);
-
-void unmarshal_VkImageMemoryBarrier(
-    VulkanStream* vkStream,
-    VkImageMemoryBarrier* forUnmarshaling);
-
-#define OP_vkCmdWaitEvents 20125
-void marshal_vkCmdWaitEvents(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t eventCount,
-    const VkEvent* pEvents,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-void unmarshal_vkCmdWaitEvents(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t eventCount,
-    const VkEvent* pEvents,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-#define OP_vkCmdPipelineBarrier 20126
-void marshal_vkCmdPipelineBarrier(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    VkDependencyFlags dependencyFlags,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-void unmarshal_vkCmdPipelineBarrier(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    VkDependencyFlags dependencyFlags,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-#define OP_vkCmdBeginQuery 20127
-void marshal_vkCmdBeginQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query,
-    VkQueryControlFlags flags);
-
-void unmarshal_vkCmdBeginQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query,
-    VkQueryControlFlags flags);
-
-#define OP_vkCmdEndQuery 20128
-void marshal_vkCmdEndQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query);
-
-void unmarshal_vkCmdEndQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query);
-
-#define OP_vkCmdResetQueryPool 20129
-void marshal_vkCmdResetQueryPool(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount);
-
-void unmarshal_vkCmdResetQueryPool(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount);
-
-#define OP_vkCmdWriteTimestamp 20130
-void marshal_vkCmdWriteTimestamp(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkQueryPool queryPool,
-    uint32_t query);
-
-void unmarshal_vkCmdWriteTimestamp(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkQueryPool queryPool,
-    uint32_t query);
-
-#define OP_vkCmdCopyQueryPoolResults 20131
-void marshal_vkCmdCopyQueryPoolResults(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags);
-
-void unmarshal_vkCmdCopyQueryPoolResults(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags);
-
-#define OP_vkCmdPushConstants 20132
-void marshal_vkCmdPushConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineLayout layout,
-    VkShaderStageFlags stageFlags,
-    uint32_t offset,
-    uint32_t size,
-    const void* pValues);
-
-void unmarshal_vkCmdPushConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineLayout layout,
-    VkShaderStageFlags stageFlags,
-    uint32_t offset,
-    uint32_t size,
-    const void* pValues);
-
-void marshal_VkRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassBeginInfo* forMarshaling);
-
-void unmarshal_VkRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    VkRenderPassBeginInfo* forUnmarshaling);
-
-#define OP_vkCmdBeginRenderPass 20133
-void marshal_vkCmdBeginRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    VkSubpassContents contents);
-
-void unmarshal_vkCmdBeginRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    VkSubpassContents contents);
-
-#define OP_vkCmdNextSubpass 20134
-void marshal_vkCmdNextSubpass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkSubpassContents contents);
-
-void unmarshal_vkCmdNextSubpass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkSubpassContents contents);
-
-#define OP_vkCmdEndRenderPass 20135
-void marshal_vkCmdEndRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-void unmarshal_vkCmdEndRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-#define OP_vkCmdExecuteCommands 20136
-void marshal_vkCmdExecuteCommands(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers);
-
-void unmarshal_vkCmdExecuteCommands(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers);
-
-void marshal_VkDispatchIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDispatchIndirectCommand* forMarshaling);
-
-void unmarshal_VkDispatchIndirectCommand(
-    VulkanStream* vkStream,
-    VkDispatchIndirectCommand* forUnmarshaling);
-
-void marshal_VkDrawIndexedIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDrawIndexedIndirectCommand* forMarshaling);
-
-void unmarshal_VkDrawIndexedIndirectCommand(
-    VulkanStream* vkStream,
-    VkDrawIndexedIndirectCommand* forUnmarshaling);
-
-void marshal_VkDrawIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDrawIndirectCommand* forMarshaling);
-
-void unmarshal_VkDrawIndirectCommand(
-    VulkanStream* vkStream,
-    VkDrawIndirectCommand* forUnmarshaling);
-
-void marshal_VkBaseOutStructure(
-    VulkanStream* vkStream,
-    const VkBaseOutStructure* forMarshaling);
-
-void unmarshal_VkBaseOutStructure(
-    VulkanStream* vkStream,
-    VkBaseOutStructure* forUnmarshaling);
-
-void marshal_VkBaseInStructure(
-    VulkanStream* vkStream,
-    const VkBaseInStructure* forMarshaling);
-
-void unmarshal_VkBaseInStructure(
-    VulkanStream* vkStream,
-    VkBaseInStructure* forUnmarshaling);
-
-#endif
-#ifdef VK_VERSION_1_1
-#define OP_vkEnumerateInstanceVersion 20137
-VkResult marshal_vkEnumerateInstanceVersion(
-    VulkanStream* vkStream,
-    uint32_t* pApiVersion);
-
-VkResult unmarshal_vkEnumerateInstanceVersion(
-    VulkanStream* vkStream,
-    uint32_t* pApiVersion);
-
-void marshal_VkPhysicalDeviceSubgroupProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSubgroupProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSubgroupProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSubgroupProperties* forUnmarshaling);
-
-void marshal_VkBindBufferMemoryInfo(
-    VulkanStream* vkStream,
-    const VkBindBufferMemoryInfo* forMarshaling);
-
-void unmarshal_VkBindBufferMemoryInfo(
-    VulkanStream* vkStream,
-    VkBindBufferMemoryInfo* forUnmarshaling);
-
-void marshal_VkBindImageMemoryInfo(
-    VulkanStream* vkStream,
-    const VkBindImageMemoryInfo* forMarshaling);
-
-void unmarshal_VkBindImageMemoryInfo(
-    VulkanStream* vkStream,
-    VkBindImageMemoryInfo* forUnmarshaling);
-
-#define OP_vkBindBufferMemory2 20138
-VkResult marshal_vkBindBufferMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos);
-
-VkResult unmarshal_vkBindBufferMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos);
-
-#define OP_vkBindImageMemory2 20139
-VkResult marshal_vkBindImageMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos);
-
-VkResult unmarshal_vkBindImageMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos);
-
-void marshal_VkPhysicalDevice16BitStorageFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDevice16BitStorageFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDevice16BitStorageFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice16BitStorageFeatures* forUnmarshaling);
-
-void marshal_VkMemoryDedicatedRequirements(
-    VulkanStream* vkStream,
-    const VkMemoryDedicatedRequirements* forMarshaling);
-
-void unmarshal_VkMemoryDedicatedRequirements(
-    VulkanStream* vkStream,
-    VkMemoryDedicatedRequirements* forUnmarshaling);
-
-void marshal_VkMemoryDedicatedAllocateInfo(
-    VulkanStream* vkStream,
-    const VkMemoryDedicatedAllocateInfo* forMarshaling);
-
-void unmarshal_VkMemoryDedicatedAllocateInfo(
-    VulkanStream* vkStream,
-    VkMemoryDedicatedAllocateInfo* forUnmarshaling);
-
-void marshal_VkMemoryAllocateFlagsInfo(
-    VulkanStream* vkStream,
-    const VkMemoryAllocateFlagsInfo* forMarshaling);
-
-void unmarshal_VkMemoryAllocateFlagsInfo(
-    VulkanStream* vkStream,
-    VkMemoryAllocateFlagsInfo* forUnmarshaling);
-
-void marshal_VkDeviceGroupRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupRenderPassBeginInfo* forMarshaling);
-
-void unmarshal_VkDeviceGroupRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupRenderPassBeginInfo* forUnmarshaling);
-
-void marshal_VkDeviceGroupCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling);
-
-void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling);
-
-void marshal_VkDeviceGroupSubmitInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupSubmitInfo* forMarshaling);
-
-void unmarshal_VkDeviceGroupSubmitInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupSubmitInfo* forUnmarshaling);
-
-void marshal_VkDeviceGroupBindSparseInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupBindSparseInfo* forMarshaling);
-
-void unmarshal_VkDeviceGroupBindSparseInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupBindSparseInfo* forUnmarshaling);
-
-#define OP_vkGetDeviceGroupPeerMemoryFeatures 20140
-void marshal_vkGetDeviceGroupPeerMemoryFeatures(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-void unmarshal_vkGetDeviceGroupPeerMemoryFeatures(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-#define OP_vkCmdSetDeviceMask 20141
-void marshal_vkCmdSetDeviceMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask);
-
-void unmarshal_vkCmdSetDeviceMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask);
-
-#define OP_vkCmdDispatchBase 20142
-void marshal_vkCmdDispatchBase(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-void unmarshal_vkCmdDispatchBase(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-void marshal_VkBindBufferMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling);
-
-void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling);
-
-void marshal_VkBindImageMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    const VkBindImageMemoryDeviceGroupInfo* forMarshaling);
-
-void unmarshal_VkBindImageMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    VkBindImageMemoryDeviceGroupInfo* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceGroupProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceGroupProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceGroupProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceGroupProperties* forUnmarshaling);
-
-void marshal_VkDeviceGroupDeviceCreateInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupDeviceCreateInfo* forMarshaling);
-
-void unmarshal_VkDeviceGroupDeviceCreateInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupDeviceCreateInfo* forUnmarshaling);
-
-#define OP_vkEnumeratePhysicalDeviceGroups 20143
-VkResult marshal_vkEnumeratePhysicalDeviceGroups(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-VkResult unmarshal_vkEnumeratePhysicalDeviceGroups(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-void marshal_VkBufferMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkBufferMemoryRequirementsInfo2* forMarshaling);
-
-void unmarshal_VkBufferMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkBufferMemoryRequirementsInfo2* forUnmarshaling);
-
-void marshal_VkImageMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkImageMemoryRequirementsInfo2* forMarshaling);
-
-void unmarshal_VkImageMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkImageMemoryRequirementsInfo2* forUnmarshaling);
-
-void marshal_VkImageSparseMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkImageSparseMemoryRequirementsInfo2* forMarshaling);
-
-void unmarshal_VkImageSparseMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkImageSparseMemoryRequirementsInfo2* forUnmarshaling);
-
-void marshal_VkMemoryRequirements2(
-    VulkanStream* vkStream,
-    const VkMemoryRequirements2* forMarshaling);
-
-void unmarshal_VkMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkMemoryRequirements2* forUnmarshaling);
-
-void marshal_VkSparseImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    const VkSparseImageMemoryRequirements2* forMarshaling);
-
-void unmarshal_VkSparseImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkSparseImageMemoryRequirements2* forUnmarshaling);
-
-#define OP_vkGetImageMemoryRequirements2 20144
-void marshal_vkGetImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-void unmarshal_vkGetImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-#define OP_vkGetBufferMemoryRequirements2 20145
-void marshal_vkGetBufferMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-void unmarshal_vkGetBufferMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-#define OP_vkGetImageSparseMemoryRequirements2 20146
-void marshal_vkGetImageSparseMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-void unmarshal_vkGetImageSparseMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-void marshal_VkPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceFeatures2* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceFeatures2* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProperties2* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProperties2* forUnmarshaling);
-
-void marshal_VkFormatProperties2(
-    VulkanStream* vkStream,
-    const VkFormatProperties2* forMarshaling);
-
-void unmarshal_VkFormatProperties2(
-    VulkanStream* vkStream,
-    VkFormatProperties2* forUnmarshaling);
-
-void marshal_VkImageFormatProperties2(
-    VulkanStream* vkStream,
-    const VkImageFormatProperties2* forMarshaling);
-
-void unmarshal_VkImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkImageFormatProperties2* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceImageFormatInfo2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceImageFormatInfo2* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceImageFormatInfo2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceImageFormatInfo2* forUnmarshaling);
-
-void marshal_VkQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    const VkQueueFamilyProperties2* forMarshaling);
-
-void unmarshal_VkQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkQueueFamilyProperties2* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMemoryProperties2* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMemoryProperties2* forUnmarshaling);
-
-void marshal_VkSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    const VkSparseImageFormatProperties2* forMarshaling);
-
-void unmarshal_VkSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkSparseImageFormatProperties2* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceFeatures2 20147
-void marshal_vkGetPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures);
-
-void unmarshal_vkGetPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures);
-
-#define OP_vkGetPhysicalDeviceProperties2 20148
-void marshal_vkGetPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties);
-
-#define OP_vkGetPhysicalDeviceFormatProperties2 20149
-void marshal_vkGetPhysicalDeviceFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties);
-
-void unmarshal_vkGetPhysicalDeviceFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties);
-
-#define OP_vkGetPhysicalDeviceImageFormatProperties2 20150
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties);
-
-#define OP_vkGetPhysicalDeviceQueueFamilyProperties2 20151
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-#define OP_vkGetPhysicalDeviceMemoryProperties2 20152
-void marshal_vkGetPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-void unmarshal_vkGetPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-#define OP_vkGetPhysicalDeviceSparseImageFormatProperties2 20153
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties);
-
-#define OP_vkTrimCommandPool 20154
-void marshal_vkTrimCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags);
-
-void unmarshal_vkTrimCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags);
-
-void marshal_VkPhysicalDevicePointClippingProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDevicePointClippingProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDevicePointClippingProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevicePointClippingProperties* forUnmarshaling);
-
-void marshal_VkInputAttachmentAspectReference(
-    VulkanStream* vkStream,
-    const VkInputAttachmentAspectReference* forMarshaling);
-
-void unmarshal_VkInputAttachmentAspectReference(
-    VulkanStream* vkStream,
-    VkInputAttachmentAspectReference* forUnmarshaling);
-
-void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling);
-
-void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
-    VulkanStream* vkStream,
-    VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling);
-
-void marshal_VkImageViewUsageCreateInfo(
-    VulkanStream* vkStream,
-    const VkImageViewUsageCreateInfo* forMarshaling);
-
-void unmarshal_VkImageViewUsageCreateInfo(
-    VulkanStream* vkStream,
-    VkImageViewUsageCreateInfo* forUnmarshaling);
-
-void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling);
-
-void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling);
-
-void marshal_VkRenderPassMultiviewCreateInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassMultiviewCreateInfo* forMarshaling);
-
-void unmarshal_VkRenderPassMultiviewCreateInfo(
-    VulkanStream* vkStream,
-    VkRenderPassMultiviewCreateInfo* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceMultiviewFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMultiviewFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMultiviewFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMultiviewFeatures* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceMultiviewProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMultiviewProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMultiviewProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMultiviewProperties* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceVariablePointerFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceVariablePointerFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceProtectedMemoryProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling);
-
-void marshal_VkDeviceQueueInfo2(
-    VulkanStream* vkStream,
-    const VkDeviceQueueInfo2* forMarshaling);
-
-void unmarshal_VkDeviceQueueInfo2(
-    VulkanStream* vkStream,
-    VkDeviceQueueInfo2* forUnmarshaling);
-
-void marshal_VkProtectedSubmitInfo(
-    VulkanStream* vkStream,
-    const VkProtectedSubmitInfo* forMarshaling);
-
-void unmarshal_VkProtectedSubmitInfo(
-    VulkanStream* vkStream,
-    VkProtectedSubmitInfo* forUnmarshaling);
-
-#define OP_vkGetDeviceQueue2 20155
-void marshal_vkGetDeviceQueue2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceQueueInfo2* pQueueInfo,
-    VkQueue* pQueue);
-
-void unmarshal_vkGetDeviceQueue2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceQueueInfo2* pQueueInfo,
-    VkQueue* pQueue);
-
-void marshal_VkSamplerYcbcrConversionCreateInfo(
-    VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionCreateInfo* forMarshaling);
-
-void unmarshal_VkSamplerYcbcrConversionCreateInfo(
-    VulkanStream* vkStream,
-    VkSamplerYcbcrConversionCreateInfo* forUnmarshaling);
-
-void marshal_VkSamplerYcbcrConversionInfo(
-    VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionInfo* forMarshaling);
-
-void unmarshal_VkSamplerYcbcrConversionInfo(
-    VulkanStream* vkStream,
-    VkSamplerYcbcrConversionInfo* forUnmarshaling);
-
-void marshal_VkBindImagePlaneMemoryInfo(
-    VulkanStream* vkStream,
-    const VkBindImagePlaneMemoryInfo* forMarshaling);
-
-void unmarshal_VkBindImagePlaneMemoryInfo(
-    VulkanStream* vkStream,
-    VkBindImagePlaneMemoryInfo* forUnmarshaling);
-
-void marshal_VkImagePlaneMemoryRequirementsInfo(
-    VulkanStream* vkStream,
-    const VkImagePlaneMemoryRequirementsInfo* forMarshaling);
-
-void unmarshal_VkImagePlaneMemoryRequirementsInfo(
-    VulkanStream* vkStream,
-    VkImagePlaneMemoryRequirementsInfo* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling);
-
-void marshal_VkSamplerYcbcrConversionImageFormatProperties(
-    VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling);
-
-void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
-    VulkanStream* vkStream,
-    VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling);
-
-#define OP_vkCreateSamplerYcbcrConversion 20156
-VkResult marshal_vkCreateSamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion);
-
-VkResult unmarshal_vkCreateSamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion);
-
-#define OP_vkDestroySamplerYcbcrConversion 20157
-void marshal_vkDestroySamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator);
-
-void marshal_VkDescriptorUpdateTemplateEntry(
-    VulkanStream* vkStream,
-    const VkDescriptorUpdateTemplateEntry* forMarshaling);
-
-void unmarshal_VkDescriptorUpdateTemplateEntry(
-    VulkanStream* vkStream,
-    VkDescriptorUpdateTemplateEntry* forUnmarshaling);
-
-void marshal_VkDescriptorUpdateTemplateCreateInfo(
-    VulkanStream* vkStream,
-    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling);
-
-void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
-    VulkanStream* vkStream,
-    VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling);
-
-#define OP_vkCreateDescriptorUpdateTemplate 20158
-VkResult marshal_vkCreateDescriptorUpdateTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-VkResult unmarshal_vkCreateDescriptorUpdateTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-#define OP_vkDestroyDescriptorUpdateTemplate 20159
-void marshal_vkDestroyDescriptorUpdateTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDescriptorUpdateTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkUpdateDescriptorSetWithTemplate 20160
-void marshal_vkUpdateDescriptorSetWithTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData);
-
-void unmarshal_vkUpdateDescriptorSetWithTemplate(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData);
-
-void marshal_VkExternalMemoryProperties(
-    VulkanStream* vkStream,
-    const VkExternalMemoryProperties* forMarshaling);
-
-void unmarshal_VkExternalMemoryProperties(
-    VulkanStream* vkStream,
-    VkExternalMemoryProperties* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceExternalImageFormatInfo(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling);
-
-void marshal_VkExternalImageFormatProperties(
-    VulkanStream* vkStream,
-    const VkExternalImageFormatProperties* forMarshaling);
-
-void unmarshal_VkExternalImageFormatProperties(
-    VulkanStream* vkStream,
-    VkExternalImageFormatProperties* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceExternalBufferInfo(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalBufferInfo* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceExternalBufferInfo(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceExternalBufferInfo* forUnmarshaling);
-
-void marshal_VkExternalBufferProperties(
-    VulkanStream* vkStream,
-    const VkExternalBufferProperties* forMarshaling);
-
-void unmarshal_VkExternalBufferProperties(
-    VulkanStream* vkStream,
-    VkExternalBufferProperties* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceIDProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceIDProperties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceIDProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceIDProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceExternalBufferProperties 20161
-void marshal_vkGetPhysicalDeviceExternalBufferProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalBufferProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties);
-
-void marshal_VkExternalMemoryImageCreateInfo(
-    VulkanStream* vkStream,
-    const VkExternalMemoryImageCreateInfo* forMarshaling);
-
-void unmarshal_VkExternalMemoryImageCreateInfo(
-    VulkanStream* vkStream,
-    VkExternalMemoryImageCreateInfo* forUnmarshaling);
-
-void marshal_VkExternalMemoryBufferCreateInfo(
-    VulkanStream* vkStream,
-    const VkExternalMemoryBufferCreateInfo* forMarshaling);
-
-void unmarshal_VkExternalMemoryBufferCreateInfo(
-    VulkanStream* vkStream,
-    VkExternalMemoryBufferCreateInfo* forUnmarshaling);
-
-void marshal_VkExportMemoryAllocateInfo(
-    VulkanStream* vkStream,
-    const VkExportMemoryAllocateInfo* forMarshaling);
-
-void unmarshal_VkExportMemoryAllocateInfo(
-    VulkanStream* vkStream,
-    VkExportMemoryAllocateInfo* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceExternalFenceInfo(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalFenceInfo* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceExternalFenceInfo(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceExternalFenceInfo* forUnmarshaling);
-
-void marshal_VkExternalFenceProperties(
-    VulkanStream* vkStream,
-    const VkExternalFenceProperties* forMarshaling);
-
-void unmarshal_VkExternalFenceProperties(
-    VulkanStream* vkStream,
-    VkExternalFenceProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceExternalFenceProperties 20162
-void marshal_vkGetPhysicalDeviceExternalFenceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalFenceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties);
-
-void marshal_VkExportFenceCreateInfo(
-    VulkanStream* vkStream,
-    const VkExportFenceCreateInfo* forMarshaling);
-
-void unmarshal_VkExportFenceCreateInfo(
-    VulkanStream* vkStream,
-    VkExportFenceCreateInfo* forUnmarshaling);
-
-void marshal_VkExportSemaphoreCreateInfo(
-    VulkanStream* vkStream,
-    const VkExportSemaphoreCreateInfo* forMarshaling);
-
-void unmarshal_VkExportSemaphoreCreateInfo(
-    VulkanStream* vkStream,
-    VkExportSemaphoreCreateInfo* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling);
-
-void marshal_VkExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    const VkExternalSemaphoreProperties* forMarshaling);
-
-void unmarshal_VkExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    VkExternalSemaphoreProperties* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceExternalSemaphoreProperties 20163
-void marshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-void marshal_VkPhysicalDeviceMaintenance3Properties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMaintenance3Properties* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMaintenance3Properties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMaintenance3Properties* forUnmarshaling);
-
-void marshal_VkDescriptorSetLayoutSupport(
-    VulkanStream* vkStream,
-    const VkDescriptorSetLayoutSupport* forMarshaling);
-
-void unmarshal_VkDescriptorSetLayoutSupport(
-    VulkanStream* vkStream,
-    VkDescriptorSetLayoutSupport* forUnmarshaling);
-
-#define OP_vkGetDescriptorSetLayoutSupport 20164
-void marshal_vkGetDescriptorSetLayoutSupport(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport);
-
-void unmarshal_vkGetDescriptorSetLayoutSupport(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport);
-
-void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling);
-
-#endif
-#ifdef VK_KHR_surface
-#define OP_vkDestroySurfaceKHR 20165
-void marshal_vkDestroySurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkSurfaceKHR surface,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkSurfaceKHR surface,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetPhysicalDeviceSurfaceSupportKHR 20166
-VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    VkSurfaceKHR surface,
-    VkBool32* pSupported);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    VkSurfaceKHR surface,
-    VkBool32* pSupported);
-
-void marshal_VkSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    const VkSurfaceCapabilitiesKHR* forMarshaling);
-
-void unmarshal_VkSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkSurfaceCapabilitiesKHR* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR 20167
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-
-void marshal_VkSurfaceFormatKHR(
-    VulkanStream* vkStream,
-    const VkSurfaceFormatKHR* forMarshaling);
-
-void unmarshal_VkSurfaceFormatKHR(
-    VulkanStream* vkStream,
-    VkSurfaceFormatKHR* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceSurfaceFormatsKHR 20168
-VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormatKHR* pSurfaceFormats);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormatKHR* pSurfaceFormats);
-
-#define OP_vkGetPhysicalDeviceSurfacePresentModesKHR 20169
-VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pPresentModeCount,
-    VkPresentModeKHR* pPresentModes);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pPresentModeCount,
-    VkPresentModeKHR* pPresentModes);
-
-#endif
-#ifdef VK_KHR_swapchain
-void marshal_VkSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkSwapchainCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkSwapchainCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateSwapchainKHR 20170
-VkResult marshal_vkCreateSwapchainKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSwapchainCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchain);
-
-VkResult unmarshal_vkCreateSwapchainKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSwapchainCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchain);
-
-#define OP_vkDestroySwapchainKHR 20171
-void marshal_vkDestroySwapchainKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySwapchainKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkGetSwapchainImagesKHR 20172
-VkResult marshal_vkGetSwapchainImagesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pSwapchainImageCount,
-    VkImage* pSwapchainImages);
-
-VkResult unmarshal_vkGetSwapchainImagesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pSwapchainImageCount,
-    VkImage* pSwapchainImages);
-
-#define OP_vkAcquireNextImageKHR 20173
-VkResult marshal_vkAcquireNextImageKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint64_t timeout,
-    VkSemaphore semaphore,
-    VkFence fence,
-    uint32_t* pImageIndex);
-
-VkResult unmarshal_vkAcquireNextImageKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint64_t timeout,
-    VkSemaphore semaphore,
-    VkFence fence,
-    uint32_t* pImageIndex);
-
-void marshal_VkPresentInfoKHR(
-    VulkanStream* vkStream,
-    const VkPresentInfoKHR* forMarshaling);
-
-void unmarshal_VkPresentInfoKHR(
-    VulkanStream* vkStream,
-    VkPresentInfoKHR* forUnmarshaling);
-
-#define OP_vkQueuePresentKHR 20174
-VkResult marshal_vkQueuePresentKHR(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkPresentInfoKHR* pPresentInfo);
-
-VkResult unmarshal_vkQueuePresentKHR(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkPresentInfoKHR* pPresentInfo);
-
-void marshal_VkImageSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkImageSwapchainCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkImageSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkImageSwapchainCreateInfoKHR* forUnmarshaling);
-
-void marshal_VkBindImageMemorySwapchainInfoKHR(
-    VulkanStream* vkStream,
-    const VkBindImageMemorySwapchainInfoKHR* forMarshaling);
-
-void unmarshal_VkBindImageMemorySwapchainInfoKHR(
-    VulkanStream* vkStream,
-    VkBindImageMemorySwapchainInfoKHR* forUnmarshaling);
-
-void marshal_VkAcquireNextImageInfoKHR(
-    VulkanStream* vkStream,
-    const VkAcquireNextImageInfoKHR* forMarshaling);
-
-void unmarshal_VkAcquireNextImageInfoKHR(
-    VulkanStream* vkStream,
-    VkAcquireNextImageInfoKHR* forUnmarshaling);
-
-void marshal_VkDeviceGroupPresentCapabilitiesKHR(
-    VulkanStream* vkStream,
-    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling);
-
-void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling);
-
-void marshal_VkDeviceGroupPresentInfoKHR(
-    VulkanStream* vkStream,
-    const VkDeviceGroupPresentInfoKHR* forMarshaling);
-
-void unmarshal_VkDeviceGroupPresentInfoKHR(
-    VulkanStream* vkStream,
-    VkDeviceGroupPresentInfoKHR* forUnmarshaling);
-
-void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkGetDeviceGroupPresentCapabilitiesKHR 20175
-VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
-
-VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
-
-#define OP_vkGetDeviceGroupSurfacePresentModesKHR 20176
-VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSurfaceKHR surface,
-    VkDeviceGroupPresentModeFlagsKHR* pModes);
-
-VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSurfaceKHR surface,
-    VkDeviceGroupPresentModeFlagsKHR* pModes);
-
-#define OP_vkGetPhysicalDevicePresentRectanglesKHR 20177
-VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pRectCount,
-    VkRect2D* pRects);
-
-VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pRectCount,
-    VkRect2D* pRects);
-
-#define OP_vkAcquireNextImage2KHR 20178
-VkResult marshal_vkAcquireNextImage2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAcquireNextImageInfoKHR* pAcquireInfo,
-    uint32_t* pImageIndex);
-
-VkResult unmarshal_vkAcquireNextImage2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAcquireNextImageInfoKHR* pAcquireInfo,
-    uint32_t* pImageIndex);
-
-#endif
-#ifdef VK_KHR_display
-void marshal_VkDisplayPropertiesKHR(
-    VulkanStream* vkStream,
-    const VkDisplayPropertiesKHR* forMarshaling);
-
-void unmarshal_VkDisplayPropertiesKHR(
-    VulkanStream* vkStream,
-    VkDisplayPropertiesKHR* forUnmarshaling);
-
-void marshal_VkDisplayModeParametersKHR(
-    VulkanStream* vkStream,
-    const VkDisplayModeParametersKHR* forMarshaling);
-
-void unmarshal_VkDisplayModeParametersKHR(
-    VulkanStream* vkStream,
-    VkDisplayModeParametersKHR* forUnmarshaling);
-
-void marshal_VkDisplayModePropertiesKHR(
-    VulkanStream* vkStream,
-    const VkDisplayModePropertiesKHR* forMarshaling);
-
-void unmarshal_VkDisplayModePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDisplayModePropertiesKHR* forUnmarshaling);
-
-void marshal_VkDisplayModeCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkDisplayModeCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkDisplayModeCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkDisplayModeCreateInfoKHR* forUnmarshaling);
-
-void marshal_VkDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    const VkDisplayPlaneCapabilitiesKHR* forMarshaling);
-
-void unmarshal_VkDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkDisplayPlaneCapabilitiesKHR* forUnmarshaling);
-
-void marshal_VkDisplayPlanePropertiesKHR(
-    VulkanStream* vkStream,
-    const VkDisplayPlanePropertiesKHR* forMarshaling);
-
-void unmarshal_VkDisplayPlanePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDisplayPlanePropertiesKHR* forUnmarshaling);
-
-void marshal_VkDisplaySurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkDisplaySurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkDisplaySurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkDisplaySurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceDisplayPropertiesKHR 20179
-VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPropertiesKHR* pProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPropertiesKHR* pProperties);
-
-#define OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR 20180
-VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlanePropertiesKHR* pProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlanePropertiesKHR* pProperties);
-
-#define OP_vkGetDisplayPlaneSupportedDisplaysKHR 20181
-VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t planeIndex,
-    uint32_t* pDisplayCount,
-    VkDisplayKHR* pDisplays);
-
-VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t planeIndex,
-    uint32_t* pDisplayCount,
-    VkDisplayKHR* pDisplays);
-
-#define OP_vkGetDisplayModePropertiesKHR 20182
-VkResult marshal_vkGetDisplayModePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModePropertiesKHR* pProperties);
-
-VkResult unmarshal_vkGetDisplayModePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModePropertiesKHR* pProperties);
-
-#define OP_vkCreateDisplayModeKHR 20183
-VkResult marshal_vkCreateDisplayModeKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    const VkDisplayModeCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDisplayModeKHR* pMode);
-
-VkResult unmarshal_vkCreateDisplayModeKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    const VkDisplayModeCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDisplayModeKHR* pMode);
-
-#define OP_vkGetDisplayPlaneCapabilitiesKHR 20184
-VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayModeKHR mode,
-    uint32_t planeIndex,
-    VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-
-VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayModeKHR mode,
-    uint32_t planeIndex,
-    VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-
-#define OP_vkCreateDisplayPlaneSurfaceKHR 20185
-VkResult marshal_vkCreateDisplayPlaneSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#endif
-#ifdef VK_KHR_display_swapchain
-void marshal_VkDisplayPresentInfoKHR(
-    VulkanStream* vkStream,
-    const VkDisplayPresentInfoKHR* forMarshaling);
-
-void unmarshal_VkDisplayPresentInfoKHR(
-    VulkanStream* vkStream,
-    VkDisplayPresentInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateSharedSwapchainsKHR 20186
-VkResult marshal_vkCreateSharedSwapchainsKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainCreateInfoKHR* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchains);
-
-VkResult unmarshal_vkCreateSharedSwapchainsKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainCreateInfoKHR* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchains);
-
-#endif
-#ifdef VK_KHR_xlib_surface
-void marshal_VkXlibSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkXlibSurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkXlibSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkXlibSurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateXlibSurfaceKHR 20187
-VkResult marshal_vkCreateXlibSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateXlibSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#define OP_vkGetPhysicalDeviceXlibPresentationSupportKHR 20188
-VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    Display* dpy,
-    VisualID visualID);
-
-VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    Display* dpy,
-    VisualID visualID);
-
-#endif
-#ifdef VK_KHR_xcb_surface
-void marshal_VkXcbSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkXcbSurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkXcbSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkXcbSurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateXcbSurfaceKHR 20189
-VkResult marshal_vkCreateXcbSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateXcbSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#define OP_vkGetPhysicalDeviceXcbPresentationSupportKHR 20190
-VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    xcb_connection_t* connection,
-    xcb_visualid_t visual_id);
-
-VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    xcb_connection_t* connection,
-    xcb_visualid_t visual_id);
-
-#endif
-#ifdef VK_KHR_wayland_surface
-void marshal_VkWaylandSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkWaylandSurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkWaylandSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkWaylandSurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateWaylandSurfaceKHR 20191
-VkResult marshal_vkCreateWaylandSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateWaylandSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#define OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR 20192
-VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    wl_display* display);
-
-VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    wl_display* display);
-
-#endif
-#ifdef VK_KHR_mir_surface
-void marshal_VkMirSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkMirSurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkMirSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkMirSurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateMirSurfaceKHR 20193
-VkResult marshal_vkCreateMirSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMirSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateMirSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMirSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#define OP_vkGetPhysicalDeviceMirPresentationSupportKHR 20194
-VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    MirConnection* connection);
-
-VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    MirConnection* connection);
-
-#endif
-#ifdef VK_KHR_android_surface
-void marshal_VkAndroidSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkAndroidSurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkAndroidSurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkAndroidSurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateAndroidSurfaceKHR 20195
-VkResult marshal_vkCreateAndroidSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateAndroidSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#endif
-#ifdef VK_KHR_win32_surface
-void marshal_VkWin32SurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkWin32SurfaceCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkWin32SurfaceCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkWin32SurfaceCreateInfoKHR* forUnmarshaling);
-
-#define OP_vkCreateWin32SurfaceKHR 20196
-VkResult marshal_vkCreateWin32SurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateWin32SurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#define OP_vkGetPhysicalDeviceWin32PresentationSupportKHR 20197
-VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex);
-
-VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex);
-
-#endif
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-#endif
-#ifdef VK_KHR_multiview
-#endif
-#ifdef VK_KHR_get_physical_device_properties2
-#define OP_vkGetPhysicalDeviceFeatures2KHR 20198
-void marshal_vkGetPhysicalDeviceFeatures2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures);
-
-void unmarshal_vkGetPhysicalDeviceFeatures2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures);
-
-#define OP_vkGetPhysicalDeviceProperties2KHR 20199
-void marshal_vkGetPhysicalDeviceProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties);
-
-#define OP_vkGetPhysicalDeviceFormatProperties2KHR 20200
-void marshal_vkGetPhysicalDeviceFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties);
-
-void unmarshal_vkGetPhysicalDeviceFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties);
-
-#define OP_vkGetPhysicalDeviceImageFormatProperties2KHR 20201
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties);
-
-#define OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR 20202
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-#define OP_vkGetPhysicalDeviceMemoryProperties2KHR 20203
-void marshal_vkGetPhysicalDeviceMemoryProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-void unmarshal_vkGetPhysicalDeviceMemoryProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-#define OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR 20204
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties);
-
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties);
-
-#endif
-#ifdef VK_KHR_device_group
-#define OP_vkGetDeviceGroupPeerMemoryFeaturesKHR 20205
-void marshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-void unmarshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-#define OP_vkCmdSetDeviceMaskKHR 20206
-void marshal_vkCmdSetDeviceMaskKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask);
-
-void unmarshal_vkCmdSetDeviceMaskKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask);
-
-#define OP_vkCmdDispatchBaseKHR 20207
-void marshal_vkCmdDispatchBaseKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-void unmarshal_vkCmdDispatchBaseKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ);
-
-#endif
-#ifdef VK_KHR_shader_draw_parameters
-#endif
-#ifdef VK_KHR_maintenance1
-#define OP_vkTrimCommandPoolKHR 20208
-void marshal_vkTrimCommandPoolKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags);
-
-void unmarshal_vkTrimCommandPoolKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags);
-
-#endif
-#ifdef VK_KHR_device_group_creation
-#define OP_vkEnumeratePhysicalDeviceGroupsKHR 20209
-VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-#endif
-#ifdef VK_KHR_external_memory_capabilities
-#define OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR 20210
-void marshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties);
-
-#endif
-#ifdef VK_KHR_external_memory
-#endif
-#ifdef VK_KHR_external_memory_win32
-void marshal_VkImportMemoryWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportMemoryWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkImportMemoryWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkImportMemoryWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkExportMemoryWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkExportMemoryWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkExportMemoryWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkExportMemoryWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    const VkMemoryWin32HandlePropertiesKHR* forMarshaling);
-
-void unmarshal_VkMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    VkMemoryWin32HandlePropertiesKHR* forUnmarshaling);
-
-void marshal_VkMemoryGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkMemoryGetWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkMemoryGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkMemoryGetWin32HandleInfoKHR* forUnmarshaling);
-
-#define OP_vkGetMemoryWin32HandleKHR 20211
-VkResult marshal_vkGetMemoryWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-VkResult unmarshal_vkGetMemoryWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-#define OP_vkGetMemoryWin32HandlePropertiesKHR 20212
-VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    HANDLE handle,
-    VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-
-VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    HANDLE handle,
-    VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-
-#endif
-#ifdef VK_KHR_external_memory_fd
-void marshal_VkImportMemoryFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportMemoryFdInfoKHR* forMarshaling);
-
-void unmarshal_VkImportMemoryFdInfoKHR(
-    VulkanStream* vkStream,
-    VkImportMemoryFdInfoKHR* forUnmarshaling);
-
-void marshal_VkMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    const VkMemoryFdPropertiesKHR* forMarshaling);
-
-void unmarshal_VkMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    VkMemoryFdPropertiesKHR* forUnmarshaling);
-
-void marshal_VkMemoryGetFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkMemoryGetFdInfoKHR* forMarshaling);
-
-void unmarshal_VkMemoryGetFdInfoKHR(
-    VulkanStream* vkStream,
-    VkMemoryGetFdInfoKHR* forUnmarshaling);
-
-#define OP_vkGetMemoryFdKHR 20213
-VkResult marshal_vkGetMemoryFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-VkResult unmarshal_vkGetMemoryFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-#define OP_vkGetMemoryFdPropertiesKHR 20214
-VkResult marshal_vkGetMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    int fd,
-    VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-
-VkResult unmarshal_vkGetMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    int fd,
-    VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-
-#endif
-#ifdef VK_KHR_win32_keyed_mutex
-void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
-    VulkanStream* vkStream,
-    const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling);
-
-void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
-    VulkanStream* vkStream,
-    VkWin32KeyedMutexAcquireReleaseInfoKHR* forUnmarshaling);
-
-#endif
-#ifdef VK_KHR_external_semaphore_capabilities
-#define OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR 20215
-void marshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-#endif
-#ifdef VK_KHR_external_semaphore
-#endif
-#ifdef VK_KHR_external_semaphore_win32
-void marshal_VkImportSemaphoreWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportSemaphoreWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkImportSemaphoreWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkImportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkExportSemaphoreWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkExportSemaphoreWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkExportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkD3D12FenceSubmitInfoKHR(
-    VulkanStream* vkStream,
-    const VkD3D12FenceSubmitInfoKHR* forMarshaling);
-
-void unmarshal_VkD3D12FenceSubmitInfoKHR(
-    VulkanStream* vkStream,
-    VkD3D12FenceSubmitInfoKHR* forUnmarshaling);
-
-void marshal_VkSemaphoreGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkSemaphoreGetWin32HandleInfoKHR* forUnmarshaling);
-
-#define OP_vkImportSemaphoreWin32HandleKHR 20216
-VkResult marshal_vkImportSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-
-VkResult unmarshal_vkImportSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-
-#define OP_vkGetSemaphoreWin32HandleKHR 20217
-VkResult marshal_vkGetSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-VkResult unmarshal_vkGetSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-#endif
-#ifdef VK_KHR_external_semaphore_fd
-void marshal_VkImportSemaphoreFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportSemaphoreFdInfoKHR* forMarshaling);
-
-void unmarshal_VkImportSemaphoreFdInfoKHR(
-    VulkanStream* vkStream,
-    VkImportSemaphoreFdInfoKHR* forUnmarshaling);
-
-void marshal_VkSemaphoreGetFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkSemaphoreGetFdInfoKHR* forMarshaling);
-
-void unmarshal_VkSemaphoreGetFdInfoKHR(
-    VulkanStream* vkStream,
-    VkSemaphoreGetFdInfoKHR* forUnmarshaling);
-
-#define OP_vkImportSemaphoreFdKHR 20218
-VkResult marshal_vkImportSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-
-VkResult unmarshal_vkImportSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-
-#define OP_vkGetSemaphoreFdKHR 20219
-VkResult marshal_vkGetSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-VkResult unmarshal_vkGetSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-#endif
-#ifdef VK_KHR_push_descriptor
-void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
-    VulkanStream* vkStream,
-    const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling);
-
-void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevicePushDescriptorPropertiesKHR* forUnmarshaling);
-
-#define OP_vkCmdPushDescriptorSetKHR 20220
-void marshal_vkCmdPushDescriptorSetKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t set,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites);
-
-void unmarshal_vkCmdPushDescriptorSetKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t set,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites);
-
-#define OP_vkCmdPushDescriptorSetWithTemplateKHR 20221
-void marshal_vkCmdPushDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    VkPipelineLayout layout,
-    uint32_t set,
-    const void* pData);
-
-void unmarshal_vkCmdPushDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    VkPipelineLayout layout,
-    uint32_t set,
-    const void* pData);
-
-#endif
-#ifdef VK_KHR_16bit_storage
-#endif
-#ifdef VK_KHR_incremental_present
-void marshal_VkRectLayerKHR(
-    VulkanStream* vkStream,
-    const VkRectLayerKHR* forMarshaling);
-
-void unmarshal_VkRectLayerKHR(
-    VulkanStream* vkStream,
-    VkRectLayerKHR* forUnmarshaling);
-
-void marshal_VkPresentRegionKHR(
-    VulkanStream* vkStream,
-    const VkPresentRegionKHR* forMarshaling);
-
-void unmarshal_VkPresentRegionKHR(
-    VulkanStream* vkStream,
-    VkPresentRegionKHR* forUnmarshaling);
-
-void marshal_VkPresentRegionsKHR(
-    VulkanStream* vkStream,
-    const VkPresentRegionsKHR* forMarshaling);
-
-void unmarshal_VkPresentRegionsKHR(
-    VulkanStream* vkStream,
-    VkPresentRegionsKHR* forUnmarshaling);
-
-#endif
-#ifdef VK_KHR_descriptor_update_template
-#define OP_vkCreateDescriptorUpdateTemplateKHR 20222
-VkResult marshal_vkCreateDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-#define OP_vkDestroyDescriptorUpdateTemplateKHR 20223
-void marshal_vkDestroyDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkUpdateDescriptorSetWithTemplateKHR 20224
-void marshal_vkUpdateDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData);
-
-void unmarshal_vkUpdateDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData);
-
-#endif
-#ifdef VK_KHR_create_renderpass2
-void marshal_VkAttachmentDescription2KHR(
-    VulkanStream* vkStream,
-    const VkAttachmentDescription2KHR* forMarshaling);
-
-void unmarshal_VkAttachmentDescription2KHR(
-    VulkanStream* vkStream,
-    VkAttachmentDescription2KHR* forUnmarshaling);
-
-void marshal_VkAttachmentReference2KHR(
-    VulkanStream* vkStream,
-    const VkAttachmentReference2KHR* forMarshaling);
-
-void unmarshal_VkAttachmentReference2KHR(
-    VulkanStream* vkStream,
-    VkAttachmentReference2KHR* forUnmarshaling);
-
-void marshal_VkSubpassDescription2KHR(
-    VulkanStream* vkStream,
-    const VkSubpassDescription2KHR* forMarshaling);
-
-void unmarshal_VkSubpassDescription2KHR(
-    VulkanStream* vkStream,
-    VkSubpassDescription2KHR* forUnmarshaling);
-
-void marshal_VkSubpassDependency2KHR(
-    VulkanStream* vkStream,
-    const VkSubpassDependency2KHR* forMarshaling);
-
-void unmarshal_VkSubpassDependency2KHR(
-    VulkanStream* vkStream,
-    VkSubpassDependency2KHR* forUnmarshaling);
-
-void marshal_VkRenderPassCreateInfo2KHR(
-    VulkanStream* vkStream,
-    const VkRenderPassCreateInfo2KHR* forMarshaling);
-
-void unmarshal_VkRenderPassCreateInfo2KHR(
-    VulkanStream* vkStream,
-    VkRenderPassCreateInfo2KHR* forUnmarshaling);
-
-#define OP_vkCreateRenderPass2KHR 20225
-VkResult marshal_vkCreateRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo2KHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass);
-
-VkResult unmarshal_vkCreateRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo2KHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass);
-
-void marshal_VkSubpassBeginInfoKHR(
-    VulkanStream* vkStream,
-    const VkSubpassBeginInfoKHR* forMarshaling);
-
-void unmarshal_VkSubpassBeginInfoKHR(
-    VulkanStream* vkStream,
-    VkSubpassBeginInfoKHR* forUnmarshaling);
-
-#define OP_vkCmdBeginRenderPass2KHR 20226
-void marshal_vkCmdBeginRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-
-void unmarshal_vkCmdBeginRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-
-void marshal_VkSubpassEndInfoKHR(
-    VulkanStream* vkStream,
-    const VkSubpassEndInfoKHR* forMarshaling);
-
-void unmarshal_VkSubpassEndInfoKHR(
-    VulkanStream* vkStream,
-    VkSubpassEndInfoKHR* forUnmarshaling);
-
-#define OP_vkCmdNextSubpass2KHR 20227
-void marshal_vkCmdNextSubpass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo);
-
-void unmarshal_vkCmdNextSubpass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo);
-
-#define OP_vkCmdEndRenderPass2KHR 20228
-void marshal_vkCmdEndRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo);
-
-void unmarshal_vkCmdEndRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo);
-
-#endif
-#ifdef VK_KHR_shared_presentable_image
-void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling);
-
-void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkSharedPresentSurfaceCapabilitiesKHR* forUnmarshaling);
-
-#define OP_vkGetSwapchainStatusKHR 20229
-VkResult marshal_vkGetSwapchainStatusKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain);
-
-VkResult unmarshal_vkGetSwapchainStatusKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain);
-
-#endif
-#ifdef VK_KHR_external_fence_capabilities
-#define OP_vkGetPhysicalDeviceExternalFencePropertiesKHR 20230
-void marshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties);
-
-void unmarshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties);
-
-#endif
-#ifdef VK_KHR_external_fence
-#endif
-#ifdef VK_KHR_external_fence_win32
-void marshal_VkImportFenceWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportFenceWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkImportFenceWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkImportFenceWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkExportFenceWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkExportFenceWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkExportFenceWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkExportFenceWin32HandleInfoKHR* forUnmarshaling);
-
-void marshal_VkFenceGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    const VkFenceGetWin32HandleInfoKHR* forMarshaling);
-
-void unmarshal_VkFenceGetWin32HandleInfoKHR(
-    VulkanStream* vkStream,
-    VkFenceGetWin32HandleInfoKHR* forUnmarshaling);
-
-#define OP_vkImportFenceWin32HandleKHR 20231
-VkResult marshal_vkImportFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-
-VkResult unmarshal_vkImportFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-
-#define OP_vkGetFenceWin32HandleKHR 20232
-VkResult marshal_vkGetFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-VkResult unmarshal_vkGetFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle);
-
-#endif
-#ifdef VK_KHR_external_fence_fd
-void marshal_VkImportFenceFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkImportFenceFdInfoKHR* forMarshaling);
-
-void unmarshal_VkImportFenceFdInfoKHR(
-    VulkanStream* vkStream,
-    VkImportFenceFdInfoKHR* forUnmarshaling);
-
-void marshal_VkFenceGetFdInfoKHR(
-    VulkanStream* vkStream,
-    const VkFenceGetFdInfoKHR* forMarshaling);
-
-void unmarshal_VkFenceGetFdInfoKHR(
-    VulkanStream* vkStream,
-    VkFenceGetFdInfoKHR* forUnmarshaling);
-
-#define OP_vkImportFenceFdKHR 20233
-VkResult marshal_vkImportFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-
-VkResult unmarshal_vkImportFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-
-#define OP_vkGetFenceFdKHR 20234
-VkResult marshal_vkGetFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-VkResult unmarshal_vkGetFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetFdInfoKHR* pGetFdInfo,
-    int* pFd);
-
-#endif
-#ifdef VK_KHR_maintenance2
-#endif
-#ifdef VK_KHR_get_surface_capabilities2
-void marshal_VkPhysicalDeviceSurfaceInfo2KHR(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSurfaceInfo2KHR* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSurfaceInfo2KHR* forUnmarshaling);
-
-void marshal_VkSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    const VkSurfaceCapabilities2KHR* forMarshaling);
-
-void unmarshal_VkSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkSurfaceCapabilities2KHR* forUnmarshaling);
-
-void marshal_VkSurfaceFormat2KHR(
-    VulkanStream* vkStream,
-    const VkSurfaceFormat2KHR* forMarshaling);
-
-void unmarshal_VkSurfaceFormat2KHR(
-    VulkanStream* vkStream,
-    VkSurfaceFormat2KHR* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR 20235
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-
-#define OP_vkGetPhysicalDeviceSurfaceFormats2KHR 20236
-VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormat2KHR* pSurfaceFormats);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormat2KHR* pSurfaceFormats);
-
-#endif
-#ifdef VK_KHR_variable_pointers
-#endif
-#ifdef VK_KHR_get_display_properties2
-void marshal_VkDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    const VkDisplayProperties2KHR* forMarshaling);
-
-void unmarshal_VkDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    VkDisplayProperties2KHR* forUnmarshaling);
-
-void marshal_VkDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    const VkDisplayPlaneProperties2KHR* forMarshaling);
-
-void unmarshal_VkDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    VkDisplayPlaneProperties2KHR* forUnmarshaling);
-
-void marshal_VkDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    const VkDisplayModeProperties2KHR* forMarshaling);
-
-void unmarshal_VkDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    VkDisplayModeProperties2KHR* forUnmarshaling);
-
-void marshal_VkDisplayPlaneInfo2KHR(
-    VulkanStream* vkStream,
-    const VkDisplayPlaneInfo2KHR* forMarshaling);
-
-void unmarshal_VkDisplayPlaneInfo2KHR(
-    VulkanStream* vkStream,
-    VkDisplayPlaneInfo2KHR* forUnmarshaling);
-
-void marshal_VkDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    const VkDisplayPlaneCapabilities2KHR* forMarshaling);
-
-void unmarshal_VkDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkDisplayPlaneCapabilities2KHR* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceDisplayProperties2KHR 20237
-VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayProperties2KHR* pProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayProperties2KHR* pProperties);
-
-#define OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR 20238
-VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlaneProperties2KHR* pProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlaneProperties2KHR* pProperties);
-
-#define OP_vkGetDisplayModeProperties2KHR 20239
-VkResult marshal_vkGetDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModeProperties2KHR* pProperties);
-
-VkResult unmarshal_vkGetDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModeProperties2KHR* pProperties);
-
-#define OP_vkGetDisplayPlaneCapabilities2KHR 20240
-VkResult marshal_vkGetDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
-    VkDisplayPlaneCapabilities2KHR* pCapabilities);
-
-VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
-    VkDisplayPlaneCapabilities2KHR* pCapabilities);
-
-#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
-#define OP_vkGetImageMemoryRequirements2KHR 20241
-void marshal_vkGetImageMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-void unmarshal_vkGetImageMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-#define OP_vkGetBufferMemoryRequirements2KHR 20242
-void marshal_vkGetBufferMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-void unmarshal_vkGetBufferMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements);
-
-#define OP_vkGetImageSparseMemoryRequirements2KHR 20243
-void marshal_vkGetImageSparseMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-void unmarshal_vkGetImageSparseMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-#endif
-#ifdef VK_KHR_image_format_list
-void marshal_VkImageFormatListCreateInfoKHR(
-    VulkanStream* vkStream,
-    const VkImageFormatListCreateInfoKHR* forMarshaling);
-
-void unmarshal_VkImageFormatListCreateInfoKHR(
-    VulkanStream* vkStream,
-    VkImageFormatListCreateInfoKHR* forUnmarshaling);
-
-#endif
-#ifdef VK_KHR_sampler_ycbcr_conversion
-#define OP_vkCreateSamplerYcbcrConversionKHR 20244
-VkResult marshal_vkCreateSamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion);
-
-VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion);
-
-#define OP_vkDestroySamplerYcbcrConversionKHR 20245
-void marshal_vkDestroySamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroySamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator);
-
-#endif
-#ifdef VK_KHR_bind_memory2
-#define OP_vkBindBufferMemory2KHR 20246
-VkResult marshal_vkBindBufferMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos);
-
-VkResult unmarshal_vkBindBufferMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos);
-
-#define OP_vkBindImageMemory2KHR 20247
-VkResult marshal_vkBindImageMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos);
-
-VkResult unmarshal_vkBindImageMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos);
-
-#endif
-#ifdef VK_KHR_maintenance3
-#define OP_vkGetDescriptorSetLayoutSupportKHR 20248
-void marshal_vkGetDescriptorSetLayoutSupportKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport);
-
-void unmarshal_vkGetDescriptorSetLayoutSupportKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport);
-
-#endif
-#ifdef VK_KHR_draw_indirect_count
-#define OP_vkCmdDrawIndirectCountKHR 20249
-void marshal_vkCmdDrawIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-#define OP_vkCmdDrawIndexedIndirectCountKHR 20250
-void marshal_vkCmdDrawIndexedIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndexedIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-#endif
-#ifdef VK_KHR_8bit_storage
-void marshal_VkPhysicalDevice8BitStorageFeaturesKHR(
-    VulkanStream* vkStream,
-    const VkPhysicalDevice8BitStorageFeaturesKHR* forMarshaling);
-
-void unmarshal_VkPhysicalDevice8BitStorageFeaturesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice8BitStorageFeaturesKHR* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_debug_report
-void marshal_VkDebugReportCallbackCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugReportCallbackCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugReportCallbackCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugReportCallbackCreateInfoEXT* forUnmarshaling);
-
-#define OP_vkCreateDebugReportCallbackEXT 20251
-VkResult marshal_vkCreateDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugReportCallbackEXT* pCallback);
-
-VkResult unmarshal_vkCreateDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugReportCallbackEXT* pCallback);
-
-#define OP_vkDestroyDebugReportCallbackEXT 20252
-void marshal_vkDestroyDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportCallbackEXT callback,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportCallbackEXT callback,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkDebugReportMessageEXT 20253
-void marshal_vkDebugReportMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportFlagsEXT flags,
-    VkDebugReportObjectTypeEXT objectType,
-    uint64_t object,
-    size_t location,
-    int32_t messageCode,
-    const char* pLayerPrefix,
-    const char* pMessage);
-
-void unmarshal_vkDebugReportMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportFlagsEXT flags,
-    VkDebugReportObjectTypeEXT objectType,
-    uint64_t object,
-    size_t location,
-    int32_t messageCode,
-    const char* pLayerPrefix,
-    const char* pMessage);
-
-#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
-void marshal_VkPipelineRasterizationStateRasterizationOrderAMD(
-    VulkanStream* vkStream,
-    const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling);
-
-void unmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
-    VulkanStream* vkStream,
-    VkPipelineRasterizationStateRasterizationOrderAMD* forUnmarshaling);
-
-#endif
-#ifdef VK_AMD_shader_trinary_minmax
-#endif
-#ifdef VK_AMD_shader_explicit_vertex_parameter
-#endif
-#ifdef VK_EXT_debug_marker
-void marshal_VkDebugMarkerObjectNameInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugMarkerObjectNameInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugMarkerObjectNameInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugMarkerObjectNameInfoEXT* forUnmarshaling);
-
-void marshal_VkDebugMarkerObjectTagInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugMarkerObjectTagInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugMarkerObjectTagInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugMarkerObjectTagInfoEXT* forUnmarshaling);
-
-void marshal_VkDebugMarkerMarkerInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugMarkerMarkerInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugMarkerMarkerInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugMarkerMarkerInfoEXT* forUnmarshaling);
-
-#define OP_vkDebugMarkerSetObjectTagEXT 20254
-VkResult marshal_vkDebugMarkerSetObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-
-VkResult unmarshal_vkDebugMarkerSetObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-
-#define OP_vkDebugMarkerSetObjectNameEXT 20255
-VkResult marshal_vkDebugMarkerSetObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-
-VkResult unmarshal_vkDebugMarkerSetObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-
-#define OP_vkCmdDebugMarkerBeginEXT 20256
-void marshal_vkCmdDebugMarkerBeginEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-void unmarshal_vkCmdDebugMarkerBeginEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-#define OP_vkCmdDebugMarkerEndEXT 20257
-void marshal_vkCmdDebugMarkerEndEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-void unmarshal_vkCmdDebugMarkerEndEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-#define OP_vkCmdDebugMarkerInsertEXT 20258
-void marshal_vkCmdDebugMarkerInsertEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-void unmarshal_vkCmdDebugMarkerInsertEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-#endif
-#ifdef VK_AMD_gcn_shader
-#endif
-#ifdef VK_NV_dedicated_allocation
-void marshal_VkDedicatedAllocationImageCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkDedicatedAllocationImageCreateInfoNV* forMarshaling);
-
-void unmarshal_VkDedicatedAllocationImageCreateInfoNV(
-    VulkanStream* vkStream,
-    VkDedicatedAllocationImageCreateInfoNV* forUnmarshaling);
-
-void marshal_VkDedicatedAllocationBufferCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling);
-
-void unmarshal_VkDedicatedAllocationBufferCreateInfoNV(
-    VulkanStream* vkStream,
-    VkDedicatedAllocationBufferCreateInfoNV* forUnmarshaling);
-
-void marshal_VkDedicatedAllocationMemoryAllocateInfoNV(
-    VulkanStream* vkStream,
-    const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling);
-
-void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
-    VulkanStream* vkStream,
-    VkDedicatedAllocationMemoryAllocateInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_AMD_draw_indirect_count
-#define OP_vkCmdDrawIndirectCountAMD 20259
-void marshal_vkCmdDrawIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-#define OP_vkCmdDrawIndexedIndirectCountAMD 20260
-void marshal_vkCmdDrawIndexedIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-void unmarshal_vkCmdDrawIndexedIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride);
-
-#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
-void marshal_VkTextureLODGatherFormatPropertiesAMD(
-    VulkanStream* vkStream,
-    const VkTextureLODGatherFormatPropertiesAMD* forMarshaling);
-
-void unmarshal_VkTextureLODGatherFormatPropertiesAMD(
-    VulkanStream* vkStream,
-    VkTextureLODGatherFormatPropertiesAMD* forUnmarshaling);
-
-#endif
-#ifdef VK_AMD_shader_info
-void marshal_VkShaderResourceUsageAMD(
-    VulkanStream* vkStream,
-    const VkShaderResourceUsageAMD* forMarshaling);
-
-void unmarshal_VkShaderResourceUsageAMD(
-    VulkanStream* vkStream,
-    VkShaderResourceUsageAMD* forUnmarshaling);
-
-void marshal_VkShaderStatisticsInfoAMD(
-    VulkanStream* vkStream,
-    const VkShaderStatisticsInfoAMD* forMarshaling);
-
-void unmarshal_VkShaderStatisticsInfoAMD(
-    VulkanStream* vkStream,
-    VkShaderStatisticsInfoAMD* forUnmarshaling);
-
-#define OP_vkGetShaderInfoAMD 20261
-VkResult marshal_vkGetShaderInfoAMD(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    VkShaderStageFlagBits shaderStage,
-    VkShaderInfoTypeAMD infoType,
-    size_t* pInfoSize,
-    void* pInfo);
-
-VkResult unmarshal_vkGetShaderInfoAMD(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    VkShaderStageFlagBits shaderStage,
-    VkShaderInfoTypeAMD infoType,
-    size_t* pInfoSize,
-    void* pInfo);
-
-#endif
-#ifdef VK_AMD_shader_image_load_store_lod
-#endif
-#ifdef VK_IMG_format_pvrtc
-#endif
-#ifdef VK_NV_external_memory_capabilities
-void marshal_VkExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    const VkExternalImageFormatPropertiesNV* forMarshaling);
-
-void unmarshal_VkExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    VkExternalImageFormatPropertiesNV* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV 20262
-VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkExternalMemoryHandleTypeFlagsNV externalHandleType,
-    VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-
-VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkExternalMemoryHandleTypeFlagsNV externalHandleType,
-    VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-
-#endif
-#ifdef VK_NV_external_memory
-void marshal_VkExternalMemoryImageCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkExternalMemoryImageCreateInfoNV* forMarshaling);
-
-void unmarshal_VkExternalMemoryImageCreateInfoNV(
-    VulkanStream* vkStream,
-    VkExternalMemoryImageCreateInfoNV* forUnmarshaling);
-
-void marshal_VkExportMemoryAllocateInfoNV(
-    VulkanStream* vkStream,
-    const VkExportMemoryAllocateInfoNV* forMarshaling);
-
-void unmarshal_VkExportMemoryAllocateInfoNV(
-    VulkanStream* vkStream,
-    VkExportMemoryAllocateInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_external_memory_win32
-void marshal_VkImportMemoryWin32HandleInfoNV(
-    VulkanStream* vkStream,
-    const VkImportMemoryWin32HandleInfoNV* forMarshaling);
-
-void unmarshal_VkImportMemoryWin32HandleInfoNV(
-    VulkanStream* vkStream,
-    VkImportMemoryWin32HandleInfoNV* forUnmarshaling);
-
-void marshal_VkExportMemoryWin32HandleInfoNV(
-    VulkanStream* vkStream,
-    const VkExportMemoryWin32HandleInfoNV* forMarshaling);
-
-void unmarshal_VkExportMemoryWin32HandleInfoNV(
-    VulkanStream* vkStream,
-    VkExportMemoryWin32HandleInfoNV* forUnmarshaling);
-
-#define OP_vkGetMemoryWin32HandleNV 20263
-VkResult marshal_vkGetMemoryWin32HandleNV(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkExternalMemoryHandleTypeFlagsNV handleType,
-    HANDLE* pHandle);
-
-VkResult unmarshal_vkGetMemoryWin32HandleNV(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkExternalMemoryHandleTypeFlagsNV handleType,
-    HANDLE* pHandle);
-
-#endif
-#ifdef VK_NV_win32_keyed_mutex
-void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
-    VulkanStream* vkStream,
-    const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling);
-
-void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
-    VulkanStream* vkStream,
-    VkWin32KeyedMutexAcquireReleaseInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_validation_flags
-void marshal_VkValidationFlagsEXT(
-    VulkanStream* vkStream,
-    const VkValidationFlagsEXT* forMarshaling);
-
-void unmarshal_VkValidationFlagsEXT(
-    VulkanStream* vkStream,
-    VkValidationFlagsEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_NN_vi_surface
-void marshal_VkViSurfaceCreateInfoNN(
-    VulkanStream* vkStream,
-    const VkViSurfaceCreateInfoNN* forMarshaling);
-
-void unmarshal_VkViSurfaceCreateInfoNN(
-    VulkanStream* vkStream,
-    VkViSurfaceCreateInfoNN* forUnmarshaling);
-
-#define OP_vkCreateViSurfaceNN 20264
-VkResult marshal_vkCreateViSurfaceNN(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkViSurfaceCreateInfoNN* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateViSurfaceNN(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkViSurfaceCreateInfoNN* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#endif
-#ifdef VK_EXT_shader_subgroup_ballot
-#endif
-#ifdef VK_EXT_shader_subgroup_vote
-#endif
-#ifdef VK_EXT_conditional_rendering
-void marshal_VkConditionalRenderingBeginInfoEXT(
-    VulkanStream* vkStream,
-    const VkConditionalRenderingBeginInfoEXT* forMarshaling);
-
-void unmarshal_VkConditionalRenderingBeginInfoEXT(
-    VulkanStream* vkStream,
-    VkConditionalRenderingBeginInfoEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceConditionalRenderingFeaturesEXT* forUnmarshaling);
-
-void marshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
-    VulkanStream* vkStream,
-    const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling);
-
-void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
-    VulkanStream* vkStream,
-    VkCommandBufferInheritanceConditionalRenderingInfoEXT* forUnmarshaling);
-
-#define OP_vkCmdBeginConditionalRenderingEXT 20265
-void marshal_vkCmdBeginConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
-
-void unmarshal_vkCmdBeginConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
-
-#define OP_vkCmdEndConditionalRenderingEXT 20266
-void marshal_vkCmdEndConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-void unmarshal_vkCmdEndConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-#endif
-#ifdef VK_NVX_device_generated_commands
-void marshal_VkDeviceGeneratedCommandsFeaturesNVX(
-    VulkanStream* vkStream,
-    const VkDeviceGeneratedCommandsFeaturesNVX* forMarshaling);
-
-void unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(
-    VulkanStream* vkStream,
-    VkDeviceGeneratedCommandsFeaturesNVX* forUnmarshaling);
-
-void marshal_VkDeviceGeneratedCommandsLimitsNVX(
-    VulkanStream* vkStream,
-    const VkDeviceGeneratedCommandsLimitsNVX* forMarshaling);
-
-void unmarshal_VkDeviceGeneratedCommandsLimitsNVX(
-    VulkanStream* vkStream,
-    VkDeviceGeneratedCommandsLimitsNVX* forUnmarshaling);
-
-void marshal_VkIndirectCommandsTokenNVX(
-    VulkanStream* vkStream,
-    const VkIndirectCommandsTokenNVX* forMarshaling);
-
-void unmarshal_VkIndirectCommandsTokenNVX(
-    VulkanStream* vkStream,
-    VkIndirectCommandsTokenNVX* forUnmarshaling);
-
-void marshal_VkIndirectCommandsLayoutTokenNVX(
-    VulkanStream* vkStream,
-    const VkIndirectCommandsLayoutTokenNVX* forMarshaling);
-
-void unmarshal_VkIndirectCommandsLayoutTokenNVX(
-    VulkanStream* vkStream,
-    VkIndirectCommandsLayoutTokenNVX* forUnmarshaling);
-
-void marshal_VkIndirectCommandsLayoutCreateInfoNVX(
-    VulkanStream* vkStream,
-    const VkIndirectCommandsLayoutCreateInfoNVX* forMarshaling);
-
-void unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(
-    VulkanStream* vkStream,
-    VkIndirectCommandsLayoutCreateInfoNVX* forUnmarshaling);
-
-void marshal_VkCmdProcessCommandsInfoNVX(
-    VulkanStream* vkStream,
-    const VkCmdProcessCommandsInfoNVX* forMarshaling);
-
-void unmarshal_VkCmdProcessCommandsInfoNVX(
-    VulkanStream* vkStream,
-    VkCmdProcessCommandsInfoNVX* forUnmarshaling);
-
-void marshal_VkCmdReserveSpaceForCommandsInfoNVX(
-    VulkanStream* vkStream,
-    const VkCmdReserveSpaceForCommandsInfoNVX* forMarshaling);
-
-void unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(
-    VulkanStream* vkStream,
-    VkCmdReserveSpaceForCommandsInfoNVX* forUnmarshaling);
-
-void marshal_VkObjectTableCreateInfoNVX(
-    VulkanStream* vkStream,
-    const VkObjectTableCreateInfoNVX* forMarshaling);
-
-void unmarshal_VkObjectTableCreateInfoNVX(
-    VulkanStream* vkStream,
-    VkObjectTableCreateInfoNVX* forUnmarshaling);
-
-void marshal_VkObjectTableEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTableEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTableEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTableEntryNVX* forUnmarshaling);
-
-void marshal_VkObjectTablePipelineEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTablePipelineEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTablePipelineEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTablePipelineEntryNVX* forUnmarshaling);
-
-void marshal_VkObjectTableDescriptorSetEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTableDescriptorSetEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTableDescriptorSetEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTableDescriptorSetEntryNVX* forUnmarshaling);
-
-void marshal_VkObjectTableVertexBufferEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTableVertexBufferEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTableVertexBufferEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTableVertexBufferEntryNVX* forUnmarshaling);
-
-void marshal_VkObjectTableIndexBufferEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTableIndexBufferEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTableIndexBufferEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTableIndexBufferEntryNVX* forUnmarshaling);
-
-void marshal_VkObjectTablePushConstantEntryNVX(
-    VulkanStream* vkStream,
-    const VkObjectTablePushConstantEntryNVX* forMarshaling);
-
-void unmarshal_VkObjectTablePushConstantEntryNVX(
-    VulkanStream* vkStream,
-    VkObjectTablePushConstantEntryNVX* forUnmarshaling);
-
-#define OP_vkCmdProcessCommandsNVX 20267
-void marshal_vkCmdProcessCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
-
-void unmarshal_vkCmdProcessCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
-
-#define OP_vkCmdReserveSpaceForCommandsNVX 20268
-void marshal_vkCmdReserveSpaceForCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
-
-void unmarshal_vkCmdReserveSpaceForCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
-
-#define OP_vkCreateIndirectCommandsLayoutNVX 20269
-VkResult marshal_vkCreateIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
-
-VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
-
-#define OP_vkDestroyIndirectCommandsLayoutNVX 20270
-void marshal_vkDestroyIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkIndirectCommandsLayoutNVX indirectCommandsLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkIndirectCommandsLayoutNVX indirectCommandsLayout,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkCreateObjectTableNVX 20271
-VkResult marshal_vkCreateObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkObjectTableCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkObjectTableNVX* pObjectTable);
-
-VkResult unmarshal_vkCreateObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkObjectTableCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkObjectTableNVX* pObjectTable);
-
-#define OP_vkDestroyObjectTableNVX 20272
-void marshal_vkDestroyObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkRegisterObjectsNVX 20273
-VkResult marshal_vkRegisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectTableEntryNVX* const* ppObjectTableEntries,
-    const uint32_t* pObjectIndices);
-
-VkResult unmarshal_vkRegisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectTableEntryNVX* const* ppObjectTableEntries,
-    const uint32_t* pObjectIndices);
-
-#define OP_vkUnregisterObjectsNVX 20274
-VkResult marshal_vkUnregisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectEntryTypeNVX* pObjectEntryTypes,
-    const uint32_t* pObjectIndices);
-
-VkResult unmarshal_vkUnregisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectEntryTypeNVX* pObjectEntryTypes,
-    const uint32_t* pObjectIndices);
-
-#define OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX 20275
-void marshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
-    VkDeviceGeneratedCommandsLimitsNVX* pLimits);
-
-void unmarshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
-    VkDeviceGeneratedCommandsLimitsNVX* pLimits);
-
-#endif
-#ifdef VK_NV_clip_space_w_scaling
-void marshal_VkViewportWScalingNV(
-    VulkanStream* vkStream,
-    const VkViewportWScalingNV* forMarshaling);
-
-void unmarshal_VkViewportWScalingNV(
-    VulkanStream* vkStream,
-    VkViewportWScalingNV* forUnmarshaling);
-
-void marshal_VkPipelineViewportWScalingStateCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling);
-
-void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
-    VulkanStream* vkStream,
-    VkPipelineViewportWScalingStateCreateInfoNV* forUnmarshaling);
-
-#define OP_vkCmdSetViewportWScalingNV 20276
-void marshal_vkCmdSetViewportWScalingNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewportWScalingNV* pViewportWScalings);
-
-void unmarshal_vkCmdSetViewportWScalingNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewportWScalingNV* pViewportWScalings);
-
-#endif
-#ifdef VK_EXT_direct_mode_display
-#define OP_vkReleaseDisplayEXT 20277
-VkResult marshal_vkReleaseDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display);
-
-VkResult unmarshal_vkReleaseDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display);
-
-#endif
-#ifdef VK_EXT_acquire_xlib_display
-#define OP_vkAcquireXlibDisplayEXT 20278
-VkResult marshal_vkAcquireXlibDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    VkDisplayKHR display);
-
-VkResult unmarshal_vkAcquireXlibDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    VkDisplayKHR display);
-
-#define OP_vkGetRandROutputDisplayEXT 20279
-VkResult marshal_vkGetRandROutputDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    RROutput rrOutput,
-    VkDisplayKHR* pDisplay);
-
-VkResult unmarshal_vkGetRandROutputDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    RROutput rrOutput,
-    VkDisplayKHR* pDisplay);
-
-#endif
-#ifdef VK_EXT_display_surface_counter
-void marshal_VkSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    const VkSurfaceCapabilities2EXT* forMarshaling);
-
-void unmarshal_VkSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    VkSurfaceCapabilities2EXT* forUnmarshaling);
-
-#define OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT 20280
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-
-#endif
-#ifdef VK_EXT_display_control
-void marshal_VkDisplayPowerInfoEXT(
-    VulkanStream* vkStream,
-    const VkDisplayPowerInfoEXT* forMarshaling);
-
-void unmarshal_VkDisplayPowerInfoEXT(
-    VulkanStream* vkStream,
-    VkDisplayPowerInfoEXT* forUnmarshaling);
-
-void marshal_VkDeviceEventInfoEXT(
-    VulkanStream* vkStream,
-    const VkDeviceEventInfoEXT* forMarshaling);
-
-void unmarshal_VkDeviceEventInfoEXT(
-    VulkanStream* vkStream,
-    VkDeviceEventInfoEXT* forUnmarshaling);
-
-void marshal_VkDisplayEventInfoEXT(
-    VulkanStream* vkStream,
-    const VkDisplayEventInfoEXT* forMarshaling);
-
-void unmarshal_VkDisplayEventInfoEXT(
-    VulkanStream* vkStream,
-    VkDisplayEventInfoEXT* forUnmarshaling);
-
-void marshal_VkSwapchainCounterCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkSwapchainCounterCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkSwapchainCounterCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkSwapchainCounterCreateInfoEXT* forUnmarshaling);
-
-#define OP_vkDisplayPowerControlEXT 20281
-VkResult marshal_vkDisplayPowerControlEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-
-VkResult unmarshal_vkDisplayPowerControlEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-
-#define OP_vkRegisterDeviceEventEXT 20282
-VkResult marshal_vkRegisterDeviceEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceEventInfoEXT* pDeviceEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-VkResult unmarshal_vkRegisterDeviceEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceEventInfoEXT* pDeviceEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-#define OP_vkRegisterDisplayEventEXT 20283
-VkResult marshal_vkRegisterDisplayEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayEventInfoEXT* pDisplayEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-VkResult unmarshal_vkRegisterDisplayEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayEventInfoEXT* pDisplayEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence);
-
-#define OP_vkGetSwapchainCounterEXT 20284
-VkResult marshal_vkGetSwapchainCounterEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkSurfaceCounterFlagBitsEXT counter,
-    uint64_t* pCounterValue);
-
-VkResult unmarshal_vkGetSwapchainCounterEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkSurfaceCounterFlagBitsEXT counter,
-    uint64_t* pCounterValue);
-
-#endif
-#ifdef VK_GOOGLE_display_timing
-void marshal_VkRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    const VkRefreshCycleDurationGOOGLE* forMarshaling);
-
-void unmarshal_VkRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    VkRefreshCycleDurationGOOGLE* forUnmarshaling);
-
-void marshal_VkPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    const VkPastPresentationTimingGOOGLE* forMarshaling);
-
-void unmarshal_VkPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    VkPastPresentationTimingGOOGLE* forUnmarshaling);
-
-void marshal_VkPresentTimeGOOGLE(
-    VulkanStream* vkStream,
-    const VkPresentTimeGOOGLE* forMarshaling);
-
-void unmarshal_VkPresentTimeGOOGLE(
-    VulkanStream* vkStream,
-    VkPresentTimeGOOGLE* forUnmarshaling);
-
-void marshal_VkPresentTimesInfoGOOGLE(
-    VulkanStream* vkStream,
-    const VkPresentTimesInfoGOOGLE* forMarshaling);
-
-void unmarshal_VkPresentTimesInfoGOOGLE(
-    VulkanStream* vkStream,
-    VkPresentTimesInfoGOOGLE* forUnmarshaling);
-
-#define OP_vkGetRefreshCycleDurationGOOGLE 20285
-VkResult marshal_vkGetRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-
-VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-
-#define OP_vkGetPastPresentationTimingGOOGLE 20286
-VkResult marshal_vkGetPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pPresentationTimingCount,
-    VkPastPresentationTimingGOOGLE* pPresentationTimings);
-
-VkResult unmarshal_vkGetPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pPresentationTimingCount,
-    VkPastPresentationTimingGOOGLE* pPresentationTimings);
-
-#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
-void marshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_viewport_swizzle
-void marshal_VkViewportSwizzleNV(
-    VulkanStream* vkStream,
-    const VkViewportSwizzleNV* forMarshaling);
-
-void unmarshal_VkViewportSwizzleNV(
-    VulkanStream* vkStream,
-    VkViewportSwizzleNV* forUnmarshaling);
-
-void marshal_VkPipelineViewportSwizzleStateCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling);
-
-void unmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
-    VulkanStream* vkStream,
-    VkPipelineViewportSwizzleStateCreateInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_discard_rectangles
-void marshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceDiscardRectanglePropertiesEXT* forUnmarshaling);
-
-void marshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkPipelineDiscardRectangleStateCreateInfoEXT* forUnmarshaling);
-
-#define OP_vkCmdSetDiscardRectangleEXT 20287
-void marshal_vkCmdSetDiscardRectangleEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstDiscardRectangle,
-    uint32_t discardRectangleCount,
-    const VkRect2D* pDiscardRectangles);
-
-void unmarshal_vkCmdSetDiscardRectangleEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstDiscardRectangle,
-    uint32_t discardRectangleCount,
-    const VkRect2D* pDiscardRectangles);
-
-#endif
-#ifdef VK_EXT_conservative_rasterization
-void marshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forUnmarshaling);
-
-void marshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkPipelineRasterizationConservativeStateCreateInfoEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_swapchain_colorspace
-#endif
-#ifdef VK_EXT_hdr_metadata
-void marshal_VkXYColorEXT(
-    VulkanStream* vkStream,
-    const VkXYColorEXT* forMarshaling);
-
-void unmarshal_VkXYColorEXT(
-    VulkanStream* vkStream,
-    VkXYColorEXT* forUnmarshaling);
-
-void marshal_VkHdrMetadataEXT(
-    VulkanStream* vkStream,
-    const VkHdrMetadataEXT* forMarshaling);
-
-void unmarshal_VkHdrMetadataEXT(
-    VulkanStream* vkStream,
-    VkHdrMetadataEXT* forUnmarshaling);
-
-#define OP_vkSetHdrMetadataEXT 20288
-void marshal_vkSetHdrMetadataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainKHR* pSwapchains,
-    const VkHdrMetadataEXT* pMetadata);
-
-void unmarshal_vkSetHdrMetadataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainKHR* pSwapchains,
-    const VkHdrMetadataEXT* pMetadata);
-
-#endif
-#ifdef VK_MVK_ios_surface
-void marshal_VkIOSSurfaceCreateInfoMVK(
-    VulkanStream* vkStream,
-    const VkIOSSurfaceCreateInfoMVK* forMarshaling);
-
-void unmarshal_VkIOSSurfaceCreateInfoMVK(
-    VulkanStream* vkStream,
-    VkIOSSurfaceCreateInfoMVK* forUnmarshaling);
-
-#define OP_vkCreateIOSSurfaceMVK 20289
-VkResult marshal_vkCreateIOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateIOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#endif
-#ifdef VK_MVK_macos_surface
-void marshal_VkMacOSSurfaceCreateInfoMVK(
-    VulkanStream* vkStream,
-    const VkMacOSSurfaceCreateInfoMVK* forMarshaling);
-
-void unmarshal_VkMacOSSurfaceCreateInfoMVK(
-    VulkanStream* vkStream,
-    VkMacOSSurfaceCreateInfoMVK* forUnmarshaling);
-
-#define OP_vkCreateMacOSSurfaceMVK 20290
-VkResult marshal_vkCreateMacOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-VkResult unmarshal_vkCreateMacOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface);
-
-#endif
-#ifdef VK_EXT_external_memory_dma_buf
-#endif
-#ifdef VK_EXT_queue_family_foreign
-#endif
-#ifdef VK_EXT_debug_utils
-void marshal_VkDebugUtilsObjectNameInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugUtilsObjectNameInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugUtilsObjectNameInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugUtilsObjectNameInfoEXT* forUnmarshaling);
-
-void marshal_VkDebugUtilsObjectTagInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugUtilsObjectTagInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugUtilsObjectTagInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugUtilsObjectTagInfoEXT* forUnmarshaling);
-
-void marshal_VkDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    const VkDebugUtilsLabelEXT* forMarshaling);
-
-void unmarshal_VkDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkDebugUtilsLabelEXT* forUnmarshaling);
-
-void marshal_VkDebugUtilsMessengerCallbackDataEXT(
-    VulkanStream* vkStream,
-    const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling);
-
-void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
-    VulkanStream* vkStream,
-    VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling);
-
-void marshal_VkDebugUtilsMessengerCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling);
-
-#define OP_vkSetDebugUtilsObjectNameEXT 20291
-VkResult marshal_vkSetDebugUtilsObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
-
-VkResult unmarshal_vkSetDebugUtilsObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
-
-#define OP_vkSetDebugUtilsObjectTagEXT 20292
-VkResult marshal_vkSetDebugUtilsObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
-
-VkResult unmarshal_vkSetDebugUtilsObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
-
-#define OP_vkQueueBeginDebugUtilsLabelEXT 20293
-void marshal_vkQueueBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-void unmarshal_vkQueueBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-#define OP_vkQueueEndDebugUtilsLabelEXT 20294
-void marshal_vkQueueEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue);
-
-void unmarshal_vkQueueEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue);
-
-#define OP_vkQueueInsertDebugUtilsLabelEXT 20295
-void marshal_vkQueueInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-void unmarshal_vkQueueInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-#define OP_vkCmdBeginDebugUtilsLabelEXT 20296
-void marshal_vkCmdBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-void unmarshal_vkCmdBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-#define OP_vkCmdEndDebugUtilsLabelEXT 20297
-void marshal_vkCmdEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-void unmarshal_vkCmdEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer);
-
-#define OP_vkCmdInsertDebugUtilsLabelEXT 20298
-void marshal_vkCmdInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-void unmarshal_vkCmdInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo);
-
-#define OP_vkCreateDebugUtilsMessengerEXT 20299
-VkResult marshal_vkCreateDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugUtilsMessengerEXT* pMessenger);
-
-VkResult unmarshal_vkCreateDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugUtilsMessengerEXT* pMessenger);
-
-#define OP_vkDestroyDebugUtilsMessengerEXT 20300
-void marshal_vkDestroyDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessengerEXT messenger,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessengerEXT messenger,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkSubmitDebugUtilsMessageEXT 20301
-void marshal_vkSubmitDebugUtilsMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
-    VkDebugUtilsMessageTypeFlagsEXT messageTypes,
-    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
-
-void unmarshal_vkSubmitDebugUtilsMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
-    VkDebugUtilsMessageTypeFlagsEXT messageTypes,
-    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
-
-#endif
-#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-void marshal_VkAndroidHardwareBufferUsageANDROID(
-    VulkanStream* vkStream,
-    const VkAndroidHardwareBufferUsageANDROID* forMarshaling);
-
-void unmarshal_VkAndroidHardwareBufferUsageANDROID(
-    VulkanStream* vkStream,
-    VkAndroidHardwareBufferUsageANDROID* forUnmarshaling);
-
-void marshal_VkAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling);
-
-void unmarshal_VkAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkAndroidHardwareBufferPropertiesANDROID* forUnmarshaling);
-
-void marshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
-    VulkanStream* vkStream,
-    const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling);
-
-void unmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkAndroidHardwareBufferFormatPropertiesANDROID* forUnmarshaling);
-
-void marshal_VkImportAndroidHardwareBufferInfoANDROID(
-    VulkanStream* vkStream,
-    const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling);
-
-void unmarshal_VkImportAndroidHardwareBufferInfoANDROID(
-    VulkanStream* vkStream,
-    VkImportAndroidHardwareBufferInfoANDROID* forUnmarshaling);
-
-void marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
-    VulkanStream* vkStream,
-    const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling);
-
-void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
-    VulkanStream* vkStream,
-    VkMemoryGetAndroidHardwareBufferInfoANDROID* forUnmarshaling);
-
-void marshal_VkExternalFormatANDROID(
-    VulkanStream* vkStream,
-    const VkExternalFormatANDROID* forMarshaling);
-
-void unmarshal_VkExternalFormatANDROID(
-    VulkanStream* vkStream,
-    VkExternalFormatANDROID* forUnmarshaling);
-
-#define OP_vkGetAndroidHardwareBufferPropertiesANDROID 20302
-VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const AHardwareBuffer* buffer,
-    VkAndroidHardwareBufferPropertiesANDROID* pProperties);
-
-VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const AHardwareBuffer* buffer,
-    VkAndroidHardwareBufferPropertiesANDROID* pProperties);
-
-#define OP_vkGetMemoryAndroidHardwareBufferANDROID 20303
-VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
-    AHardwareBuffer** pBuffer);
-
-VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
-    AHardwareBuffer** pBuffer);
-
-#endif
-#ifdef VK_EXT_sampler_filter_minmax
-void marshal_VkSamplerReductionModeCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkSamplerReductionModeCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkSamplerReductionModeCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkSamplerReductionModeCreateInfoEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forUnmarshaling);
-
-#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
-void marshal_VkSampleLocationEXT(
-    VulkanStream* vkStream,
-    const VkSampleLocationEXT* forMarshaling);
-
-void unmarshal_VkSampleLocationEXT(
-    VulkanStream* vkStream,
-    VkSampleLocationEXT* forUnmarshaling);
-
-void marshal_VkSampleLocationsInfoEXT(
-    VulkanStream* vkStream,
-    const VkSampleLocationsInfoEXT* forMarshaling);
-
-void unmarshal_VkSampleLocationsInfoEXT(
-    VulkanStream* vkStream,
-    VkSampleLocationsInfoEXT* forUnmarshaling);
-
-void marshal_VkAttachmentSampleLocationsEXT(
-    VulkanStream* vkStream,
-    const VkAttachmentSampleLocationsEXT* forMarshaling);
-
-void unmarshal_VkAttachmentSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkAttachmentSampleLocationsEXT* forUnmarshaling);
-
-void marshal_VkSubpassSampleLocationsEXT(
-    VulkanStream* vkStream,
-    const VkSubpassSampleLocationsEXT* forMarshaling);
-
-void unmarshal_VkSubpassSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkSubpassSampleLocationsEXT* forUnmarshaling);
-
-void marshal_VkRenderPassSampleLocationsBeginInfoEXT(
-    VulkanStream* vkStream,
-    const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling);
-
-void unmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
-    VulkanStream* vkStream,
-    VkRenderPassSampleLocationsBeginInfoEXT* forUnmarshaling);
-
-void marshal_VkPipelineSampleLocationsStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkPipelineSampleLocationsStateCreateInfoEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSampleLocationsPropertiesEXT* forUnmarshaling);
-
-void marshal_VkMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    const VkMultisamplePropertiesEXT* forMarshaling);
-
-void unmarshal_VkMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    VkMultisamplePropertiesEXT* forUnmarshaling);
-
-#define OP_vkCmdSetSampleLocationsEXT 20304
-void marshal_vkCmdSetSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-
-void unmarshal_vkCmdSetSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-
-#define OP_vkGetPhysicalDeviceMultisamplePropertiesEXT 20305
-void marshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSampleCountFlagBits samples,
-    VkMultisamplePropertiesEXT* pMultisampleProperties);
-
-void unmarshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSampleCountFlagBits samples,
-    VkMultisamplePropertiesEXT* pMultisampleProperties);
-
-#endif
-#ifdef VK_EXT_blend_operation_advanced
-void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forUnmarshaling);
-
-void marshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkPipelineColorBlendAdvancedStateCreateInfoEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_fragment_coverage_to_color
-void marshal_VkPipelineCoverageToColorStateCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling);
-
-void unmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
-    VulkanStream* vkStream,
-    VkPipelineCoverageToColorStateCreateInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_framebuffer_mixed_samples
-void marshal_VkPipelineCoverageModulationStateCreateInfoNV(
-    VulkanStream* vkStream,
-    const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling);
-
-void unmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
-    VulkanStream* vkStream,
-    VkPipelineCoverageModulationStateCreateInfoNV* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_fill_rectangle
-#endif
-#ifdef VK_EXT_post_depth_coverage
-#endif
-#ifdef VK_EXT_validation_cache
-void marshal_VkValidationCacheCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkValidationCacheCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkValidationCacheCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkValidationCacheCreateInfoEXT* forUnmarshaling);
-
-void marshal_VkShaderModuleValidationCacheCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkShaderModuleValidationCacheCreateInfoEXT* forUnmarshaling);
-
-#define OP_vkCreateValidationCacheEXT 20306
-VkResult marshal_vkCreateValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkValidationCacheCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkValidationCacheEXT* pValidationCache);
-
-VkResult unmarshal_vkCreateValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkValidationCacheCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkValidationCacheEXT* pValidationCache);
-
-#define OP_vkDestroyValidationCacheEXT 20307
-void marshal_vkDestroyValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    const VkAllocationCallbacks* pAllocator);
-
-void unmarshal_vkDestroyValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    const VkAllocationCallbacks* pAllocator);
-
-#define OP_vkMergeValidationCachesEXT 20308
-VkResult marshal_vkMergeValidationCachesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT dstCache,
-    uint32_t srcCacheCount,
-    const VkValidationCacheEXT* pSrcCaches);
-
-VkResult unmarshal_vkMergeValidationCachesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT dstCache,
-    uint32_t srcCacheCount,
-    const VkValidationCacheEXT* pSrcCaches);
-
-#define OP_vkGetValidationCacheDataEXT 20309
-VkResult marshal_vkGetValidationCacheDataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    size_t* pDataSize,
-    void* pData);
-
-VkResult unmarshal_vkGetValidationCacheDataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    size_t* pDataSize,
-    void* pData);
-
-#endif
-#ifdef VK_EXT_descriptor_indexing
-void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forUnmarshaling);
-
-void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
-    VulkanStream* vkStream,
-    const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forMarshaling);
-
-void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
-    VulkanStream* vkStream,
-    VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forUnmarshaling);
-
-void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
-    VulkanStream* vkStream,
-    const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forMarshaling);
-
-void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
-    VulkanStream* vkStream,
-    VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_shader_viewport_index_layer
-#endif
-#ifdef VK_EXT_global_priority
-void marshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkDeviceQueueGlobalPriorityCreateInfoEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_external_memory_host
-void marshal_VkImportMemoryHostPointerInfoEXT(
-    VulkanStream* vkStream,
-    const VkImportMemoryHostPointerInfoEXT* forMarshaling);
-
-void unmarshal_VkImportMemoryHostPointerInfoEXT(
-    VulkanStream* vkStream,
-    VkImportMemoryHostPointerInfoEXT* forUnmarshaling);
-
-void marshal_VkMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkMemoryHostPointerPropertiesEXT* forMarshaling);
-
-void unmarshal_VkMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    VkMemoryHostPointerPropertiesEXT* forUnmarshaling);
-
-void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling);
-
-#define OP_vkGetMemoryHostPointerPropertiesEXT 20310
-VkResult marshal_vkGetMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    const void* pHostPointer,
-    VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-
-VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    const void* pHostPointer,
-    VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-
-#endif
-#ifdef VK_AMD_buffer_marker
-#define OP_vkCmdWriteBufferMarkerAMD 20311
-void marshal_vkCmdWriteBufferMarkerAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    uint32_t marker);
-
-void unmarshal_vkCmdWriteBufferMarkerAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    uint32_t marker);
-
-#endif
-#ifdef VK_AMD_shader_core_properties
-void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceShaderCorePropertiesAMD* forUnmarshaling);
-
-#endif
-#ifdef VK_EXT_vertex_attribute_divisor
-void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling);
-
-void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling);
-
-void marshal_VkVertexInputBindingDivisorDescriptionEXT(
-    VulkanStream* vkStream,
-    const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling);
-
-void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
-    VulkanStream* vkStream,
-    VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling);
-
-void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling);
-
-void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
-    VulkanStream* vkStream,
-    VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling);
-
-#endif
-#ifdef VK_NV_shader_subgroup_partitioned
-#endif
-#ifdef VK_NV_device_diagnostic_checkpoints
-void marshal_VkQueueFamilyCheckpointPropertiesNV(
-    VulkanStream* vkStream,
-    const VkQueueFamilyCheckpointPropertiesNV* forMarshaling);
-
-void unmarshal_VkQueueFamilyCheckpointPropertiesNV(
-    VulkanStream* vkStream,
-    VkQueueFamilyCheckpointPropertiesNV* forUnmarshaling);
-
-void marshal_VkCheckpointDataNV(
-    VulkanStream* vkStream,
-    const VkCheckpointDataNV* forMarshaling);
-
-void unmarshal_VkCheckpointDataNV(
-    VulkanStream* vkStream,
-    VkCheckpointDataNV* forUnmarshaling);
-
-#define OP_vkCmdSetCheckpointNV 20312
-void marshal_vkCmdSetCheckpointNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const void* pCheckpointMarker);
-
-void unmarshal_vkCmdSetCheckpointNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const void* pCheckpointMarker);
-
-#define OP_vkGetQueueCheckpointDataNV 20313
-void marshal_vkGetQueueCheckpointDataNV(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t* pCheckpointDataCount,
-    VkCheckpointDataNV* pCheckpointData);
-
-void unmarshal_vkGetQueueCheckpointDataNV(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t* pCheckpointDataCount,
-    VkCheckpointDataNV* pCheckpointData);
-
-#endif
-
-} // namespace goldfish_vk
diff --git a/system/vulkan_enc/Android.mk b/system/vulkan_enc/Android.mk
index a48b42b58e150907faaf7bacf98167f848fb79de..6382fad354a980f63a97f8b73835f12db1d6999d 100644
--- a/system/vulkan_enc/Android.mk
+++ b/system/vulkan_enc/Android.mk
@@ -1,29 +1,48 @@
+
+# Autogenerated makefile
+# 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
+
 LOCAL_PATH := $(call my-dir)
 
-### Vulkan Encoder ###########################################
 $(call emugl-begin-shared-library,libvulkan_enc)
-$(call emugl-import,libvulkan_cereal_guest)
+$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
+$(call emugl-import,libOpenglCodecCommon$(GOLDFISH_OPENGL_LIB_SUFFIX) libandroidemu)
+
+# Vulkan include dir
+ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
+LOCAL_C_INCLUDES += \
+    $(LOCAL_PATH) \
+    $(HOST_EMUGL_PATH)/host/include \
+    $(HOST_EMUGL_PATH)/host/include/vulkan
+endif
 
 ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
-
-# Only import androidemu if not building for host.
-# if building for host, we already import android-emu.
-$(call emugl-import,libandroidemu)
+LOCAL_C_INCLUDES += \
+    $(LOCAL_PATH) \
+    $(LOCAL_PATH)/../vulkan_enc \
 
 LOCAL_HEADER_LIBRARIES += \
     vulkan_headers \
 
 endif
 
-LOCAL_SRC_FILES := \
-	VkEncoder.cpp \
-	VulkanStream.cpp \
+LOCAL_CFLAGS += \
+    -DLOG_TAG=\"goldfish_vulkan\" \
+    -Wno-missing-field-initializers \
+    -fstrict-aliasing \
+    -DVK_USE_PLATFORM_ANDROID_KHR \
+    -DVK_NO_PROTOTYPES \
 
-LOCAL_CFLAGS += -DLOG_TAG=\"emuglvk_enc\"
+LOCAL_SRC_FILES := VulkanStream.cpp \
+    VkEncoder.cpp \
+goldfish_vk_marshaling_guest.cpp \
 
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-$(call emugl-import,libOpenglCodecCommon$(GOLDFISH_OPENGL_LIB_SUFFIX))
 
 $(call emugl-end-module)
 
-
diff --git a/system/vulkan_enc/CMakeLists.txt b/system/vulkan_enc/CMakeLists.txt
index f9a233756843e96c98cbdf80310760f412f6636c..2f0689b39783d245b14bf904b729ddb1a2aba5ee 100644
--- a/system/vulkan_enc/CMakeLists.txt
+++ b/system/vulkan_enc/CMakeLists.txt
@@ -1,9 +1,9 @@
 # This is an autogenerated file! Do not edit!
 # instead run make from .../device/generic/goldfish-opengl
 # which will re-generate this file.
-set(vulkan_enc_src VkEncoder.cpp VulkanStream.cpp)
+set(vulkan_enc_src VulkanStream.cpp VkEncoder.cpp goldfish_vk_marshaling_guest.cpp)
 android_add_shared_library(vulkan_enc)
-target_include_directories(vulkan_enc PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/vulkan_enc ${GOLDFISH_DEVICE_ROOT}/system/vulkan_cereal ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/shared/OpenglCodecCommon ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
-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=\"emuglvk_enc\"")
-target_compile_options(vulkan_enc PRIVATE "-fvisibility=default")
+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")
+target_compile_options(vulkan_enc PRIVATE "-fvisibility=default" "-Wno-missing-field-initializers" "-fstrict-aliasing")
 target_link_libraries(vulkan_enc PRIVATE cutils utils log OpenglCodecCommon_host android-emu-shared)
\ No newline at end of file
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index d3b1fb2c0f6049f700aa4601ce89edfee4d97a47..9520fd6cf725abd50542a490446632b585068a43 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -1,4 +1,5 @@
 // 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.
@@ -11,24 +12,10989 @@
 // 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 VkEncoder
+// (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 "VkEncoder.h"
 
+
 #include "IOStream.h"
 #include "VulkanStream.h"
 
 #include "goldfish_vk_marshaling_guest.h"
 
-class VkEncoder::Impl {
-public:
-    Impl(IOStream* stream) : m_stream(stream) {
 
-    }
 
-    // do the api calls here
 
+
+
+using goldfish_vk::VulkanCountingStream;
+using goldfish_vk::VulkanStream;
+
+class VkEncoder::Impl {
+public:
+    Impl(IOStream* stream) : m_stream(stream) { }
+    VulkanCountingStream* countingStream() { return &m_countingStream; }
+    VulkanStream* stream() { return &m_stream; }
 private:
-    goldfish_vk::VulkanStream m_stream;
+    VulkanCountingStream m_countingStream;
+    VulkanStream m_stream;
 };
 
 VkEncoder::VkEncoder(IOStream *stream) :
     mImpl(new VkEncoder::Impl(stream)) { }
+#ifdef VK_VERSION_1_0
+VkResult VkEncoder::vkCreateInstance(
+    const VkInstanceCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkInstance* pInstance)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        marshal_VkInstanceCreateInfo(countingStream, (const VkInstanceCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkInstance*)pInstance, sizeof(VkInstance));
+    }
+    uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
+    stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
+    stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
+    marshal_VkInstanceCreateInfo(stream, (const VkInstanceCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkInstance*)pInstance, sizeof(VkInstance));
+    stream->read((VkInstance*)pInstance, sizeof(VkInstance));
+    VkResult vkCreateInstance_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
+    return vkCreateInstance_VkResult_return;
+}
+
+void VkEncoder::vkDestroyInstance(
+    VkInstance instance,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
+    stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkEnumeratePhysicalDevices(
+    VkInstance instance,
+    uint32_t* pPhysicalDeviceCount,
+    VkPhysicalDevice* pPhysicalDevices)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((uint32_t**)&pPhysicalDeviceCount, sizeof(uint32_t*));
+        if (pPhysicalDeviceCount)
+        {
+            countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkPhysicalDevice**)&pPhysicalDevices, sizeof(VkPhysicalDevice*));
+        if (pPhysicalDevices)
+        {
+            countingStream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+        }
+    }
+    uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
+    stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((uint32_t**)&pPhysicalDeviceCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceCount)
+    {
+        stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
+    }
+    stream->write((VkPhysicalDevice**)&pPhysicalDevices, sizeof(VkPhysicalDevice*));
+    if (pPhysicalDevices)
+    {
+        stream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+    }
+    uint32_t* check_pPhysicalDeviceCount;
+    stream->read((uint32_t**)&check_pPhysicalDeviceCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceCount)
+    {
+        if (!(check_pPhysicalDeviceCount))
+        {
+            fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
+    }
+    VkPhysicalDevice* check_pPhysicalDevices;
+    stream->read((VkPhysicalDevice**)&check_pPhysicalDevices, sizeof(VkPhysicalDevice*));
+    if (pPhysicalDevices)
+    {
+        if (!(check_pPhysicalDevices))
+        {
+            fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
+        }
+        stream->read((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+    }
+    VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
+    return vkEnumeratePhysicalDevices_VkResult_return;
+}
+
+void VkEncoder::vkGetPhysicalDeviceFeatures(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceFeatures* pFeatures)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
+    stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
+    unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
+}
+
+void VkEncoder::vkGetPhysicalDeviceFormatProperties(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkFormatProperties* pFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
+    unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkImageType type,
+    VkImageTiling tiling,
+    VkImageUsageFlags usage,
+    VkImageCreateFlags flags,
+    VkImageFormatProperties* pImageFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        countingStream->write((VkImageType*)&type, sizeof(VkImageType));
+        countingStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+        countingStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+        countingStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+        marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    stream->write((VkImageType*)&type, sizeof(VkImageType));
+    stream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+    stream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+    stream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+    marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
+    unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
+    VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
+}
+
+void VkEncoder::vkGetPhysicalDeviceProperties(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
+    unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties* pQueueFamilyProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+        if (pQueueFamilyPropertyCount)
+        {
+            countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkQueueFamilyProperties**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties*));
+        if (pQueueFamilyProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+            {
+                marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkQueueFamilyProperties**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties*));
+    if (pQueueFamilyProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
+        }
+    }
+    uint32_t* check_pQueueFamilyPropertyCount;
+    stream->read((uint32_t**)&check_pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        if (!(check_pQueueFamilyPropertyCount))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    VkQueueFamilyProperties* check_pQueueFamilyProperties;
+    stream->read((VkQueueFamilyProperties**)&check_pQueueFamilyProperties, sizeof(VkQueueFamilyProperties*));
+    if (pQueueFamilyProperties)
+    {
+        if (!(check_pQueueFamilyProperties))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
+        }
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceMemoryProperties* pMemoryProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
+    unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
+}
+
+PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
+    VkInstance instance,
+    const char* pName)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->putString(pName);
+    }
+    uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
+    stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->putString(pName);
+    PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
+    stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+    return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
+}
+
+PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
+    VkDevice device,
+    const char* pName)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->putString(pName);
+    }
+    uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
+    stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->putString(pName);
+    PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
+    stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+    return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
+}
+
+VkResult VkEncoder::vkCreateDevice(
+    VkPhysicalDevice physicalDevice,
+    const VkDeviceCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDevice* pDevice)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkDeviceCreateInfo(countingStream, (const VkDeviceCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDevice*)pDevice, sizeof(VkDevice));
+    }
+    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));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkDeviceCreateInfo(stream, (const VkDeviceCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDevice*)pDevice, sizeof(VkDevice));
+    stream->read((VkDevice*)pDevice, sizeof(VkDevice));
+    VkResult vkCreateDevice_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
+    return vkCreateDevice_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDevice(
+    VkDevice device,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
+    stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
+    const char* pLayerName,
+    uint32_t* pPropertyCount,
+    VkExtensionProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->putString(pLayerName);
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkExtensionProperties**)&pProperties, sizeof(VkExtensionProperties*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
+    stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
+    stream->putString(pLayerName);
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkExtensionProperties**)&pProperties, sizeof(VkExtensionProperties*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkExtensionProperties* check_pProperties;
+    stream->read((VkExtensionProperties**)&check_pProperties, sizeof(VkExtensionProperties*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
+        }
+    }
+    VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
+    return vkEnumerateInstanceExtensionProperties_VkResult_return;
+}
+
+VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
+    VkPhysicalDevice physicalDevice,
+    const char* pLayerName,
+    uint32_t* pPropertyCount,
+    VkExtensionProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->putString(pLayerName);
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkExtensionProperties**)&pProperties, sizeof(VkExtensionProperties*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
+    stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->putString(pLayerName);
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkExtensionProperties**)&pProperties, sizeof(VkExtensionProperties*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkExtensionProperties* check_pProperties;
+    stream->read((VkExtensionProperties**)&check_pProperties, sizeof(VkExtensionProperties*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
+        }
+    }
+    VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
+    return vkEnumerateDeviceExtensionProperties_VkResult_return;
+}
+
+VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
+    uint32_t* pPropertyCount,
+    VkLayerProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkLayerProperties**)&pProperties, sizeof(VkLayerProperties*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
+    stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkLayerProperties**)&pProperties, sizeof(VkLayerProperties*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkLayerProperties* check_pProperties;
+    stream->read((VkLayerProperties**)&check_pProperties, sizeof(VkLayerProperties*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
+        }
+    }
+    VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
+    return vkEnumerateInstanceLayerProperties_VkResult_return;
+}
+
+VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pPropertyCount,
+    VkLayerProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkLayerProperties**)&pProperties, sizeof(VkLayerProperties*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
+    stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkLayerProperties**)&pProperties, sizeof(VkLayerProperties*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkLayerProperties* check_pProperties;
+    stream->read((VkLayerProperties**)&check_pProperties, sizeof(VkLayerProperties*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
+        }
+    }
+    VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
+    return vkEnumerateDeviceLayerProperties_VkResult_return;
+}
+
+void VkEncoder::vkGetDeviceQueue(
+    VkDevice device,
+    uint32_t queueFamilyIndex,
+    uint32_t queueIndex,
+    VkQueue* pQueue)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&queueIndex, sizeof(uint32_t));
+        countingStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((uint32_t*)&queueIndex, sizeof(uint32_t));
+    stream->write((VkQueue*)pQueue, sizeof(VkQueue));
+    stream->read((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+VkResult VkEncoder::vkQueueSubmit(
+    VkQueue queue,
+    uint32_t submitCount,
+    const VkSubmitInfo* pSubmits,
+    VkFence fence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        countingStream->write((uint32_t*)&submitCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
+        {
+            marshal_VkSubmitInfo(countingStream, (const VkSubmitInfo*)(pSubmits + i));
+        }
+        countingStream->write((VkFence*)&fence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    stream->write((uint32_t*)&submitCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
+    {
+        marshal_VkSubmitInfo(stream, (const VkSubmitInfo*)(pSubmits + i));
+    }
+    stream->write((VkFence*)&fence, sizeof(VkFence));
+    VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
+    stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
+    return vkQueueSubmit_VkResult_return;
+}
+
+VkResult VkEncoder::vkQueueWaitIdle(
+    VkQueue queue)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+    }
+    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));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
+    stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
+    return vkQueueWaitIdle_VkResult_return;
+}
+
+VkResult VkEncoder::vkDeviceWaitIdle(
+    VkDevice device)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
+    stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
+    return vkDeviceWaitIdle_VkResult_return;
+}
+
+VkResult VkEncoder::vkAllocateMemory(
+    VkDevice device,
+    const VkMemoryAllocateInfo* pAllocateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDeviceMemory* pMemory)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkMemoryAllocateInfo(countingStream, (const VkMemoryAllocateInfo*)(pAllocateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkMemoryAllocateInfo(stream, (const VkMemoryAllocateInfo*)(pAllocateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+    stream->read((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+    VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
+    stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
+    return vkAllocateMemory_VkResult_return;
+}
+
+void VkEncoder::vkFreeMemory(
+    VkDevice device,
+    VkDeviceMemory memory,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
+    stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
+    stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkMapMemory(
+    VkDevice device,
+    VkDeviceMemory memory,
+    VkDeviceSize offset,
+    VkDeviceSize size,
+    VkMemoryMapFlags flags,
+    void** ppData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+        countingStream->write((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
+        countingStream->write((void***)&ppData, sizeof(void**));
+        if (ppData)
+        {
+            countingStream->write((void**)ppData, sizeof(void*));
+        }
+    }
+    uint32_t packetSize_vkMapMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkMapMemory = OP_vkMapMemory;
+    stream->write(&opcode_vkMapMemory, sizeof(uint32_t));
+    stream->write(&packetSize_vkMapMemory, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+    stream->write((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
+    stream->write((void***)&ppData, sizeof(void**));
+    if (ppData)
+    {
+        stream->write((void**)ppData, sizeof(void*));
+    }
+    void** check_ppData;
+    stream->read((void***)&check_ppData, sizeof(void**));
+    if (ppData)
+    {
+        if (!(check_ppData))
+        {
+            fprintf(stderr, "fatal: ppData inconsistent between guest and host\n");
+        }
+        stream->read((void**)ppData, sizeof(void*));
+    }
+    VkResult vkMapMemory_VkResult_return = (VkResult)0;
+    stream->read(&vkMapMemory_VkResult_return, sizeof(VkResult));
+    return vkMapMemory_VkResult_return;
+}
+
+void VkEncoder::vkUnmapMemory(
+    VkDevice device,
+    VkDeviceMemory memory)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    }
+    uint32_t packetSize_vkUnmapMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUnmapMemory = OP_vkUnmapMemory;
+    stream->write(&opcode_vkUnmapMemory, sizeof(uint32_t));
+    stream->write(&packetSize_vkUnmapMemory, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+}
+
+VkResult VkEncoder::vkFlushMappedMemoryRanges(
+    VkDevice device,
+    uint32_t memoryRangeCount,
+    const VkMappedMemoryRange* pMemoryRanges)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+        {
+            marshal_VkMappedMemoryRange(countingStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+        }
+    }
+    uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
+    stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
+    stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+    {
+        marshal_VkMappedMemoryRange(stream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+    }
+    VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
+    stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+    return vkFlushMappedMemoryRanges_VkResult_return;
+}
+
+VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
+    VkDevice device,
+    uint32_t memoryRangeCount,
+    const VkMappedMemoryRange* pMemoryRanges)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+        {
+            marshal_VkMappedMemoryRange(countingStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+        }
+    }
+    uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
+    stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
+    stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+    {
+        marshal_VkMappedMemoryRange(stream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+    }
+    VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
+    stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+    return vkInvalidateMappedMemoryRanges_VkResult_return;
+}
+
+void VkEncoder::vkGetDeviceMemoryCommitment(
+    VkDevice device,
+    VkDeviceMemory memory,
+    VkDeviceSize* pCommittedMemoryInBytes)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
+    }
+    uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
+    stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
+    stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
+}
+
+VkResult VkEncoder::vkBindBufferMemory(
+    VkDevice device,
+    VkBuffer buffer,
+    VkDeviceMemory memory,
+    VkDeviceSize memoryOffset)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+    }
+    uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
+    stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+    VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
+    stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
+    return vkBindBufferMemory_VkResult_return;
+}
+
+VkResult VkEncoder::vkBindImageMemory(
+    VkDevice device,
+    VkImage image,
+    VkDeviceMemory memory,
+    VkDeviceSize memoryOffset)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+    }
+    uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
+    stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+    VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
+    stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
+    return vkBindImageMemory_VkResult_return;
+}
+
+void VkEncoder::vkGetBufferMemoryRequirements(
+    VkDevice device,
+    VkBuffer buffer,
+    VkMemoryRequirements* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
+    stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetImageMemoryRequirements(
+    VkDevice device,
+    VkImage image,
+    VkMemoryRequirements* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
+    stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetImageSparseMemoryRequirements(
+    VkDevice device,
+    VkImage image,
+    uint32_t* pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        countingStream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+        if (pSparseMemoryRequirementCount)
+        {
+            countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageMemoryRequirements**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements*));
+        if (pSparseMemoryRequirements)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+            {
+                marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
+    stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    stream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageMemoryRequirements**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements*));
+    if (pSparseMemoryRequirements)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
+        }
+    }
+    uint32_t* check_pSparseMemoryRequirementCount;
+    stream->read((uint32_t**)&check_pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        if (!(check_pSparseMemoryRequirementCount))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
+    stream->read((VkSparseImageMemoryRequirements**)&check_pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements*));
+    if (pSparseMemoryRequirements)
+    {
+        if (!(check_pSparseMemoryRequirements))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
+        }
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkImageType type,
+    VkSampleCountFlagBits samples,
+    VkImageUsageFlags usage,
+    VkImageTiling tiling,
+    uint32_t* pPropertyCount,
+    VkSparseImageFormatProperties* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        countingStream->write((VkImageType*)&type, sizeof(VkImageType));
+        countingStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+        countingStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+        countingStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageFormatProperties**)&pProperties, sizeof(VkSparseImageFormatProperties*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    stream->write((VkImageType*)&type, sizeof(VkImageType));
+    stream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+    stream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+    stream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageFormatProperties**)&pProperties, sizeof(VkSparseImageFormatProperties*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkSparseImageFormatProperties* check_pProperties;
+    stream->read((VkSparseImageFormatProperties**)&check_pProperties, sizeof(VkSparseImageFormatProperties*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
+        }
+    }
+}
+
+VkResult VkEncoder::vkQueueBindSparse(
+    VkQueue queue,
+    uint32_t bindInfoCount,
+    const VkBindSparseInfo* pBindInfo,
+    VkFence fence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        countingStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+        {
+            marshal_VkBindSparseInfo(countingStream, (const VkBindSparseInfo*)(pBindInfo + i));
+        }
+        countingStream->write((VkFence*)&fence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    stream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+    {
+        marshal_VkBindSparseInfo(stream, (const VkBindSparseInfo*)(pBindInfo + i));
+    }
+    stream->write((VkFence*)&fence, sizeof(VkFence));
+    VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
+    stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
+    return vkQueueBindSparse_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateFence(
+    VkDevice device,
+    const VkFenceCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkFence* pFence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkFenceCreateInfo(countingStream, (const VkFenceCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkFenceCreateInfo(stream, (const VkFenceCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkFence*)pFence, sizeof(VkFence));
+    stream->read((VkFence*)pFence, sizeof(VkFence));
+    VkResult vkCreateFence_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
+    return vkCreateFence_VkResult_return;
+}
+
+void VkEncoder::vkDestroyFence(
+    VkDevice device,
+    VkFence fence,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkFence*)&fence, sizeof(VkFence));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
+    stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkFence*)&fence, sizeof(VkFence));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkResetFences(
+    VkDevice device,
+    uint32_t fenceCount,
+    const VkFence* pFences)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+        countingStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+    stream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+    VkResult vkResetFences_VkResult_return = (VkResult)0;
+    stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
+    return vkResetFences_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetFenceStatus(
+    VkDevice device,
+    VkFence fence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkFence*)&fence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkFence*)&fence, sizeof(VkFence));
+    VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
+    stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
+    return vkGetFenceStatus_VkResult_return;
+}
+
+VkResult VkEncoder::vkWaitForFences(
+    VkDevice device,
+    uint32_t fenceCount,
+    const VkFence* pFences,
+    VkBool32 waitAll,
+    uint64_t timeout)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+        countingStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+        countingStream->write((VkBool32*)&waitAll, sizeof(VkBool32));
+        countingStream->write((uint64_t*)&timeout, sizeof(uint64_t));
+    }
+    uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
+    stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
+    stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+    stream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+    stream->write((VkBool32*)&waitAll, sizeof(VkBool32));
+    stream->write((uint64_t*)&timeout, sizeof(uint64_t));
+    VkResult vkWaitForFences_VkResult_return = (VkResult)0;
+    stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
+    return vkWaitForFences_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateSemaphore(
+    VkDevice device,
+    const VkSemaphoreCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSemaphore* pSemaphore)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSemaphoreCreateInfo(countingStream, (const VkSemaphoreCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSemaphoreCreateInfo(stream, (const VkSemaphoreCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+    stream->read((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+    VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
+    return vkCreateSemaphore_VkResult_return;
+}
+
+void VkEncoder::vkDestroySemaphore(
+    VkDevice device,
+    VkSemaphore semaphore,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
+    stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateEvent(
+    VkDevice device,
+    const VkEventCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkEvent* pEvent)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkEventCreateInfo(countingStream, (const VkEventCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkEvent*)pEvent, sizeof(VkEvent));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkEventCreateInfo(stream, (const VkEventCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkEvent*)pEvent, sizeof(VkEvent));
+    stream->read((VkEvent*)pEvent, sizeof(VkEvent));
+    VkResult vkCreateEvent_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
+    return vkCreateEvent_VkResult_return;
+}
+
+void VkEncoder::vkDestroyEvent(
+    VkDevice device,
+    VkEvent event,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
+    stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkGetEventStatus(
+    VkDevice device,
+    VkEvent event)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
+    stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
+    return vkGetEventStatus_VkResult_return;
+}
+
+VkResult VkEncoder::vkSetEvent(
+    VkDevice device,
+    VkEvent event)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    VkResult vkSetEvent_VkResult_return = (VkResult)0;
+    stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
+    return vkSetEvent_VkResult_return;
+}
+
+VkResult VkEncoder::vkResetEvent(
+    VkDevice device,
+    VkEvent event)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    VkResult vkResetEvent_VkResult_return = (VkResult)0;
+    stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
+    return vkResetEvent_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateQueryPool(
+    VkDevice device,
+    const VkQueryPoolCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkQueryPool* pQueryPool)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkQueryPoolCreateInfo(countingStream, (const VkQueryPoolCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkQueryPoolCreateInfo(stream, (const VkQueryPoolCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+    stream->read((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+    VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
+    return vkCreateQueryPool_VkResult_return;
+}
+
+void VkEncoder::vkDestroyQueryPool(
+    VkDevice device,
+    VkQueryPool queryPool,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
+    stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkGetQueryPoolResults(
+    VkDevice device,
+    VkQueryPool queryPool,
+    uint32_t firstQuery,
+    uint32_t queryCount,
+    size_t dataSize,
+    void* pData,
+    VkDeviceSize stride,
+    VkQueryResultFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+        countingStream->write((size_t*)&dataSize, sizeof(size_t));
+        countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
+        countingStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+        countingStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+    }
+    uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
+    stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+    stream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+    stream->write((size_t*)&dataSize, sizeof(size_t));
+    stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
+    stream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+    stream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+    stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
+    VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
+    stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
+    return vkGetQueryPoolResults_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateBuffer(
+    VkDevice device,
+    const VkBufferCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkBuffer* pBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkBufferCreateInfo(countingStream, (const VkBufferCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkBufferCreateInfo(stream, (const VkBufferCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
+    stream->read((VkBuffer*)pBuffer, sizeof(VkBuffer));
+    VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
+    return vkCreateBuffer_VkResult_return;
+}
+
+void VkEncoder::vkDestroyBuffer(
+    VkDevice device,
+    VkBuffer buffer,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
+    stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateBufferView(
+    VkDevice device,
+    const VkBufferViewCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkBufferView* pView)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkBufferViewCreateInfo(countingStream, (const VkBufferViewCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkBufferView*)pView, sizeof(VkBufferView));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkBufferViewCreateInfo(stream, (const VkBufferViewCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkBufferView*)pView, sizeof(VkBufferView));
+    stream->read((VkBufferView*)pView, sizeof(VkBufferView));
+    VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
+    return vkCreateBufferView_VkResult_return;
+}
+
+void VkEncoder::vkDestroyBufferView(
+    VkDevice device,
+    VkBufferView bufferView,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkBufferView*)&bufferView, sizeof(VkBufferView));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
+    stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkBufferView*)&bufferView, sizeof(VkBufferView));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateImage(
+    VkDevice device,
+    const VkImageCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkImage* pImage)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageCreateInfo(countingStream, (const VkImageCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkImage*)pImage, sizeof(VkImage));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageCreateInfo(stream, (const VkImageCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkImage*)pImage, sizeof(VkImage));
+    stream->read((VkImage*)pImage, sizeof(VkImage));
+    VkResult vkCreateImage_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
+    return vkCreateImage_VkResult_return;
+}
+
+void VkEncoder::vkDestroyImage(
+    VkDevice device,
+    VkImage image,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
+    stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkGetImageSubresourceLayout(
+    VkDevice device,
+    VkImage image,
+    const VkImageSubresource* pSubresource,
+    VkSubresourceLayout* pLayout)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        marshal_VkImageSubresource(countingStream, (const VkImageSubresource*)(pSubresource));
+        marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
+    }
+    uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
+    stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    marshal_VkImageSubresource(stream, (const VkImageSubresource*)(pSubresource));
+    marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
+    unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
+}
+
+VkResult VkEncoder::vkCreateImageView(
+    VkDevice device,
+    const VkImageViewCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkImageView* pView)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageViewCreateInfo(countingStream, (const VkImageViewCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkImageView*)pView, sizeof(VkImageView));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageViewCreateInfo(stream, (const VkImageViewCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkImageView*)pView, sizeof(VkImageView));
+    stream->read((VkImageView*)pView, sizeof(VkImageView));
+    VkResult vkCreateImageView_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
+    return vkCreateImageView_VkResult_return;
+}
+
+void VkEncoder::vkDestroyImageView(
+    VkDevice device,
+    VkImageView imageView,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkImageView*)&imageView, sizeof(VkImageView));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
+    stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkImageView*)&imageView, sizeof(VkImageView));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateShaderModule(
+    VkDevice device,
+    const VkShaderModuleCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkShaderModule* pShaderModule)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkShaderModuleCreateInfo(countingStream, (const VkShaderModuleCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkShaderModuleCreateInfo(stream, (const VkShaderModuleCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+    stream->read((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+    VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
+    return vkCreateShaderModule_VkResult_return;
+}
+
+void VkEncoder::vkDestroyShaderModule(
+    VkDevice device,
+    VkShaderModule shaderModule,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
+    stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreatePipelineCache(
+    VkDevice device,
+    const VkPipelineCacheCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkPipelineCache* pPipelineCache)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkPipelineCacheCreateInfo(countingStream, (const VkPipelineCacheCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkPipelineCacheCreateInfo(stream, (const VkPipelineCacheCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+    stream->read((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+    VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
+    stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
+    return vkCreatePipelineCache_VkResult_return;
+}
+
+void VkEncoder::vkDestroyPipelineCache(
+    VkDevice device,
+    VkPipelineCache pipelineCache,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
+    stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkGetPipelineCacheData(
+    VkDevice device,
+    VkPipelineCache pipelineCache,
+    size_t* pDataSize,
+    void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+        countingStream->write((size_t**)&pDataSize, sizeof(size_t*));
+        if (pDataSize)
+        {
+            countingStream->write((size_t*)pDataSize, sizeof(size_t));
+        }
+        countingStream->write((void**)&pData, sizeof(void*));
+        if (pData)
+        {
+            countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+        }
+    }
+    uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
+    stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+    stream->write((size_t**)&pDataSize, sizeof(size_t*));
+    if (pDataSize)
+    {
+        stream->write((size_t*)pDataSize, sizeof(size_t));
+    }
+    stream->write((void**)&pData, sizeof(void*));
+    if (pData)
+    {
+        stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+    }
+    size_t* check_pDataSize;
+    stream->read((size_t**)&check_pDataSize, sizeof(size_t*));
+    if (pDataSize)
+    {
+        if (!(check_pDataSize))
+        {
+            fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
+        }
+        stream->read((size_t*)pDataSize, sizeof(size_t));
+    }
+    void* check_pData;
+    stream->read((void**)&check_pData, sizeof(void*));
+    if (pData)
+    {
+        if (!(check_pData))
+        {
+            fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
+        }
+        stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+    }
+    VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
+    return vkGetPipelineCacheData_VkResult_return;
+}
+
+VkResult VkEncoder::vkMergePipelineCaches(
+    VkDevice device,
+    VkPipelineCache dstCache,
+    uint32_t srcCacheCount,
+    const VkPipelineCache* pSrcCaches)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
+        countingStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+        countingStream->write((const VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
+    stream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+    stream->write((const VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
+    VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
+    stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
+    return vkMergePipelineCaches_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateGraphicsPipelines(
+    VkDevice device,
+    VkPipelineCache pipelineCache,
+    uint32_t createInfoCount,
+    const VkGraphicsPipelineCreateInfo* pCreateInfos,
+    const VkAllocationCallbacks* pAllocator,
+    VkPipeline* pPipelines)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+        countingStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+        {
+            marshal_VkGraphicsPipelineCreateInfo(countingStream, (const VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
+        }
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+    stream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+    {
+        marshal_VkGraphicsPipelineCreateInfo(stream, (const VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
+    }
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    stream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
+    return vkCreateGraphicsPipelines_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateComputePipelines(
+    VkDevice device,
+    VkPipelineCache pipelineCache,
+    uint32_t createInfoCount,
+    const VkComputePipelineCreateInfo* pCreateInfos,
+    const VkAllocationCallbacks* pAllocator,
+    VkPipeline* pPipelines)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+        countingStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+        {
+            marshal_VkComputePipelineCreateInfo(countingStream, (const VkComputePipelineCreateInfo*)(pCreateInfos + i));
+        }
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+    stream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+    {
+        marshal_VkComputePipelineCreateInfo(stream, (const VkComputePipelineCreateInfo*)(pCreateInfos + i));
+    }
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    stream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+    VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
+    return vkCreateComputePipelines_VkResult_return;
+}
+
+void VkEncoder::vkDestroyPipeline(
+    VkDevice device,
+    VkPipeline pipeline,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
+    stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreatePipelineLayout(
+    VkDevice device,
+    const VkPipelineLayoutCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkPipelineLayout* pPipelineLayout)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkPipelineLayoutCreateInfo(countingStream, (const VkPipelineLayoutCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkPipelineLayoutCreateInfo(stream, (const VkPipelineLayoutCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+    stream->read((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+    VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
+    stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
+    return vkCreatePipelineLayout_VkResult_return;
+}
+
+void VkEncoder::vkDestroyPipelineLayout(
+    VkDevice device,
+    VkPipelineLayout pipelineLayout,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
+    stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateSampler(
+    VkDevice device,
+    const VkSamplerCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSampler* pSampler)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSamplerCreateInfo(countingStream, (const VkSamplerCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSampler*)pSampler, sizeof(VkSampler));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSamplerCreateInfo(stream, (const VkSamplerCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSampler*)pSampler, sizeof(VkSampler));
+    stream->read((VkSampler*)pSampler, sizeof(VkSampler));
+    VkResult vkCreateSampler_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
+    return vkCreateSampler_VkResult_return;
+}
+
+void VkEncoder::vkDestroySampler(
+    VkDevice device,
+    VkSampler sampler,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSampler*)&sampler, sizeof(VkSampler));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
+    stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSampler*)&sampler, sizeof(VkSampler));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateDescriptorSetLayout(
+    VkDevice device,
+    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDescriptorSetLayout* pSetLayout)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorSetLayoutCreateInfo(stream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+    stream->read((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+    VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
+    return vkCreateDescriptorSetLayout_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDescriptorSetLayout(
+    VkDevice device,
+    VkDescriptorSetLayout descriptorSetLayout,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
+    stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateDescriptorPool(
+    VkDevice device,
+    const VkDescriptorPoolCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDescriptorPool* pDescriptorPool)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorPoolCreateInfo(countingStream, (const VkDescriptorPoolCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorPoolCreateInfo(stream, (const VkDescriptorPoolCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+    stream->read((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+    VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
+    return vkCreateDescriptorPool_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDescriptorPool(
+    VkDevice device,
+    VkDescriptorPool descriptorPool,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
+    stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkResetDescriptorPool(
+    VkDevice device,
+    VkDescriptorPool descriptorPool,
+    VkDescriptorPoolResetFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+        countingStream->write((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
+    }
+    uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
+    stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+    stream->write((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
+    VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
+    stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
+    return vkResetDescriptorPool_VkResult_return;
+}
+
+VkResult VkEncoder::vkAllocateDescriptorSets(
+    VkDevice device,
+    const VkDescriptorSetAllocateInfo* pAllocateInfo,
+    VkDescriptorSet* pDescriptorSets)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorSetAllocateInfo(countingStream, (const VkDescriptorSetAllocateInfo*)(pAllocateInfo));
+        countingStream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorSetAllocateInfo(stream, (const VkDescriptorSetAllocateInfo*)(pAllocateInfo));
+    stream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+    stream->read((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+    VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
+    stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
+    return vkAllocateDescriptorSets_VkResult_return;
+}
+
+VkResult VkEncoder::vkFreeDescriptorSets(
+    VkDevice device,
+    VkDescriptorPool descriptorPool,
+    uint32_t descriptorSetCount,
+    const VkDescriptorSet* pDescriptorSets)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+        countingStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+        countingStream->write((const VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
+        if (pDescriptorSets)
+        {
+            countingStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+        }
+    }
+    uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
+    stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
+    stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+    stream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+    stream->write((const VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
+    if (pDescriptorSets)
+    {
+        stream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+    }
+    VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
+    stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
+    return vkFreeDescriptorSets_VkResult_return;
+}
+
+void VkEncoder::vkUpdateDescriptorSets(
+    VkDevice device,
+    uint32_t descriptorWriteCount,
+    const VkWriteDescriptorSet* pDescriptorWrites,
+    uint32_t descriptorCopyCount,
+    const VkCopyDescriptorSet* pDescriptorCopies)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+        {
+            marshal_VkWriteDescriptorSet(countingStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+        }
+        countingStream->write((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
+        {
+            marshal_VkCopyDescriptorSet(countingStream, (const VkCopyDescriptorSet*)(pDescriptorCopies + i));
+        }
+    }
+    uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
+    stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
+    stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+    {
+        marshal_VkWriteDescriptorSet(stream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+    }
+    stream->write((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
+    {
+        marshal_VkCopyDescriptorSet(stream, (const VkCopyDescriptorSet*)(pDescriptorCopies + i));
+    }
+}
+
+VkResult VkEncoder::vkCreateFramebuffer(
+    VkDevice device,
+    const VkFramebufferCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkFramebuffer* pFramebuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkFramebufferCreateInfo(countingStream, (const VkFramebufferCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkFramebufferCreateInfo(stream, (const VkFramebufferCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+    stream->read((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+    VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
+    return vkCreateFramebuffer_VkResult_return;
+}
+
+void VkEncoder::vkDestroyFramebuffer(
+    VkDevice device,
+    VkFramebuffer framebuffer,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
+    stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateRenderPass(
+    VkDevice device,
+    const VkRenderPassCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkRenderPass* pRenderPass)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkRenderPassCreateInfo(countingStream, (const VkRenderPassCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkRenderPassCreateInfo(stream, (const VkRenderPassCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    stream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
+    return vkCreateRenderPass_VkResult_return;
+}
+
+void VkEncoder::vkDestroyRenderPass(
+    VkDevice device,
+    VkRenderPass renderPass,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
+    stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkGetRenderAreaGranularity(
+    VkDevice device,
+    VkRenderPass renderPass,
+    VkExtent2D* pGranularity)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+        marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
+    }
+    uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
+    stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+    marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
+    unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
+}
+
+VkResult VkEncoder::vkCreateCommandPool(
+    VkDevice device,
+    const VkCommandPoolCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkCommandPool* pCommandPool)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkCommandPoolCreateInfo(countingStream, (const VkCommandPoolCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkCommandPoolCreateInfo(stream, (const VkCommandPoolCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+    stream->read((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+    VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
+    return vkCreateCommandPool_VkResult_return;
+}
+
+void VkEncoder::vkDestroyCommandPool(
+    VkDevice device,
+    VkCommandPool commandPool,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
+    stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkResetCommandPool(
+    VkDevice device,
+    VkCommandPool commandPool,
+    VkCommandPoolResetFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+        countingStream->write((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
+    }
+    uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
+    stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+    stream->write((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
+    VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
+    stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
+    return vkResetCommandPool_VkResult_return;
+}
+
+VkResult VkEncoder::vkAllocateCommandBuffers(
+    VkDevice device,
+    const VkCommandBufferAllocateInfo* pAllocateInfo,
+    VkCommandBuffer* pCommandBuffers)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkCommandBufferAllocateInfo(countingStream, (const VkCommandBufferAllocateInfo*)(pAllocateInfo));
+        countingStream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkCommandBufferAllocateInfo(stream, (const VkCommandBufferAllocateInfo*)(pAllocateInfo));
+    stream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+    stream->read((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+    VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
+    stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
+    return vkAllocateCommandBuffers_VkResult_return;
+}
+
+void VkEncoder::vkFreeCommandBuffers(
+    VkDevice device,
+    VkCommandPool commandPool,
+    uint32_t commandBufferCount,
+    const VkCommandBuffer* pCommandBuffers)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+        countingStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+        countingStream->write((const VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
+        if (pCommandBuffers)
+        {
+            countingStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+        }
+    }
+    uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
+    stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
+    stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+    stream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+    stream->write((const VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
+    if (pCommandBuffers)
+    {
+        stream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+    }
+}
+
+VkResult VkEncoder::vkBeginCommandBuffer(
+    VkCommandBuffer commandBuffer,
+    const VkCommandBufferBeginInfo* pBeginInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkCommandBufferBeginInfo(countingStream, (const VkCommandBufferBeginInfo*)(pBeginInfo));
+    }
+    uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
+    stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkCommandBufferBeginInfo(stream, (const VkCommandBufferBeginInfo*)(pBeginInfo));
+    VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
+    stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
+    return vkBeginCommandBuffer_VkResult_return;
+}
+
+VkResult VkEncoder::vkEndCommandBuffer(
+    VkCommandBuffer commandBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
+    stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
+    return vkEndCommandBuffer_VkResult_return;
+}
+
+VkResult VkEncoder::vkResetCommandBuffer(
+    VkCommandBuffer commandBuffer,
+    VkCommandBufferResetFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
+    }
+    uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
+    stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
+    VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
+    stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
+    return vkResetCommandBuffer_VkResult_return;
+}
+
+void VkEncoder::vkCmdBindPipeline(
+    VkCommandBuffer commandBuffer,
+    VkPipelineBindPoint pipelineBindPoint,
+    VkPipeline pipeline)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+        countingStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+    stream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+}
+
+void VkEncoder::vkCmdSetViewport(
+    VkCommandBuffer commandBuffer,
+    uint32_t firstViewport,
+    uint32_t viewportCount,
+    const VkViewport* pViewports)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+        {
+            marshal_VkViewport(countingStream, (const VkViewport*)(pViewports + i));
+        }
+    }
+    uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
+    stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+    stream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+    {
+        marshal_VkViewport(stream, (const VkViewport*)(pViewports + i));
+    }
+}
+
+void VkEncoder::vkCmdSetScissor(
+    VkCommandBuffer commandBuffer,
+    uint32_t firstScissor,
+    uint32_t scissorCount,
+    const VkRect2D* pScissors)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&firstScissor, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&scissorCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
+        {
+            marshal_VkRect2D(countingStream, (const VkRect2D*)(pScissors + i));
+        }
+    }
+    uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
+    stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&firstScissor, sizeof(uint32_t));
+    stream->write((uint32_t*)&scissorCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
+    {
+        marshal_VkRect2D(stream, (const VkRect2D*)(pScissors + i));
+    }
+}
+
+void VkEncoder::vkCmdSetLineWidth(
+    VkCommandBuffer commandBuffer,
+    float lineWidth)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((float*)&lineWidth, sizeof(float));
+    }
+    uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
+    stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((float*)&lineWidth, sizeof(float));
+}
+
+void VkEncoder::vkCmdSetDepthBias(
+    VkCommandBuffer commandBuffer,
+    float depthBiasConstantFactor,
+    float depthBiasClamp,
+    float depthBiasSlopeFactor)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((float*)&depthBiasConstantFactor, sizeof(float));
+        countingStream->write((float*)&depthBiasClamp, sizeof(float));
+        countingStream->write((float*)&depthBiasSlopeFactor, sizeof(float));
+    }
+    uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
+    stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((float*)&depthBiasConstantFactor, sizeof(float));
+    stream->write((float*)&depthBiasClamp, sizeof(float));
+    stream->write((float*)&depthBiasSlopeFactor, sizeof(float));
+}
+
+void VkEncoder::vkCmdSetBlendConstants(
+    VkCommandBuffer commandBuffer,
+    const float blendConstants)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((const float*)&blendConstants, 4 * sizeof(const float));
+    }
+    uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
+    stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((const float*)&blendConstants, 4 * sizeof(const float));
+}
+
+void VkEncoder::vkCmdSetDepthBounds(
+    VkCommandBuffer commandBuffer,
+    float minDepthBounds,
+    float maxDepthBounds)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((float*)&minDepthBounds, sizeof(float));
+        countingStream->write((float*)&maxDepthBounds, sizeof(float));
+    }
+    uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
+    stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((float*)&minDepthBounds, sizeof(float));
+    stream->write((float*)&maxDepthBounds, sizeof(float));
+}
+
+void VkEncoder::vkCmdSetStencilCompareMask(
+    VkCommandBuffer commandBuffer,
+    VkStencilFaceFlags faceMask,
+    uint32_t compareMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+        countingStream->write((uint32_t*)&compareMask, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
+    stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+    stream->write((uint32_t*)&compareMask, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdSetStencilWriteMask(
+    VkCommandBuffer commandBuffer,
+    VkStencilFaceFlags faceMask,
+    uint32_t writeMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+        countingStream->write((uint32_t*)&writeMask, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
+    stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+    stream->write((uint32_t*)&writeMask, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdSetStencilReference(
+    VkCommandBuffer commandBuffer,
+    VkStencilFaceFlags faceMask,
+    uint32_t reference)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+        countingStream->write((uint32_t*)&reference, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
+    stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+    stream->write((uint32_t*)&reference, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdBindDescriptorSets(
+    VkCommandBuffer commandBuffer,
+    VkPipelineBindPoint pipelineBindPoint,
+    VkPipelineLayout layout,
+    uint32_t firstSet,
+    uint32_t descriptorSetCount,
+    const VkDescriptorSet* pDescriptorSets,
+    uint32_t dynamicOffsetCount,
+    const uint32_t* pDynamicOffsets)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+        countingStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+        countingStream->write((uint32_t*)&firstSet, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+        countingStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+        countingStream->write((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
+        countingStream->write((const uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+    }
+    uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
+    stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+    stream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+    stream->write((uint32_t*)&firstSet, sizeof(uint32_t));
+    stream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+    stream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+    stream->write((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
+    stream->write((const uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+}
+
+void VkEncoder::vkCmdBindIndexBuffer(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    VkIndexType indexType)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkIndexType*)&indexType, sizeof(VkIndexType));
+    }
+    uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
+    stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkIndexType*)&indexType, sizeof(VkIndexType));
+}
+
+void VkEncoder::vkCmdBindVertexBuffers(
+    VkCommandBuffer commandBuffer,
+    uint32_t firstBinding,
+    uint32_t bindingCount,
+    const VkBuffer* pBuffers,
+    const VkDeviceSize* pOffsets)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&firstBinding, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&bindingCount, sizeof(uint32_t));
+        countingStream->write((const VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
+        countingStream->write((const VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
+    }
+    uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
+    stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&firstBinding, sizeof(uint32_t));
+    stream->write((uint32_t*)&bindingCount, sizeof(uint32_t));
+    stream->write((const VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
+    stream->write((const VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
+}
+
+void VkEncoder::vkCmdDraw(
+    VkCommandBuffer commandBuffer,
+    uint32_t vertexCount,
+    uint32_t instanceCount,
+    uint32_t firstVertex,
+    uint32_t firstInstance)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&vertexCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&firstVertex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
+    stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&vertexCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&firstVertex, sizeof(uint32_t));
+    stream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDrawIndexed(
+    VkCommandBuffer commandBuffer,
+    uint32_t indexCount,
+    uint32_t instanceCount,
+    uint32_t firstIndex,
+    int32_t vertexOffset,
+    uint32_t firstInstance)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&indexCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&firstIndex, sizeof(uint32_t));
+        countingStream->write((int32_t*)&vertexOffset, sizeof(int32_t));
+        countingStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
+    stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&indexCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&firstIndex, sizeof(uint32_t));
+    stream->write((int32_t*)&vertexOffset, sizeof(int32_t));
+    stream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDrawIndirect(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    uint32_t drawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
+    stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDrawIndexedIndirect(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    uint32_t drawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
+    stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDispatch(
+    VkCommandBuffer commandBuffer,
+    uint32_t groupCountX,
+    uint32_t groupCountY,
+    uint32_t groupCountZ)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
+    stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDispatchIndirect(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    }
+    uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
+    stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+}
+
+void VkEncoder::vkCmdCopyBuffer(
+    VkCommandBuffer commandBuffer,
+    VkBuffer srcBuffer,
+    VkBuffer dstBuffer,
+    uint32_t regionCount,
+    const VkBufferCopy* pRegions)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkBufferCopy(countingStream, (const VkBufferCopy*)(pRegions + i));
+        }
+    }
+    uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
+    stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkBufferCopy(stream, (const VkBufferCopy*)(pRegions + i));
+    }
+}
+
+void VkEncoder::vkCmdCopyImage(
+    VkCommandBuffer commandBuffer,
+    VkImage srcImage,
+    VkImageLayout srcImageLayout,
+    VkImage dstImage,
+    VkImageLayout dstImageLayout,
+    uint32_t regionCount,
+    const VkImageCopy* pRegions)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&srcImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+        countingStream->write((VkImage*)&dstImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkImageCopy(countingStream, (const VkImageCopy*)(pRegions + i));
+        }
+    }
+    uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
+    stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&srcImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+    stream->write((VkImage*)&dstImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkImageCopy(stream, (const VkImageCopy*)(pRegions + i));
+    }
+}
+
+void VkEncoder::vkCmdBlitImage(
+    VkCommandBuffer commandBuffer,
+    VkImage srcImage,
+    VkImageLayout srcImageLayout,
+    VkImage dstImage,
+    VkImageLayout dstImageLayout,
+    uint32_t regionCount,
+    const VkImageBlit* pRegions,
+    VkFilter filter)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&srcImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+        countingStream->write((VkImage*)&dstImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkImageBlit(countingStream, (const VkImageBlit*)(pRegions + i));
+        }
+        countingStream->write((VkFilter*)&filter, sizeof(VkFilter));
+    }
+    uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
+    stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&srcImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+    stream->write((VkImage*)&dstImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkImageBlit(stream, (const VkImageBlit*)(pRegions + i));
+    }
+    stream->write((VkFilter*)&filter, sizeof(VkFilter));
+}
+
+void VkEncoder::vkCmdCopyBufferToImage(
+    VkCommandBuffer commandBuffer,
+    VkBuffer srcBuffer,
+    VkImage dstImage,
+    VkImageLayout dstImageLayout,
+    uint32_t regionCount,
+    const VkBufferImageCopy* pRegions)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+        countingStream->write((VkImage*)&dstImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkBufferImageCopy(countingStream, (const VkBufferImageCopy*)(pRegions + i));
+        }
+    }
+    uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
+    stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+    stream->write((VkImage*)&dstImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkBufferImageCopy(stream, (const VkBufferImageCopy*)(pRegions + i));
+    }
+}
+
+void VkEncoder::vkCmdCopyImageToBuffer(
+    VkCommandBuffer commandBuffer,
+    VkImage srcImage,
+    VkImageLayout srcImageLayout,
+    VkBuffer dstBuffer,
+    uint32_t regionCount,
+    const VkBufferImageCopy* pRegions)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&srcImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkBufferImageCopy(countingStream, (const VkBufferImageCopy*)(pRegions + i));
+        }
+    }
+    uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
+    stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&srcImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkBufferImageCopy(stream, (const VkBufferImageCopy*)(pRegions + i));
+    }
+}
+
+void VkEncoder::vkCmdUpdateBuffer(
+    VkCommandBuffer commandBuffer,
+    VkBuffer dstBuffer,
+    VkDeviceSize dstOffset,
+    VkDeviceSize dataSize,
+    const void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+        countingStream->write((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
+        countingStream->write((const void*)pData, ((dataSize)) * sizeof(const uint8_t));
+    }
+    uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
+    stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+    stream->write((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
+    stream->write((const void*)pData, ((dataSize)) * sizeof(const uint8_t));
+}
+
+void VkEncoder::vkCmdFillBuffer(
+    VkCommandBuffer commandBuffer,
+    VkBuffer dstBuffer,
+    VkDeviceSize dstOffset,
+    VkDeviceSize size,
+    uint32_t data)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+        countingStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&data, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
+    stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+    stream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&data, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdClearColorImage(
+    VkCommandBuffer commandBuffer,
+    VkImage image,
+    VkImageLayout imageLayout,
+    const VkClearColorValue* pColor,
+    uint32_t rangeCount,
+    const VkImageSubresourceRange* pRanges)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+        marshal_VkClearColorValue(countingStream, (const VkClearColorValue*)(pColor));
+        countingStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+        {
+            marshal_VkImageSubresourceRange(countingStream, (const VkImageSubresourceRange*)(pRanges + i));
+        }
+    }
+    uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
+    stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    stream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+    marshal_VkClearColorValue(stream, (const VkClearColorValue*)(pColor));
+    stream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+    {
+        marshal_VkImageSubresourceRange(stream, (const VkImageSubresourceRange*)(pRanges + i));
+    }
+}
+
+void VkEncoder::vkCmdClearDepthStencilImage(
+    VkCommandBuffer commandBuffer,
+    VkImage image,
+    VkImageLayout imageLayout,
+    const VkClearDepthStencilValue* pDepthStencil,
+    uint32_t rangeCount,
+    const VkImageSubresourceRange* pRanges)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&image, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+        marshal_VkClearDepthStencilValue(countingStream, (const VkClearDepthStencilValue*)(pDepthStencil));
+        countingStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+        {
+            marshal_VkImageSubresourceRange(countingStream, (const VkImageSubresourceRange*)(pRanges + i));
+        }
+    }
+    uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
+    stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&image, sizeof(VkImage));
+    stream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+    marshal_VkClearDepthStencilValue(stream, (const VkClearDepthStencilValue*)(pDepthStencil));
+    stream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+    {
+        marshal_VkImageSubresourceRange(stream, (const VkImageSubresourceRange*)(pRanges + i));
+    }
+}
+
+void VkEncoder::vkCmdClearAttachments(
+    VkCommandBuffer commandBuffer,
+    uint32_t attachmentCount,
+    const VkClearAttachment* pAttachments,
+    uint32_t rectCount,
+    const VkClearRect* pRects)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&attachmentCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
+        {
+            marshal_VkClearAttachment(countingStream, (const VkClearAttachment*)(pAttachments + i));
+        }
+        countingStream->write((uint32_t*)&rectCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
+        {
+            marshal_VkClearRect(countingStream, (const VkClearRect*)(pRects + i));
+        }
+    }
+    uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
+    stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&attachmentCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
+    {
+        marshal_VkClearAttachment(stream, (const VkClearAttachment*)(pAttachments + i));
+    }
+    stream->write((uint32_t*)&rectCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
+    {
+        marshal_VkClearRect(stream, (const VkClearRect*)(pRects + i));
+    }
+}
+
+void VkEncoder::vkCmdResolveImage(
+    VkCommandBuffer commandBuffer,
+    VkImage srcImage,
+    VkImageLayout srcImageLayout,
+    VkImage dstImage,
+    VkImageLayout dstImageLayout,
+    uint32_t regionCount,
+    const VkImageResolve* pRegions)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkImage*)&srcImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+        countingStream->write((VkImage*)&dstImage, sizeof(VkImage));
+        countingStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+        countingStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+        {
+            marshal_VkImageResolve(countingStream, (const VkImageResolve*)(pRegions + i));
+        }
+    }
+    uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
+    stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkImage*)&srcImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+    stream->write((VkImage*)&dstImage, sizeof(VkImage));
+    stream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+    stream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+    {
+        marshal_VkImageResolve(stream, (const VkImageResolve*)(pRegions + i));
+    }
+}
+
+void VkEncoder::vkCmdSetEvent(
+    VkCommandBuffer commandBuffer,
+    VkEvent event,
+    VkPipelineStageFlags stageMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+        countingStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+    }
+    uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
+    stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    stream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void VkEncoder::vkCmdResetEvent(
+    VkCommandBuffer commandBuffer,
+    VkEvent event,
+    VkPipelineStageFlags stageMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkEvent*)&event, sizeof(VkEvent));
+        countingStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+    }
+    uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
+    stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkEvent*)&event, sizeof(VkEvent));
+    stream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void VkEncoder::vkCmdWaitEvents(
+    VkCommandBuffer commandBuffer,
+    uint32_t eventCount,
+    const VkEvent* pEvents,
+    VkPipelineStageFlags srcStageMask,
+    VkPipelineStageFlags dstStageMask,
+    uint32_t memoryBarrierCount,
+    const VkMemoryBarrier* pMemoryBarriers,
+    uint32_t bufferMemoryBarrierCount,
+    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+    uint32_t imageMemoryBarrierCount,
+    const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&eventCount, sizeof(uint32_t));
+        countingStream->write((const VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
+        countingStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+        countingStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+        countingStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+        {
+            marshal_VkMemoryBarrier(countingStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+        }
+        countingStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+        {
+            marshal_VkBufferMemoryBarrier(countingStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+        }
+        countingStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+        {
+            marshal_VkImageMemoryBarrier(countingStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+        }
+    }
+    uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
+    stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&eventCount, sizeof(uint32_t));
+    stream->write((const VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
+    stream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+    stream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+    stream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+    {
+        marshal_VkMemoryBarrier(stream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+    }
+    stream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+    {
+        marshal_VkBufferMemoryBarrier(stream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+    }
+    stream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+    {
+        marshal_VkImageMemoryBarrier(stream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+    }
+}
+
+void VkEncoder::vkCmdPipelineBarrier(
+    VkCommandBuffer commandBuffer,
+    VkPipelineStageFlags srcStageMask,
+    VkPipelineStageFlags dstStageMask,
+    VkDependencyFlags dependencyFlags,
+    uint32_t memoryBarrierCount,
+    const VkMemoryBarrier* pMemoryBarriers,
+    uint32_t bufferMemoryBarrierCount,
+    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+    uint32_t imageMemoryBarrierCount,
+    const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+        countingStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+        countingStream->write((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
+        countingStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+        {
+            marshal_VkMemoryBarrier(countingStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+        }
+        countingStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+        {
+            marshal_VkBufferMemoryBarrier(countingStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+        }
+        countingStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+        {
+            marshal_VkImageMemoryBarrier(countingStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+        }
+    }
+    uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
+    stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+    stream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+    stream->write((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
+    stream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+    {
+        marshal_VkMemoryBarrier(stream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+    }
+    stream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+    {
+        marshal_VkBufferMemoryBarrier(stream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+    }
+    stream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+    {
+        marshal_VkImageMemoryBarrier(stream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+    }
+}
+
+void VkEncoder::vkCmdBeginQuery(
+    VkCommandBuffer commandBuffer,
+    VkQueryPool queryPool,
+    uint32_t query,
+    VkQueryControlFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&query, sizeof(uint32_t));
+        countingStream->write((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
+    }
+    uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
+    stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&query, sizeof(uint32_t));
+    stream->write((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
+}
+
+void VkEncoder::vkCmdEndQuery(
+    VkCommandBuffer commandBuffer,
+    VkQueryPool queryPool,
+    uint32_t query)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&query, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
+    stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdResetQueryPool(
+    VkCommandBuffer commandBuffer,
+    VkQueryPool queryPool,
+    uint32_t firstQuery,
+    uint32_t queryCount)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
+    stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+    stream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdWriteTimestamp(
+    VkCommandBuffer commandBuffer,
+    VkPipelineStageFlagBits pipelineStage,
+    VkQueryPool queryPool,
+    uint32_t query)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&query, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
+    stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdCopyQueryPoolResults(
+    VkCommandBuffer commandBuffer,
+    VkQueryPool queryPool,
+    uint32_t firstQuery,
+    uint32_t queryCount,
+    VkBuffer dstBuffer,
+    VkDeviceSize dstOffset,
+    VkDeviceSize stride,
+    VkQueryResultFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+        countingStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+        countingStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+        countingStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+    }
+    uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
+    stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+    stream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+    stream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+    stream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+    stream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+}
+
+void VkEncoder::vkCmdPushConstants(
+    VkCommandBuffer commandBuffer,
+    VkPipelineLayout layout,
+    VkShaderStageFlags stageFlags,
+    uint32_t offset,
+    uint32_t size,
+    const void* pValues)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+        countingStream->write((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
+        countingStream->write((uint32_t*)&offset, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&size, sizeof(uint32_t));
+        countingStream->write((const void*)pValues, ((size)) * sizeof(const uint8_t));
+    }
+    uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
+    stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+    stream->write((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
+    stream->write((uint32_t*)&offset, sizeof(uint32_t));
+    stream->write((uint32_t*)&size, sizeof(uint32_t));
+    stream->write((const void*)pValues, ((size)) * sizeof(const uint8_t));
+}
+
+void VkEncoder::vkCmdBeginRenderPass(
+    VkCommandBuffer commandBuffer,
+    const VkRenderPassBeginInfo* pRenderPassBegin,
+    VkSubpassContents contents)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkRenderPassBeginInfo(countingStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+        countingStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+    }
+    uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
+    stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkRenderPassBeginInfo(stream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+    stream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void VkEncoder::vkCmdNextSubpass(
+    VkCommandBuffer commandBuffer,
+    VkSubpassContents contents)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+    }
+    uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
+    stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void VkEncoder::vkCmdEndRenderPass(
+    VkCommandBuffer commandBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void VkEncoder::vkCmdExecuteCommands(
+    VkCommandBuffer commandBuffer,
+    uint32_t commandBufferCount,
+    const VkCommandBuffer* pCommandBuffers)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+        countingStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+    stream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+}
+
+#endif
+#ifdef VK_VERSION_1_1
+VkResult VkEncoder::vkEnumerateInstanceVersion(
+    uint32_t* pApiVersion)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion;
+    stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t));
+    stream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
+    stream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
+    VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
+    return vkEnumerateInstanceVersion_VkResult_return;
+}
+
+VkResult VkEncoder::vkBindBufferMemory2(
+    VkDevice device,
+    uint32_t bindInfoCount,
+    const VkBindBufferMemoryInfo* pBindInfos)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+        {
+            marshal_VkBindBufferMemoryInfo(countingStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+        }
+    }
+    uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
+    stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+    {
+        marshal_VkBindBufferMemoryInfo(stream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+    }
+    VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
+    stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
+    return vkBindBufferMemory2_VkResult_return;
+}
+
+VkResult VkEncoder::vkBindImageMemory2(
+    VkDevice device,
+    uint32_t bindInfoCount,
+    const VkBindImageMemoryInfo* pBindInfos)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+        {
+            marshal_VkBindImageMemoryInfo(countingStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+        }
+    }
+    uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
+    stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+    {
+        marshal_VkBindImageMemoryInfo(stream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+    }
+    VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
+    stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
+    return vkBindImageMemory2_VkResult_return;
+}
+
+void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
+    VkDevice device,
+    uint32_t heapIndex,
+    uint32_t localDeviceIndex,
+    uint32_t remoteDeviceIndex,
+    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+        countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+    }
+    uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
+    stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+    stream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+    stream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+    stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+    stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void VkEncoder::vkCmdSetDeviceMask(
+    VkCommandBuffer commandBuffer,
+    uint32_t deviceMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
+    stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDispatchBase(
+    VkCommandBuffer commandBuffer,
+    uint32_t baseGroupX,
+    uint32_t baseGroupY,
+    uint32_t baseGroupZ,
+    uint32_t groupCountX,
+    uint32_t groupCountY,
+    uint32_t groupCountZ)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
+    stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+    stream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+    stream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
+    VkInstance instance,
+    uint32_t* pPhysicalDeviceGroupCount,
+    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((uint32_t**)&pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+        if (pPhysicalDeviceGroupCount)
+        {
+            countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkPhysicalDeviceGroupProperties**)&pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+        if (pPhysicalDeviceGroupProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+            {
+                marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
+    stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((uint32_t**)&pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceGroupCount)
+    {
+        stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+    }
+    stream->write((VkPhysicalDeviceGroupProperties**)&pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+    if (pPhysicalDeviceGroupProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+        {
+            marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        }
+    }
+    uint32_t* check_pPhysicalDeviceGroupCount;
+    stream->read((uint32_t**)&check_pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceGroupCount)
+    {
+        if (!(check_pPhysicalDeviceGroupCount))
+        {
+            fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+    }
+    VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
+    stream->read((VkPhysicalDeviceGroupProperties**)&check_pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+    if (pPhysicalDeviceGroupProperties)
+    {
+        if (!(check_pPhysicalDeviceGroupProperties))
+        {
+            fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+        {
+            unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        }
+    }
+    VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
+    return vkEnumeratePhysicalDeviceGroups_VkResult_return;
+}
+
+void VkEncoder::vkGetImageMemoryRequirements2(
+    VkDevice device,
+    const VkImageMemoryRequirementsInfo2* pInfo,
+    VkMemoryRequirements2* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageMemoryRequirementsInfo2(countingStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+        marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
+    stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageMemoryRequirementsInfo2(stream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+    marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetBufferMemoryRequirements2(
+    VkDevice device,
+    const VkBufferMemoryRequirementsInfo2* pInfo,
+    VkMemoryRequirements2* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkBufferMemoryRequirementsInfo2(countingStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+        marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
+    stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkBufferMemoryRequirementsInfo2(stream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+    marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetImageSparseMemoryRequirements2(
+    VkDevice device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    uint32_t* pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+        countingStream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+        if (pSparseMemoryRequirementCount)
+        {
+            countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageMemoryRequirements2**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+        if (pSparseMemoryRequirements)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+            {
+                marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
+    stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageSparseMemoryRequirementsInfo2(stream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+    stream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageMemoryRequirements2**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+    if (pSparseMemoryRequirements)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+        }
+    }
+    uint32_t* check_pSparseMemoryRequirementCount;
+    stream->read((uint32_t**)&check_pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        if (!(check_pSparseMemoryRequirementCount))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
+    stream->read((VkSparseImageMemoryRequirements2**)&check_pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+    if (pSparseMemoryRequirements)
+    {
+        if (!(check_pSparseMemoryRequirements))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+        }
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceFeatures2(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceFeatures2* pFeatures)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
+    stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void VkEncoder::vkGetPhysicalDeviceProperties2(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceProperties2* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
+    unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkFormatProperties2* pFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
+    unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+    VkImageFormatProperties2* pImageFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+        marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceImageFormatInfo2(stream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+    marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
+}
+
+void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+        if (pQueueFamilyPropertyCount)
+        {
+            countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkQueueFamilyProperties2**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+        if (pQueueFamilyProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+            {
+                marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkQueueFamilyProperties2**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+    if (pQueueFamilyProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+        }
+    }
+    uint32_t* check_pQueueFamilyPropertyCount;
+    stream->read((uint32_t**)&check_pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        if (!(check_pQueueFamilyPropertyCount))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    VkQueueFamilyProperties2* check_pQueueFamilyProperties;
+    stream->read((VkQueueFamilyProperties2**)&check_pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+    if (pQueueFamilyProperties)
+    {
+        if (!(check_pQueueFamilyProperties))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+        }
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    uint32_t* pPropertyCount,
+    VkSparseImageFormatProperties2* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageFormatProperties2**)&pProperties, sizeof(VkSparseImageFormatProperties2*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
+    stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageFormatProperties2**)&pProperties, sizeof(VkSparseImageFormatProperties2*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkSparseImageFormatProperties2* check_pProperties;
+    stream->read((VkSparseImageFormatProperties2**)&check_pProperties, sizeof(VkSparseImageFormatProperties2*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        }
+    }
+}
+
+void VkEncoder::vkTrimCommandPool(
+    VkDevice device,
+    VkCommandPool commandPool,
+    VkCommandPoolTrimFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+        countingStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+    }
+    uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
+    stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
+    stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+    stream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+void VkEncoder::vkGetDeviceQueue2(
+    VkDevice device,
+    const VkDeviceQueueInfo2* pQueueInfo,
+    VkQueue* pQueue)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDeviceQueueInfo2(countingStream, (const VkDeviceQueueInfo2*)(pQueueInfo));
+        countingStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDeviceQueueInfo2(stream, (const VkDeviceQueueInfo2*)(pQueueInfo));
+    stream->write((VkQueue*)pQueue, sizeof(VkQueue));
+    stream->read((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
+    VkDevice device,
+    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSamplerYcbcrConversionCreateInfo(stream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    stream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
+    return vkCreateSamplerYcbcrConversion_VkResult_return;
+}
+
+void VkEncoder::vkDestroySamplerYcbcrConversion(
+    VkDevice device,
+    VkSamplerYcbcrConversion ycbcrConversion,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
+    stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
+    VkDevice device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
+    return vkCreateDescriptorUpdateTemplate_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDescriptorUpdateTemplate(
+    VkDevice device,
+    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
+    stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkUpdateDescriptorSetWithTemplate(
+    VkDevice device,
+    VkDescriptorSet descriptorSet,
+    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+    const void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+        countingStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        countingStream->write((const void**)&pData, sizeof(const void*));
+        if (pData)
+        {
+            countingStream->write((const void*)pData, sizeof(const uint8_t));
+        }
+    }
+    uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
+    stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
+    stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+    stream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->write((const void**)&pData, sizeof(const void*));
+    if (pData)
+    {
+        stream->write((const void*)pData, sizeof(const uint8_t));
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+    VkExternalBufferProperties* pExternalBufferProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+        marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalBufferInfo(stream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+    marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+    VkExternalFenceProperties* pExternalFenceProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+        marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalFenceInfo(stream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+    marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+        marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+    marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+    unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+void VkEncoder::vkGetDescriptorSetLayoutSupport(
+    VkDevice device,
+    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+    VkDescriptorSetLayoutSupport* pSupport)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+        marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    }
+    uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
+    stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorSetLayoutCreateInfo(stream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+    marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+#endif
+#ifdef VK_KHR_surface
+void VkEncoder::vkDestroySurfaceKHR(
+    VkInstance instance,
+    VkSurfaceKHR surface,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
+    stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex,
+    VkSurfaceKHR surface,
+    VkBool32* pSupported)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((VkBool32*)pSupported, sizeof(VkBool32));
+    stream->read((VkBool32*)pSupported, sizeof(VkBool32));
+    VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+    VkPhysicalDevice physicalDevice,
+    VkSurfaceKHR surface,
+    VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
+    unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
+    VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
+    VkPhysicalDevice physicalDevice,
+    VkSurfaceKHR surface,
+    uint32_t* pSurfaceFormatCount,
+    VkSurfaceFormatKHR* pSurfaceFormats)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((uint32_t**)&pSurfaceFormatCount, sizeof(uint32_t*));
+        if (pSurfaceFormatCount)
+        {
+            countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSurfaceFormatKHR**)&pSurfaceFormats, sizeof(VkSurfaceFormatKHR*));
+        if (pSurfaceFormats)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+            {
+                marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((uint32_t**)&pSurfaceFormatCount, sizeof(uint32_t*));
+    if (pSurfaceFormatCount)
+    {
+        stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+    }
+    stream->write((VkSurfaceFormatKHR**)&pSurfaceFormats, sizeof(VkSurfaceFormatKHR*));
+    if (pSurfaceFormats)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+        {
+            marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
+        }
+    }
+    uint32_t* check_pSurfaceFormatCount;
+    stream->read((uint32_t**)&check_pSurfaceFormatCount, sizeof(uint32_t*));
+    if (pSurfaceFormatCount)
+    {
+        if (!(check_pSurfaceFormatCount))
+        {
+            fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+    }
+    VkSurfaceFormatKHR* check_pSurfaceFormats;
+    stream->read((VkSurfaceFormatKHR**)&check_pSurfaceFormats, sizeof(VkSurfaceFormatKHR*));
+    if (pSurfaceFormats)
+    {
+        if (!(check_pSurfaceFormats))
+        {
+            fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+        {
+            unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
+    VkPhysicalDevice physicalDevice,
+    VkSurfaceKHR surface,
+    uint32_t* pPresentModeCount,
+    VkPresentModeKHR* pPresentModes)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((uint32_t**)&pPresentModeCount, sizeof(uint32_t*));
+        if (pPresentModeCount)
+        {
+            countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkPresentModeKHR**)&pPresentModes, sizeof(VkPresentModeKHR*));
+        if (pPresentModes)
+        {
+            countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((uint32_t**)&pPresentModeCount, sizeof(uint32_t*));
+    if (pPresentModeCount)
+    {
+        stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
+    }
+    stream->write((VkPresentModeKHR**)&pPresentModes, sizeof(VkPresentModeKHR*));
+    if (pPresentModes)
+    {
+        stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
+    }
+    uint32_t* check_pPresentModeCount;
+    stream->read((uint32_t**)&check_pPresentModeCount, sizeof(uint32_t*));
+    if (pPresentModeCount)
+    {
+        if (!(check_pPresentModeCount))
+        {
+            fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
+    }
+    VkPresentModeKHR* check_pPresentModes;
+    stream->read((VkPresentModeKHR**)&check_pPresentModes, sizeof(VkPresentModeKHR*));
+    if (pPresentModes)
+    {
+        if (!(check_pPresentModes))
+        {
+            fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
+        }
+        stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
+    }
+    VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_swapchain
+VkResult VkEncoder::vkCreateSwapchainKHR(
+    VkDevice device,
+    const VkSwapchainCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSwapchainKHR* pSwapchain)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSwapchainCreateInfoKHR(countingStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSwapchainCreateInfoKHR(stream, (const VkSwapchainCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+    stream->read((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+    VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateSwapchainKHR_VkResult_return;
+}
+
+void VkEncoder::vkDestroySwapchainKHR(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
+    stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkGetSwapchainImagesKHR(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    uint32_t* pSwapchainImageCount,
+    VkImage* pSwapchainImages)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        countingStream->write((uint32_t**)&pSwapchainImageCount, sizeof(uint32_t*));
+        if (pSwapchainImageCount)
+        {
+            countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkImage**)&pSwapchainImages, sizeof(VkImage*));
+        if (pSwapchainImages)
+        {
+            countingStream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+        }
+    }
+    uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
+    stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    stream->write((uint32_t**)&pSwapchainImageCount, sizeof(uint32_t*));
+    if (pSwapchainImageCount)
+    {
+        stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
+    }
+    stream->write((VkImage**)&pSwapchainImages, sizeof(VkImage*));
+    if (pSwapchainImages)
+    {
+        stream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+    }
+    uint32_t* check_pSwapchainImageCount;
+    stream->read((uint32_t**)&check_pSwapchainImageCount, sizeof(uint32_t*));
+    if (pSwapchainImageCount)
+    {
+        if (!(check_pSwapchainImageCount))
+        {
+            fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
+    }
+    VkImage* check_pSwapchainImages;
+    stream->read((VkImage**)&check_pSwapchainImages, sizeof(VkImage*));
+    if (pSwapchainImages)
+    {
+        if (!(check_pSwapchainImages))
+        {
+            fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
+        }
+        stream->read((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+    }
+    VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetSwapchainImagesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkAcquireNextImageKHR(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    uint64_t timeout,
+    VkSemaphore semaphore,
+    VkFence fence,
+    uint32_t* pImageIndex)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        countingStream->write((uint64_t*)&timeout, sizeof(uint64_t));
+        countingStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+        countingStream->write((VkFence*)&fence, sizeof(VkFence));
+        countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
+    stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    stream->write((uint64_t*)&timeout, sizeof(uint64_t));
+    stream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+    stream->write((VkFence*)&fence, sizeof(VkFence));
+    stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+    stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
+    VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
+    return vkAcquireNextImageKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkQueuePresentKHR(
+    VkQueue queue,
+    const VkPresentInfoKHR* pPresentInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        marshal_VkPresentInfoKHR(countingStream, (const VkPresentInfoKHR*)(pPresentInfo));
+    }
+    uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
+    stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    marshal_VkPresentInfoKHR(stream, (const VkPresentInfoKHR*)(pPresentInfo));
+    VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
+    return vkQueuePresentKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
+    VkDevice device,
+    VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
+    }
+    uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
+    stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
+    unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
+    VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
+    VkDevice device,
+    VkSurfaceKHR surface,
+    VkDeviceGroupPresentModeFlagsKHR* pModes)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((VkDeviceGroupPresentModeFlagsKHR**)&pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR*));
+        if (pModes)
+        {
+            countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+        }
+    }
+    uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
+    stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((VkDeviceGroupPresentModeFlagsKHR**)&pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR*));
+    if (pModes)
+    {
+        stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    }
+    VkDeviceGroupPresentModeFlagsKHR* check_pModes;
+    stream->read((VkDeviceGroupPresentModeFlagsKHR**)&check_pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR*));
+    if (pModes)
+    {
+        if (!(check_pModes))
+        {
+            fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
+        }
+        stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    }
+    VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
+    VkPhysicalDevice physicalDevice,
+    VkSurfaceKHR surface,
+    uint32_t* pRectCount,
+    VkRect2D* pRects)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        countingStream->write((uint32_t**)&pRectCount, sizeof(uint32_t*));
+        if (pRectCount)
+        {
+            countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkRect2D**)&pRects, sizeof(VkRect2D*));
+        if (pRects)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
+            {
+                marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
+    stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    stream->write((uint32_t**)&pRectCount, sizeof(uint32_t*));
+    if (pRectCount)
+    {
+        stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
+    }
+    stream->write((VkRect2D**)&pRects, sizeof(VkRect2D*));
+    if (pRects)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
+        {
+            marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
+        }
+    }
+    uint32_t* check_pRectCount;
+    stream->read((uint32_t**)&check_pRectCount, sizeof(uint32_t*));
+    if (pRectCount)
+    {
+        if (!(check_pRectCount))
+        {
+            fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
+    }
+    VkRect2D* check_pRects;
+    stream->read((VkRect2D**)&check_pRects, sizeof(VkRect2D*));
+    if (pRects)
+    {
+        if (!(check_pRects))
+        {
+            fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
+        {
+            unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
+        }
+    }
+    VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkAcquireNextImage2KHR(
+    VkDevice device,
+    const VkAcquireNextImageInfoKHR* pAcquireInfo,
+    uint32_t* pImageIndex)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkAcquireNextImageInfoKHR(countingStream, (const VkAcquireNextImageInfoKHR*)(pAcquireInfo));
+        countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
+    stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkAcquireNextImageInfoKHR(stream, (const VkAcquireNextImageInfoKHR*)(pAcquireInfo));
+    stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+    stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
+    VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
+    return vkAcquireNextImage2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_display
+VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pPropertyCount,
+    VkDisplayPropertiesKHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayPropertiesKHR**)&pProperties, sizeof(VkDisplayPropertiesKHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayPropertiesKHR**)&pProperties, sizeof(VkDisplayPropertiesKHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayPropertiesKHR* check_pProperties;
+    stream->read((VkDisplayPropertiesKHR**)&check_pProperties, sizeof(VkDisplayPropertiesKHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pPropertyCount,
+    VkDisplayPlanePropertiesKHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayPlanePropertiesKHR**)&pProperties, sizeof(VkDisplayPlanePropertiesKHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayPlanePropertiesKHR**)&pProperties, sizeof(VkDisplayPlanePropertiesKHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayPlanePropertiesKHR* check_pProperties;
+    stream->read((VkDisplayPlanePropertiesKHR**)&check_pProperties, sizeof(VkDisplayPlanePropertiesKHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t planeIndex,
+    uint32_t* pDisplayCount,
+    VkDisplayKHR* pDisplays)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t**)&pDisplayCount, sizeof(uint32_t*));
+        if (pDisplayCount)
+        {
+            countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayKHR**)&pDisplays, sizeof(VkDisplayKHR*));
+        if (pDisplays)
+        {
+            countingStream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+        }
+    }
+    uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
+    stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+    stream->write((uint32_t**)&pDisplayCount, sizeof(uint32_t*));
+    if (pDisplayCount)
+    {
+        stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayKHR**)&pDisplays, sizeof(VkDisplayKHR*));
+    if (pDisplays)
+    {
+        stream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+    }
+    uint32_t* check_pDisplayCount;
+    stream->read((uint32_t**)&check_pDisplayCount, sizeof(uint32_t*));
+    if (pDisplayCount)
+    {
+        if (!(check_pDisplayCount))
+        {
+            fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
+    }
+    VkDisplayKHR* check_pDisplays;
+    stream->read((VkDisplayKHR**)&check_pDisplays, sizeof(VkDisplayKHR*));
+    if (pDisplays)
+    {
+        if (!(check_pDisplays))
+        {
+            fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
+        }
+        stream->read((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+    }
+    VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
+    return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    VkDisplayKHR display,
+    uint32_t* pPropertyCount,
+    VkDisplayModePropertiesKHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayModePropertiesKHR**)&pProperties, sizeof(VkDisplayModePropertiesKHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
+    stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayModePropertiesKHR**)&pProperties, sizeof(VkDisplayModePropertiesKHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayModePropertiesKHR* check_pProperties;
+    stream->read((VkDisplayModePropertiesKHR**)&check_pProperties, sizeof(VkDisplayModePropertiesKHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetDisplayModePropertiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateDisplayModeKHR(
+    VkPhysicalDevice physicalDevice,
+    VkDisplayKHR display,
+    const VkDisplayModeCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDisplayModeKHR* pMode)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+        marshal_VkDisplayModeCreateInfoKHR(countingStream, (const VkDisplayModeCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+    }
+    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));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    marshal_VkDisplayModeCreateInfoKHR(stream, (const VkDisplayModeCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+    stream->read((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+    VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateDisplayModeKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
+    VkPhysicalDevice physicalDevice,
+    VkDisplayModeKHR mode,
+    uint32_t planeIndex,
+    VkDisplayPlaneCapabilitiesKHR* pCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
+        countingStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+        marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
+    }
+    uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
+    stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
+    stream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+    marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
+    unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
+    VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
+    VkInstance instance,
+    const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (const VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkDisplaySurfaceCreateInfoKHR(stream, (const VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_display_swapchain
+VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
+    VkDevice device,
+    uint32_t swapchainCount,
+    const VkSwapchainCreateInfoKHR* pCreateInfos,
+    const VkAllocationCallbacks* pAllocator,
+    VkSwapchainKHR* pSwapchains)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+        {
+            marshal_VkSwapchainCreateInfoKHR(countingStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
+        }
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+    {
+        marshal_VkSwapchainCreateInfoKHR(stream, (const VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
+    }
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+    stream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+    VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateSharedSwapchainsKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_xlib_surface
+VkResult VkEncoder::vkCreateXlibSurfaceKHR(
+    VkInstance instance,
+    const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (const VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkXlibSurfaceCreateInfoKHR(stream, (const VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateXlibSurfaceKHR_VkResult_return;
+}
+
+VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex,
+    Display* dpy,
+    VisualID visualID)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((Display*)dpy, sizeof(Display));
+        countingStream->write((VisualID*)&visualID, sizeof(VisualID));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((Display*)dpy, sizeof(Display));
+    stream->write((VisualID*)&visualID, sizeof(VisualID));
+    stream->read((Display*)dpy, sizeof(Display));
+    VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
+    stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_xcb_surface
+VkResult VkEncoder::vkCreateXcbSurfaceKHR(
+    VkInstance instance,
+    const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (const VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkXcbSurfaceCreateInfoKHR(stream, (const VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateXcbSurfaceKHR_VkResult_return;
+}
+
+VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex,
+    xcb_connection_t* connection,
+    xcb_visualid_t visual_id)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
+        countingStream->write((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
+    stream->write((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
+    stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
+    VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
+    stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_wayland_surface
+VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
+    VkInstance instance,
+    const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (const VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkWaylandSurfaceCreateInfoKHR(stream, (const VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateWaylandSurfaceKHR_VkResult_return;
+}
+
+VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex,
+    wl_display* display)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((wl_display*)display, sizeof(wl_display));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((wl_display*)display, sizeof(wl_display));
+    stream->read((wl_display*)display, sizeof(wl_display));
+    VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
+    stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_mir_surface
+VkResult VkEncoder::vkCreateMirSurfaceKHR(
+    VkInstance instance,
+    const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkMirSurfaceCreateInfoKHR(countingStream, (const VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkMirSurfaceCreateInfoKHR(stream, (const VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateMirSurfaceKHR_VkResult_return;
+}
+
+VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex,
+    MirConnection* connection)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+        countingStream->write((MirConnection*)connection, sizeof(MirConnection));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    stream->write((MirConnection*)connection, sizeof(MirConnection));
+    stream->read((MirConnection*)connection, sizeof(MirConnection));
+    VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
+    stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_android_surface
+VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
+    VkInstance instance,
+    const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (const VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkAndroidSurfaceCreateInfoKHR(stream, (const VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateAndroidSurfaceKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_win32_surface
+VkResult VkEncoder::vkCreateWin32SurfaceKHR(
+    VkInstance instance,
+    const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (const VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkWin32SurfaceCreateInfoKHR(stream, (const VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateWin32SurfaceKHR_VkResult_return;
+}
+
+VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t queueFamilyIndex)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+    VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
+    stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+    return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceFeatures2* pFeatures)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceProperties2* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
+    unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkFormatProperties2* pFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
+    unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+    VkImageFormatProperties2* pImageFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+        marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceImageFormatInfo2(stream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+    marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
+    VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+}
+
+void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+        if (pQueueFamilyPropertyCount)
+        {
+            countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkQueueFamilyProperties2**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+        if (pQueueFamilyProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+            {
+                marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkQueueFamilyProperties2**)&pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+    if (pQueueFamilyProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+        }
+    }
+    uint32_t* check_pQueueFamilyPropertyCount;
+    stream->read((uint32_t**)&check_pQueueFamilyPropertyCount, sizeof(uint32_t*));
+    if (pQueueFamilyPropertyCount)
+    {
+        if (!(check_pQueueFamilyPropertyCount))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+    }
+    VkQueueFamilyProperties2* check_pQueueFamilyProperties;
+    stream->read((VkQueueFamilyProperties2**)&check_pQueueFamilyProperties, sizeof(VkQueueFamilyProperties2*));
+    if (pQueueFamilyProperties)
+    {
+        if (!(check_pQueueFamilyProperties))
+        {
+            fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+        {
+            unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+        }
+    }
+}
+
+void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+    uint32_t* pPropertyCount,
+    VkSparseImageFormatProperties2* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageFormatProperties2**)&pProperties, sizeof(VkSparseImageFormatProperties2*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageFormatProperties2**)&pProperties, sizeof(VkSparseImageFormatProperties2*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkSparseImageFormatProperties2* check_pProperties;
+    stream->read((VkSparseImageFormatProperties2**)&check_pProperties, sizeof(VkSparseImageFormatProperties2*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        }
+    }
+}
+
+#endif
+#ifdef VK_KHR_device_group
+void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
+    VkDevice device,
+    uint32_t heapIndex,
+    uint32_t localDeviceIndex,
+    uint32_t remoteDeviceIndex,
+    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+        countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+    }
+    uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
+    stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+    stream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+    stream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+    stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+    stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void VkEncoder::vkCmdSetDeviceMaskKHR(
+    VkCommandBuffer commandBuffer,
+    uint32_t deviceMask)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
+    stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDispatchBaseKHR(
+    VkCommandBuffer commandBuffer,
+    uint32_t baseGroupX,
+    uint32_t baseGroupY,
+    uint32_t baseGroupZ,
+    uint32_t groupCountX,
+    uint32_t groupCountY,
+    uint32_t groupCountZ)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
+    stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+    stream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+    stream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+    stream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+void VkEncoder::vkTrimCommandPoolKHR(
+    VkDevice device,
+    VkCommandPool commandPool,
+    VkCommandPoolTrimFlags flags)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+        countingStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+    }
+    uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
+    stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+    stream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+#endif
+#ifdef VK_KHR_device_group_creation
+VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
+    VkInstance instance,
+    uint32_t* pPhysicalDeviceGroupCount,
+    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((uint32_t**)&pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+        if (pPhysicalDeviceGroupCount)
+        {
+            countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkPhysicalDeviceGroupProperties**)&pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+        if (pPhysicalDeviceGroupProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+            {
+                marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
+    stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((uint32_t**)&pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceGroupCount)
+    {
+        stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+    }
+    stream->write((VkPhysicalDeviceGroupProperties**)&pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+    if (pPhysicalDeviceGroupProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+        {
+            marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        }
+    }
+    uint32_t* check_pPhysicalDeviceGroupCount;
+    stream->read((uint32_t**)&check_pPhysicalDeviceGroupCount, sizeof(uint32_t*));
+    if (pPhysicalDeviceGroupCount)
+    {
+        if (!(check_pPhysicalDeviceGroupCount))
+        {
+            fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+    }
+    VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
+    stream->read((VkPhysicalDeviceGroupProperties**)&check_pPhysicalDeviceGroupProperties, sizeof(VkPhysicalDeviceGroupProperties*));
+    if (pPhysicalDeviceGroupProperties)
+    {
+        if (!(check_pPhysicalDeviceGroupProperties))
+        {
+            fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+        {
+            unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        }
+    }
+    VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
+    return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+    VkExternalBufferProperties* pExternalBufferProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+        marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalBufferInfo(stream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+    marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
+    VkDevice device,
+    const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+    HANDLE* pHandle)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (const VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+        countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    }
+    uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
+    stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkMemoryGetWin32HandleInfoKHR(stream, (const VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+    stream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    stream->read((HANDLE*)pHandle, sizeof(HANDLE));
+    VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryWin32HandleKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
+    VkDevice device,
+    VkExternalMemoryHandleTypeFlagBits handleType,
+    HANDLE handle,
+    VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+        countingStream->write((HANDLE*)&handle, sizeof(HANDLE));
+        marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
+    }
+    uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
+    stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    stream->write((HANDLE*)&handle, sizeof(HANDLE));
+    marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
+    unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
+    VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+VkResult VkEncoder::vkGetMemoryFdKHR(
+    VkDevice device,
+    const VkMemoryGetFdInfoKHR* pGetFdInfo,
+    int* pFd)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkMemoryGetFdInfoKHR(countingStream, (const VkMemoryGetFdInfoKHR*)(pGetFdInfo));
+        countingStream->write((int*)pFd, sizeof(int));
+    }
+    uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
+    stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkMemoryGetFdInfoKHR(stream, (const VkMemoryGetFdInfoKHR*)(pGetFdInfo));
+    stream->write((int*)pFd, sizeof(int));
+    stream->read((int*)pFd, sizeof(int));
+    VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryFdKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
+    VkDevice device,
+    VkExternalMemoryHandleTypeFlagBits handleType,
+    int fd,
+    VkMemoryFdPropertiesKHR* pMemoryFdProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+        countingStream->write((int*)&fd, sizeof(int));
+        marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
+    }
+    uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
+    stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    stream->write((int*)&fd, sizeof(int));
+    marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
+    unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
+    VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryFdPropertiesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+        marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+    marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+    unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
+    VkDevice device,
+    const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (const VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
+    }
+    uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
+    stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (const VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
+    VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    return vkImportSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
+    VkDevice device,
+    const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+    HANDLE* pHandle)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (const VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+        countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    }
+    uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
+    stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (const VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+    stream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    stream->read((HANDLE*)pHandle, sizeof(HANDLE));
+    VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    return vkGetSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+VkResult VkEncoder::vkImportSemaphoreFdKHR(
+    VkDevice device,
+    const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImportSemaphoreFdInfoKHR(countingStream, (const VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
+    }
+    uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
+    stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImportSemaphoreFdInfoKHR(stream, (const VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
+    VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+    return vkImportSemaphoreFdKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetSemaphoreFdKHR(
+    VkDevice device,
+    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+    int* pFd)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSemaphoreGetFdInfoKHR(countingStream, (const VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
+        countingStream->write((int*)pFd, sizeof(int));
+    }
+    uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
+    stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSemaphoreGetFdInfoKHR(stream, (const VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
+    stream->write((int*)pFd, sizeof(int));
+    stream->read((int*)pFd, sizeof(int));
+    VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+    return vkGetSemaphoreFdKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void VkEncoder::vkCmdPushDescriptorSetKHR(
+    VkCommandBuffer commandBuffer,
+    VkPipelineBindPoint pipelineBindPoint,
+    VkPipelineLayout layout,
+    uint32_t set,
+    uint32_t descriptorWriteCount,
+    const VkWriteDescriptorSet* pDescriptorWrites)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+        countingStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+        countingStream->write((uint32_t*)&set, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+        {
+            marshal_VkWriteDescriptorSet(countingStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+        }
+    }
+    uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
+    stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+    stream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+    stream->write((uint32_t*)&set, sizeof(uint32_t));
+    stream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+    {
+        marshal_VkWriteDescriptorSet(stream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+    }
+}
+
+void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
+    VkCommandBuffer commandBuffer,
+    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+    VkPipelineLayout layout,
+    uint32_t set,
+    const void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        countingStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+        countingStream->write((uint32_t*)&set, sizeof(uint32_t));
+        countingStream->write((const void**)&pData, sizeof(const void*));
+        if (pData)
+        {
+            countingStream->write((const void*)pData, sizeof(const uint8_t));
+        }
+    }
+    uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
+    stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+    stream->write((uint32_t*)&set, sizeof(uint32_t));
+    stream->write((const void**)&pData, sizeof(const void*));
+    if (pData)
+    {
+        stream->write((const void*)pData, sizeof(const uint8_t));
+    }
+}
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+#endif
+#ifdef VK_KHR_descriptor_update_template
+VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
+    VkDevice device,
+    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
+    VkDevice device,
+    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
+    stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
+    VkDevice device,
+    VkDescriptorSet descriptorSet,
+    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+    const void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+        countingStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+        countingStream->write((const void**)&pData, sizeof(const void*));
+        if (pData)
+        {
+            countingStream->write((const void*)pData, sizeof(const uint8_t));
+        }
+    }
+    uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
+    stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+    stream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+    stream->write((const void**)&pData, sizeof(const void*));
+    if (pData)
+    {
+        stream->write((const void*)pData, sizeof(const uint8_t));
+    }
+}
+
+#endif
+#ifdef VK_KHR_create_renderpass2
+VkResult VkEncoder::vkCreateRenderPass2KHR(
+    VkDevice device,
+    const VkRenderPassCreateInfo2KHR* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkRenderPass* pRenderPass)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkRenderPassCreateInfo2KHR(countingStream, (const VkRenderPassCreateInfo2KHR*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkRenderPassCreateInfo2KHR(stream, (const VkRenderPassCreateInfo2KHR*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    stream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+    VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
+    return vkCreateRenderPass2KHR_VkResult_return;
+}
+
+void VkEncoder::vkCmdBeginRenderPass2KHR(
+    VkCommandBuffer commandBuffer,
+    const VkRenderPassBeginInfo* pRenderPassBegin,
+    const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkRenderPassBeginInfo(countingStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+        marshal_VkSubpassBeginInfoKHR(countingStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+    }
+    uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
+    stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkRenderPassBeginInfo(stream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+    marshal_VkSubpassBeginInfoKHR(stream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+}
+
+void VkEncoder::vkCmdNextSubpass2KHR(
+    VkCommandBuffer commandBuffer,
+    const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+    const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkSubpassBeginInfoKHR(countingStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+        marshal_VkSubpassEndInfoKHR(countingStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+    }
+    uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
+    stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkSubpassBeginInfoKHR(stream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+    marshal_VkSubpassEndInfoKHR(stream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+void VkEncoder::vkCmdEndRenderPass2KHR(
+    VkCommandBuffer commandBuffer,
+    const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkSubpassEndInfoKHR(countingStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+    }
+    uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
+    stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkSubpassEndInfoKHR(stream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+VkResult VkEncoder::vkGetSwapchainStatusKHR(
+    VkDevice device,
+    VkSwapchainKHR swapchain)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
+    return vkGetSwapchainStatusKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+    VkExternalFenceProperties* pExternalFenceProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+        marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceExternalFenceInfo(stream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+    marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+VkResult VkEncoder::vkImportFenceWin32HandleKHR(
+    VkDevice device,
+    const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (const VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
+    }
+    uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
+    stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImportFenceWin32HandleInfoKHR(stream, (const VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
+    VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    return vkImportFenceWin32HandleKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetFenceWin32HandleKHR(
+    VkDevice device,
+    const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+    HANDLE* pHandle)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (const VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+        countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    }
+    uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
+    stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkFenceGetWin32HandleInfoKHR(stream, (const VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+    stream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    stream->read((HANDLE*)pHandle, sizeof(HANDLE));
+    VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+    return vkGetFenceWin32HandleKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+VkResult VkEncoder::vkImportFenceFdKHR(
+    VkDevice device,
+    const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImportFenceFdInfoKHR(countingStream, (const VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
+    }
+    uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
+    stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImportFenceFdInfoKHR(stream, (const VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
+    VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
+    return vkImportFenceFdKHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetFenceFdKHR(
+    VkDevice device,
+    const VkFenceGetFdInfoKHR* pGetFdInfo,
+    int* pFd)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkFenceGetFdInfoKHR(countingStream, (const VkFenceGetFdInfoKHR*)(pGetFdInfo));
+        countingStream->write((int*)pFd, sizeof(int));
+    }
+    uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
+    stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkFenceGetFdInfoKHR(stream, (const VkFenceGetFdInfoKHR*)(pGetFdInfo));
+    stream->write((int*)pFd, sizeof(int));
+    stream->read((int*)pFd, sizeof(int));
+    VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
+    return vkGetFenceFdKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+    VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+        marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+    marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
+    unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
+    VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
+    VkPhysicalDevice physicalDevice,
+    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+    uint32_t* pSurfaceFormatCount,
+    VkSurfaceFormat2KHR* pSurfaceFormats)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+        countingStream->write((uint32_t**)&pSurfaceFormatCount, sizeof(uint32_t*));
+        if (pSurfaceFormatCount)
+        {
+            countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSurfaceFormat2KHR**)&pSurfaceFormats, sizeof(VkSurfaceFormat2KHR*));
+        if (pSurfaceFormats)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+            {
+                marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+    stream->write((uint32_t**)&pSurfaceFormatCount, sizeof(uint32_t*));
+    if (pSurfaceFormatCount)
+    {
+        stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+    }
+    stream->write((VkSurfaceFormat2KHR**)&pSurfaceFormats, sizeof(VkSurfaceFormat2KHR*));
+    if (pSurfaceFormats)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+        {
+            marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
+        }
+    }
+    uint32_t* check_pSurfaceFormatCount;
+    stream->read((uint32_t**)&check_pSurfaceFormatCount, sizeof(uint32_t*));
+    if (pSurfaceFormatCount)
+    {
+        if (!(check_pSurfaceFormatCount))
+        {
+            fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+    }
+    VkSurfaceFormat2KHR* check_pSurfaceFormats;
+    stream->read((VkSurfaceFormat2KHR**)&check_pSurfaceFormats, sizeof(VkSurfaceFormat2KHR*));
+    if (pSurfaceFormats)
+    {
+        if (!(check_pSurfaceFormats))
+        {
+            fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+        {
+            unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pPropertyCount,
+    VkDisplayProperties2KHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayProperties2KHR**)&pProperties, sizeof(VkDisplayProperties2KHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayProperties2KHR**)&pProperties, sizeof(VkDisplayProperties2KHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayProperties2KHR* check_pProperties;
+    stream->read((VkDisplayProperties2KHR**)&check_pProperties, sizeof(VkDisplayProperties2KHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    uint32_t* pPropertyCount,
+    VkDisplayPlaneProperties2KHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayPlaneProperties2KHR**)&pProperties, sizeof(VkDisplayPlaneProperties2KHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
+    stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayPlaneProperties2KHR**)&pProperties, sizeof(VkDisplayPlaneProperties2KHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayPlaneProperties2KHR* check_pProperties;
+    stream->read((VkDisplayPlaneProperties2KHR**)&check_pProperties, sizeof(VkDisplayPlaneProperties2KHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+    VkDisplayKHR display,
+    uint32_t* pPropertyCount,
+    VkDisplayModeProperties2KHR* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+        countingStream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+        if (pPropertyCount)
+        {
+            countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkDisplayModeProperties2KHR**)&pProperties, sizeof(VkDisplayModeProperties2KHR*));
+        if (pProperties)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+            {
+                marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
+    stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    stream->write((uint32_t**)&pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    stream->write((VkDisplayModeProperties2KHR**)&pProperties, sizeof(VkDisplayModeProperties2KHR*));
+    if (pProperties)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
+        }
+    }
+    uint32_t* check_pPropertyCount;
+    stream->read((uint32_t**)&check_pPropertyCount, sizeof(uint32_t*));
+    if (pPropertyCount)
+    {
+        if (!(check_pPropertyCount))
+        {
+            fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+    }
+    VkDisplayModeProperties2KHR* check_pProperties;
+    stream->read((VkDisplayModeProperties2KHR**)&check_pProperties, sizeof(VkDisplayModeProperties2KHR*));
+    if (pProperties)
+    {
+        if (!(check_pProperties))
+        {
+            fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+        {
+            unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
+        }
+    }
+    VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetDisplayModeProperties2KHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
+    VkPhysicalDevice physicalDevice,
+    const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+    VkDisplayPlaneCapabilities2KHR* pCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkDisplayPlaneInfo2KHR(countingStream, (const VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
+        marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
+    }
+    uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
+    stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkDisplayPlaneInfo2KHR(stream, (const VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
+    marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
+    unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
+    VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
+    return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
+}
+
+#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
+void VkEncoder::vkGetImageMemoryRequirements2KHR(
+    VkDevice device,
+    const VkImageMemoryRequirementsInfo2* pInfo,
+    VkMemoryRequirements2* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageMemoryRequirementsInfo2(countingStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+        marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
+    stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageMemoryRequirementsInfo2(stream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+    marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetBufferMemoryRequirements2KHR(
+    VkDevice device,
+    const VkBufferMemoryRequirementsInfo2* pInfo,
+    VkMemoryRequirements2* pMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkBufferMemoryRequirementsInfo2(countingStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+        marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    }
+    uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
+    stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkBufferMemoryRequirementsInfo2(stream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+    marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+    unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
+    VkDevice device,
+    const VkImageSparseMemoryRequirementsInfo2* pInfo,
+    uint32_t* pSparseMemoryRequirementCount,
+    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+        countingStream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+        if (pSparseMemoryRequirementCount)
+        {
+            countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkSparseImageMemoryRequirements2**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+        if (pSparseMemoryRequirements)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+            {
+                marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
+    stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkImageSparseMemoryRequirementsInfo2(stream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+    stream->write((uint32_t**)&pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    stream->write((VkSparseImageMemoryRequirements2**)&pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+    if (pSparseMemoryRequirements)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+        }
+    }
+    uint32_t* check_pSparseMemoryRequirementCount;
+    stream->read((uint32_t**)&check_pSparseMemoryRequirementCount, sizeof(uint32_t*));
+    if (pSparseMemoryRequirementCount)
+    {
+        if (!(check_pSparseMemoryRequirementCount))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+    }
+    VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
+    stream->read((VkSparseImageMemoryRequirements2**)&check_pSparseMemoryRequirements, sizeof(VkSparseImageMemoryRequirements2*));
+    if (pSparseMemoryRequirements)
+    {
+        if (!(check_pSparseMemoryRequirements))
+        {
+            fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+        {
+            unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+        }
+    }
+}
+
+#endif
+#ifdef VK_KHR_image_format_list
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
+    VkDevice device,
+    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkSamplerYcbcrConversionCreateInfo(stream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    stream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
+    return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
+}
+
+void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
+    VkDevice device,
+    VkSamplerYcbcrConversion ycbcrConversion,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
+    stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+#endif
+#ifdef VK_KHR_bind_memory2
+VkResult VkEncoder::vkBindBufferMemory2KHR(
+    VkDevice device,
+    uint32_t bindInfoCount,
+    const VkBindBufferMemoryInfo* pBindInfos)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+        {
+            marshal_VkBindBufferMemoryInfo(countingStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+        }
+    }
+    uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
+    stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+    {
+        marshal_VkBindBufferMemoryInfo(stream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+    }
+    VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
+    return vkBindBufferMemory2KHR_VkResult_return;
+}
+
+VkResult VkEncoder::vkBindImageMemory2KHR(
+    VkDevice device,
+    uint32_t bindInfoCount,
+    const VkBindImageMemoryInfo* pBindInfos)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+        {
+            marshal_VkBindImageMemoryInfo(countingStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+        }
+    }
+    uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
+    stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+    {
+        marshal_VkBindImageMemoryInfo(stream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+    }
+    VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
+    stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
+    return vkBindImageMemory2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_maintenance3
+void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
+    VkDevice device,
+    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+    VkDescriptorSetLayoutSupport* pSupport)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+        marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    }
+    uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
+    stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDescriptorSetLayoutCreateInfo(stream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+    marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+#endif
+#ifdef VK_KHR_draw_indirect_count
+void VkEncoder::vkCmdDrawIndirectCountKHR(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    VkBuffer countBuffer,
+    VkDeviceSize countBufferOffset,
+    uint32_t maxDrawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
+    stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    VkBuffer countBuffer,
+    VkDeviceSize countBufferOffset,
+    uint32_t maxDrawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
+    stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_KHR_8bit_storage
+#endif
+#ifdef VK_EXT_debug_report
+VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
+    VkInstance instance,
+    const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDebugReportCallbackEXT* pCallback)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (const VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkDebugReportCallbackCreateInfoEXT(stream, (const VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+    stream->read((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+    VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
+    return vkCreateDebugReportCallbackEXT_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDebugReportCallbackEXT(
+    VkInstance instance,
+    VkDebugReportCallbackEXT callback,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
+    stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkDebugReportMessageEXT(
+    VkInstance instance,
+    VkDebugReportFlagsEXT flags,
+    VkDebugReportObjectTypeEXT objectType,
+    uint64_t object,
+    size_t location,
+    int32_t messageCode,
+    const char* pLayerPrefix,
+    const char* pMessage)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
+        countingStream->write((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
+        countingStream->write((uint64_t*)&object, sizeof(uint64_t));
+        countingStream->write((size_t*)&location, sizeof(size_t));
+        countingStream->write((int32_t*)&messageCode, sizeof(int32_t));
+        countingStream->putString(pLayerPrefix);
+        countingStream->putString(pMessage);
+    }
+    uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
+    stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
+    stream->write((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
+    stream->write((uint64_t*)&object, sizeof(uint64_t));
+    stream->write((size_t*)&location, sizeof(size_t));
+    stream->write((int32_t*)&messageCode, sizeof(int32_t));
+    stream->putString(pLayerPrefix);
+    stream->putString(pMessage);
+}
+
+#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
+VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
+    VkDevice device,
+    const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (const VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
+    }
+    uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
+    stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDebugMarkerObjectTagInfoEXT(stream, (const VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
+    VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
+    return vkDebugMarkerSetObjectTagEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
+    VkDevice device,
+    const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (const VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
+    }
+    uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
+    stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDebugMarkerObjectNameInfoEXT(stream, (const VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
+    VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
+    return vkDebugMarkerSetObjectNameEXT_VkResult_return;
+}
+
+void VkEncoder::vkCmdDebugMarkerBeginEXT(
+    VkCommandBuffer commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+    }
+    uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
+    stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkDebugMarkerMarkerInfoEXT(stream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+void VkEncoder::vkCmdDebugMarkerEndEXT(
+    VkCommandBuffer commandBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void VkEncoder::vkCmdDebugMarkerInsertEXT(
+    VkCommandBuffer commandBuffer,
+    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+    }
+    uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
+    stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkDebugMarkerMarkerInfoEXT(stream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+#endif
+#ifdef VK_AMD_draw_indirect_count
+void VkEncoder::vkCmdDrawIndirectCountAMD(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    VkBuffer countBuffer,
+    VkDeviceSize countBufferOffset,
+    uint32_t maxDrawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
+    stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
+    VkCommandBuffer commandBuffer,
+    VkBuffer buffer,
+    VkDeviceSize offset,
+    VkBuffer countBuffer,
+    VkDeviceSize countBufferOffset,
+    uint32_t maxDrawCount,
+    uint32_t stride)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+        countingStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
+    stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    stream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+    stream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+#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
+VkResult VkEncoder::vkGetShaderInfoAMD(
+    VkDevice device,
+    VkPipeline pipeline,
+    VkShaderStageFlagBits shaderStage,
+    VkShaderInfoTypeAMD infoType,
+    size_t* pInfoSize,
+    void* pInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+        countingStream->write((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
+        countingStream->write((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
+        countingStream->write((size_t**)&pInfoSize, sizeof(size_t*));
+        if (pInfoSize)
+        {
+            countingStream->write((size_t*)pInfoSize, sizeof(size_t));
+        }
+        countingStream->write((void**)&pInfo, sizeof(void*));
+        if (pInfo)
+        {
+            countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
+        }
+    }
+    uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
+    stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+    stream->write((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
+    stream->write((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
+    stream->write((size_t**)&pInfoSize, sizeof(size_t*));
+    if (pInfoSize)
+    {
+        stream->write((size_t*)pInfoSize, sizeof(size_t));
+    }
+    stream->write((void**)&pInfo, sizeof(void*));
+    if (pInfo)
+    {
+        stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
+    }
+    size_t* check_pInfoSize;
+    stream->read((size_t**)&check_pInfoSize, sizeof(size_t*));
+    if (pInfoSize)
+    {
+        if (!(check_pInfoSize))
+        {
+            fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
+        }
+        stream->read((size_t*)pInfoSize, sizeof(size_t));
+    }
+    void* check_pInfo;
+    stream->read((void**)&check_pInfo, sizeof(void*));
+    if (pInfo)
+    {
+        if (!(check_pInfo))
+        {
+            fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
+        }
+        stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
+    }
+    VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
+    stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
+    return vkGetShaderInfoAMD_VkResult_return;
+}
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+    VkPhysicalDevice physicalDevice,
+    VkFormat format,
+    VkImageType type,
+    VkImageTiling tiling,
+    VkImageUsageFlags usage,
+    VkImageCreateFlags flags,
+    VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+    VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkFormat*)&format, sizeof(VkFormat));
+        countingStream->write((VkImageType*)&type, sizeof(VkImageType));
+        countingStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+        countingStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+        countingStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+        countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+        marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
+    stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkFormat*)&format, sizeof(VkFormat));
+    stream->write((VkImageType*)&type, sizeof(VkImageType));
+    stream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+    stream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+    stream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+    stream->write((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+    marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
+    unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
+    VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
+}
+
+#endif
+#ifdef VK_NV_external_memory
+#endif
+#ifdef VK_NV_external_memory_win32
+VkResult VkEncoder::vkGetMemoryWin32HandleNV(
+    VkDevice device,
+    VkDeviceMemory memory,
+    VkExternalMemoryHandleTypeFlagsNV handleType,
+    HANDLE* pHandle)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+        countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+        countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    }
+    uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
+    stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+    stream->write((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+    stream->write((HANDLE*)pHandle, sizeof(HANDLE));
+    stream->read((HANDLE*)pHandle, sizeof(HANDLE));
+    VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryWin32HandleNV_VkResult_return;
+}
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+#endif
+#ifdef VK_EXT_validation_flags
+#endif
+#ifdef VK_NN_vi_surface
+VkResult VkEncoder::vkCreateViSurfaceNN(
+    VkInstance instance,
+    const VkViSurfaceCreateInfoNN* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkViSurfaceCreateInfoNN(countingStream, (const VkViSurfaceCreateInfoNN*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkViSurfaceCreateInfoNN(stream, (const VkViSurfaceCreateInfoNN*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
+    return vkCreateViSurfaceNN_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void VkEncoder::vkCmdBeginConditionalRenderingEXT(
+    VkCommandBuffer commandBuffer,
+    const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (const VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
+    }
+    uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
+    stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkConditionalRenderingBeginInfoEXT(stream, (const VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
+}
+
+void VkEncoder::vkCmdEndConditionalRenderingEXT(
+    VkCommandBuffer commandBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void VkEncoder::vkCmdProcessCommandsNVX(
+    VkCommandBuffer commandBuffer,
+    const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkCmdProcessCommandsInfoNVX(countingStream, (const VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
+    }
+    uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
+    stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkCmdProcessCommandsInfoNVX(stream, (const VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
+}
+
+void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
+    VkCommandBuffer commandBuffer,
+    const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (const VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
+    }
+    uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
+    stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (const VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
+}
+
+VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
+    VkDevice device,
+    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (const VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (const VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+    stream->read((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+    VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
+    return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
+}
+
+void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
+    VkDevice device,
+    VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
+    stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkCreateObjectTableNVX(
+    VkDevice device,
+    const VkObjectTableCreateInfoNVX* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkObjectTableNVX* pObjectTable)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkObjectTableCreateInfoNVX(countingStream, (const VkObjectTableCreateInfoNVX*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkObjectTableCreateInfoNVX(stream, (const VkObjectTableCreateInfoNVX*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+    stream->read((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+    VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
+    return vkCreateObjectTableNVX_VkResult_return;
+}
+
+void VkEncoder::vkDestroyObjectTableNVX(
+    VkDevice device,
+    VkObjectTableNVX objectTable,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
+    stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkRegisterObjectsNVX(
+    VkDevice device,
+    VkObjectTableNVX objectTable,
+    uint32_t objectCount,
+    const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+    const uint32_t* pObjectIndices)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+        countingStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+        countingStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+    }
+    uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
+    stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+    stream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+    stream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+    VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
+    stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
+    return vkRegisterObjectsNVX_VkResult_return;
+}
+
+VkResult VkEncoder::vkUnregisterObjectsNVX(
+    VkDevice device,
+    VkObjectTableNVX objectTable,
+    uint32_t objectCount,
+    const VkObjectEntryTypeNVX* pObjectEntryTypes,
+    const uint32_t* pObjectIndices)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+        countingStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+        countingStream->write((const VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
+        countingStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+    }
+    uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
+    stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+    stream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+    stream->write((const VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
+    stream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+    VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
+    stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
+    return vkUnregisterObjectsNVX_VkResult_return;
+}
+
+void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+    VkPhysicalDevice physicalDevice,
+    VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+    VkDeviceGeneratedCommandsLimitsNVX* pLimits)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
+        marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
+    stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
+    marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
+    unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
+    unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
+}
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void VkEncoder::vkCmdSetViewportWScalingNV(
+    VkCommandBuffer commandBuffer,
+    uint32_t firstViewport,
+    uint32_t viewportCount,
+    const VkViewportWScalingNV* pViewportWScalings)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+        {
+            marshal_VkViewportWScalingNV(countingStream, (const VkViewportWScalingNV*)(pViewportWScalings + i));
+        }
+    }
+    uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
+    stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+    stream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+    {
+        marshal_VkViewportWScalingNV(stream, (const VkViewportWScalingNV*)(pViewportWScalings + i));
+    }
+}
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+VkResult VkEncoder::vkReleaseDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+    VkDisplayKHR display)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    }
+    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));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
+    return vkReleaseDisplayEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+VkResult VkEncoder::vkAcquireXlibDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+    Display* dpy,
+    VkDisplayKHR display)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((Display*)dpy, sizeof(Display));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    }
+    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));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((Display*)dpy, sizeof(Display));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    stream->read((Display*)dpy, sizeof(Display));
+    VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
+    return vkAcquireXlibDisplayEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetRandROutputDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+    Display* dpy,
+    RROutput rrOutput,
+    VkDisplayKHR* pDisplay)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((Display*)dpy, sizeof(Display));
+        countingStream->write((RROutput*)&rrOutput, sizeof(RROutput));
+        countingStream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+    }
+    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));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((Display*)dpy, sizeof(Display));
+    stream->write((RROutput*)&rrOutput, sizeof(RROutput));
+    stream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+    stream->read((Display*)dpy, sizeof(Display));
+    stream->read((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+    VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
+    return vkGetRandROutputDisplayEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_display_surface_counter
+VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+    VkPhysicalDevice physicalDevice,
+    VkSurfaceKHR surface,
+    VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+        marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
+    stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+    marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
+    unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
+    VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
+    return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_display_control
+VkResult VkEncoder::vkDisplayPowerControlEXT(
+    VkDevice device,
+    VkDisplayKHR display,
+    const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+        marshal_VkDisplayPowerInfoEXT(countingStream, (const VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
+    }
+    uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
+    stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    marshal_VkDisplayPowerInfoEXT(stream, (const VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
+    VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
+    return vkDisplayPowerControlEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkRegisterDeviceEventEXT(
+    VkDevice device,
+    const VkDeviceEventInfoEXT* pDeviceEventInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkFence* pFence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDeviceEventInfoEXT(countingStream, (const VkDeviceEventInfoEXT*)(pDeviceEventInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDeviceEventInfoEXT(stream, (const VkDeviceEventInfoEXT*)(pDeviceEventInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkFence*)pFence, sizeof(VkFence));
+    stream->read((VkFence*)pFence, sizeof(VkFence));
+    VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
+    return vkRegisterDeviceEventEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkRegisterDisplayEventEXT(
+    VkDevice device,
+    VkDisplayKHR display,
+    const VkDisplayEventInfoEXT* pDisplayEventInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkFence* pFence)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+        marshal_VkDisplayEventInfoEXT(countingStream, (const VkDisplayEventInfoEXT*)(pDisplayEventInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkFence*)pFence, sizeof(VkFence));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+    marshal_VkDisplayEventInfoEXT(stream, (const VkDisplayEventInfoEXT*)(pDisplayEventInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkFence*)pFence, sizeof(VkFence));
+    stream->read((VkFence*)pFence, sizeof(VkFence));
+    VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
+    return vkRegisterDisplayEventEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetSwapchainCounterEXT(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    VkSurfaceCounterFlagBitsEXT counter,
+    uint64_t* pCounterValue)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        countingStream->write((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
+        countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
+    }
+    uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
+    stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    stream->write((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
+    stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
+    stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
+    VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
+    return vkGetSwapchainCounterEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
+    }
+    uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
+    stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
+    unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
+    VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
+    stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
+    return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
+    VkDevice device,
+    VkSwapchainKHR swapchain,
+    uint32_t* pPresentationTimingCount,
+    VkPastPresentationTimingGOOGLE* pPresentationTimings)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+        countingStream->write((uint32_t**)&pPresentationTimingCount, sizeof(uint32_t*));
+        if (pPresentationTimingCount)
+        {
+            countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkPastPresentationTimingGOOGLE**)&pPresentationTimings, sizeof(VkPastPresentationTimingGOOGLE*));
+        if (pPresentationTimings)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
+            {
+                marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
+    stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+    stream->write((uint32_t**)&pPresentationTimingCount, sizeof(uint32_t*));
+    if (pPresentationTimingCount)
+    {
+        stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
+    }
+    stream->write((VkPastPresentationTimingGOOGLE**)&pPresentationTimings, sizeof(VkPastPresentationTimingGOOGLE*));
+    if (pPresentationTimings)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
+        {
+            marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
+        }
+    }
+    uint32_t* check_pPresentationTimingCount;
+    stream->read((uint32_t**)&check_pPresentationTimingCount, sizeof(uint32_t*));
+    if (pPresentationTimingCount)
+    {
+        if (!(check_pPresentationTimingCount))
+        {
+            fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
+    }
+    VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
+    stream->read((VkPastPresentationTimingGOOGLE**)&check_pPresentationTimings, sizeof(VkPastPresentationTimingGOOGLE*));
+    if (pPresentationTimings)
+    {
+        if (!(check_pPresentationTimings))
+        {
+            fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
+        {
+            unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
+        }
+    }
+    VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
+    stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
+    return vkGetPastPresentationTimingGOOGLE_VkResult_return;
+}
+
+#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
+void VkEncoder::vkCmdSetDiscardRectangleEXT(
+    VkCommandBuffer commandBuffer,
+    uint32_t firstDiscardRectangle,
+    uint32_t discardRectangleCount,
+    const VkRect2D* pDiscardRectangles)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
+        countingStream->write((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
+        for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
+        {
+            marshal_VkRect2D(countingStream, (const VkRect2D*)(pDiscardRectangles + i));
+        }
+    }
+    uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
+    stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
+    stream->write((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
+    {
+        marshal_VkRect2D(stream, (const VkRect2D*)(pDiscardRectangles + i));
+    }
+}
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void VkEncoder::vkSetHdrMetadataEXT(
+    VkDevice device,
+    uint32_t swapchainCount,
+    const VkSwapchainKHR* pSwapchains,
+    const VkHdrMetadataEXT* pMetadata)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+        countingStream->write((const VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
+        for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+        {
+            marshal_VkHdrMetadataEXT(countingStream, (const VkHdrMetadataEXT*)(pMetadata + i));
+        }
+    }
+    uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
+    stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+    stream->write((const VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
+    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+    {
+        marshal_VkHdrMetadataEXT(stream, (const VkHdrMetadataEXT*)(pMetadata + i));
+    }
+}
+
+#endif
+#ifdef VK_MVK_ios_surface
+VkResult VkEncoder::vkCreateIOSSurfaceMVK(
+    VkInstance instance,
+    const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (const VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkIOSSurfaceCreateInfoMVK(stream, (const VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+    return vkCreateIOSSurfaceMVK_VkResult_return;
+}
+
+#endif
+#ifdef VK_MVK_macos_surface
+VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
+    VkInstance instance,
+    const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkSurfaceKHR* pSurface)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (const VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkMacOSSurfaceCreateInfoMVK(stream, (const VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    stream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+    VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+    return vkCreateMacOSSurfaceMVK_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
+    VkDevice device,
+    const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (const VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
+    }
+    uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
+    stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDebugUtilsObjectNameInfoEXT(stream, (const VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
+    VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
+    return vkSetDebugUtilsObjectNameEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
+    VkDevice device,
+    const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (const VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
+    }
+    uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
+    stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkDebugUtilsObjectTagInfoEXT(stream, (const VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
+    VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
+    return vkSetDebugUtilsObjectTagEXT_VkResult_return;
+}
+
+void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
+    VkQueue queue,
+    const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        marshal_VkDebugUtilsLabelEXT(countingStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+    }
+    uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
+    stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    marshal_VkDebugUtilsLabelEXT(stream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
+    VkQueue queue)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+    }
+    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));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+}
+
+void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
+    VkQueue queue,
+    const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        marshal_VkDebugUtilsLabelEXT(countingStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+    }
+    uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
+    stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    marshal_VkDebugUtilsLabelEXT(stream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer,
+    const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkDebugUtilsLabelEXT(countingStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+    }
+    uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
+    stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkDebugUtilsLabelEXT(stream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    }
+    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));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer,
+    const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkDebugUtilsLabelEXT(countingStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+    }
+    uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
+    stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkDebugUtilsLabelEXT(stream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
+    VkInstance instance,
+    const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkDebugUtilsMessengerEXT* pMessenger)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (const VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+    }
+    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));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (const VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+    stream->read((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+    VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
+    return vkCreateDebugUtilsMessengerEXT_VkResult_return;
+}
+
+void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
+    VkInstance instance,
+    VkDebugUtilsMessengerEXT messenger,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
+    stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+void VkEncoder::vkSubmitDebugUtilsMessageEXT(
+    VkInstance instance,
+    VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+    VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkInstance*)&instance, sizeof(VkInstance));
+        countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
+        countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+        marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (const VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
+    }
+    uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
+    stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
+    stream->write((VkInstance*)&instance, sizeof(VkInstance));
+    stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
+    stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+    marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (const VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
+}
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
+    VkDevice device,
+    const AHardwareBuffer* buffer,
+    VkAndroidHardwareBufferPropertiesANDROID* pProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((const AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
+        marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
+    }
+    uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
+    stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((const AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
+    marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
+    unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
+    VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
+    stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
+    return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
+    VkDevice device,
+    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+    AHardwareBuffer** pBuffer)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
+        countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
+    }
+    uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
+    stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
+    stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
+    stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
+    VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
+}
+
+#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
+void VkEncoder::vkCmdSetSampleLocationsEXT(
+    VkCommandBuffer commandBuffer,
+    const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        marshal_VkSampleLocationsInfoEXT(countingStream, (const VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
+    }
+    uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
+    stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    marshal_VkSampleLocationsInfoEXT(stream, (const VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
+}
+
+void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
+    VkPhysicalDevice physicalDevice,
+    VkSampleCountFlagBits samples,
+    VkMultisamplePropertiesEXT* pMultisampleProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+        countingStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+        marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
+    }
+    uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
+    stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
+    stream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+    stream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+    marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
+    unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
+}
+
+#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
+VkResult VkEncoder::vkCreateValidationCacheEXT(
+    VkDevice device,
+    const VkValidationCacheCreateInfoEXT* pCreateInfo,
+    const VkAllocationCallbacks* pAllocator,
+    VkValidationCacheEXT* pValidationCache)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        marshal_VkValidationCacheCreateInfoEXT(countingStream, (const VkValidationCacheCreateInfoEXT*)(pCreateInfo));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+        countingStream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    marshal_VkValidationCacheCreateInfoEXT(stream, (const VkValidationCacheCreateInfoEXT*)(pCreateInfo));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+    stream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+    stream->read((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+    VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
+    return vkCreateValidationCacheEXT_VkResult_return;
+}
+
+void VkEncoder::vkDestroyValidationCacheEXT(
+    VkDevice device,
+    VkValidationCacheEXT validationCache,
+    const VkAllocationCallbacks* pAllocator)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+        countingStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+        if (pAllocator)
+        {
+            marshal_VkAllocationCallbacks(countingStream, (const VkAllocationCallbacks*)(pAllocator));
+        }
+    }
+    uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
+    stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+    stream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+    if (pAllocator)
+    {
+        marshal_VkAllocationCallbacks(stream, (const VkAllocationCallbacks*)(pAllocator));
+    }
+}
+
+VkResult VkEncoder::vkMergeValidationCachesEXT(
+    VkDevice device,
+    VkValidationCacheEXT dstCache,
+    uint32_t srcCacheCount,
+    const VkValidationCacheEXT* pSrcCaches)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
+        countingStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+        countingStream->write((const VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
+    }
+    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));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
+    stream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+    stream->write((const VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
+    VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
+    return vkMergeValidationCachesEXT_VkResult_return;
+}
+
+VkResult VkEncoder::vkGetValidationCacheDataEXT(
+    VkDevice device,
+    VkValidationCacheEXT validationCache,
+    size_t* pDataSize,
+    void* pData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+        countingStream->write((size_t**)&pDataSize, sizeof(size_t*));
+        if (pDataSize)
+        {
+            countingStream->write((size_t*)pDataSize, sizeof(size_t));
+        }
+        countingStream->write((void**)&pData, sizeof(void*));
+        if (pData)
+        {
+            countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+        }
+    }
+    uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
+    stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+    stream->write((size_t**)&pDataSize, sizeof(size_t*));
+    if (pDataSize)
+    {
+        stream->write((size_t*)pDataSize, sizeof(size_t));
+    }
+    stream->write((void**)&pData, sizeof(void*));
+    if (pData)
+    {
+        stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+    }
+    size_t* check_pDataSize;
+    stream->read((size_t**)&check_pDataSize, sizeof(size_t*));
+    if (pDataSize)
+    {
+        if (!(check_pDataSize))
+        {
+            fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
+        }
+        stream->read((size_t*)pDataSize, sizeof(size_t));
+    }
+    void* check_pData;
+    stream->read((void**)&check_pData, sizeof(void*));
+    if (pData)
+    {
+        if (!(check_pData))
+        {
+            fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
+        }
+        stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+    }
+    VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
+    return vkGetValidationCacheDataEXT_VkResult_return;
+}
+
+#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
+VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
+    VkDevice device,
+    VkExternalMemoryHandleTypeFlagBits handleType,
+    const void* pHostPointer,
+    VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkDevice*)&device, sizeof(VkDevice));
+        countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+        countingStream->write((const void**)&pHostPointer, sizeof(const void*));
+        if (pHostPointer)
+        {
+            countingStream->write((const void*)pHostPointer, sizeof(const uint8_t));
+        }
+        marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
+    }
+    uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
+    stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
+    stream->write((VkDevice*)&device, sizeof(VkDevice));
+    stream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    stream->write((const void**)&pHostPointer, sizeof(const void*));
+    if (pHostPointer)
+    {
+        stream->write((const void*)pHostPointer, sizeof(const uint8_t));
+    }
+    marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
+    unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
+    VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
+    stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
+    return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_AMD_buffer_marker
+void VkEncoder::vkCmdWriteBufferMarkerAMD(
+    VkCommandBuffer commandBuffer,
+    VkPipelineStageFlagBits pipelineStage,
+    VkBuffer dstBuffer,
+    VkDeviceSize dstOffset,
+    uint32_t marker)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+        countingStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+        countingStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+        countingStream->write((uint32_t*)&marker, sizeof(uint32_t));
+    }
+    uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
+    stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+    stream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+    stream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+    stream->write((uint32_t*)&marker, sizeof(uint32_t));
+}
+
+#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
+void VkEncoder::vkCmdSetCheckpointNV(
+    VkCommandBuffer commandBuffer,
+    const void* pCheckpointMarker)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+        countingStream->write((const void**)&pCheckpointMarker, sizeof(const void*));
+        if (pCheckpointMarker)
+        {
+            countingStream->write((const void*)pCheckpointMarker, sizeof(const uint8_t));
+        }
+    }
+    uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
+    stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
+    stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
+    stream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+    stream->write((const void**)&pCheckpointMarker, sizeof(const void*));
+    if (pCheckpointMarker)
+    {
+        stream->write((const void*)pCheckpointMarker, sizeof(const uint8_t));
+    }
+}
+
+void VkEncoder::vkGetQueueCheckpointDataNV(
+    VkQueue queue,
+    uint32_t* pCheckpointDataCount,
+    VkCheckpointDataNV* pCheckpointData)
+{
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    countingStream->rewind();
+    {
+        countingStream->write((VkQueue*)&queue, sizeof(VkQueue));
+        countingStream->write((uint32_t**)&pCheckpointDataCount, sizeof(uint32_t*));
+        if (pCheckpointDataCount)
+        {
+            countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
+        }
+        countingStream->write((VkCheckpointDataNV**)&pCheckpointData, sizeof(VkCheckpointDataNV*));
+        if (pCheckpointData)
+        {
+            for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
+            {
+                marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
+            }
+        }
+    }
+    uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
+    stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
+    stream->write((VkQueue*)&queue, sizeof(VkQueue));
+    stream->write((uint32_t**)&pCheckpointDataCount, sizeof(uint32_t*));
+    if (pCheckpointDataCount)
+    {
+        stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
+    }
+    stream->write((VkCheckpointDataNV**)&pCheckpointData, sizeof(VkCheckpointDataNV*));
+    if (pCheckpointData)
+    {
+        for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
+        {
+            marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
+        }
+    }
+    uint32_t* check_pCheckpointDataCount;
+    stream->read((uint32_t**)&check_pCheckpointDataCount, sizeof(uint32_t*));
+    if (pCheckpointDataCount)
+    {
+        if (!(check_pCheckpointDataCount))
+        {
+            fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
+        }
+        stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
+    }
+    VkCheckpointDataNV* check_pCheckpointData;
+    stream->read((VkCheckpointDataNV**)&check_pCheckpointData, sizeof(VkCheckpointDataNV*));
+    if (pCheckpointData)
+    {
+        if (!(check_pCheckpointData))
+        {
+            fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
+        }
+        for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
+        {
+            unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
+        }
+    }
+}
+
+#endif
+
+
diff --git a/system/vulkan_enc/VkEncoder.h b/system/vulkan_enc/VkEncoder.h
index 2278082e2fcf5b9915238ecb20b959318472eeed..a8bc2d17096a86bdb1ddc2de0e6f65490a4ccc81 100644
--- a/system/vulkan_enc/VkEncoder.h
+++ b/system/vulkan_enc/VkEncoder.h
@@ -1,4 +1,5 @@
 // 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.
@@ -12,38 +13,1718 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Protect from non-C++11 builds
-#ifdef GOLDFISH_VULKAN
+// Autogenerated module VkEncoder
+// (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 <memory>
+#include <vulkan/vulkan.h>
+
 
+#include <memory>
 class IOStream;
 
+
+
+
+
 class VkEncoder {
 public:
     VkEncoder(IOStream* stream);
     ~VkEncoder();
+#ifdef VK_VERSION_1_0
+    VkResult vkCreateInstance(
+    const VkInstanceCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkInstance* pInstance);
+    void vkDestroyInstance(
+    VkInstance instance,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkEnumeratePhysicalDevices(
+    VkInstance instance,
+        uint32_t* pPhysicalDeviceCount,
+        VkPhysicalDevice* pPhysicalDevices);
+    void vkGetPhysicalDeviceFeatures(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceFeatures* pFeatures);
+    void vkGetPhysicalDeviceFormatProperties(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkFormatProperties* pFormatProperties);
+    VkResult vkGetPhysicalDeviceImageFormatProperties(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkImageType type,
+        VkImageTiling tiling,
+        VkImageUsageFlags usage,
+        VkImageCreateFlags flags,
+        VkImageFormatProperties* pImageFormatProperties);
+    void vkGetPhysicalDeviceProperties(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceProperties* pProperties);
+    void vkGetPhysicalDeviceQueueFamilyProperties(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pQueueFamilyPropertyCount,
+        VkQueueFamilyProperties* pQueueFamilyProperties);
+    void vkGetPhysicalDeviceMemoryProperties(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+    PFN_vkVoidFunction vkGetInstanceProcAddr(
+    VkInstance instance,
+        const char* pName);
+    PFN_vkVoidFunction vkGetDeviceProcAddr(
+    VkDevice device,
+        const char* pName);
+    VkResult vkCreateDevice(
+    VkPhysicalDevice physicalDevice,
+        const VkDeviceCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDevice* pDevice);
+    void vkDestroyDevice(
+    VkDevice device,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkEnumerateInstanceExtensionProperties(
+    const char* pLayerName,
+        uint32_t* pPropertyCount,
+        VkExtensionProperties* pProperties);
+    VkResult vkEnumerateDeviceExtensionProperties(
+    VkPhysicalDevice physicalDevice,
+        const char* pLayerName,
+        uint32_t* pPropertyCount,
+        VkExtensionProperties* pProperties);
+    VkResult vkEnumerateInstanceLayerProperties(
+    uint32_t* pPropertyCount,
+        VkLayerProperties* pProperties);
+    VkResult vkEnumerateDeviceLayerProperties(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pPropertyCount,
+        VkLayerProperties* pProperties);
+    void vkGetDeviceQueue(
+    VkDevice device,
+        uint32_t queueFamilyIndex,
+        uint32_t queueIndex,
+        VkQueue* pQueue);
+    VkResult vkQueueSubmit(
+    VkQueue queue,
+        uint32_t submitCount,
+        const VkSubmitInfo* pSubmits,
+        VkFence fence);
+    VkResult vkQueueWaitIdle(
+    VkQueue queue);
+    VkResult vkDeviceWaitIdle(
+    VkDevice device);
+    VkResult vkAllocateMemory(
+    VkDevice device,
+        const VkMemoryAllocateInfo* pAllocateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDeviceMemory* pMemory);
+    void vkFreeMemory(
+    VkDevice device,
+        VkDeviceMemory memory,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkMapMemory(
+    VkDevice device,
+        VkDeviceMemory memory,
+        VkDeviceSize offset,
+        VkDeviceSize size,
+        VkMemoryMapFlags flags,
+        void** ppData);
+    void vkUnmapMemory(
+    VkDevice device,
+        VkDeviceMemory memory);
+    VkResult vkFlushMappedMemoryRanges(
+    VkDevice device,
+        uint32_t memoryRangeCount,
+        const VkMappedMemoryRange* pMemoryRanges);
+    VkResult vkInvalidateMappedMemoryRanges(
+    VkDevice device,
+        uint32_t memoryRangeCount,
+        const VkMappedMemoryRange* pMemoryRanges);
+    void vkGetDeviceMemoryCommitment(
+    VkDevice device,
+        VkDeviceMemory memory,
+        VkDeviceSize* pCommittedMemoryInBytes);
+    VkResult vkBindBufferMemory(
+    VkDevice device,
+        VkBuffer buffer,
+        VkDeviceMemory memory,
+        VkDeviceSize memoryOffset);
+    VkResult vkBindImageMemory(
+    VkDevice device,
+        VkImage image,
+        VkDeviceMemory memory,
+        VkDeviceSize memoryOffset);
+    void vkGetBufferMemoryRequirements(
+    VkDevice device,
+        VkBuffer buffer,
+        VkMemoryRequirements* pMemoryRequirements);
+    void vkGetImageMemoryRequirements(
+    VkDevice device,
+        VkImage image,
+        VkMemoryRequirements* pMemoryRequirements);
+    void vkGetImageSparseMemoryRequirements(
+    VkDevice device,
+        VkImage image,
+        uint32_t* pSparseMemoryRequirementCount,
+        VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+    void vkGetPhysicalDeviceSparseImageFormatProperties(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkImageType type,
+        VkSampleCountFlagBits samples,
+        VkImageUsageFlags usage,
+        VkImageTiling tiling,
+        uint32_t* pPropertyCount,
+        VkSparseImageFormatProperties* pProperties);
+    VkResult vkQueueBindSparse(
+    VkQueue queue,
+        uint32_t bindInfoCount,
+        const VkBindSparseInfo* pBindInfo,
+        VkFence fence);
+    VkResult vkCreateFence(
+    VkDevice device,
+        const VkFenceCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkFence* pFence);
+    void vkDestroyFence(
+    VkDevice device,
+        VkFence fence,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkResetFences(
+    VkDevice device,
+        uint32_t fenceCount,
+        const VkFence* pFences);
+    VkResult vkGetFenceStatus(
+    VkDevice device,
+        VkFence fence);
+    VkResult vkWaitForFences(
+    VkDevice device,
+        uint32_t fenceCount,
+        const VkFence* pFences,
+        VkBool32 waitAll,
+        uint64_t timeout);
+    VkResult vkCreateSemaphore(
+    VkDevice device,
+        const VkSemaphoreCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSemaphore* pSemaphore);
+    void vkDestroySemaphore(
+    VkDevice device,
+        VkSemaphore semaphore,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateEvent(
+    VkDevice device,
+        const VkEventCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkEvent* pEvent);
+    void vkDestroyEvent(
+    VkDevice device,
+        VkEvent event,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkGetEventStatus(
+    VkDevice device,
+        VkEvent event);
+    VkResult vkSetEvent(
+    VkDevice device,
+        VkEvent event);
+    VkResult vkResetEvent(
+    VkDevice device,
+        VkEvent event);
+    VkResult vkCreateQueryPool(
+    VkDevice device,
+        const VkQueryPoolCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkQueryPool* pQueryPool);
+    void vkDestroyQueryPool(
+    VkDevice device,
+        VkQueryPool queryPool,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkGetQueryPoolResults(
+    VkDevice device,
+        VkQueryPool queryPool,
+        uint32_t firstQuery,
+        uint32_t queryCount,
+        size_t dataSize,
+        void* pData,
+        VkDeviceSize stride,
+        VkQueryResultFlags flags);
+    VkResult vkCreateBuffer(
+    VkDevice device,
+        const VkBufferCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkBuffer* pBuffer);
+    void vkDestroyBuffer(
+    VkDevice device,
+        VkBuffer buffer,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateBufferView(
+    VkDevice device,
+        const VkBufferViewCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkBufferView* pView);
+    void vkDestroyBufferView(
+    VkDevice device,
+        VkBufferView bufferView,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateImage(
+    VkDevice device,
+        const VkImageCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkImage* pImage);
+    void vkDestroyImage(
+    VkDevice device,
+        VkImage image,
+        const VkAllocationCallbacks* pAllocator);
+    void vkGetImageSubresourceLayout(
+    VkDevice device,
+        VkImage image,
+        const VkImageSubresource* pSubresource,
+        VkSubresourceLayout* pLayout);
+    VkResult vkCreateImageView(
+    VkDevice device,
+        const VkImageViewCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkImageView* pView);
+    void vkDestroyImageView(
+    VkDevice device,
+        VkImageView imageView,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateShaderModule(
+    VkDevice device,
+        const VkShaderModuleCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkShaderModule* pShaderModule);
+    void vkDestroyShaderModule(
+    VkDevice device,
+        VkShaderModule shaderModule,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreatePipelineCache(
+    VkDevice device,
+        const VkPipelineCacheCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkPipelineCache* pPipelineCache);
+    void vkDestroyPipelineCache(
+    VkDevice device,
+        VkPipelineCache pipelineCache,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkGetPipelineCacheData(
+    VkDevice device,
+        VkPipelineCache pipelineCache,
+        size_t* pDataSize,
+        void* pData);
+    VkResult vkMergePipelineCaches(
+    VkDevice device,
+        VkPipelineCache dstCache,
+        uint32_t srcCacheCount,
+        const VkPipelineCache* pSrcCaches);
+    VkResult vkCreateGraphicsPipelines(
+    VkDevice device,
+        VkPipelineCache pipelineCache,
+        uint32_t createInfoCount,
+        const VkGraphicsPipelineCreateInfo* pCreateInfos,
+        const VkAllocationCallbacks* pAllocator,
+        VkPipeline* pPipelines);
+    VkResult vkCreateComputePipelines(
+    VkDevice device,
+        VkPipelineCache pipelineCache,
+        uint32_t createInfoCount,
+        const VkComputePipelineCreateInfo* pCreateInfos,
+        const VkAllocationCallbacks* pAllocator,
+        VkPipeline* pPipelines);
+    void vkDestroyPipeline(
+    VkDevice device,
+        VkPipeline pipeline,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreatePipelineLayout(
+    VkDevice device,
+        const VkPipelineLayoutCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkPipelineLayout* pPipelineLayout);
+    void vkDestroyPipelineLayout(
+    VkDevice device,
+        VkPipelineLayout pipelineLayout,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateSampler(
+    VkDevice device,
+        const VkSamplerCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSampler* pSampler);
+    void vkDestroySampler(
+    VkDevice device,
+        VkSampler sampler,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateDescriptorSetLayout(
+    VkDevice device,
+        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDescriptorSetLayout* pSetLayout);
+    void vkDestroyDescriptorSetLayout(
+    VkDevice device,
+        VkDescriptorSetLayout descriptorSetLayout,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateDescriptorPool(
+    VkDevice device,
+        const VkDescriptorPoolCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDescriptorPool* pDescriptorPool);
+    void vkDestroyDescriptorPool(
+    VkDevice device,
+        VkDescriptorPool descriptorPool,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkResetDescriptorPool(
+    VkDevice device,
+        VkDescriptorPool descriptorPool,
+        VkDescriptorPoolResetFlags flags);
+    VkResult vkAllocateDescriptorSets(
+    VkDevice device,
+        const VkDescriptorSetAllocateInfo* pAllocateInfo,
+        VkDescriptorSet* pDescriptorSets);
+    VkResult vkFreeDescriptorSets(
+    VkDevice device,
+        VkDescriptorPool descriptorPool,
+        uint32_t descriptorSetCount,
+        const VkDescriptorSet* pDescriptorSets);
+    void vkUpdateDescriptorSets(
+    VkDevice device,
+        uint32_t descriptorWriteCount,
+        const VkWriteDescriptorSet* pDescriptorWrites,
+        uint32_t descriptorCopyCount,
+        const VkCopyDescriptorSet* pDescriptorCopies);
+    VkResult vkCreateFramebuffer(
+    VkDevice device,
+        const VkFramebufferCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkFramebuffer* pFramebuffer);
+    void vkDestroyFramebuffer(
+    VkDevice device,
+        VkFramebuffer framebuffer,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateRenderPass(
+    VkDevice device,
+        const VkRenderPassCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkRenderPass* pRenderPass);
+    void vkDestroyRenderPass(
+    VkDevice device,
+        VkRenderPass renderPass,
+        const VkAllocationCallbacks* pAllocator);
+    void vkGetRenderAreaGranularity(
+    VkDevice device,
+        VkRenderPass renderPass,
+        VkExtent2D* pGranularity);
+    VkResult vkCreateCommandPool(
+    VkDevice device,
+        const VkCommandPoolCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkCommandPool* pCommandPool);
+    void vkDestroyCommandPool(
+    VkDevice device,
+        VkCommandPool commandPool,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkResetCommandPool(
+    VkDevice device,
+        VkCommandPool commandPool,
+        VkCommandPoolResetFlags flags);
+    VkResult vkAllocateCommandBuffers(
+    VkDevice device,
+        const VkCommandBufferAllocateInfo* pAllocateInfo,
+        VkCommandBuffer* pCommandBuffers);
+    void vkFreeCommandBuffers(
+    VkDevice device,
+        VkCommandPool commandPool,
+        uint32_t commandBufferCount,
+        const VkCommandBuffer* pCommandBuffers);
+    VkResult vkBeginCommandBuffer(
+    VkCommandBuffer commandBuffer,
+        const VkCommandBufferBeginInfo* pBeginInfo);
+    VkResult vkEndCommandBuffer(
+    VkCommandBuffer commandBuffer);
+    VkResult vkResetCommandBuffer(
+    VkCommandBuffer commandBuffer,
+        VkCommandBufferResetFlags flags);
+    void vkCmdBindPipeline(
+    VkCommandBuffer commandBuffer,
+        VkPipelineBindPoint pipelineBindPoint,
+        VkPipeline pipeline);
+    void vkCmdSetViewport(
+    VkCommandBuffer commandBuffer,
+        uint32_t firstViewport,
+        uint32_t viewportCount,
+        const VkViewport* pViewports);
+    void vkCmdSetScissor(
+    VkCommandBuffer commandBuffer,
+        uint32_t firstScissor,
+        uint32_t scissorCount,
+        const VkRect2D* pScissors);
+    void vkCmdSetLineWidth(
+    VkCommandBuffer commandBuffer,
+        float lineWidth);
+    void vkCmdSetDepthBias(
+    VkCommandBuffer commandBuffer,
+        float depthBiasConstantFactor,
+        float depthBiasClamp,
+        float depthBiasSlopeFactor);
+    void vkCmdSetBlendConstants(
+    VkCommandBuffer commandBuffer,
+        const float blendConstants);
+    void vkCmdSetDepthBounds(
+    VkCommandBuffer commandBuffer,
+        float minDepthBounds,
+        float maxDepthBounds);
+    void vkCmdSetStencilCompareMask(
+    VkCommandBuffer commandBuffer,
+        VkStencilFaceFlags faceMask,
+        uint32_t compareMask);
+    void vkCmdSetStencilWriteMask(
+    VkCommandBuffer commandBuffer,
+        VkStencilFaceFlags faceMask,
+        uint32_t writeMask);
+    void vkCmdSetStencilReference(
+    VkCommandBuffer commandBuffer,
+        VkStencilFaceFlags faceMask,
+        uint32_t reference);
+    void vkCmdBindDescriptorSets(
+    VkCommandBuffer commandBuffer,
+        VkPipelineBindPoint pipelineBindPoint,
+        VkPipelineLayout layout,
+        uint32_t firstSet,
+        uint32_t descriptorSetCount,
+        const VkDescriptorSet* pDescriptorSets,
+        uint32_t dynamicOffsetCount,
+        const uint32_t* pDynamicOffsets);
+    void vkCmdBindIndexBuffer(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        VkIndexType indexType);
+    void vkCmdBindVertexBuffers(
+    VkCommandBuffer commandBuffer,
+        uint32_t firstBinding,
+        uint32_t bindingCount,
+        const VkBuffer* pBuffers,
+        const VkDeviceSize* pOffsets);
+    void vkCmdDraw(
+    VkCommandBuffer commandBuffer,
+        uint32_t vertexCount,
+        uint32_t instanceCount,
+        uint32_t firstVertex,
+        uint32_t firstInstance);
+    void vkCmdDrawIndexed(
+    VkCommandBuffer commandBuffer,
+        uint32_t indexCount,
+        uint32_t instanceCount,
+        uint32_t firstIndex,
+        int32_t vertexOffset,
+        uint32_t firstInstance);
+    void vkCmdDrawIndirect(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        uint32_t drawCount,
+        uint32_t stride);
+    void vkCmdDrawIndexedIndirect(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        uint32_t drawCount,
+        uint32_t stride);
+    void vkCmdDispatch(
+    VkCommandBuffer commandBuffer,
+        uint32_t groupCountX,
+        uint32_t groupCountY,
+        uint32_t groupCountZ);
+    void vkCmdDispatchIndirect(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset);
+    void vkCmdCopyBuffer(
+    VkCommandBuffer commandBuffer,
+        VkBuffer srcBuffer,
+        VkBuffer dstBuffer,
+        uint32_t regionCount,
+        const VkBufferCopy* pRegions);
+    void vkCmdCopyImage(
+    VkCommandBuffer commandBuffer,
+        VkImage srcImage,
+        VkImageLayout srcImageLayout,
+        VkImage dstImage,
+        VkImageLayout dstImageLayout,
+        uint32_t regionCount,
+        const VkImageCopy* pRegions);
+    void vkCmdBlitImage(
+    VkCommandBuffer commandBuffer,
+        VkImage srcImage,
+        VkImageLayout srcImageLayout,
+        VkImage dstImage,
+        VkImageLayout dstImageLayout,
+        uint32_t regionCount,
+        const VkImageBlit* pRegions,
+        VkFilter filter);
+    void vkCmdCopyBufferToImage(
+    VkCommandBuffer commandBuffer,
+        VkBuffer srcBuffer,
+        VkImage dstImage,
+        VkImageLayout dstImageLayout,
+        uint32_t regionCount,
+        const VkBufferImageCopy* pRegions);
+    void vkCmdCopyImageToBuffer(
+    VkCommandBuffer commandBuffer,
+        VkImage srcImage,
+        VkImageLayout srcImageLayout,
+        VkBuffer dstBuffer,
+        uint32_t regionCount,
+        const VkBufferImageCopy* pRegions);
+    void vkCmdUpdateBuffer(
+    VkCommandBuffer commandBuffer,
+        VkBuffer dstBuffer,
+        VkDeviceSize dstOffset,
+        VkDeviceSize dataSize,
+        const void* pData);
+    void vkCmdFillBuffer(
+    VkCommandBuffer commandBuffer,
+        VkBuffer dstBuffer,
+        VkDeviceSize dstOffset,
+        VkDeviceSize size,
+        uint32_t data);
+    void vkCmdClearColorImage(
+    VkCommandBuffer commandBuffer,
+        VkImage image,
+        VkImageLayout imageLayout,
+        const VkClearColorValue* pColor,
+        uint32_t rangeCount,
+        const VkImageSubresourceRange* pRanges);
+    void vkCmdClearDepthStencilImage(
+    VkCommandBuffer commandBuffer,
+        VkImage image,
+        VkImageLayout imageLayout,
+        const VkClearDepthStencilValue* pDepthStencil,
+        uint32_t rangeCount,
+        const VkImageSubresourceRange* pRanges);
+    void vkCmdClearAttachments(
+    VkCommandBuffer commandBuffer,
+        uint32_t attachmentCount,
+        const VkClearAttachment* pAttachments,
+        uint32_t rectCount,
+        const VkClearRect* pRects);
+    void vkCmdResolveImage(
+    VkCommandBuffer commandBuffer,
+        VkImage srcImage,
+        VkImageLayout srcImageLayout,
+        VkImage dstImage,
+        VkImageLayout dstImageLayout,
+        uint32_t regionCount,
+        const VkImageResolve* pRegions);
+    void vkCmdSetEvent(
+    VkCommandBuffer commandBuffer,
+        VkEvent event,
+        VkPipelineStageFlags stageMask);
+    void vkCmdResetEvent(
+    VkCommandBuffer commandBuffer,
+        VkEvent event,
+        VkPipelineStageFlags stageMask);
+    void vkCmdWaitEvents(
+    VkCommandBuffer commandBuffer,
+        uint32_t eventCount,
+        const VkEvent* pEvents,
+        VkPipelineStageFlags srcStageMask,
+        VkPipelineStageFlags dstStageMask,
+        uint32_t memoryBarrierCount,
+        const VkMemoryBarrier* pMemoryBarriers,
+        uint32_t bufferMemoryBarrierCount,
+        const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+        uint32_t imageMemoryBarrierCount,
+        const VkImageMemoryBarrier* pImageMemoryBarriers);
+    void vkCmdPipelineBarrier(
+    VkCommandBuffer commandBuffer,
+        VkPipelineStageFlags srcStageMask,
+        VkPipelineStageFlags dstStageMask,
+        VkDependencyFlags dependencyFlags,
+        uint32_t memoryBarrierCount,
+        const VkMemoryBarrier* pMemoryBarriers,
+        uint32_t bufferMemoryBarrierCount,
+        const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+        uint32_t imageMemoryBarrierCount,
+        const VkImageMemoryBarrier* pImageMemoryBarriers);
+    void vkCmdBeginQuery(
+    VkCommandBuffer commandBuffer,
+        VkQueryPool queryPool,
+        uint32_t query,
+        VkQueryControlFlags flags);
+    void vkCmdEndQuery(
+    VkCommandBuffer commandBuffer,
+        VkQueryPool queryPool,
+        uint32_t query);
+    void vkCmdResetQueryPool(
+    VkCommandBuffer commandBuffer,
+        VkQueryPool queryPool,
+        uint32_t firstQuery,
+        uint32_t queryCount);
+    void vkCmdWriteTimestamp(
+    VkCommandBuffer commandBuffer,
+        VkPipelineStageFlagBits pipelineStage,
+        VkQueryPool queryPool,
+        uint32_t query);
+    void vkCmdCopyQueryPoolResults(
+    VkCommandBuffer commandBuffer,
+        VkQueryPool queryPool,
+        uint32_t firstQuery,
+        uint32_t queryCount,
+        VkBuffer dstBuffer,
+        VkDeviceSize dstOffset,
+        VkDeviceSize stride,
+        VkQueryResultFlags flags);
+    void vkCmdPushConstants(
+    VkCommandBuffer commandBuffer,
+        VkPipelineLayout layout,
+        VkShaderStageFlags stageFlags,
+        uint32_t offset,
+        uint32_t size,
+        const void* pValues);
+    void vkCmdBeginRenderPass(
+    VkCommandBuffer commandBuffer,
+        const VkRenderPassBeginInfo* pRenderPassBegin,
+        VkSubpassContents contents);
+    void vkCmdNextSubpass(
+    VkCommandBuffer commandBuffer,
+        VkSubpassContents contents);
+    void vkCmdEndRenderPass(
+    VkCommandBuffer commandBuffer);
+    void vkCmdExecuteCommands(
+    VkCommandBuffer commandBuffer,
+        uint32_t commandBufferCount,
+        const VkCommandBuffer* pCommandBuffers);
+#endif
+#ifdef VK_VERSION_1_1
+    VkResult vkEnumerateInstanceVersion(
+    uint32_t* pApiVersion);
+    VkResult vkBindBufferMemory2(
+    VkDevice device,
+        uint32_t bindInfoCount,
+        const VkBindBufferMemoryInfo* pBindInfos);
+    VkResult vkBindImageMemory2(
+    VkDevice device,
+        uint32_t bindInfoCount,
+        const VkBindImageMemoryInfo* pBindInfos);
+    void vkGetDeviceGroupPeerMemoryFeatures(
+    VkDevice device,
+        uint32_t heapIndex,
+        uint32_t localDeviceIndex,
+        uint32_t remoteDeviceIndex,
+        VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+    void vkCmdSetDeviceMask(
+    VkCommandBuffer commandBuffer,
+        uint32_t deviceMask);
+    void vkCmdDispatchBase(
+    VkCommandBuffer commandBuffer,
+        uint32_t baseGroupX,
+        uint32_t baseGroupY,
+        uint32_t baseGroupZ,
+        uint32_t groupCountX,
+        uint32_t groupCountY,
+        uint32_t groupCountZ);
+    VkResult vkEnumeratePhysicalDeviceGroups(
+    VkInstance instance,
+        uint32_t* pPhysicalDeviceGroupCount,
+        VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+    void vkGetImageMemoryRequirements2(
+    VkDevice device,
+        const VkImageMemoryRequirementsInfo2* pInfo,
+        VkMemoryRequirements2* pMemoryRequirements);
+    void vkGetBufferMemoryRequirements2(
+    VkDevice device,
+        const VkBufferMemoryRequirementsInfo2* pInfo,
+        VkMemoryRequirements2* pMemoryRequirements);
+    void vkGetImageSparseMemoryRequirements2(
+    VkDevice device,
+        const VkImageSparseMemoryRequirementsInfo2* pInfo,
+        uint32_t* pSparseMemoryRequirementCount,
+        VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+    void vkGetPhysicalDeviceFeatures2(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceFeatures2* pFeatures);
+    void vkGetPhysicalDeviceProperties2(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceProperties2* pProperties);
+    void vkGetPhysicalDeviceFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkFormatProperties2* pFormatProperties);
+    VkResult vkGetPhysicalDeviceImageFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+        VkImageFormatProperties2* pImageFormatProperties);
+    void vkGetPhysicalDeviceQueueFamilyProperties2(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pQueueFamilyPropertyCount,
+        VkQueueFamilyProperties2* pQueueFamilyProperties);
+    void vkGetPhysicalDeviceMemoryProperties2(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+    void vkGetPhysicalDeviceSparseImageFormatProperties2(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+        uint32_t* pPropertyCount,
+        VkSparseImageFormatProperties2* pProperties);
+    void vkTrimCommandPool(
+    VkDevice device,
+        VkCommandPool commandPool,
+        VkCommandPoolTrimFlags flags);
+    void vkGetDeviceQueue2(
+    VkDevice device,
+        const VkDeviceQueueInfo2* pQueueInfo,
+        VkQueue* pQueue);
+    VkResult vkCreateSamplerYcbcrConversion(
+    VkDevice device,
+        const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSamplerYcbcrConversion* pYcbcrConversion);
+    void vkDestroySamplerYcbcrConversion(
+    VkDevice device,
+        VkSamplerYcbcrConversion ycbcrConversion,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateDescriptorUpdateTemplate(
+    VkDevice device,
+        const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+    void vkDestroyDescriptorUpdateTemplate(
+    VkDevice device,
+        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+        const VkAllocationCallbacks* pAllocator);
+    void vkUpdateDescriptorSetWithTemplate(
+    VkDevice device,
+        VkDescriptorSet descriptorSet,
+        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+        const void* pData);
+    void vkGetPhysicalDeviceExternalBufferProperties(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+        VkExternalBufferProperties* pExternalBufferProperties);
+    void vkGetPhysicalDeviceExternalFenceProperties(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+        VkExternalFenceProperties* pExternalFenceProperties);
+    void vkGetPhysicalDeviceExternalSemaphoreProperties(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+        VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+    void vkGetDescriptorSetLayoutSupport(
+    VkDevice device,
+        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+        VkDescriptorSetLayoutSupport* pSupport);
+#endif
+#ifdef VK_KHR_surface
+    void vkDestroySurfaceKHR(
+    VkInstance instance,
+        VkSurfaceKHR surface,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex,
+        VkSurfaceKHR surface,
+        VkBool32* pSupported);
+    VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+    VkPhysicalDevice physicalDevice,
+        VkSurfaceKHR surface,
+        VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+    VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
+    VkPhysicalDevice physicalDevice,
+        VkSurfaceKHR surface,
+        uint32_t* pSurfaceFormatCount,
+        VkSurfaceFormatKHR* pSurfaceFormats);
+    VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
+    VkPhysicalDevice physicalDevice,
+        VkSurfaceKHR surface,
+        uint32_t* pPresentModeCount,
+        VkPresentModeKHR* pPresentModes);
+#endif
+#ifdef VK_KHR_swapchain
+    VkResult vkCreateSwapchainKHR(
+    VkDevice device,
+        const VkSwapchainCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSwapchainKHR* pSwapchain);
+    void vkDestroySwapchainKHR(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkGetSwapchainImagesKHR(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        uint32_t* pSwapchainImageCount,
+        VkImage* pSwapchainImages);
+    VkResult vkAcquireNextImageKHR(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        uint64_t timeout,
+        VkSemaphore semaphore,
+        VkFence fence,
+        uint32_t* pImageIndex);
+    VkResult vkQueuePresentKHR(
+    VkQueue queue,
+        const VkPresentInfoKHR* pPresentInfo);
+    VkResult vkGetDeviceGroupPresentCapabilitiesKHR(
+    VkDevice device,
+        VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
+    VkResult vkGetDeviceGroupSurfacePresentModesKHR(
+    VkDevice device,
+        VkSurfaceKHR surface,
+        VkDeviceGroupPresentModeFlagsKHR* pModes);
+    VkResult vkGetPhysicalDevicePresentRectanglesKHR(
+    VkPhysicalDevice physicalDevice,
+        VkSurfaceKHR surface,
+        uint32_t* pRectCount,
+        VkRect2D* pRects);
+    VkResult vkAcquireNextImage2KHR(
+    VkDevice device,
+        const VkAcquireNextImageInfoKHR* pAcquireInfo,
+        uint32_t* pImageIndex);
+#endif
+#ifdef VK_KHR_display
+    VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pPropertyCount,
+        VkDisplayPropertiesKHR* pProperties);
+    VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pPropertyCount,
+        VkDisplayPlanePropertiesKHR* pProperties);
+    VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t planeIndex,
+        uint32_t* pDisplayCount,
+        VkDisplayKHR* pDisplays);
+    VkResult vkGetDisplayModePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        VkDisplayKHR display,
+        uint32_t* pPropertyCount,
+        VkDisplayModePropertiesKHR* pProperties);
+    VkResult vkCreateDisplayModeKHR(
+    VkPhysicalDevice physicalDevice,
+        VkDisplayKHR display,
+        const VkDisplayModeCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDisplayModeKHR* pMode);
+    VkResult vkGetDisplayPlaneCapabilitiesKHR(
+    VkPhysicalDevice physicalDevice,
+        VkDisplayModeKHR mode,
+        uint32_t planeIndex,
+        VkDisplayPlaneCapabilitiesKHR* pCapabilities);
+    VkResult vkCreateDisplayPlaneSurfaceKHR(
+    VkInstance instance,
+        const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+#endif
+#ifdef VK_KHR_display_swapchain
+    VkResult vkCreateSharedSwapchainsKHR(
+    VkDevice device,
+        uint32_t swapchainCount,
+        const VkSwapchainCreateInfoKHR* pCreateInfos,
+        const VkAllocationCallbacks* pAllocator,
+        VkSwapchainKHR* pSwapchains);
+#endif
+#ifdef VK_KHR_xlib_surface
+    VkResult vkCreateXlibSurfaceKHR(
+    VkInstance instance,
+        const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+    VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex,
+        Display* dpy,
+        VisualID visualID);
+#endif
+#ifdef VK_KHR_xcb_surface
+    VkResult vkCreateXcbSurfaceKHR(
+    VkInstance instance,
+        const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+    VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex,
+        xcb_connection_t* connection,
+        xcb_visualid_t visual_id);
+#endif
+#ifdef VK_KHR_wayland_surface
+    VkResult vkCreateWaylandSurfaceKHR(
+    VkInstance instance,
+        const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+    VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex,
+        wl_display* display);
+#endif
+#ifdef VK_KHR_mir_surface
+    VkResult vkCreateMirSurfaceKHR(
+    VkInstance instance,
+        const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+    VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex,
+        MirConnection* connection);
+#endif
+#ifdef VK_KHR_android_surface
+    VkResult vkCreateAndroidSurfaceKHR(
+    VkInstance instance,
+        const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+#endif
+#ifdef VK_KHR_win32_surface
+    VkResult vkCreateWin32SurfaceKHR(
+    VkInstance instance,
+        const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+    VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t queueFamilyIndex);
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+    void vkGetPhysicalDeviceFeatures2KHR(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceFeatures2* pFeatures);
+    void vkGetPhysicalDeviceProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceProperties2* pProperties);
+    void vkGetPhysicalDeviceFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkFormatProperties2* pFormatProperties);
+    VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+        VkImageFormatProperties2* pImageFormatProperties);
+    void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pQueueFamilyPropertyCount,
+        VkQueueFamilyProperties2* pQueueFamilyProperties);
+    void vkGetPhysicalDeviceMemoryProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+    void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+        uint32_t* pPropertyCount,
+        VkSparseImageFormatProperties2* pProperties);
+#endif
+#ifdef VK_KHR_device_group
+    void vkGetDeviceGroupPeerMemoryFeaturesKHR(
+    VkDevice device,
+        uint32_t heapIndex,
+        uint32_t localDeviceIndex,
+        uint32_t remoteDeviceIndex,
+        VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+    void vkCmdSetDeviceMaskKHR(
+    VkCommandBuffer commandBuffer,
+        uint32_t deviceMask);
+    void vkCmdDispatchBaseKHR(
+    VkCommandBuffer commandBuffer,
+        uint32_t baseGroupX,
+        uint32_t baseGroupY,
+        uint32_t baseGroupZ,
+        uint32_t groupCountX,
+        uint32_t groupCountY,
+        uint32_t groupCountZ);
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+    void vkTrimCommandPoolKHR(
+    VkDevice device,
+        VkCommandPool commandPool,
+        VkCommandPoolTrimFlags flags);
+#endif
+#ifdef VK_KHR_device_group_creation
+    VkResult vkEnumeratePhysicalDeviceGroupsKHR(
+    VkInstance instance,
+        uint32_t* pPhysicalDeviceGroupCount,
+        VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+    void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+        VkExternalBufferProperties* pExternalBufferProperties);
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+    VkResult vkGetMemoryWin32HandleKHR(
+    VkDevice device,
+        const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+        HANDLE* pHandle);
+    VkResult vkGetMemoryWin32HandlePropertiesKHR(
+    VkDevice device,
+        VkExternalMemoryHandleTypeFlagBits handleType,
+        HANDLE handle,
+        VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+#endif
+#ifdef VK_KHR_external_memory_fd
+    VkResult vkGetMemoryFdKHR(
+    VkDevice device,
+        const VkMemoryGetFdInfoKHR* pGetFdInfo,
+        int* pFd);
+    VkResult vkGetMemoryFdPropertiesKHR(
+    VkDevice device,
+        VkExternalMemoryHandleTypeFlagBits handleType,
+        int fd,
+        VkMemoryFdPropertiesKHR* pMemoryFdProperties);
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+    void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+        VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+    VkResult vkImportSemaphoreWin32HandleKHR(
+    VkDevice device,
+        const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+    VkResult vkGetSemaphoreWin32HandleKHR(
+    VkDevice device,
+        const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+        HANDLE* pHandle);
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+    VkResult vkImportSemaphoreFdKHR(
+    VkDevice device,
+        const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
+    VkResult vkGetSemaphoreFdKHR(
+    VkDevice device,
+        const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+        int* pFd);
+#endif
+#ifdef VK_KHR_push_descriptor
+    void vkCmdPushDescriptorSetKHR(
+    VkCommandBuffer commandBuffer,
+        VkPipelineBindPoint pipelineBindPoint,
+        VkPipelineLayout layout,
+        uint32_t set,
+        uint32_t descriptorWriteCount,
+        const VkWriteDescriptorSet* pDescriptorWrites);
+    void vkCmdPushDescriptorSetWithTemplateKHR(
+    VkCommandBuffer commandBuffer,
+        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+        VkPipelineLayout layout,
+        uint32_t set,
+        const void* pData);
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+#endif
+#ifdef VK_KHR_descriptor_update_template
+    VkResult vkCreateDescriptorUpdateTemplateKHR(
+    VkDevice device,
+        const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+    void vkDestroyDescriptorUpdateTemplateKHR(
+    VkDevice device,
+        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+        const VkAllocationCallbacks* pAllocator);
+    void vkUpdateDescriptorSetWithTemplateKHR(
+    VkDevice device,
+        VkDescriptorSet descriptorSet,
+        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+        const void* pData);
+#endif
+#ifdef VK_KHR_create_renderpass2
+    VkResult vkCreateRenderPass2KHR(
+    VkDevice device,
+        const VkRenderPassCreateInfo2KHR* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkRenderPass* pRenderPass);
+    void vkCmdBeginRenderPass2KHR(
+    VkCommandBuffer commandBuffer,
+        const VkRenderPassBeginInfo* pRenderPassBegin,
+        const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+    void vkCmdNextSubpass2KHR(
+    VkCommandBuffer commandBuffer,
+        const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+        const VkSubpassEndInfoKHR* pSubpassEndInfo);
+    void vkCmdEndRenderPass2KHR(
+    VkCommandBuffer commandBuffer,
+        const VkSubpassEndInfoKHR* pSubpassEndInfo);
+#endif
+#ifdef VK_KHR_shared_presentable_image
+    VkResult vkGetSwapchainStatusKHR(
+    VkDevice device,
+        VkSwapchainKHR swapchain);
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+    void vkGetPhysicalDeviceExternalFencePropertiesKHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+        VkExternalFenceProperties* pExternalFenceProperties);
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+    VkResult vkImportFenceWin32HandleKHR(
+    VkDevice device,
+        const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+    VkResult vkGetFenceWin32HandleKHR(
+    VkDevice device,
+        const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+        HANDLE* pHandle);
+#endif
+#ifdef VK_KHR_external_fence_fd
+    VkResult vkImportFenceFdKHR(
+    VkDevice device,
+        const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+    VkResult vkGetFenceFdKHR(
+    VkDevice device,
+        const VkFenceGetFdInfoKHR* pGetFdInfo,
+        int* pFd);
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+    VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+        VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
+    VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
+    VkPhysicalDevice physicalDevice,
+        const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+        uint32_t* pSurfaceFormatCount,
+        VkSurfaceFormat2KHR* pSurfaceFormats);
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+    VkResult vkGetPhysicalDeviceDisplayProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pPropertyCount,
+        VkDisplayProperties2KHR* pProperties);
+    VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        uint32_t* pPropertyCount,
+        VkDisplayPlaneProperties2KHR* pProperties);
+    VkResult vkGetDisplayModeProperties2KHR(
+    VkPhysicalDevice physicalDevice,
+        VkDisplayKHR display,
+        uint32_t* pPropertyCount,
+        VkDisplayModeProperties2KHR* pProperties);
+    VkResult vkGetDisplayPlaneCapabilities2KHR(
+    VkPhysicalDevice physicalDevice,
+        const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+        VkDisplayPlaneCapabilities2KHR* pCapabilities);
+#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
+    void vkGetImageMemoryRequirements2KHR(
+    VkDevice device,
+        const VkImageMemoryRequirementsInfo2* pInfo,
+        VkMemoryRequirements2* pMemoryRequirements);
+    void vkGetBufferMemoryRequirements2KHR(
+    VkDevice device,
+        const VkBufferMemoryRequirementsInfo2* pInfo,
+        VkMemoryRequirements2* pMemoryRequirements);
+    void vkGetImageSparseMemoryRequirements2KHR(
+    VkDevice device,
+        const VkImageSparseMemoryRequirementsInfo2* pInfo,
+        uint32_t* pSparseMemoryRequirementCount,
+        VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+#endif
+#ifdef VK_KHR_image_format_list
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+    VkResult vkCreateSamplerYcbcrConversionKHR(
+    VkDevice device,
+        const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSamplerYcbcrConversion* pYcbcrConversion);
+    void vkDestroySamplerYcbcrConversionKHR(
+    VkDevice device,
+        VkSamplerYcbcrConversion ycbcrConversion,
+        const VkAllocationCallbacks* pAllocator);
+#endif
+#ifdef VK_KHR_bind_memory2
+    VkResult vkBindBufferMemory2KHR(
+    VkDevice device,
+        uint32_t bindInfoCount,
+        const VkBindBufferMemoryInfo* pBindInfos);
+    VkResult vkBindImageMemory2KHR(
+    VkDevice device,
+        uint32_t bindInfoCount,
+        const VkBindImageMemoryInfo* pBindInfos);
+#endif
+#ifdef VK_KHR_maintenance3
+    void vkGetDescriptorSetLayoutSupportKHR(
+    VkDevice device,
+        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+        VkDescriptorSetLayoutSupport* pSupport);
+#endif
+#ifdef VK_KHR_draw_indirect_count
+    void vkCmdDrawIndirectCountKHR(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        VkBuffer countBuffer,
+        VkDeviceSize countBufferOffset,
+        uint32_t maxDrawCount,
+        uint32_t stride);
+    void vkCmdDrawIndexedIndirectCountKHR(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        VkBuffer countBuffer,
+        VkDeviceSize countBufferOffset,
+        uint32_t maxDrawCount,
+        uint32_t stride);
+#endif
+#ifdef VK_KHR_8bit_storage
+#endif
+#ifdef VK_EXT_debug_report
+    VkResult vkCreateDebugReportCallbackEXT(
+    VkInstance instance,
+        const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDebugReportCallbackEXT* pCallback);
+    void vkDestroyDebugReportCallbackEXT(
+    VkInstance instance,
+        VkDebugReportCallbackEXT callback,
+        const VkAllocationCallbacks* pAllocator);
+    void vkDebugReportMessageEXT(
+    VkInstance instance,
+        VkDebugReportFlagsEXT flags,
+        VkDebugReportObjectTypeEXT objectType,
+        uint64_t object,
+        size_t location,
+        int32_t messageCode,
+        const char* pLayerPrefix,
+        const char* pMessage);
+#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
+    VkResult vkDebugMarkerSetObjectTagEXT(
+    VkDevice device,
+        const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+    VkResult vkDebugMarkerSetObjectNameEXT(
+    VkDevice device,
+        const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+    void vkCmdDebugMarkerBeginEXT(
+    VkCommandBuffer commandBuffer,
+        const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+    void vkCmdDebugMarkerEndEXT(
+    VkCommandBuffer commandBuffer);
+    void vkCmdDebugMarkerInsertEXT(
+    VkCommandBuffer commandBuffer,
+        const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+#endif
+#ifdef VK_AMD_draw_indirect_count
+    void vkCmdDrawIndirectCountAMD(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        VkBuffer countBuffer,
+        VkDeviceSize countBufferOffset,
+        uint32_t maxDrawCount,
+        uint32_t stride);
+    void vkCmdDrawIndexedIndirectCountAMD(
+    VkCommandBuffer commandBuffer,
+        VkBuffer buffer,
+        VkDeviceSize offset,
+        VkBuffer countBuffer,
+        VkDeviceSize countBufferOffset,
+        uint32_t maxDrawCount,
+        uint32_t stride);
+#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
+    VkResult vkGetShaderInfoAMD(
+    VkDevice device,
+        VkPipeline pipeline,
+        VkShaderStageFlagBits shaderStage,
+        VkShaderInfoTypeAMD infoType,
+        size_t* pInfoSize,
+        void* pInfo);
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+    VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+    VkPhysicalDevice physicalDevice,
+        VkFormat format,
+        VkImageType type,
+        VkImageTiling tiling,
+        VkImageUsageFlags usage,
+        VkImageCreateFlags flags,
+        VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+        VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+#endif
+#ifdef VK_NV_external_memory
+#endif
+#ifdef VK_NV_external_memory_win32
+    VkResult vkGetMemoryWin32HandleNV(
+    VkDevice device,
+        VkDeviceMemory memory,
+        VkExternalMemoryHandleTypeFlagsNV handleType,
+        HANDLE* pHandle);
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+#endif
+#ifdef VK_EXT_validation_flags
+#endif
+#ifdef VK_NN_vi_surface
+    VkResult vkCreateViSurfaceNN(
+    VkInstance instance,
+        const VkViSurfaceCreateInfoNN* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+    void vkCmdBeginConditionalRenderingEXT(
+    VkCommandBuffer commandBuffer,
+        const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+    void vkCmdEndConditionalRenderingEXT(
+    VkCommandBuffer commandBuffer);
+#endif
+#ifdef VK_NVX_device_generated_commands
+    void vkCmdProcessCommandsNVX(
+    VkCommandBuffer commandBuffer,
+        const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
+    void vkCmdReserveSpaceForCommandsNVX(
+    VkCommandBuffer commandBuffer,
+        const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
+    VkResult vkCreateIndirectCommandsLayoutNVX(
+    VkDevice device,
+        const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
+    void vkDestroyIndirectCommandsLayoutNVX(
+    VkDevice device,
+        VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkCreateObjectTableNVX(
+    VkDevice device,
+        const VkObjectTableCreateInfoNVX* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkObjectTableNVX* pObjectTable);
+    void vkDestroyObjectTableNVX(
+    VkDevice device,
+        VkObjectTableNVX objectTable,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkRegisterObjectsNVX(
+    VkDevice device,
+        VkObjectTableNVX objectTable,
+        uint32_t objectCount,
+        const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+        const uint32_t* pObjectIndices);
+    VkResult vkUnregisterObjectsNVX(
+    VkDevice device,
+        VkObjectTableNVX objectTable,
+        uint32_t objectCount,
+        const VkObjectEntryTypeNVX* pObjectEntryTypes,
+        const uint32_t* pObjectIndices);
+    void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+    VkPhysicalDevice physicalDevice,
+        VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+        VkDeviceGeneratedCommandsLimitsNVX* pLimits);
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+    void vkCmdSetViewportWScalingNV(
+    VkCommandBuffer commandBuffer,
+        uint32_t firstViewport,
+        uint32_t viewportCount,
+        const VkViewportWScalingNV* pViewportWScalings);
+#endif
+#ifdef VK_EXT_direct_mode_display
+    VkResult vkReleaseDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+        VkDisplayKHR display);
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+    VkResult vkAcquireXlibDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+        Display* dpy,
+        VkDisplayKHR display);
+    VkResult vkGetRandROutputDisplayEXT(
+    VkPhysicalDevice physicalDevice,
+        Display* dpy,
+        RROutput rrOutput,
+        VkDisplayKHR* pDisplay);
+#endif
+#ifdef VK_EXT_display_surface_counter
+    VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+    VkPhysicalDevice physicalDevice,
+        VkSurfaceKHR surface,
+        VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
+#endif
+#ifdef VK_EXT_display_control
+    VkResult vkDisplayPowerControlEXT(
+    VkDevice device,
+        VkDisplayKHR display,
+        const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
+    VkResult vkRegisterDeviceEventEXT(
+    VkDevice device,
+        const VkDeviceEventInfoEXT* pDeviceEventInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkFence* pFence);
+    VkResult vkRegisterDisplayEventEXT(
+    VkDevice device,
+        VkDisplayKHR display,
+        const VkDisplayEventInfoEXT* pDisplayEventInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkFence* pFence);
+    VkResult vkGetSwapchainCounterEXT(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        VkSurfaceCounterFlagBitsEXT counter,
+        uint64_t* pCounterValue);
+#endif
+#ifdef VK_GOOGLE_display_timing
+    VkResult vkGetRefreshCycleDurationGOOGLE(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+    VkResult vkGetPastPresentationTimingGOOGLE(
+    VkDevice device,
+        VkSwapchainKHR swapchain,
+        uint32_t* pPresentationTimingCount,
+        VkPastPresentationTimingGOOGLE* pPresentationTimings);
+#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
+    void vkCmdSetDiscardRectangleEXT(
+    VkCommandBuffer commandBuffer,
+        uint32_t firstDiscardRectangle,
+        uint32_t discardRectangleCount,
+        const VkRect2D* pDiscardRectangles);
+#endif
+#ifdef VK_EXT_conservative_rasterization
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+    void vkSetHdrMetadataEXT(
+    VkDevice device,
+        uint32_t swapchainCount,
+        const VkSwapchainKHR* pSwapchains,
+        const VkHdrMetadataEXT* pMetadata);
+#endif
+#ifdef VK_MVK_ios_surface
+    VkResult vkCreateIOSSurfaceMVK(
+    VkInstance instance,
+        const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+#endif
+#ifdef VK_MVK_macos_surface
+    VkResult vkCreateMacOSSurfaceMVK(
+    VkInstance instance,
+        const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkSurfaceKHR* pSurface);
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+    VkResult vkSetDebugUtilsObjectNameEXT(
+    VkDevice device,
+        const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
+    VkResult vkSetDebugUtilsObjectTagEXT(
+    VkDevice device,
+        const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
+    void vkQueueBeginDebugUtilsLabelEXT(
+    VkQueue queue,
+        const VkDebugUtilsLabelEXT* pLabelInfo);
+    void vkQueueEndDebugUtilsLabelEXT(
+    VkQueue queue);
+    void vkQueueInsertDebugUtilsLabelEXT(
+    VkQueue queue,
+        const VkDebugUtilsLabelEXT* pLabelInfo);
+    void vkCmdBeginDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer,
+        const VkDebugUtilsLabelEXT* pLabelInfo);
+    void vkCmdEndDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer);
+    void vkCmdInsertDebugUtilsLabelEXT(
+    VkCommandBuffer commandBuffer,
+        const VkDebugUtilsLabelEXT* pLabelInfo);
+    VkResult vkCreateDebugUtilsMessengerEXT(
+    VkInstance instance,
+        const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkDebugUtilsMessengerEXT* pMessenger);
+    void vkDestroyDebugUtilsMessengerEXT(
+    VkInstance instance,
+        VkDebugUtilsMessengerEXT messenger,
+        const VkAllocationCallbacks* pAllocator);
+    void vkSubmitDebugUtilsMessageEXT(
+    VkInstance instance,
+        VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+        VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+        const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+    VkResult vkGetAndroidHardwareBufferPropertiesANDROID(
+    VkDevice device,
+        const AHardwareBuffer* buffer,
+        VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+    VkResult vkGetMemoryAndroidHardwareBufferANDROID(
+    VkDevice device,
+        const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+        AHardwareBuffer** pBuffer);
+#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
+    void vkCmdSetSampleLocationsEXT(
+    VkCommandBuffer commandBuffer,
+        const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+    void vkGetPhysicalDeviceMultisamplePropertiesEXT(
+    VkPhysicalDevice physicalDevice,
+        VkSampleCountFlagBits samples,
+        VkMultisamplePropertiesEXT* pMultisampleProperties);
+#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
+    VkResult vkCreateValidationCacheEXT(
+    VkDevice device,
+        const VkValidationCacheCreateInfoEXT* pCreateInfo,
+        const VkAllocationCallbacks* pAllocator,
+        VkValidationCacheEXT* pValidationCache);
+    void vkDestroyValidationCacheEXT(
+    VkDevice device,
+        VkValidationCacheEXT validationCache,
+        const VkAllocationCallbacks* pAllocator);
+    VkResult vkMergeValidationCachesEXT(
+    VkDevice device,
+        VkValidationCacheEXT dstCache,
+        uint32_t srcCacheCount,
+        const VkValidationCacheEXT* pSrcCaches);
+    VkResult vkGetValidationCacheDataEXT(
+    VkDevice device,
+        VkValidationCacheEXT validationCache,
+        size_t* pDataSize,
+        void* pData);
+#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
+    VkResult vkGetMemoryHostPointerPropertiesEXT(
+    VkDevice device,
+        VkExternalMemoryHandleTypeFlagBits handleType,
+        const void* pHostPointer,
+        VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+#endif
+#ifdef VK_AMD_buffer_marker
+    void vkCmdWriteBufferMarkerAMD(
+    VkCommandBuffer commandBuffer,
+        VkPipelineStageFlagBits pipelineStage,
+        VkBuffer dstBuffer,
+        VkDeviceSize dstOffset,
+        uint32_t 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
+    void vkCmdSetCheckpointNV(
+    VkCommandBuffer commandBuffer,
+        const void* pCheckpointMarker);
+    void vkGetQueueCheckpointDataNV(
+    VkQueue queue,
+        uint32_t* pCheckpointDataCount,
+        VkCheckpointDataNV* pCheckpointData);
+#endif
+
 private:
     class Impl;
     std::unique_ptr<Impl> mImpl;
 };
 
-#else
-
-#ifndef VK_ENCODER_H
-#define VK_ENCODER_H
-
-class IOStream;
-
-// Placeholder version to make non-C++11 happy
-class VkEncoder {
-public:
-    VkEncoder(IOStream*) { }
-    ~VkEncoder() { }
-};
-
-#endif // VK_ENCODER_H
-
 
-#endif
\ No newline at end of file
diff --git a/system/vulkan_cereal/goldfish_vk_marshaling_guest.cpp b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
similarity index 52%
rename from system/vulkan_cereal/goldfish_vk_marshaling_guest.cpp
rename to system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
index b93f8a6da020df81a4c76262f6b79cdb1ef5e53a..811b7ba8fd1afbe87fd81b5d8431e0fa738ce027 100644
--- a/system/vulkan_cereal/goldfish_vk_marshaling_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
@@ -129,105 +129,6 @@ void unmarshal_VkAllocationCallbacks(
     vkStream->read((PFN_vkInternalFreeNotification*)&forUnmarshaling->pfnInternalFree, sizeof(PFN_vkInternalFreeNotification));
 }
 
-VkResult marshal_vkCreateInstance(
-    VulkanStream* vkStream,
-    const VkInstanceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkInstance* pInstance)
-{
-    uint32_t opcode = OP_vkCreateInstance;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    marshal_VkInstanceCreateInfo(vkStream, (const VkInstanceCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkInstance*)pInstance, sizeof(VkInstance));
-    VkResult marshal_vkCreateInstance_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateInstance_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateInstance_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateInstance(
-    VulkanStream* vkStream,
-    const VkInstanceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkInstance* pInstance)
-{
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkInstanceCreateInfo));
-    unmarshal_VkInstanceCreateInfo(vkStream, (VkInstanceCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkInstance*)pInstance, sizeof(VkInstance));
-    VkResult unmarshal_vkCreateInstance_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateInstance_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateInstance_VkResult_return;
-}
-
-void marshal_vkDestroyInstance(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyInstance;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyInstance(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkEnumeratePhysicalDevices(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceCount,
-    VkPhysicalDevice* pPhysicalDevices)
-{
-    uint32_t opcode = OP_vkEnumeratePhysicalDevices;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
-    vkStream->read((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
-    VkResult marshal_vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumeratePhysicalDevices_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumeratePhysicalDevices(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceCount,
-    VkPhysicalDevice* pPhysicalDevices)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
-    VkResult unmarshal_vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumeratePhysicalDevices_VkResult_return;
-}
-
 void marshal_VkPhysicalDeviceFeatures(
     VulkanStream* vkStream,
     const VkPhysicalDeviceFeatures* forMarshaling)
@@ -350,26 +251,6 @@ void unmarshal_VkPhysicalDeviceFeatures(
     vkStream->read((VkBool32*)&forUnmarshaling->inheritedQueries, sizeof(VkBool32));
 }
 
-void marshal_vkGetPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures* pFeatures)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceFeatures;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(pFeatures));
-}
-
-void unmarshal_vkGetPhysicalDeviceFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures* pFeatures)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(pFeatures));
-}
-
 void marshal_VkFormatProperties(
     VulkanStream* vkStream,
     const VkFormatProperties* forMarshaling)
@@ -388,30 +269,6 @@ void unmarshal_VkFormatProperties(
     vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->bufferFeatures, sizeof(VkFormatFeatureFlags));
 }
 
-void marshal_vkGetPhysicalDeviceFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties* pFormatProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceFormatProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    marshal_VkFormatProperties(vkStream, (VkFormatProperties*)(pFormatProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties* pFormatProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    unmarshal_VkFormatProperties(vkStream, (VkFormatProperties*)(pFormatProperties));
-}
-
 void marshal_VkExtent3D(
     VulkanStream* vkStream,
     const VkExtent3D* forMarshaling)
@@ -452,52 +309,6 @@ void unmarshal_VkImageFormatProperties(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->maxResourceSize, sizeof(VkDeviceSize));
 }
 
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkImageFormatProperties* pImageFormatProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceImageFormatProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->write((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
-    marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(pImageFormatProperties));
-    VkResult marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkImageFormatProperties* pImageFormatProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->read((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
-    unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(pImageFormatProperties));
-    VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
-}
-
 void marshal_VkPhysicalDeviceLimits(
     VulkanStream* vkStream,
     const VkPhysicalDeviceLimits* forMarshaling)
@@ -774,26 +585,6 @@ void unmarshal_VkPhysicalDeviceProperties(
     unmarshal_VkPhysicalDeviceSparseProperties(vkStream, (VkPhysicalDeviceSparseProperties*)(&forUnmarshaling->sparseProperties));
 }
 
-void marshal_vkGetPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(pProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(pProperties));
-}
-
 void marshal_VkQueueFamilyProperties(
     VulkanStream* vkStream,
     const VkQueueFamilyProperties* forMarshaling)
@@ -814,36 +605,6 @@ void unmarshal_VkQueueFamilyProperties(
     unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->minImageTransferGranularity));
 }
 
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties* pQueueFamilyProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceQueueFamilyProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        marshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
-    }
-}
-
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties* pQueueFamilyProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        unmarshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
-    }
-}
-
 void marshal_VkMemoryType(
     VulkanStream* vkStream,
     const VkMemoryType* forMarshaling)
@@ -908,78 +669,6 @@ void unmarshal_VkPhysicalDeviceMemoryProperties(
     }
 }
 
-void marshal_vkGetPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceMemoryProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
-}
-
-PFN_vkVoidFunction marshal_vkGetInstanceProcAddr(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const char* pName)
-{
-    uint32_t opcode = OP_vkGetInstanceProcAddr;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->putString(pName);
-    PFN_vkVoidFunction marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
-    vkStream->read(&marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
-    return marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
-}
-
-PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const char* pName)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->loadStringInPlace((char**)&pName);
-    PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
-    vkStream->write(&unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
-    return unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
-}
-
-PFN_vkVoidFunction marshal_vkGetDeviceProcAddr(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const char* pName)
-{
-    uint32_t opcode = OP_vkGetDeviceProcAddr;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->putString(pName);
-    PFN_vkVoidFunction marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
-    vkStream->read(&marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
-    return marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
-}
-
-PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const char* pName)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->loadStringInPlace((char**)&pName);
-    PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
-    vkStream->write(&unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
-    return unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
-}
-
 void marshal_VkDeviceQueueCreateInfo(
     VulkanStream* vkStream,
     const VkDeviceQueueCreateInfo* forMarshaling)
@@ -1057,79 +746,6 @@ void unmarshal_VkDeviceCreateInfo(
     }
 }
 
-VkResult marshal_vkCreateDevice(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDeviceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDevice* pDevice)
-{
-    uint32_t opcode = OP_vkCreateDevice;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkDeviceCreateInfo(vkStream, (const VkDeviceCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDevice*)pDevice, sizeof(VkDevice));
-    VkResult marshal_vkCreateDevice_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDevice_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDevice_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDevice(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDeviceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDevice* pDevice)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDeviceCreateInfo));
-    unmarshal_VkDeviceCreateInfo(vkStream, (VkDeviceCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDevice*)pDevice, sizeof(VkDevice));
-    VkResult unmarshal_vkCreateDevice_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDevice_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDevice_VkResult_return;
-}
-
-void marshal_vkDestroyDevice(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDevice;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDevice(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkExtensionProperties(
     VulkanStream* vkStream,
     const VkExtensionProperties* forMarshaling)
@@ -1146,82 +762,6 @@ void unmarshal_VkExtensionProperties(
     vkStream->read((uint32_t*)&forUnmarshaling->specVersion, sizeof(uint32_t));
 }
 
-VkResult marshal_vkEnumerateInstanceExtensionProperties(
-    VulkanStream* vkStream,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties)
-{
-    uint32_t opcode = OP_vkEnumerateInstanceExtensionProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->putString(pLayerName);
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
-    }
-    VkResult marshal_vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumerateInstanceExtensionProperties(
-    VulkanStream* vkStream,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties)
-{
-    vkStream->loadStringInPlace((char**)&pLayerName);
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
-    }
-    VkResult unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
-}
-
-VkResult marshal_vkEnumerateDeviceExtensionProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties)
-{
-    uint32_t opcode = OP_vkEnumerateDeviceExtensionProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->putString(pLayerName);
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
-    }
-    VkResult marshal_vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumerateDeviceExtensionProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const char* pLayerName,
-    uint32_t* pPropertyCount,
-    VkExtensionProperties* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->loadStringInPlace((char**)&pLayerName);
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
-    }
-    VkResult unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
-}
-
 void marshal_VkLayerProperties(
     VulkanStream* vkStream,
     const VkLayerProperties* forMarshaling)
@@ -1242,102 +782,6 @@ void unmarshal_VkLayerProperties(
     vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
 }
 
-VkResult marshal_vkEnumerateInstanceLayerProperties(
-    VulkanStream* vkStream,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties)
-{
-    uint32_t opcode = OP_vkEnumerateInstanceLayerProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
-    }
-    VkResult marshal_vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumerateInstanceLayerProperties_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumerateInstanceLayerProperties(
-    VulkanStream* vkStream,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties)
-{
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
-    }
-    VkResult unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return;
-}
-
-VkResult marshal_vkEnumerateDeviceLayerProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties)
-{
-    uint32_t opcode = OP_vkEnumerateDeviceLayerProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
-    }
-    VkResult marshal_vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumerateDeviceLayerProperties_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumerateDeviceLayerProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkLayerProperties* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
-    }
-    VkResult unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return;
-}
-
-void marshal_vkGetDeviceQueue(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t queueFamilyIndex,
-    uint32_t queueIndex,
-    VkQueue* pQueue)
-{
-    uint32_t opcode = OP_vkGetDeviceQueue;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&queueIndex, sizeof(uint32_t));
-    vkStream->read((VkQueue*)pQueue, sizeof(VkQueue));
-}
-
-void unmarshal_vkGetDeviceQueue(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t queueFamilyIndex,
-    uint32_t queueIndex,
-    VkQueue* pQueue)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&queueIndex, sizeof(uint32_t));
-    vkStream->write((VkQueue*)pQueue, sizeof(VkQueue));
-}
-
 void marshal_VkSubmitInfo(
     VulkanStream* vkStream,
     const VkSubmitInfo* forMarshaling)
@@ -1374,91 +818,6 @@ void unmarshal_VkSubmitInfo(
     vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
 }
 
-VkResult marshal_vkQueueSubmit(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t submitCount,
-    const VkSubmitInfo* pSubmits,
-    VkFence fence)
-{
-    uint32_t opcode = OP_vkQueueSubmit;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->write((uint32_t*)&submitCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
-    {
-        marshal_VkSubmitInfo(vkStream, (const VkSubmitInfo*)(pSubmits + i));
-    }
-    vkStream->write((VkFence*)&fence, sizeof(VkFence));
-    VkResult marshal_vkQueueSubmit_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkQueueSubmit_VkResult_return, sizeof(VkResult));
-    return marshal_vkQueueSubmit_VkResult_return;
-}
-
-VkResult unmarshal_vkQueueSubmit(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t submitCount,
-    const VkSubmitInfo* pSubmits,
-    VkFence fence)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->read((uint32_t*)&submitCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pSubmits, ((submitCount)) * sizeof(const VkSubmitInfo));
-    for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
-    {
-        unmarshal_VkSubmitInfo(vkStream, (VkSubmitInfo*)(pSubmits + i));
-    }
-    vkStream->read((VkFence*)&fence, sizeof(VkFence));
-    VkResult unmarshal_vkQueueSubmit_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkQueueSubmit_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkQueueSubmit_VkResult_return;
-}
-
-VkResult marshal_vkQueueWaitIdle(
-    VulkanStream* vkStream,
-    VkQueue queue)
-{
-    uint32_t opcode = OP_vkQueueWaitIdle;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    VkResult marshal_vkQueueWaitIdle_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
-    return marshal_vkQueueWaitIdle_VkResult_return;
-}
-
-VkResult unmarshal_vkQueueWaitIdle(
-    VulkanStream* vkStream,
-    VkQueue queue)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    VkResult unmarshal_vkQueueWaitIdle_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkQueueWaitIdle_VkResult_return;
-}
-
-VkResult marshal_vkDeviceWaitIdle(
-    VulkanStream* vkStream,
-    VkDevice device)
-{
-    uint32_t opcode = OP_vkDeviceWaitIdle;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    VkResult marshal_vkDeviceWaitIdle_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
-    return marshal_vkDeviceWaitIdle_VkResult_return;
-}
-
-VkResult unmarshal_vkDeviceWaitIdle(
-    VulkanStream* vkStream,
-    VkDevice device)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    VkResult unmarshal_vkDeviceWaitIdle_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkDeviceWaitIdle_VkResult_return;
-}
-
 void marshal_VkMemoryAllocateInfo(
     VulkanStream* vkStream,
     const VkMemoryAllocateInfo* forMarshaling)
@@ -1481,145 +840,6 @@ void unmarshal_VkMemoryAllocateInfo(
     vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeIndex, sizeof(uint32_t));
 }
 
-VkResult marshal_vkAllocateMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryAllocateInfo* pAllocateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDeviceMemory* pMemory)
-{
-    uint32_t opcode = OP_vkAllocateMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkMemoryAllocateInfo(vkStream, (const VkMemoryAllocateInfo*)(pAllocateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
-    VkResult marshal_vkAllocateMemory_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAllocateMemory_VkResult_return, sizeof(VkResult));
-    return marshal_vkAllocateMemory_VkResult_return;
-}
-
-VkResult unmarshal_vkAllocateMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryAllocateInfo* pAllocateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDeviceMemory* pMemory)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkMemoryAllocateInfo));
-    unmarshal_VkMemoryAllocateInfo(vkStream, (VkMemoryAllocateInfo*)(pAllocateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
-    VkResult unmarshal_vkAllocateMemory_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAllocateMemory_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAllocateMemory_VkResult_return;
-}
-
-void marshal_vkFreeMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkFreeMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkFreeMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkMapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize offset,
-    VkDeviceSize size,
-    VkMemoryMapFlags flags,
-    void** ppData)
-{
-    uint32_t opcode = OP_vkMapMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
-    vkStream->write((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
-    vkStream->read((void**)ppData, sizeof(void*));
-    VkResult marshal_vkMapMemory_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkMapMemory_VkResult_return, sizeof(VkResult));
-    return marshal_vkMapMemory_VkResult_return;
-}
-
-VkResult unmarshal_vkMapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize offset,
-    VkDeviceSize size,
-    VkMemoryMapFlags flags,
-    void** ppData)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&size, sizeof(VkDeviceSize));
-    vkStream->read((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
-    vkStream->write((void**)ppData, sizeof(void*));
-    VkResult unmarshal_vkMapMemory_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkMapMemory_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkMapMemory_VkResult_return;
-}
-
-void marshal_vkUnmapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory)
-{
-    uint32_t opcode = OP_vkUnmapMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-}
-
-void unmarshal_vkUnmapMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-}
-
 void marshal_VkMappedMemoryRange(
     VulkanStream* vkStream,
     const VkMappedMemoryRange* forMarshaling)
@@ -1644,236 +864,22 @@ void unmarshal_VkMappedMemoryRange(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
 }
 
-VkResult marshal_vkFlushMappedMemoryRanges(
+void marshal_VkMemoryRequirements(
     VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges)
+    const VkMemoryRequirements* forMarshaling)
 {
-    uint32_t opcode = OP_vkFlushMappedMemoryRanges;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
-    {
-        marshal_VkMappedMemoryRange(vkStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
-    }
-    VkResult marshal_vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
-    return marshal_vkFlushMappedMemoryRanges_VkResult_return;
+    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+    vkStream->write((VkDeviceSize*)&forMarshaling->alignment, sizeof(VkDeviceSize));
+    vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkFlushMappedMemoryRanges(
+void unmarshal_VkMemoryRequirements(
     VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges)
+    VkMemoryRequirements* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pMemoryRanges, ((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
-    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
-    {
-        unmarshal_VkMappedMemoryRange(vkStream, (VkMappedMemoryRange*)(pMemoryRanges + i));
-    }
-    VkResult unmarshal_vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkFlushMappedMemoryRanges_VkResult_return;
-}
-
-VkResult marshal_vkInvalidateMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges)
-{
-    uint32_t opcode = OP_vkInvalidateMappedMemoryRanges;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
-    {
-        marshal_VkMappedMemoryRange(vkStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
-    }
-    VkResult marshal_vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
-    return marshal_vkInvalidateMappedMemoryRanges_VkResult_return;
-}
-
-VkResult unmarshal_vkInvalidateMappedMemoryRanges(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t memoryRangeCount,
-    const VkMappedMemoryRange* pMemoryRanges)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pMemoryRanges, ((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
-    for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
-    {
-        unmarshal_VkMappedMemoryRange(vkStream, (VkMappedMemoryRange*)(pMemoryRanges + i));
-    }
-    VkResult unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return;
-}
-
-void marshal_vkGetDeviceMemoryCommitment(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize* pCommittedMemoryInBytes)
-{
-    uint32_t opcode = OP_vkGetDeviceMemoryCommitment;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
-}
-
-void unmarshal_vkGetDeviceMemoryCommitment(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkDeviceSize* pCommittedMemoryInBytes)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
-}
-
-VkResult marshal_vkBindBufferMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset)
-{
-    uint32_t opcode = OP_vkBindBufferMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
-    VkResult marshal_vkBindBufferMemory_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindBufferMemory_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindBufferMemory_VkResult_return;
-}
-
-VkResult unmarshal_vkBindBufferMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
-    VkResult unmarshal_vkBindBufferMemory_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindBufferMemory_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindBufferMemory_VkResult_return;
-}
-
-VkResult marshal_vkBindImageMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset)
-{
-    uint32_t opcode = OP_vkBindImageMemory;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
-    VkResult marshal_vkBindImageMemory_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindImageMemory_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindImageMemory_VkResult_return;
-}
-
-VkResult unmarshal_vkBindImageMemory(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkDeviceMemory memory,
-    VkDeviceSize memoryOffset)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
-    VkResult unmarshal_vkBindImageMemory_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindImageMemory_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindImageMemory_VkResult_return;
-}
-
-void marshal_VkMemoryRequirements(
-    VulkanStream* vkStream,
-    const VkMemoryRequirements* forMarshaling)
-{
-    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&forMarshaling->alignment, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
-}
-
-void unmarshal_VkMemoryRequirements(
-    VulkanStream* vkStream,
-    VkMemoryRequirements* forUnmarshaling)
-{
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->alignment, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
-}
-
-void marshal_vkGetBufferMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkMemoryRequirements* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetBufferMemoryRequirements;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetBufferMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    VkMemoryRequirements* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
-}
-
-void marshal_vkGetImageMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkMemoryRequirements* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageMemoryRequirements;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetImageMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    VkMemoryRequirements* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->alignment, sizeof(VkDeviceSize));
+    vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
 }
 
 void marshal_VkSparseImageFormatProperties(
@@ -1916,90 +922,6 @@ void unmarshal_VkSparseImageMemoryRequirements(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailStride, sizeof(VkDeviceSize));
 }
 
-void marshal_vkGetImageSparseMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageSparseMemoryRequirements;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        marshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
-    }
-}
-
-void unmarshal_vkGetImageSparseMemoryRequirements(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        unmarshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
-    }
-}
-
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkSampleCountFlagBits samples,
-    VkImageUsageFlags usage,
-    VkImageTiling tiling,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->write((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
-    vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(pProperties + i));
-    }
-}
-
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkSampleCountFlagBits samples,
-    VkImageUsageFlags usage,
-    VkImageTiling tiling,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->read((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->read((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
-    vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(pProperties + i));
-    }
-}
-
 void marshal_VkSparseMemoryBind(
     VulkanStream* vkStream,
     const VkSparseMemoryBind* forMarshaling)
@@ -2218,47 +1140,6 @@ void unmarshal_VkBindSparseInfo(
     vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
 }
 
-VkResult marshal_vkQueueBindSparse(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t bindInfoCount,
-    const VkBindSparseInfo* pBindInfo,
-    VkFence fence)
-{
-    uint32_t opcode = OP_vkQueueBindSparse;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        marshal_VkBindSparseInfo(vkStream, (const VkBindSparseInfo*)(pBindInfo + i));
-    }
-    vkStream->write((VkFence*)&fence, sizeof(VkFence));
-    VkResult marshal_vkQueueBindSparse_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkQueueBindSparse_VkResult_return, sizeof(VkResult));
-    return marshal_vkQueueBindSparse_VkResult_return;
-}
-
-VkResult unmarshal_vkQueueBindSparse(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t bindInfoCount,
-    const VkBindSparseInfo* pBindInfo,
-    VkFence fence)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBindInfo, ((bindInfoCount)) * sizeof(const VkBindSparseInfo));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        unmarshal_VkBindSparseInfo(vkStream, (VkBindSparseInfo*)(pBindInfo + i));
-    }
-    vkStream->read((VkFence*)&fence, sizeof(VkFence));
-    VkResult unmarshal_vkQueueBindSparse_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkQueueBindSparse_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkQueueBindSparse_VkResult_return;
-}
-
 void marshal_VkFenceCreateInfo(
     VulkanStream* vkStream,
     const VkFenceCreateInfo* forMarshaling)
@@ -2279,179 +1160,6 @@ void unmarshal_VkFenceCreateInfo(
     vkStream->read((VkFenceCreateFlags*)&forUnmarshaling->flags, sizeof(VkFenceCreateFlags));
 }
 
-VkResult marshal_vkCreateFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    uint32_t opcode = OP_vkCreateFence;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkFenceCreateInfo(vkStream, (const VkFenceCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkFence*)pFence, sizeof(VkFence));
-    VkResult marshal_vkCreateFence_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateFence_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateFence_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkFenceCreateInfo));
-    unmarshal_VkFenceCreateInfo(vkStream, (VkFenceCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkFence*)pFence, sizeof(VkFence));
-    VkResult unmarshal_vkCreateFence_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateFence_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateFence_VkResult_return;
-}
-
-void marshal_vkDestroyFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyFence;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkFence*)&fence, sizeof(VkFence));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyFence(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkFence*)&fence, sizeof(VkFence));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkResetFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences)
-{
-    uint32_t opcode = OP_vkResetFences;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
-    vkStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
-    VkResult marshal_vkResetFences_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkResetFences_VkResult_return, sizeof(VkResult));
-    return marshal_vkResetFences_VkResult_return;
-}
-
-VkResult unmarshal_vkResetFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&fenceCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
-    vkStream->read((VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
-    VkResult unmarshal_vkResetFences_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkResetFences_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkResetFences_VkResult_return;
-}
-
-VkResult marshal_vkGetFenceStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence)
-{
-    uint32_t opcode = OP_vkGetFenceStatus;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkFence*)&fence, sizeof(VkFence));
-    VkResult marshal_vkGetFenceStatus_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetFenceStatus_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetFenceStatus_VkResult_return;
-}
-
-VkResult unmarshal_vkGetFenceStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFence fence)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkFence*)&fence, sizeof(VkFence));
-    VkResult unmarshal_vkGetFenceStatus_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetFenceStatus_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetFenceStatus_VkResult_return;
-}
-
-VkResult marshal_vkWaitForFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences,
-    VkBool32 waitAll,
-    uint64_t timeout)
-{
-    uint32_t opcode = OP_vkWaitForFences;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
-    vkStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
-    vkStream->write((VkBool32*)&waitAll, sizeof(VkBool32));
-    vkStream->write((uint64_t*)&timeout, sizeof(uint64_t));
-    VkResult marshal_vkWaitForFences_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkWaitForFences_VkResult_return, sizeof(VkResult));
-    return marshal_vkWaitForFences_VkResult_return;
-}
-
-VkResult unmarshal_vkWaitForFences(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t fenceCount,
-    const VkFence* pFences,
-    VkBool32 waitAll,
-    uint64_t timeout)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&fenceCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
-    vkStream->read((VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
-    vkStream->read((VkBool32*)&waitAll, sizeof(VkBool32));
-    vkStream->read((uint64_t*)&timeout, sizeof(uint64_t));
-    VkResult unmarshal_vkWaitForFences_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkWaitForFences_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkWaitForFences_VkResult_return;
-}
-
 void marshal_VkSemaphoreCreateInfo(
     VulkanStream* vkStream,
     const VkSemaphoreCreateInfo* forMarshaling)
@@ -2472,83 +1180,6 @@ void unmarshal_VkSemaphoreCreateInfo(
     vkStream->read((VkSemaphoreCreateFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreCreateFlags));
 }
 
-VkResult marshal_vkCreateSemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSemaphore* pSemaphore)
-{
-    uint32_t opcode = OP_vkCreateSemaphore;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSemaphoreCreateInfo(vkStream, (const VkSemaphoreCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
-    VkResult marshal_vkCreateSemaphore_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSemaphore_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSemaphore_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateSemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSemaphore* pSemaphore)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSemaphoreCreateInfo));
-    unmarshal_VkSemaphoreCreateInfo(vkStream, (VkSemaphoreCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
-    VkResult unmarshal_vkCreateSemaphore_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSemaphore_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSemaphore_VkResult_return;
-}
-
-void marshal_vkDestroySemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSemaphore semaphore,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroySemaphore;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroySemaphore(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSemaphore semaphore,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkEventCreateInfo(
     VulkanStream* vkStream,
     const VkEventCreateInfo* forMarshaling)
@@ -2569,161 +1200,6 @@ void unmarshal_VkEventCreateInfo(
     vkStream->read((VkEventCreateFlags*)&forUnmarshaling->flags, sizeof(VkEventCreateFlags));
 }
 
-VkResult marshal_vkCreateEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkEventCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkEvent* pEvent)
-{
-    uint32_t opcode = OP_vkCreateEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkEventCreateInfo(vkStream, (const VkEventCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkEvent*)pEvent, sizeof(VkEvent));
-    VkResult marshal_vkCreateEvent_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateEvent_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateEvent_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkEventCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkEvent* pEvent)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkEventCreateInfo));
-    unmarshal_VkEventCreateInfo(vkStream, (VkEventCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkEvent*)pEvent, sizeof(VkEvent));
-    VkResult unmarshal_vkCreateEvent_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateEvent_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateEvent_VkResult_return;
-}
-
-void marshal_vkDestroyEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkGetEventStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    uint32_t opcode = OP_vkGetEventStatus;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    VkResult marshal_vkGetEventStatus_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetEventStatus_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetEventStatus_VkResult_return;
-}
-
-VkResult unmarshal_vkGetEventStatus(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    VkResult unmarshal_vkGetEventStatus_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetEventStatus_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetEventStatus_VkResult_return;
-}
-
-VkResult marshal_vkSetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    uint32_t opcode = OP_vkSetEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    VkResult marshal_vkSetEvent_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkSetEvent_VkResult_return, sizeof(VkResult));
-    return marshal_vkSetEvent_VkResult_return;
-}
-
-VkResult unmarshal_vkSetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    VkResult unmarshal_vkSetEvent_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkSetEvent_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkSetEvent_VkResult_return;
-}
-
-VkResult marshal_vkResetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    uint32_t opcode = OP_vkResetEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    VkResult marshal_vkResetEvent_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkResetEvent_VkResult_return, sizeof(VkResult));
-    return marshal_vkResetEvent_VkResult_return;
-}
-
-VkResult unmarshal_vkResetEvent(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkEvent event)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    VkResult unmarshal_vkResetEvent_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkResetEvent_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkResetEvent_VkResult_return;
-}
-
 void marshal_VkQueryPoolCreateInfo(
     VulkanStream* vkStream,
     const VkQueryPoolCreateInfo* forMarshaling)
@@ -2750,133 +1226,6 @@ void unmarshal_VkQueryPoolCreateInfo(
     vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
 }
 
-VkResult marshal_vkCreateQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkQueryPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkQueryPool* pQueryPool)
-{
-    uint32_t opcode = OP_vkCreateQueryPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkQueryPoolCreateInfo(vkStream, (const VkQueryPoolCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
-    VkResult marshal_vkCreateQueryPool_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateQueryPool_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateQueryPool_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkQueryPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkQueryPool* pQueryPool)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkQueryPoolCreateInfo));
-    unmarshal_VkQueryPoolCreateInfo(vkStream, (VkQueryPoolCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
-    VkResult unmarshal_vkCreateQueryPool_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateQueryPool_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateQueryPool_VkResult_return;
-}
-
-void marshal_vkDestroyQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyQueryPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyQueryPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkGetQueryPoolResults(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    size_t dataSize,
-    void* pData,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags)
-{
-    uint32_t opcode = OP_vkGetQueryPoolResults;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
-    vkStream->write((size_t*)&dataSize, sizeof(size_t));
-    vkStream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
-    vkStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
-    vkStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
-    VkResult marshal_vkGetQueryPoolResults_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetQueryPoolResults_VkResult_return;
-}
-
-VkResult unmarshal_vkGetQueryPoolResults(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    size_t dataSize,
-    void* pData,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
-    vkStream->read((size_t*)&dataSize, sizeof(size_t));
-    vkStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
-    vkStream->read((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
-    vkStream->read((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
-    VkResult unmarshal_vkGetQueryPoolResults_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetQueryPoolResults_VkResult_return;
-}
-
 void marshal_VkBufferCreateInfo(
     VulkanStream* vkStream,
     const VkBufferCreateInfo* forMarshaling)
@@ -2916,86 +1265,9 @@ void unmarshal_VkBufferCreateInfo(
     }
 }
 
-VkResult marshal_vkCreateBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBuffer* pBuffer)
-{
-    uint32_t opcode = OP_vkCreateBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkBufferCreateInfo(vkStream, (const VkBufferCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkBuffer*)pBuffer, sizeof(VkBuffer));
-    VkResult marshal_vkCreateBuffer_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateBuffer_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateBuffer_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateBuffer(
+void marshal_VkBufferViewCreateInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBuffer* pBuffer)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferCreateInfo));
-    unmarshal_VkBufferCreateInfo(vkStream, (VkBufferCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
-    VkResult unmarshal_vkCreateBuffer_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateBuffer_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateBuffer_VkResult_return;
-}
-
-void marshal_vkDestroyBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyBuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBuffer buffer,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_VkBufferViewCreateInfo(
-    VulkanStream* vkStream,
-    const VkBufferViewCreateInfo* forMarshaling)
+    const VkBufferViewCreateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
@@ -3021,83 +1293,6 @@ void unmarshal_VkBufferViewCreateInfo(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
 }
 
-VkResult marshal_vkCreateBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBufferView* pView)
-{
-    uint32_t opcode = OP_vkCreateBufferView;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkBufferViewCreateInfo(vkStream, (const VkBufferViewCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkBufferView*)pView, sizeof(VkBufferView));
-    VkResult marshal_vkCreateBufferView_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateBufferView_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateBufferView_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkBufferView* pView)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferViewCreateInfo));
-    unmarshal_VkBufferViewCreateInfo(vkStream, (VkBufferViewCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkBufferView*)pView, sizeof(VkBufferView));
-    VkResult unmarshal_vkCreateBufferView_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateBufferView_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateBufferView_VkResult_return;
-}
-
-void marshal_vkDestroyBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBufferView bufferView,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyBufferView;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkBufferView*)&bufferView, sizeof(VkBufferView));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyBufferView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkBufferView bufferView,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkBufferView*)&bufferView, sizeof(VkBufferView));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkImageCreateInfo(
     VulkanStream* vkStream,
     const VkImageCreateInfo* forMarshaling)
@@ -3151,83 +1346,6 @@ void unmarshal_VkImageCreateInfo(
     vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
 }
 
-VkResult marshal_vkCreateImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImage* pImage)
-{
-    uint32_t opcode = OP_vkCreateImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageCreateInfo(vkStream, (const VkImageCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkImage*)pImage, sizeof(VkImage));
-    VkResult marshal_vkCreateImage_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateImage_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateImage_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImage* pImage)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkImageCreateInfo));
-    unmarshal_VkImageCreateInfo(vkStream, (VkImageCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkImage*)pImage, sizeof(VkImage));
-    VkResult unmarshal_vkCreateImage_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateImage_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateImage_VkResult_return;
-}
-
-void marshal_vkDestroyImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyImage(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkSubresourceLayout(
     VulkanStream* vkStream,
     const VkSubresourceLayout* forMarshaling)
@@ -3250,35 +1368,6 @@ void unmarshal_VkSubresourceLayout(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->depthPitch, sizeof(VkDeviceSize));
 }
 
-void marshal_vkGetImageSubresourceLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkImageSubresource* pSubresource,
-    VkSubresourceLayout* pLayout)
-{
-    uint32_t opcode = OP_vkGetImageSubresourceLayout;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    marshal_VkImageSubresource(vkStream, (const VkImageSubresource*)(pSubresource));
-    marshal_VkSubresourceLayout(vkStream, (VkSubresourceLayout*)(pLayout));
-}
-
-void unmarshal_vkGetImageSubresourceLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImage image,
-    const VkImageSubresource* pSubresource,
-    VkSubresourceLayout* pLayout)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->alloc((void**)&pSubresource, sizeof(const VkImageSubresource));
-    unmarshal_VkImageSubresource(vkStream, (VkImageSubresource*)(pSubresource));
-    unmarshal_VkSubresourceLayout(vkStream, (VkSubresourceLayout*)(pLayout));
-}
-
 void marshal_VkComponentMapping(
     VulkanStream* vkStream,
     const VkComponentMapping* forMarshaling)
@@ -3351,83 +1440,6 @@ void unmarshal_VkImageViewCreateInfo(
     unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
 }
 
-VkResult marshal_vkCreateImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImageView* pView)
-{
-    uint32_t opcode = OP_vkCreateImageView;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageViewCreateInfo(vkStream, (const VkImageViewCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkImageView*)pView, sizeof(VkImageView));
-    VkResult marshal_vkCreateImageView_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateImageView_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateImageView_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageViewCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkImageView* pView)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkImageViewCreateInfo));
-    unmarshal_VkImageViewCreateInfo(vkStream, (VkImageViewCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkImageView*)pView, sizeof(VkImageView));
-    VkResult unmarshal_vkCreateImageView_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateImageView_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateImageView_VkResult_return;
-}
-
-void marshal_vkDestroyImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImageView imageView,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyImageView;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkImageView*)&imageView, sizeof(VkImageView));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyImageView(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkImageView imageView,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkImageView*)&imageView, sizeof(VkImageView));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkShaderModuleCreateInfo(
     VulkanStream* vkStream,
     const VkShaderModuleCreateInfo* forMarshaling)
@@ -3453,83 +1465,6 @@ void unmarshal_VkShaderModuleCreateInfo(
     vkStream->read((uint32_t*)forUnmarshaling->pCode, (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
 }
 
-VkResult marshal_vkCreateShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkShaderModuleCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkShaderModule* pShaderModule)
-{
-    uint32_t opcode = OP_vkCreateShaderModule;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkShaderModuleCreateInfo(vkStream, (const VkShaderModuleCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
-    VkResult marshal_vkCreateShaderModule_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateShaderModule_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateShaderModule_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkShaderModuleCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkShaderModule* pShaderModule)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkShaderModuleCreateInfo));
-    unmarshal_VkShaderModuleCreateInfo(vkStream, (VkShaderModuleCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
-    VkResult unmarshal_vkCreateShaderModule_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateShaderModule_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateShaderModule_VkResult_return;
-}
-
-void marshal_vkDestroyShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkShaderModule shaderModule,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyShaderModule;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyShaderModule(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkShaderModule shaderModule,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkPipelineCacheCreateInfo(
     VulkanStream* vkStream,
     const VkPipelineCacheCreateInfo* forMarshaling)
@@ -3555,152 +1490,6 @@ void unmarshal_VkPipelineCacheCreateInfo(
     vkStream->read((void*)forUnmarshaling->pInitialData, forUnmarshaling->initialDataSize * sizeof(const uint8_t));
 }
 
-VkResult marshal_vkCreatePipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineCacheCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineCache* pPipelineCache)
-{
-    uint32_t opcode = OP_vkCreatePipelineCache;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkPipelineCacheCreateInfo(vkStream, (const VkPipelineCacheCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
-    VkResult marshal_vkCreatePipelineCache_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreatePipelineCache_VkResult_return;
-}
-
-VkResult unmarshal_vkCreatePipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineCacheCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineCache* pPipelineCache)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineCacheCreateInfo));
-    unmarshal_VkPipelineCacheCreateInfo(vkStream, (VkPipelineCacheCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
-    VkResult unmarshal_vkCreatePipelineCache_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreatePipelineCache_VkResult_return;
-}
-
-void marshal_vkDestroyPipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyPipelineCache;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyPipelineCache(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkGetPipelineCacheData(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    size_t* pDataSize,
-    void* pData)
-{
-    uint32_t opcode = OP_vkGetPipelineCacheData;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->read((size_t*)pDataSize, sizeof(size_t));
-    vkStream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
-    VkResult marshal_vkGetPipelineCacheData_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPipelineCacheData_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPipelineCacheData(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    size_t* pDataSize,
-    void* pData)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->write((size_t*)pDataSize, sizeof(size_t));
-    vkStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
-    VkResult unmarshal_vkGetPipelineCacheData_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPipelineCacheData_VkResult_return;
-}
-
-VkResult marshal_vkMergePipelineCaches(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache dstCache,
-    uint32_t srcCacheCount,
-    const VkPipelineCache* pSrcCaches)
-{
-    uint32_t opcode = OP_vkMergePipelineCaches;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
-    vkStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
-    vkStream->write((const VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
-    VkResult marshal_vkMergePipelineCaches_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
-    return marshal_vkMergePipelineCaches_VkResult_return;
-}
-
-VkResult unmarshal_vkMergePipelineCaches(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache dstCache,
-    uint32_t srcCacheCount,
-    const VkPipelineCache* pSrcCaches)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
-    vkStream->read((uint32_t*)&srcCacheCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
-    vkStream->read((VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
-    VkResult unmarshal_vkMergePipelineCaches_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkMergePipelineCaches_VkResult_return;
-}
-
 void marshal_VkSpecializationMapEntry(
     VulkanStream* vkStream,
     const VkSpecializationMapEntry* forMarshaling)
@@ -4391,64 +2180,6 @@ void unmarshal_VkGraphicsPipelineCreateInfo(
     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
-VkResult marshal_vkCreateGraphicsPipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkGraphicsPipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines)
-{
-    uint32_t opcode = OP_vkCreateGraphicsPipelines;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
-    {
-        marshal_VkGraphicsPipelineCreateInfo(vkStream, (const VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
-    }
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    VkResult marshal_vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateGraphicsPipelines_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateGraphicsPipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkGraphicsPipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->read((uint32_t*)&createInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pCreateInfos, ((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
-    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
-    {
-        unmarshal_VkGraphicsPipelineCreateInfo(vkStream, (VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
-    }
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    VkResult unmarshal_vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateGraphicsPipelines_VkResult_return;
-}
-
 void marshal_VkComputePipelineCreateInfo(
     VulkanStream* vkStream,
     const VkComputePipelineCreateInfo* forMarshaling)
@@ -4477,97 +2208,6 @@ void unmarshal_VkComputePipelineCreateInfo(
     vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
 }
 
-VkResult marshal_vkCreateComputePipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkComputePipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines)
-{
-    uint32_t opcode = OP_vkCreateComputePipelines;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
-    {
-        marshal_VkComputePipelineCreateInfo(vkStream, (const VkComputePipelineCreateInfo*)(pCreateInfos + i));
-    }
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    VkResult marshal_vkCreateComputePipelines_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateComputePipelines_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateComputePipelines(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineCache pipelineCache,
-    uint32_t createInfoCount,
-    const VkComputePipelineCreateInfo* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipeline* pPipelines)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
-    vkStream->read((uint32_t*)&createInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pCreateInfos, ((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
-    for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
-    {
-        unmarshal_VkComputePipelineCreateInfo(vkStream, (VkComputePipelineCreateInfo*)(pCreateInfos + i));
-    }
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
-    VkResult unmarshal_vkCreateComputePipelines_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateComputePipelines_VkResult_return;
-}
-
-void marshal_vkDestroyPipeline(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyPipeline;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyPipeline(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkPushConstantRange(
     VulkanStream* vkStream,
     const VkPushConstantRange* forMarshaling)
@@ -4622,83 +2262,6 @@ void unmarshal_VkPipelineLayoutCreateInfo(
     }
 }
 
-VkResult marshal_vkCreatePipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineLayout* pPipelineLayout)
-{
-    uint32_t opcode = OP_vkCreatePipelineLayout;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkPipelineLayoutCreateInfo(vkStream, (const VkPipelineLayoutCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
-    VkResult marshal_vkCreatePipelineLayout_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreatePipelineLayout_VkResult_return;
-}
-
-VkResult unmarshal_vkCreatePipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkPipelineLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkPipelineLayout* pPipelineLayout)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineLayoutCreateInfo));
-    unmarshal_VkPipelineLayoutCreateInfo(vkStream, (VkPipelineLayoutCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
-    VkResult unmarshal_vkCreatePipelineLayout_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreatePipelineLayout_VkResult_return;
-}
-
-void marshal_vkDestroyPipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineLayout pipelineLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyPipelineLayout;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyPipelineLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipelineLayout pipelineLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkSamplerCreateInfo(
     VulkanStream* vkStream,
     const VkSamplerCreateInfo* forMarshaling)
@@ -4749,83 +2312,6 @@ void unmarshal_VkSamplerCreateInfo(
     vkStream->read((VkBool32*)&forUnmarshaling->unnormalizedCoordinates, sizeof(VkBool32));
 }
 
-VkResult marshal_vkCreateSampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSampler* pSampler)
-{
-    uint32_t opcode = OP_vkCreateSampler;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSamplerCreateInfo(vkStream, (const VkSamplerCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSampler*)pSampler, sizeof(VkSampler));
-    VkResult marshal_vkCreateSampler_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSampler_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSampler_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateSampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSampler* pSampler)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerCreateInfo));
-    unmarshal_VkSamplerCreateInfo(vkStream, (VkSamplerCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSampler*)pSampler, sizeof(VkSampler));
-    VkResult unmarshal_vkCreateSampler_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSampler_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSampler_VkResult_return;
-}
-
-void marshal_vkDestroySampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSampler sampler,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroySampler;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSampler*)&sampler, sizeof(VkSampler));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroySampler(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSampler sampler,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSampler*)&sampler, sizeof(VkSampler));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkDescriptorSetLayoutBinding(
     VulkanStream* vkStream,
     const VkDescriptorSetLayoutBinding* forMarshaling)
@@ -4888,94 +2374,17 @@ void unmarshal_VkDescriptorSetLayoutCreateInfo(
     }
 }
 
-VkResult marshal_vkCreateDescriptorSetLayout(
+void marshal_VkDescriptorPoolSize(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorSetLayout* pSetLayout)
+    const VkDescriptorPoolSize* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateDescriptorSetLayout;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
-    VkResult marshal_vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDescriptorSetLayout_VkResult_return;
+    vkStream->write((VkDescriptorType*)&forMarshaling->type, sizeof(VkDescriptorType));
+    vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkCreateDescriptorSetLayout(
+void unmarshal_VkDescriptorPoolSize(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorSetLayout* pSetLayout)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
-    unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
-    VkResult unmarshal_vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDescriptorSetLayout_VkResult_return;
-}
-
-void marshal_vkDestroyDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSetLayout descriptorSetLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDescriptorSetLayout;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDescriptorSetLayout(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSetLayout descriptorSetLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_VkDescriptorPoolSize(
-    VulkanStream* vkStream,
-    const VkDescriptorPoolSize* forMarshaling)
-{
-    vkStream->write((VkDescriptorType*)&forMarshaling->type, sizeof(VkDescriptorType));
-    vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
-}
-
-void unmarshal_VkDescriptorPoolSize(
-    VulkanStream* vkStream,
-    VkDescriptorPoolSize* forUnmarshaling)
+    VkDescriptorPoolSize* forUnmarshaling)
 {
     vkStream->read((VkDescriptorType*)&forUnmarshaling->type, sizeof(VkDescriptorType));
     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
@@ -5014,113 +2423,6 @@ void unmarshal_VkDescriptorPoolCreateInfo(
     }
 }
 
-VkResult marshal_vkCreateDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorPool* pDescriptorPool)
-{
-    uint32_t opcode = OP_vkCreateDescriptorPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorPoolCreateInfo(vkStream, (const VkDescriptorPoolCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
-    VkResult marshal_vkCreateDescriptorPool_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDescriptorPool_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorPool* pDescriptorPool)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorPoolCreateInfo));
-    unmarshal_VkDescriptorPoolCreateInfo(vkStream, (VkDescriptorPoolCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
-    VkResult unmarshal_vkCreateDescriptorPool_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDescriptorPool_VkResult_return;
-}
-
-void marshal_vkDestroyDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDescriptorPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkResetDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    VkDescriptorPoolResetFlags flags)
-{
-    uint32_t opcode = OP_vkResetDescriptorPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->write((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
-    VkResult marshal_vkResetDescriptorPool_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
-    return marshal_vkResetDescriptorPool_VkResult_return;
-}
-
-VkResult unmarshal_vkResetDescriptorPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    VkDescriptorPoolResetFlags flags)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->read((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
-    VkResult unmarshal_vkResetDescriptorPool_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkResetDescriptorPool_VkResult_return;
-}
-
 void marshal_VkDescriptorSetAllocateInfo(
     VulkanStream* vkStream,
     const VkDescriptorSetAllocateInfo* forMarshaling)
@@ -5146,80 +2448,6 @@ void unmarshal_VkDescriptorSetAllocateInfo(
     vkStream->read((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
 }
 
-VkResult marshal_vkAllocateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetAllocateInfo* pAllocateInfo,
-    VkDescriptorSet* pDescriptorSets)
-{
-    uint32_t opcode = OP_vkAllocateDescriptorSets;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorSetAllocateInfo(vkStream, (const VkDescriptorSetAllocateInfo*)(pAllocateInfo));
-    vkStream->read((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
-    VkResult marshal_vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
-    return marshal_vkAllocateDescriptorSets_VkResult_return;
-}
-
-VkResult unmarshal_vkAllocateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetAllocateInfo* pAllocateInfo,
-    VkDescriptorSet* pDescriptorSets)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkDescriptorSetAllocateInfo));
-    unmarshal_VkDescriptorSetAllocateInfo(vkStream, (VkDescriptorSetAllocateInfo*)(pAllocateInfo));
-    vkStream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
-    VkResult unmarshal_vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAllocateDescriptorSets_VkResult_return;
-}
-
-VkResult marshal_vkFreeDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets)
-{
-    uint32_t opcode = OP_vkFreeDescriptorSets;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
-    vkStream->write((const VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
-    if (pDescriptorSets)
-    {
-        vkStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-    }
-    VkResult marshal_vkFreeDescriptorSets_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
-    return marshal_vkFreeDescriptorSets_VkResult_return;
-}
-
-VkResult unmarshal_vkFreeDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorPool descriptorPool,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
-    vkStream->read((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
-    vkStream->read((VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
-    if (pDescriptorSets)
-    {
-        vkStream->alloc((void**)&pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-        vkStream->read((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-    }
-    VkResult unmarshal_vkFreeDescriptorSets_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkFreeDescriptorSets_VkResult_return;
-}
-
 void marshal_VkDescriptorImageInfo(
     VulkanStream* vkStream,
     const VkDescriptorImageInfo* forMarshaling)
@@ -5361,52 +2589,6 @@ void unmarshal_VkCopyDescriptorSet(
     vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
 }
 
-void marshal_vkUpdateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites,
-    uint32_t descriptorCopyCount,
-    const VkCopyDescriptorSet* pDescriptorCopies)
-{
-    uint32_t opcode = OP_vkUpdateDescriptorSets;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
-    {
-        marshal_VkWriteDescriptorSet(vkStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
-    }
-    vkStream->write((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
-    {
-        marshal_VkCopyDescriptorSet(vkStream, (const VkCopyDescriptorSet*)(pDescriptorCopies + i));
-    }
-}
-
-void unmarshal_vkUpdateDescriptorSets(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites,
-    uint32_t descriptorCopyCount,
-    const VkCopyDescriptorSet* pDescriptorCopies)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDescriptorWrites, ((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
-    {
-        unmarshal_VkWriteDescriptorSet(vkStream, (VkWriteDescriptorSet*)(pDescriptorWrites + i));
-    }
-    vkStream->read((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDescriptorCopies, ((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
-    {
-        unmarshal_VkCopyDescriptorSet(vkStream, (VkCopyDescriptorSet*)(pDescriptorCopies + i));
-    }
-}
-
 void marshal_VkFramebufferCreateInfo(
     VulkanStream* vkStream,
     const VkFramebufferCreateInfo* forMarshaling)
@@ -5440,83 +2622,6 @@ void unmarshal_VkFramebufferCreateInfo(
     vkStream->read((uint32_t*)&forUnmarshaling->layers, sizeof(uint32_t));
 }
 
-VkResult marshal_vkCreateFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFramebufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFramebuffer* pFramebuffer)
-{
-    uint32_t opcode = OP_vkCreateFramebuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkFramebufferCreateInfo(vkStream, (const VkFramebufferCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
-    VkResult marshal_vkCreateFramebuffer_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateFramebuffer_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFramebufferCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFramebuffer* pFramebuffer)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkFramebufferCreateInfo));
-    unmarshal_VkFramebufferCreateInfo(vkStream, (VkFramebufferCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
-    VkResult unmarshal_vkCreateFramebuffer_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateFramebuffer_VkResult_return;
-}
-
-void marshal_vkDestroyFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFramebuffer framebuffer,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyFramebuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyFramebuffer(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkFramebuffer framebuffer,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 void marshal_VkAttachmentDescription(
     VulkanStream* vkStream,
     const VkAttachmentDescription* forMarshaling)
@@ -5713,107 +2818,6 @@ void unmarshal_VkRenderPassCreateInfo(
     }
 }
 
-VkResult marshal_vkCreateRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass)
-{
-    uint32_t opcode = OP_vkCreateRenderPass;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkRenderPassCreateInfo(vkStream, (const VkRenderPassCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    VkResult marshal_vkCreateRenderPass_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateRenderPass_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateRenderPass_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo));
-    unmarshal_VkRenderPassCreateInfo(vkStream, (VkRenderPassCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    VkResult unmarshal_vkCreateRenderPass_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateRenderPass_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateRenderPass_VkResult_return;
-}
-
-void marshal_vkDestroyRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyRenderPass;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyRenderPass(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_vkGetRenderAreaGranularity(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    VkExtent2D* pGranularity)
-{
-    uint32_t opcode = OP_vkGetRenderAreaGranularity;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(pGranularity));
-}
-
-void unmarshal_vkGetRenderAreaGranularity(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkRenderPass renderPass,
-    VkExtent2D* pGranularity)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(pGranularity));
-}
-
 void marshal_VkCommandPoolCreateInfo(
     VulkanStream* vkStream,
     const VkCommandPoolCreateInfo* forMarshaling)
@@ -5836,113 +2840,6 @@ void unmarshal_VkCommandPoolCreateInfo(
     vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
 }
 
-VkResult marshal_vkCreateCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkCommandPool* pCommandPool)
-{
-    uint32_t opcode = OP_vkCreateCommandPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkCommandPoolCreateInfo(vkStream, (const VkCommandPoolCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
-    VkResult marshal_vkCreateCommandPool_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateCommandPool_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateCommandPool_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandPoolCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkCommandPool* pCommandPool)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkCommandPoolCreateInfo));
-    unmarshal_VkCommandPoolCreateInfo(vkStream, (VkCommandPoolCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
-    VkResult unmarshal_vkCreateCommandPool_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateCommandPool_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateCommandPool_VkResult_return;
-}
-
-void marshal_vkDestroyCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyCommandPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkResetCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolResetFlags flags)
-{
-    uint32_t opcode = OP_vkResetCommandPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->write((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
-    VkResult marshal_vkResetCommandPool_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkResetCommandPool_VkResult_return, sizeof(VkResult));
-    return marshal_vkResetCommandPool_VkResult_return;
-}
-
-VkResult unmarshal_vkResetCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolResetFlags flags)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->read((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
-    VkResult unmarshal_vkResetCommandPool_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkResetCommandPool_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkResetCommandPool_VkResult_return;
-}
-
 void marshal_VkCommandBufferAllocateInfo(
     VulkanStream* vkStream,
     const VkCommandBufferAllocateInfo* forMarshaling)
@@ -5967,74 +2864,6 @@ void unmarshal_VkCommandBufferAllocateInfo(
     vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
 }
 
-VkResult marshal_vkAllocateCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandBufferAllocateInfo* pAllocateInfo,
-    VkCommandBuffer* pCommandBuffers)
-{
-    uint32_t opcode = OP_vkAllocateCommandBuffers;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkCommandBufferAllocateInfo(vkStream, (const VkCommandBufferAllocateInfo*)(pAllocateInfo));
-    vkStream->read((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
-    VkResult marshal_vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
-    return marshal_vkAllocateCommandBuffers_VkResult_return;
-}
-
-VkResult unmarshal_vkAllocateCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkCommandBufferAllocateInfo* pAllocateInfo,
-    VkCommandBuffer* pCommandBuffers)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkCommandBufferAllocateInfo));
-    unmarshal_VkCommandBufferAllocateInfo(vkStream, (VkCommandBufferAllocateInfo*)(pAllocateInfo));
-    vkStream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
-    VkResult unmarshal_vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAllocateCommandBuffers_VkResult_return;
-}
-
-void marshal_vkFreeCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers)
-{
-    uint32_t opcode = OP_vkFreeCommandBuffers;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
-    vkStream->write((const VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
-    if (pCommandBuffers)
-    {
-        vkStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-    }
-}
-
-void unmarshal_vkFreeCommandBuffers(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->read((uint32_t*)&commandBufferCount, sizeof(uint32_t));
-    vkStream->read((VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
-    if (pCommandBuffers)
-    {
-        vkStream->alloc((void**)&pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-        vkStream->read((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-    }
-}
-
 void marshal_VkCommandBufferInheritanceInfo(
     VulkanStream* vkStream,
     const VkCommandBufferInheritanceInfo* forMarshaling)
@@ -6096,6689 +2925,2713 @@ void unmarshal_VkCommandBufferBeginInfo(
     }
 }
 
-VkResult marshal_vkBeginCommandBuffer(
+void marshal_VkBufferCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCommandBufferBeginInfo* pBeginInfo)
+    const VkBufferCopy* forMarshaling)
 {
-    uint32_t opcode = OP_vkBeginCommandBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkCommandBufferBeginInfo(vkStream, (const VkCommandBufferBeginInfo*)(pBeginInfo));
-    VkResult marshal_vkBeginCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
-    return marshal_vkBeginCommandBuffer_VkResult_return;
+    vkStream->write((VkDeviceSize*)&forMarshaling->srcOffset, sizeof(VkDeviceSize));
+    vkStream->write((VkDeviceSize*)&forMarshaling->dstOffset, sizeof(VkDeviceSize));
+    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
 }
 
-VkResult unmarshal_vkBeginCommandBuffer(
+void unmarshal_VkBufferCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCommandBufferBeginInfo* pBeginInfo)
+    VkBufferCopy* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pBeginInfo, sizeof(const VkCommandBufferBeginInfo));
-    unmarshal_VkCommandBufferBeginInfo(vkStream, (VkCommandBufferBeginInfo*)(pBeginInfo));
-    VkResult unmarshal_vkBeginCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBeginCommandBuffer_VkResult_return;
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->srcOffset, sizeof(VkDeviceSize));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->dstOffset, sizeof(VkDeviceSize));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
 }
 
-VkResult marshal_vkEndCommandBuffer(
+void marshal_VkImageSubresourceLayers(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
+    const VkImageSubresourceLayers* forMarshaling)
 {
-    uint32_t opcode = OP_vkEndCommandBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    VkResult marshal_vkEndCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
-    return marshal_vkEndCommandBuffer_VkResult_return;
+    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+    vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkEndCommandBuffer(
+void unmarshal_VkImageSubresourceLayers(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
+    VkImageSubresourceLayers* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    VkResult unmarshal_vkEndCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEndCommandBuffer_VkResult_return;
+    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+    vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
 }
 
-VkResult marshal_vkResetCommandBuffer(
+void marshal_VkImageCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkCommandBufferResetFlags flags)
+    const VkImageCopy* forMarshaling)
 {
-    uint32_t opcode = OP_vkResetCommandBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
-    VkResult marshal_vkResetCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
-    return marshal_vkResetCommandBuffer_VkResult_return;
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
+    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
 }
 
-VkResult unmarshal_vkResetCommandBuffer(
+void unmarshal_VkImageCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkCommandBufferResetFlags flags)
+    VkImageCopy* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
-    VkResult unmarshal_vkResetCommandBuffer_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkResetCommandBuffer_VkResult_return;
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
+    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
 }
 
-void marshal_vkCmdBindPipeline(
+void marshal_VkImageBlit(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipeline pipeline)
+    const VkImageBlit* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdBindPipeline;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+    for (uint32_t i = 0; i < (uint32_t)2; ++i)
+    {
+        marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->srcOffsets + i));
+    }
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+    for (uint32_t i = 0; i < (uint32_t)2; ++i)
+    {
+        marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->dstOffsets + i));
+    }
 }
 
-void unmarshal_vkCmdBindPipeline(
+void unmarshal_VkImageBlit(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipeline pipeline)
+    VkImageBlit* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
-}
-
-void marshal_vkCmdSetViewport(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewport* pViewports)
-{
-    uint32_t opcode = OP_vkCmdSetViewport;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+    for (uint32_t i = 0; i < (uint32_t)2; ++i)
     {
-        marshal_VkViewport(vkStream, (const VkViewport*)(pViewports + i));
+        unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->srcOffsets + i));
     }
-}
-
-void unmarshal_vkCmdSetViewport(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewport* pViewports)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&firstViewport, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&viewportCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pViewports, ((viewportCount)) * sizeof(const VkViewport));
-    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+    for (uint32_t i = 0; i < (uint32_t)2; ++i)
     {
-        unmarshal_VkViewport(vkStream, (VkViewport*)(pViewports + i));
+        unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->dstOffsets + i));
     }
 }
 
-void marshal_vkCmdSetScissor(
+void marshal_VkBufferImageCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstScissor,
-    uint32_t scissorCount,
-    const VkRect2D* pScissors)
+    const VkBufferImageCopy* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetScissor;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&firstScissor, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&scissorCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
-    {
-        marshal_VkRect2D(vkStream, (const VkRect2D*)(pScissors + i));
-    }
+    vkStream->write((VkDeviceSize*)&forMarshaling->bufferOffset, sizeof(VkDeviceSize));
+    vkStream->write((uint32_t*)&forMarshaling->bufferRowLength, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->bufferImageHeight, sizeof(uint32_t));
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
+    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->imageOffset));
+    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->imageExtent));
 }
 
-void unmarshal_vkCmdSetScissor(
+void unmarshal_VkBufferImageCopy(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstScissor,
-    uint32_t scissorCount,
-    const VkRect2D* pScissors)
+    VkBufferImageCopy* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&firstScissor, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&scissorCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pScissors, ((scissorCount)) * sizeof(const VkRect2D));
-    for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
-    {
-        unmarshal_VkRect2D(vkStream, (VkRect2D*)(pScissors + i));
-    }
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferOffset, sizeof(VkDeviceSize));
+    vkStream->read((uint32_t*)&forUnmarshaling->bufferRowLength, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->bufferImageHeight, sizeof(uint32_t));
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
+    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->imageOffset));
+    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->imageExtent));
 }
 
-void marshal_vkCmdSetLineWidth(
+void marshal_VkClearColorValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float lineWidth)
+    const VkClearColorValue* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetLineWidth;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((float*)&lineWidth, sizeof(float));
+    vkStream->write((float*)forMarshaling->float32, 4 * sizeof(float));
+    vkStream->write((int32_t*)forMarshaling->int32, 4 * sizeof(int32_t));
+    vkStream->write((uint32_t*)forMarshaling->uint32, 4 * sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdSetLineWidth(
+void unmarshal_VkClearColorValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float lineWidth)
+    VkClearColorValue* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((float*)&lineWidth, sizeof(float));
+    vkStream->read((float*)forUnmarshaling->float32, 4 * sizeof(float));
+    vkStream->read((int32_t*)forUnmarshaling->int32, 4 * sizeof(int32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->uint32, 4 * sizeof(uint32_t));
 }
 
-void marshal_vkCmdSetDepthBias(
+void marshal_VkClearDepthStencilValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float depthBiasConstantFactor,
-    float depthBiasClamp,
-    float depthBiasSlopeFactor)
+    const VkClearDepthStencilValue* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetDepthBias;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((float*)&depthBiasConstantFactor, sizeof(float));
-    vkStream->write((float*)&depthBiasClamp, sizeof(float));
-    vkStream->write((float*)&depthBiasSlopeFactor, sizeof(float));
+    vkStream->write((float*)&forMarshaling->depth, sizeof(float));
+    vkStream->write((uint32_t*)&forMarshaling->stencil, sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdSetDepthBias(
+void unmarshal_VkClearDepthStencilValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float depthBiasConstantFactor,
-    float depthBiasClamp,
-    float depthBiasSlopeFactor)
+    VkClearDepthStencilValue* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((float*)&depthBiasConstantFactor, sizeof(float));
-    vkStream->read((float*)&depthBiasClamp, sizeof(float));
-    vkStream->read((float*)&depthBiasSlopeFactor, sizeof(float));
+    vkStream->read((float*)&forUnmarshaling->depth, sizeof(float));
+    vkStream->read((uint32_t*)&forUnmarshaling->stencil, sizeof(uint32_t));
 }
 
-void marshal_vkCmdSetBlendConstants(
+void marshal_VkClearValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const float blendConstants)
+    const VkClearValue* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetBlendConstants;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((const float*)&blendConstants, 4 * sizeof(const float));
+    marshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forMarshaling->color));
+    marshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forMarshaling->depthStencil));
 }
 
-void unmarshal_vkCmdSetBlendConstants(
+void unmarshal_VkClearValue(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const float blendConstants)
+    VkClearValue* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((float*)&blendConstants, 4 * sizeof(const float));
+    unmarshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forUnmarshaling->color));
+    unmarshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forUnmarshaling->depthStencil));
 }
 
-void marshal_vkCmdSetDepthBounds(
+void marshal_VkClearAttachment(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float minDepthBounds,
-    float maxDepthBounds)
+    const VkClearAttachment* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetDepthBounds;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((float*)&minDepthBounds, sizeof(float));
-    vkStream->write((float*)&maxDepthBounds, sizeof(float));
+    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+    vkStream->write((uint32_t*)&forMarshaling->colorAttachment, sizeof(uint32_t));
+    marshal_VkClearValue(vkStream, (VkClearValue*)(&forMarshaling->clearValue));
 }
 
-void unmarshal_vkCmdSetDepthBounds(
+void unmarshal_VkClearAttachment(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    float minDepthBounds,
-    float maxDepthBounds)
+    VkClearAttachment* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((float*)&minDepthBounds, sizeof(float));
-    vkStream->read((float*)&maxDepthBounds, sizeof(float));
+    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+    vkStream->read((uint32_t*)&forUnmarshaling->colorAttachment, sizeof(uint32_t));
+    unmarshal_VkClearValue(vkStream, (VkClearValue*)(&forUnmarshaling->clearValue));
 }
 
-void marshal_vkCmdSetStencilCompareMask(
+void marshal_VkClearRect(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t compareMask)
+    const VkClearRect* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetStencilCompareMask;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->write((uint32_t*)&compareMask, sizeof(uint32_t));
+    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->rect));
+    vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdSetStencilCompareMask(
+void unmarshal_VkClearRect(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t compareMask)
+    VkClearRect* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->read((uint32_t*)&compareMask, sizeof(uint32_t));
+    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->rect));
+    vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
 }
 
-void marshal_vkCmdSetStencilWriteMask(
+void marshal_VkImageResolve(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t writeMask)
+    const VkImageResolve* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetStencilWriteMask;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->write((uint32_t*)&writeMask, sizeof(uint32_t));
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
+    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
+    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
 }
 
-void unmarshal_vkCmdSetStencilWriteMask(
+void unmarshal_VkImageResolve(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t writeMask)
+    VkImageResolve* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->read((uint32_t*)&writeMask, sizeof(uint32_t));
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
+    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
+    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
 }
 
-void marshal_vkCmdSetStencilReference(
+void marshal_VkMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t reference)
+    const VkMemoryBarrier* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetStencilReference;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->write((uint32_t*)&reference, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
 }
 
-void unmarshal_vkCmdSetStencilReference(
+void unmarshal_VkMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkStencilFaceFlags faceMask,
-    uint32_t reference)
+    VkMemoryBarrier* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
-    vkStream->read((uint32_t*)&reference, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
 }
 
-void marshal_vkCmdBindDescriptorSets(
+void marshal_VkBufferMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t firstSet,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets,
-    uint32_t dynamicOffsetCount,
-    const uint32_t* pDynamicOffsets)
+    const VkBufferMemoryBarrier* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdBindDescriptorSets;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->write((uint32_t*)&firstSet, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
-    vkStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-    vkStream->write((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    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));
+    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+    vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
 }
 
-void unmarshal_vkCmdBindDescriptorSets(
+void unmarshal_VkBufferMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t firstSet,
-    uint32_t descriptorSetCount,
-    const VkDescriptorSet* pDescriptorSets,
-    uint32_t dynamicOffsetCount,
-    const uint32_t* pDynamicOffsets)
+    VkBufferMemoryBarrier* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->read((uint32_t*)&firstSet, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-    vkStream->read((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
-    vkStream->read((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    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));
+    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
 }
 
-void marshal_vkCmdBindIndexBuffer(
+void marshal_VkImageMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkIndexType indexType)
+    const VkImageMemoryBarrier* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdBindIndexBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkIndexType*)&indexType, sizeof(VkIndexType));
-}
-
-void unmarshal_vkCmdBindIndexBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkIndexType indexType)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkIndexType*)&indexType, sizeof(VkIndexType));
-}
-
-void marshal_vkCmdBindVertexBuffers(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstBinding,
-    uint32_t bindingCount,
-    const VkBuffer* pBuffers,
-    const VkDeviceSize* pOffsets)
-{
-    uint32_t opcode = OP_vkCmdBindVertexBuffers;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&firstBinding, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&bindingCount, sizeof(uint32_t));
-    vkStream->write((const VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
-    vkStream->write((const VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
-}
-
-void unmarshal_vkCmdBindVertexBuffers(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstBinding,
-    uint32_t bindingCount,
-    const VkBuffer* pBuffers,
-    const VkDeviceSize* pOffsets)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&firstBinding, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&bindingCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
-    vkStream->read((VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
-    vkStream->alloc((void**)&pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
-    vkStream->read((VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
-}
-
-void marshal_vkCmdDraw(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t vertexCount,
-    uint32_t instanceCount,
-    uint32_t firstVertex,
-    uint32_t firstInstance)
-{
-    uint32_t opcode = OP_vkCmdDraw;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&vertexCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&firstVertex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDraw(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t vertexCount,
-    uint32_t instanceCount,
-    uint32_t firstVertex,
-    uint32_t firstInstance)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&vertexCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&instanceCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&firstVertex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&firstInstance, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+    vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
+    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));
+    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+    marshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
 }
 
-void marshal_vkCmdDrawIndexed(
+void unmarshal_VkImageMemoryBarrier(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t indexCount,
-    uint32_t instanceCount,
-    uint32_t firstIndex,
-    int32_t vertexOffset,
-    uint32_t firstInstance)
-{
-    uint32_t opcode = OP_vkCmdDrawIndexed;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&indexCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&firstIndex, sizeof(uint32_t));
-    vkStream->write((int32_t*)&vertexOffset, sizeof(int32_t));
-    vkStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+    VkImageMemoryBarrier* forUnmarshaling)
+{
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+    vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+    vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
+    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));
+    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+    unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
 }
 
-void unmarshal_vkCmdDrawIndexed(
+void marshal_VkRenderPassBeginInfo(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t indexCount,
-    uint32_t instanceCount,
-    uint32_t firstIndex,
-    int32_t vertexOffset,
-    uint32_t firstInstance)
+    const VkRenderPassBeginInfo* forMarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&indexCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&instanceCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&firstIndex, sizeof(uint32_t));
-    vkStream->read((int32_t*)&vertexOffset, sizeof(int32_t));
-    vkStream->read((uint32_t*)&firstInstance, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
+    vkStream->write((VkFramebuffer*)&forMarshaling->framebuffer, sizeof(VkFramebuffer));
+    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->renderArea));
+    vkStream->write((uint32_t*)&forMarshaling->clearValueCount, sizeof(uint32_t));
+    vkStream->write((const VkClearValue**)&forMarshaling->pClearValues, sizeof(const VkClearValue*));
+    if (forMarshaling->pClearValues)
+    {
+        for (uint32_t i = 0; i < (uint32_t)forMarshaling->clearValueCount; ++i)
+        {
+            marshal_VkClearValue(vkStream, (const VkClearValue*)(forMarshaling->pClearValues + i));
+        }
+    }
 }
 
-void marshal_vkCmdDrawIndirect(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride)
+void unmarshal_VkRenderPassBeginInfo(
+    VulkanStream* vkStream,
+    VkRenderPassBeginInfo* forUnmarshaling)
 {
-    uint32_t opcode = OP_vkCmdDrawIndirect;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
+    vkStream->read((VkFramebuffer*)&forUnmarshaling->framebuffer, sizeof(VkFramebuffer));
+    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->renderArea));
+    vkStream->read((uint32_t*)&forUnmarshaling->clearValueCount, sizeof(uint32_t));
+    vkStream->read((VkClearValue**)&forUnmarshaling->pClearValues, sizeof(const VkClearValue*));
+    if (forUnmarshaling->pClearValues)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->pClearValues, forUnmarshaling->clearValueCount * sizeof(const VkClearValue));
+        for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->clearValueCount; ++i)
+        {
+            unmarshal_VkClearValue(vkStream, (VkClearValue*)(forUnmarshaling->pClearValues + i));
+        }
+    }
 }
 
-void unmarshal_vkCmdDrawIndirect(
+void marshal_VkDispatchIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride)
+    const VkDispatchIndirectCommand* forMarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&drawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->x, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->y, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->z, sizeof(uint32_t));
 }
 
-void marshal_vkCmdDrawIndexedIndirect(
+void unmarshal_VkDispatchIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride)
+    VkDispatchIndirectCommand* forUnmarshaling)
 {
-    uint32_t opcode = OP_vkCmdDrawIndexedIndirect;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->x, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->y, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->z, sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdDrawIndexedIndirect(
+void marshal_VkDrawIndexedIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    uint32_t drawCount,
-    uint32_t stride)
+    const VkDrawIndexedIndirectCommand* forMarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&drawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->indexCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->firstIndex, sizeof(uint32_t));
+    vkStream->write((int32_t*)&forMarshaling->vertexOffset, sizeof(int32_t));
+    vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
 }
 
-void marshal_vkCmdDispatch(
+void unmarshal_VkDrawIndexedIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
+    VkDrawIndexedIndirectCommand* forUnmarshaling)
 {
-    uint32_t opcode = OP_vkCmdDispatch;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->indexCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->firstIndex, sizeof(uint32_t));
+    vkStream->read((int32_t*)&forUnmarshaling->vertexOffset, sizeof(int32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdDispatch(
+void marshal_VkDrawIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
+    const VkDrawIndirectCommand* forMarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->vertexCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->firstVertex, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
 }
 
-void marshal_vkCmdDispatchIndirect(
+void unmarshal_VkDrawIndirectCommand(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset)
+    VkDrawIndirectCommand* forUnmarshaling)
 {
-    uint32_t opcode = OP_vkCmdDispatchIndirect;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    vkStream->read((uint32_t*)&forUnmarshaling->vertexCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->firstVertex, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
 }
 
-void unmarshal_vkCmdDispatchIndirect(
+void marshal_VkBaseOutStructure(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset)
+    const VkBaseOutStructure* forMarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((VkBaseOutStructure**)&forMarshaling->pNext, sizeof(VkBaseOutStructure*));
+    // TODO: Unsupported : VkBaseOutStructure* pNext
 }
 
-void marshal_VkBufferCopy(
+void unmarshal_VkBaseOutStructure(
     VulkanStream* vkStream,
-    const VkBufferCopy* forMarshaling)
+    VkBaseOutStructure* forUnmarshaling)
 {
-    vkStream->write((VkDeviceSize*)&forMarshaling->srcOffset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&forMarshaling->dstOffset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((VkBaseOutStructure**)&forUnmarshaling->pNext, sizeof(VkBaseOutStructure*));
+    // TODO: Unsupported : VkBaseOutStructure* pNext
 }
 
-void unmarshal_VkBufferCopy(
+void marshal_VkBaseInStructure(
     VulkanStream* vkStream,
-    VkBufferCopy* forUnmarshaling)
+    const VkBaseInStructure* forMarshaling)
 {
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->srcOffset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->dstOffset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const VkBaseInStructure**)&forMarshaling->pNext, sizeof(const VkBaseInStructure*));
+    // TODO: Unsupported : const VkBaseInStructure* pNext
 }
 
-void marshal_vkCmdCopyBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferCopy* pRegions)
-{
-    uint32_t opcode = OP_vkCmdCopyBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkBufferCopy(vkStream, (const VkBufferCopy*)(pRegions + i));
-    }
-}
-
-void unmarshal_vkCmdCopyBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferCopy* pRegions)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferCopy));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkBufferCopy(vkStream, (VkBufferCopy*)(pRegions + i));
-    }
-}
-
-void marshal_VkImageSubresourceLayers(
-    VulkanStream* vkStream,
-    const VkImageSubresourceLayers* forMarshaling)
-{
-    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
-    vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
-}
-
-void unmarshal_VkImageSubresourceLayers(
-    VulkanStream* vkStream,
-    VkImageSubresourceLayers* forUnmarshaling)
-{
-    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
-    vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
-}
-
-void marshal_VkImageCopy(
-    VulkanStream* vkStream,
-    const VkImageCopy* forMarshaling)
-{
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
-    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
-    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
-    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
-}
-
-void unmarshal_VkImageCopy(
-    VulkanStream* vkStream,
-    VkImageCopy* forUnmarshaling)
-{
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
-    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
-    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
-    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
-}
-
-void marshal_vkCmdCopyImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageCopy* pRegions)
-{
-    uint32_t opcode = OP_vkCmdCopyImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkImageCopy(vkStream, (const VkImageCopy*)(pRegions + i));
-    }
-}
-
-void unmarshal_vkCmdCopyImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageCopy* pRegions)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageCopy));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkImageCopy(vkStream, (VkImageCopy*)(pRegions + i));
-    }
-}
-
-void marshal_VkImageBlit(
-    VulkanStream* vkStream,
-    const VkImageBlit* forMarshaling)
-{
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
-    for (uint32_t i = 0; i < (uint32_t)2; ++i)
-    {
-        marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->srcOffsets + i));
-    }
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
-    for (uint32_t i = 0; i < (uint32_t)2; ++i)
-    {
-        marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->dstOffsets + i));
-    }
-}
-
-void unmarshal_VkImageBlit(
-    VulkanStream* vkStream,
-    VkImageBlit* forUnmarshaling)
-{
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
-    for (uint32_t i = 0; i < (uint32_t)2; ++i)
-    {
-        unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->srcOffsets + i));
-    }
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
-    for (uint32_t i = 0; i < (uint32_t)2; ++i)
-    {
-        unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->dstOffsets + i));
-    }
-}
-
-void marshal_vkCmdBlitImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageBlit* pRegions,
-    VkFilter filter)
-{
-    uint32_t opcode = OP_vkCmdBlitImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkImageBlit(vkStream, (const VkImageBlit*)(pRegions + i));
-    }
-    vkStream->write((VkFilter*)&filter, sizeof(VkFilter));
-}
-
-void unmarshal_vkCmdBlitImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageBlit* pRegions,
-    VkFilter filter)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageBlit));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkImageBlit(vkStream, (VkImageBlit*)(pRegions + i));
-    }
-    vkStream->read((VkFilter*)&filter, sizeof(VkFilter));
-}
-
-void marshal_VkBufferImageCopy(
-    VulkanStream* vkStream,
-    const VkBufferImageCopy* forMarshaling)
-{
-    vkStream->write((VkDeviceSize*)&forMarshaling->bufferOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&forMarshaling->bufferRowLength, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->bufferImageHeight, sizeof(uint32_t));
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
-    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->imageOffset));
-    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->imageExtent));
-}
-
-void unmarshal_VkBufferImageCopy(
-    VulkanStream* vkStream,
-    VkBufferImageCopy* forUnmarshaling)
-{
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&forUnmarshaling->bufferRowLength, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->bufferImageHeight, sizeof(uint32_t));
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
-    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->imageOffset));
-    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->imageExtent));
-}
-
-void marshal_vkCmdCopyBufferToImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions)
-{
-    uint32_t opcode = OP_vkCmdCopyBufferToImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
-    vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkBufferImageCopy(vkStream, (const VkBufferImageCopy*)(pRegions + i));
-    }
-}
-
-void unmarshal_vkCmdCopyBufferToImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer srcBuffer,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
-    vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferImageCopy));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkBufferImageCopy(vkStream, (VkBufferImageCopy*)(pRegions + i));
-    }
-}
-
-void marshal_vkCmdCopyImageToBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions)
-{
-    uint32_t opcode = OP_vkCmdCopyImageToBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkBufferImageCopy(vkStream, (const VkBufferImageCopy*)(pRegions + i));
-    }
-}
-
-void unmarshal_vkCmdCopyImageToBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkBuffer dstBuffer,
-    uint32_t regionCount,
-    const VkBufferImageCopy* pRegions)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferImageCopy));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkBufferImageCopy(vkStream, (VkBufferImageCopy*)(pRegions + i));
-    }
-}
-
-void marshal_vkCmdUpdateBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize dataSize,
-    const void* pData)
-{
-    uint32_t opcode = OP_vkCmdUpdateBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
-    vkStream->write((const void*)pData, ((dataSize)) * sizeof(const uint8_t));
-}
-
-void unmarshal_vkCmdUpdateBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize dataSize,
-    const void* pData)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
-    vkStream->alloc((void**)&pData, ((dataSize)) * sizeof(const uint8_t));
-    vkStream->read((void*)pData, ((dataSize)) * sizeof(const uint8_t));
-}
-
-void marshal_vkCmdFillBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize size,
-    uint32_t data)
-{
-    uint32_t opcode = OP_vkCmdFillBuffer;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&data, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdFillBuffer(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize size,
-    uint32_t data)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&size, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&data, sizeof(uint32_t));
-}
-
-void marshal_VkClearColorValue(
-    VulkanStream* vkStream,
-    const VkClearColorValue* forMarshaling)
-{
-    vkStream->write((float*)forMarshaling->float32, 4 * sizeof(float));
-    vkStream->write((int32_t*)forMarshaling->int32, 4 * sizeof(int32_t));
-    vkStream->write((uint32_t*)forMarshaling->uint32, 4 * sizeof(uint32_t));
-}
-
-void unmarshal_VkClearColorValue(
-    VulkanStream* vkStream,
-    VkClearColorValue* forUnmarshaling)
-{
-    vkStream->read((float*)forUnmarshaling->float32, 4 * sizeof(float));
-    vkStream->read((int32_t*)forUnmarshaling->int32, 4 * sizeof(int32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->uint32, 4 * sizeof(uint32_t));
-}
-
-void marshal_vkCmdClearColorImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearColorValue* pColor,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges)
-{
-    uint32_t opcode = OP_vkCmdClearColorImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
-    marshal_VkClearColorValue(vkStream, (const VkClearColorValue*)(pColor));
-    vkStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
-    {
-        marshal_VkImageSubresourceRange(vkStream, (const VkImageSubresourceRange*)(pRanges + i));
-    }
-}
-
-void unmarshal_vkCmdClearColorImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearColorValue* pColor,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
-    vkStream->alloc((void**)&pColor, sizeof(const VkClearColorValue));
-    unmarshal_VkClearColorValue(vkStream, (VkClearColorValue*)(pColor));
-    vkStream->read((uint32_t*)&rangeCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRanges, ((rangeCount)) * sizeof(const VkImageSubresourceRange));
-    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
-    {
-        unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(pRanges + i));
-    }
-}
-
-void marshal_VkClearDepthStencilValue(
-    VulkanStream* vkStream,
-    const VkClearDepthStencilValue* forMarshaling)
-{
-    vkStream->write((float*)&forMarshaling->depth, sizeof(float));
-    vkStream->write((uint32_t*)&forMarshaling->stencil, sizeof(uint32_t));
-}
-
-void unmarshal_VkClearDepthStencilValue(
-    VulkanStream* vkStream,
-    VkClearDepthStencilValue* forUnmarshaling)
-{
-    vkStream->read((float*)&forUnmarshaling->depth, sizeof(float));
-    vkStream->read((uint32_t*)&forUnmarshaling->stencil, sizeof(uint32_t));
-}
-
-void marshal_vkCmdClearDepthStencilImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearDepthStencilValue* pDepthStencil,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges)
-{
-    uint32_t opcode = OP_vkCmdClearDepthStencilImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&image, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
-    marshal_VkClearDepthStencilValue(vkStream, (const VkClearDepthStencilValue*)(pDepthStencil));
-    vkStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
-    {
-        marshal_VkImageSubresourceRange(vkStream, (const VkImageSubresourceRange*)(pRanges + i));
-    }
-}
-
-void unmarshal_vkCmdClearDepthStencilImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage image,
-    VkImageLayout imageLayout,
-    const VkClearDepthStencilValue* pDepthStencil,
-    uint32_t rangeCount,
-    const VkImageSubresourceRange* pRanges)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&image, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
-    vkStream->alloc((void**)&pDepthStencil, sizeof(const VkClearDepthStencilValue));
-    unmarshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(pDepthStencil));
-    vkStream->read((uint32_t*)&rangeCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRanges, ((rangeCount)) * sizeof(const VkImageSubresourceRange));
-    for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
-    {
-        unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(pRanges + i));
-    }
-}
-
-void marshal_VkClearValue(
-    VulkanStream* vkStream,
-    const VkClearValue* forMarshaling)
-{
-    marshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forMarshaling->color));
-    marshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forMarshaling->depthStencil));
-}
-
-void unmarshal_VkClearValue(
-    VulkanStream* vkStream,
-    VkClearValue* forUnmarshaling)
-{
-    unmarshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forUnmarshaling->color));
-    unmarshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forUnmarshaling->depthStencil));
-}
-
-void marshal_VkClearAttachment(
-    VulkanStream* vkStream,
-    const VkClearAttachment* forMarshaling)
-{
-    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
-    vkStream->write((uint32_t*)&forMarshaling->colorAttachment, sizeof(uint32_t));
-    marshal_VkClearValue(vkStream, (VkClearValue*)(&forMarshaling->clearValue));
-}
-
-void unmarshal_VkClearAttachment(
-    VulkanStream* vkStream,
-    VkClearAttachment* forUnmarshaling)
-{
-    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
-    vkStream->read((uint32_t*)&forUnmarshaling->colorAttachment, sizeof(uint32_t));
-    unmarshal_VkClearValue(vkStream, (VkClearValue*)(&forUnmarshaling->clearValue));
-}
-
-void marshal_VkClearRect(
-    VulkanStream* vkStream,
-    const VkClearRect* forMarshaling)
-{
-    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->rect));
-    vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
-}
-
-void unmarshal_VkClearRect(
-    VulkanStream* vkStream,
-    VkClearRect* forUnmarshaling)
-{
-    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->rect));
-    vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
-}
-
-void marshal_vkCmdClearAttachments(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t attachmentCount,
-    const VkClearAttachment* pAttachments,
-    uint32_t rectCount,
-    const VkClearRect* pRects)
-{
-    uint32_t opcode = OP_vkCmdClearAttachments;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&attachmentCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
-    {
-        marshal_VkClearAttachment(vkStream, (const VkClearAttachment*)(pAttachments + i));
-    }
-    vkStream->write((uint32_t*)&rectCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
-    {
-        marshal_VkClearRect(vkStream, (const VkClearRect*)(pRects + i));
-    }
-}
-
-void unmarshal_vkCmdClearAttachments(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t attachmentCount,
-    const VkClearAttachment* pAttachments,
-    uint32_t rectCount,
-    const VkClearRect* pRects)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&attachmentCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pAttachments, ((attachmentCount)) * sizeof(const VkClearAttachment));
-    for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
-    {
-        unmarshal_VkClearAttachment(vkStream, (VkClearAttachment*)(pAttachments + i));
-    }
-    vkStream->read((uint32_t*)&rectCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRects, ((rectCount)) * sizeof(const VkClearRect));
-    for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
-    {
-        unmarshal_VkClearRect(vkStream, (VkClearRect*)(pRects + i));
-    }
-}
-
-void marshal_VkImageResolve(
-    VulkanStream* vkStream,
-    const VkImageResolve* forMarshaling)
-{
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
-    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
-    marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
-    marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
-    marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
-}
-
-void unmarshal_VkImageResolve(
-    VulkanStream* vkStream,
-    VkImageResolve* forUnmarshaling)
-{
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
-    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
-    unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
-    unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
-    unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
-}
-
-void marshal_vkCmdResolveImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageResolve* pRegions)
-{
-    uint32_t opcode = OP_vkCmdResolveImage;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        marshal_VkImageResolve(vkStream, (const VkImageResolve*)(pRegions + i));
-    }
-}
-
-void unmarshal_vkCmdResolveImage(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkImage srcImage,
-    VkImageLayout srcImageLayout,
-    VkImage dstImage,
-    VkImageLayout dstImageLayout,
-    uint32_t regionCount,
-    const VkImageResolve* pRegions)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
-    vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
-    vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
-    vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageResolve));
-    for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
-    {
-        unmarshal_VkImageResolve(vkStream, (VkImageResolve*)(pRegions + i));
-    }
-}
-
-void marshal_vkCmdSetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask)
-{
-    uint32_t opcode = OP_vkCmdSetEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
-}
-
-void unmarshal_vkCmdSetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->read((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
-}
-
-void marshal_vkCmdResetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask)
-{
-    uint32_t opcode = OP_vkCmdResetEvent;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
-}
-
-void unmarshal_vkCmdResetEvent(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkEvent event,
-    VkPipelineStageFlags stageMask)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkEvent*)&event, sizeof(VkEvent));
-    vkStream->read((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
-}
-
-void marshal_VkMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkMemoryBarrier* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
-}
-
-void unmarshal_VkMemoryBarrier(
-    VulkanStream* vkStream,
-    VkMemoryBarrier* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
-}
-
-void marshal_VkBufferMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkBufferMemoryBarrier* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    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));
-    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
-}
-
-void unmarshal_VkBufferMemoryBarrier(
-    VulkanStream* vkStream,
-    VkBufferMemoryBarrier* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    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));
-    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
-}
-
-void marshal_VkImageMemoryBarrier(
-    VulkanStream* vkStream,
-    const VkImageMemoryBarrier* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
-    vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
-    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));
-    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
-    marshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
-}
-
-void unmarshal_VkImageMemoryBarrier(
-    VulkanStream* vkStream,
-    VkImageMemoryBarrier* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
-    vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
-    vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
-    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));
-    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
-    unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
-}
-
-void marshal_vkCmdWaitEvents(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t eventCount,
-    const VkEvent* pEvents,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-    uint32_t opcode = OP_vkCmdWaitEvents;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&eventCount, sizeof(uint32_t));
-    vkStream->write((const VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
-    vkStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
-    {
-        marshal_VkMemoryBarrier(vkStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
-    }
-    vkStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
-    {
-        marshal_VkBufferMemoryBarrier(vkStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
-    }
-    vkStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
-    {
-        marshal_VkImageMemoryBarrier(vkStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
-    }
-}
-
-void unmarshal_vkCmdWaitEvents(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t eventCount,
-    const VkEvent* pEvents,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&eventCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pEvents, ((eventCount)) * sizeof(const VkEvent));
-    vkStream->read((VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
-    vkStream->read((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->read((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->read((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pMemoryBarriers, ((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
-    {
-        unmarshal_VkMemoryBarrier(vkStream, (VkMemoryBarrier*)(pMemoryBarriers + i));
-    }
-    vkStream->read((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBufferMemoryBarriers, ((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
-    {
-        unmarshal_VkBufferMemoryBarrier(vkStream, (VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
-    }
-    vkStream->read((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pImageMemoryBarriers, ((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
-    {
-        unmarshal_VkImageMemoryBarrier(vkStream, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
-    }
-}
-
-void marshal_vkCmdPipelineBarrier(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    VkDependencyFlags dependencyFlags,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-    uint32_t opcode = OP_vkCmdPipelineBarrier;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->write((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
-    vkStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
-    {
-        marshal_VkMemoryBarrier(vkStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
-    }
-    vkStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
-    {
-        marshal_VkBufferMemoryBarrier(vkStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
-    }
-    vkStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
-    {
-        marshal_VkImageMemoryBarrier(vkStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
-    }
-}
-
-void unmarshal_vkCmdPipelineBarrier(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlags srcStageMask,
-    VkPipelineStageFlags dstStageMask,
-    VkDependencyFlags dependencyFlags,
-    uint32_t memoryBarrierCount,
-    const VkMemoryBarrier* pMemoryBarriers,
-    uint32_t bufferMemoryBarrierCount,
-    const VkBufferMemoryBarrier* pBufferMemoryBarriers,
-    uint32_t imageMemoryBarrierCount,
-    const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->read((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
-    vkStream->read((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
-    vkStream->read((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pMemoryBarriers, ((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
-    {
-        unmarshal_VkMemoryBarrier(vkStream, (VkMemoryBarrier*)(pMemoryBarriers + i));
-    }
-    vkStream->read((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBufferMemoryBarriers, ((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
-    {
-        unmarshal_VkBufferMemoryBarrier(vkStream, (VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
-    }
-    vkStream->read((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pImageMemoryBarriers, ((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
-    for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
-    {
-        unmarshal_VkImageMemoryBarrier(vkStream, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
-    }
-}
-
-void marshal_vkCmdBeginQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query,
-    VkQueryControlFlags flags)
-{
-    uint32_t opcode = OP_vkCmdBeginQuery;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&query, sizeof(uint32_t));
-    vkStream->write((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
-}
-
-void unmarshal_vkCmdBeginQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query,
-    VkQueryControlFlags flags)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&query, sizeof(uint32_t));
-    vkStream->read((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
-}
-
-void marshal_vkCmdEndQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query)
-{
-    uint32_t opcode = OP_vkCmdEndQuery;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&query, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdEndQuery(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t query)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&query, sizeof(uint32_t));
-}
-
-void marshal_vkCmdResetQueryPool(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount)
-{
-    uint32_t opcode = OP_vkCmdResetQueryPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdResetQueryPool(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
-}
-
-void marshal_vkCmdWriteTimestamp(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkQueryPool queryPool,
-    uint32_t query)
-{
-    uint32_t opcode = OP_vkCmdWriteTimestamp;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&query, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdWriteTimestamp(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkQueryPool queryPool,
-    uint32_t query)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&query, sizeof(uint32_t));
-}
-
-void marshal_vkCmdCopyQueryPoolResults(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags)
-{
-    uint32_t opcode = OP_vkCmdCopyQueryPoolResults;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
-    vkStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
-}
-
-void unmarshal_vkCmdCopyQueryPoolResults(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkQueryPool queryPool,
-    uint32_t firstQuery,
-    uint32_t queryCount,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    VkDeviceSize stride,
-    VkQueryResultFlags flags)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
-    vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->read((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
-    vkStream->read((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
-}
-
-void marshal_vkCmdPushConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineLayout layout,
-    VkShaderStageFlags stageFlags,
-    uint32_t offset,
-    uint32_t size,
-    const void* pValues)
-{
-    uint32_t opcode = OP_vkCmdPushConstants;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->write((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
-    vkStream->write((uint32_t*)&offset, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&size, sizeof(uint32_t));
-    vkStream->write((const void*)pValues, ((size)) * sizeof(const uint8_t));
-}
-
-void unmarshal_vkCmdPushConstants(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineLayout layout,
-    VkShaderStageFlags stageFlags,
-    uint32_t offset,
-    uint32_t size,
-    const void* pValues)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->read((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
-    vkStream->read((uint32_t*)&offset, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&size, sizeof(uint32_t));
-    vkStream->alloc((void**)&pValues, ((size)) * sizeof(const uint8_t));
-    vkStream->read((void*)pValues, ((size)) * sizeof(const uint8_t));
-}
-
-void marshal_VkRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassBeginInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
-    vkStream->write((VkFramebuffer*)&forMarshaling->framebuffer, sizeof(VkFramebuffer));
-    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->renderArea));
-    vkStream->write((uint32_t*)&forMarshaling->clearValueCount, sizeof(uint32_t));
-    vkStream->write((const VkClearValue**)&forMarshaling->pClearValues, sizeof(const VkClearValue*));
-    if (forMarshaling->pClearValues)
-    {
-        for (uint32_t i = 0; i < (uint32_t)forMarshaling->clearValueCount; ++i)
-        {
-            marshal_VkClearValue(vkStream, (const VkClearValue*)(forMarshaling->pClearValues + i));
-        }
-    }
-}
-
-void unmarshal_VkRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    VkRenderPassBeginInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
-    vkStream->read((VkFramebuffer*)&forUnmarshaling->framebuffer, sizeof(VkFramebuffer));
-    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->renderArea));
-    vkStream->read((uint32_t*)&forUnmarshaling->clearValueCount, sizeof(uint32_t));
-    vkStream->read((VkClearValue**)&forUnmarshaling->pClearValues, sizeof(const VkClearValue*));
-    if (forUnmarshaling->pClearValues)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->pClearValues, forUnmarshaling->clearValueCount * sizeof(const VkClearValue));
-        for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->clearValueCount; ++i)
-        {
-            unmarshal_VkClearValue(vkStream, (VkClearValue*)(forUnmarshaling->pClearValues + i));
-        }
-    }
-}
-
-void marshal_vkCmdBeginRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    VkSubpassContents contents)
-{
-    uint32_t opcode = OP_vkCmdBeginRenderPass;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkRenderPassBeginInfo(vkStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
-    vkStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
-}
-
-void unmarshal_vkCmdBeginRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    VkSubpassContents contents)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
-    unmarshal_VkRenderPassBeginInfo(vkStream, (VkRenderPassBeginInfo*)(pRenderPassBegin));
-    vkStream->read((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
-}
-
-void marshal_vkCmdNextSubpass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkSubpassContents contents)
-{
-    uint32_t opcode = OP_vkCmdNextSubpass;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
-}
-
-void unmarshal_vkCmdNextSubpass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkSubpassContents contents)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
-}
-
-void marshal_vkCmdEndRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    uint32_t opcode = OP_vkCmdEndRenderPass;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void unmarshal_vkCmdEndRenderPass(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void marshal_vkCmdExecuteCommands(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers)
-{
-    uint32_t opcode = OP_vkCmdExecuteCommands;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
-    vkStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-}
-
-void unmarshal_vkCmdExecuteCommands(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t commandBufferCount,
-    const VkCommandBuffer* pCommandBuffers)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&commandBufferCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-    vkStream->read((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
-}
-
-void marshal_VkDispatchIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDispatchIndirectCommand* forMarshaling)
-{
-    vkStream->write((uint32_t*)&forMarshaling->x, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->y, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->z, sizeof(uint32_t));
-}
-
-void unmarshal_VkDispatchIndirectCommand(
-    VulkanStream* vkStream,
-    VkDispatchIndirectCommand* forUnmarshaling)
-{
-    vkStream->read((uint32_t*)&forUnmarshaling->x, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->y, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->z, sizeof(uint32_t));
-}
-
-void marshal_VkDrawIndexedIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDrawIndexedIndirectCommand* forMarshaling)
-{
-    vkStream->write((uint32_t*)&forMarshaling->indexCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->firstIndex, sizeof(uint32_t));
-    vkStream->write((int32_t*)&forMarshaling->vertexOffset, sizeof(int32_t));
-    vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
-}
-
-void unmarshal_VkDrawIndexedIndirectCommand(
-    VulkanStream* vkStream,
-    VkDrawIndexedIndirectCommand* forUnmarshaling)
-{
-    vkStream->read((uint32_t*)&forUnmarshaling->indexCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->firstIndex, sizeof(uint32_t));
-    vkStream->read((int32_t*)&forUnmarshaling->vertexOffset, sizeof(int32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
-}
-
-void marshal_VkDrawIndirectCommand(
-    VulkanStream* vkStream,
-    const VkDrawIndirectCommand* forMarshaling)
-{
-    vkStream->write((uint32_t*)&forMarshaling->vertexCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->firstVertex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
-}
-
-void unmarshal_VkDrawIndirectCommand(
-    VulkanStream* vkStream,
-    VkDrawIndirectCommand* forUnmarshaling)
-{
-    vkStream->read((uint32_t*)&forUnmarshaling->vertexCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->firstVertex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
-}
-
-void marshal_VkBaseOutStructure(
-    VulkanStream* vkStream,
-    const VkBaseOutStructure* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((VkBaseOutStructure**)&forMarshaling->pNext, sizeof(VkBaseOutStructure*));
-    // TODO: Unsupported : VkBaseOutStructure* pNext
-}
-
-void unmarshal_VkBaseOutStructure(
-    VulkanStream* vkStream,
-    VkBaseOutStructure* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((VkBaseOutStructure**)&forUnmarshaling->pNext, sizeof(VkBaseOutStructure*));
-    // TODO: Unsupported : VkBaseOutStructure* pNext
-}
-
-void marshal_VkBaseInStructure(
-    VulkanStream* vkStream,
-    const VkBaseInStructure* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const VkBaseInStructure**)&forMarshaling->pNext, sizeof(const VkBaseInStructure*));
-    // TODO: Unsupported : const VkBaseInStructure* pNext
-}
-
-void unmarshal_VkBaseInStructure(
-    VulkanStream* vkStream,
-    VkBaseInStructure* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((VkBaseInStructure**)&forUnmarshaling->pNext, sizeof(const VkBaseInStructure*));
-    // TODO: Unsupported : const VkBaseInStructure* pNext
-}
-
-#endif
-#ifdef VK_VERSION_1_1
-VkResult marshal_vkEnumerateInstanceVersion(
-    VulkanStream* vkStream,
-    uint32_t* pApiVersion)
-{
-    uint32_t opcode = OP_vkEnumerateInstanceVersion;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
-    VkResult marshal_vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumerateInstanceVersion_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumerateInstanceVersion(
-    VulkanStream* vkStream,
-    uint32_t* pApiVersion)
-{
-    vkStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
-    VkResult unmarshal_vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumerateInstanceVersion_VkResult_return;
-}
-
-void marshal_VkPhysicalDeviceSubgroupProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSubgroupProperties* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
-    vkStream->write((VkShaderStageFlags*)&forMarshaling->supportedStages, sizeof(VkShaderStageFlags));
-    vkStream->write((VkSubgroupFeatureFlags*)&forMarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
-    vkStream->write((VkBool32*)&forMarshaling->quadOperationsInAllStages, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceSubgroupProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSubgroupProperties* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
-    vkStream->read((VkShaderStageFlags*)&forUnmarshaling->supportedStages, sizeof(VkShaderStageFlags));
-    vkStream->read((VkSubgroupFeatureFlags*)&forUnmarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
-    vkStream->read((VkBool32*)&forUnmarshaling->quadOperationsInAllStages, sizeof(VkBool32));
-}
-
-void marshal_VkBindBufferMemoryInfo(
-    VulkanStream* vkStream,
-    const VkBindBufferMemoryInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
-}
-
-void unmarshal_VkBindBufferMemoryInfo(
-    VulkanStream* vkStream,
-    VkBindBufferMemoryInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
-}
-
-void marshal_VkBindImageMemoryInfo(
-    VulkanStream* vkStream,
-    const VkBindImageMemoryInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
-    vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
-}
-
-void unmarshal_VkBindImageMemoryInfo(
-    VulkanStream* vkStream,
-    VkBindImageMemoryInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
-    vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
-}
-
-VkResult marshal_vkBindBufferMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos)
-{
-    uint32_t opcode = OP_vkBindBufferMemory2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        marshal_VkBindBufferMemoryInfo(vkStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult marshal_vkBindBufferMemory2_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindBufferMemory2_VkResult_return;
-}
-
-VkResult unmarshal_vkBindBufferMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        unmarshal_VkBindBufferMemoryInfo(vkStream, (VkBindBufferMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult unmarshal_vkBindBufferMemory2_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindBufferMemory2_VkResult_return;
-}
-
-VkResult marshal_vkBindImageMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos)
-{
-    uint32_t opcode = OP_vkBindImageMemory2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        marshal_VkBindImageMemoryInfo(vkStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult marshal_vkBindImageMemory2_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindImageMemory2_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindImageMemory2_VkResult_return;
-}
-
-VkResult unmarshal_vkBindImageMemory2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        unmarshal_VkBindImageMemoryInfo(vkStream, (VkBindImageMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult unmarshal_vkBindImageMemory2_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindImageMemory2_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindImageMemory2_VkResult_return;
-}
-
-void marshal_VkPhysicalDevice16BitStorageFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDevice16BitStorageFeatures* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->storagePushConstant16, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->storageInputOutput16, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDevice16BitStorageFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDevice16BitStorageFeatures* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant16, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->storageInputOutput16, sizeof(VkBool32));
-}
-
-void marshal_VkMemoryDedicatedRequirements(
-    VulkanStream* vkStream,
-    const VkMemoryDedicatedRequirements* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
-}
-
-void unmarshal_VkMemoryDedicatedRequirements(
-    VulkanStream* vkStream,
-    VkMemoryDedicatedRequirements* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
-}
-
-void marshal_VkMemoryDedicatedAllocateInfo(
-    VulkanStream* vkStream,
-    const VkMemoryDedicatedAllocateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
-    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
-}
-
-void unmarshal_VkMemoryDedicatedAllocateInfo(
-    VulkanStream* vkStream,
-    VkMemoryDedicatedAllocateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
-    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
-}
-
-void marshal_VkMemoryAllocateFlagsInfo(
-    VulkanStream* vkStream,
-    const VkMemoryAllocateFlagsInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkMemoryAllocateFlags*)&forMarshaling->flags, sizeof(VkMemoryAllocateFlags));
-    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
-}
-
-void unmarshal_VkMemoryAllocateFlagsInfo(
-    VulkanStream* vkStream,
-    VkMemoryAllocateFlagsInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkMemoryAllocateFlags*)&forUnmarshaling->flags, sizeof(VkMemoryAllocateFlags));
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
-}
-
-void marshal_VkDeviceGroupRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupRenderPassBeginInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->deviceRenderAreaCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)forMarshaling->deviceRenderAreaCount; ++i)
-    {
-        marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pDeviceRenderAreas + i));
-    }
-}
-
-void unmarshal_VkDeviceGroupRenderPassBeginInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupRenderPassBeginInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceRenderAreaCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pDeviceRenderAreas, forUnmarshaling->deviceRenderAreaCount * sizeof(const VkRect2D));
-    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->deviceRenderAreaCount; ++i)
-    {
-        unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDeviceRenderAreas + i));
-    }
-}
-
-void marshal_VkDeviceGroupCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
-}
-
-void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
-}
-
-void marshal_VkDeviceGroupSubmitInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupSubmitInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pWaitSemaphoreDeviceIndices, forMarshaling->waitSemaphoreCount * sizeof(const uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pCommandBufferDeviceMasks, forMarshaling->commandBufferCount * sizeof(const uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pSignalSemaphoreDeviceIndices, forMarshaling->signalSemaphoreCount * sizeof(const uint32_t));
-}
-
-void unmarshal_VkDeviceGroupSubmitInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupSubmitInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
-}
-
-void marshal_VkDeviceGroupBindSparseInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupBindSparseInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->resourceDeviceIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->memoryDeviceIndex, sizeof(uint32_t));
-}
-
-void unmarshal_VkDeviceGroupBindSparseInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupBindSparseInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->resourceDeviceIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->memoryDeviceIndex, sizeof(uint32_t));
-}
-
-void marshal_vkGetDeviceGroupPeerMemoryFeatures(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-    uint32_t opcode = OP_vkGetDeviceGroupPeerMemoryFeatures;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
-    vkStream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
-}
-
-void unmarshal_vkGetDeviceGroupPeerMemoryFeatures(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&heapIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
-    vkStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
-}
-
-void marshal_vkCmdSetDeviceMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask)
-{
-    uint32_t opcode = OP_vkCmdSetDeviceMask;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdSetDeviceMask(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&deviceMask, sizeof(uint32_t));
-}
-
-void marshal_vkCmdDispatchBase(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
-{
-    uint32_t opcode = OP_vkCmdDispatchBase;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDispatchBase(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&baseGroupX, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&baseGroupY, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&baseGroupZ, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
-}
-
-void marshal_VkBindBufferMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
-}
-
-void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
-}
-
-void marshal_VkBindImageMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    const VkBindImageMemoryDeviceGroupInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)forMarshaling->splitInstanceBindRegionCount; ++i)
-    {
-        marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pSplitInstanceBindRegions + i));
-    }
-}
-
-void unmarshal_VkBindImageMemoryDeviceGroupInfo(
-    VulkanStream* vkStream,
-    VkBindImageMemoryDeviceGroupInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pSplitInstanceBindRegions, forUnmarshaling->splitInstanceBindRegionCount * sizeof(const VkRect2D));
-    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->splitInstanceBindRegionCount; ++i)
-    {
-        unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pSplitInstanceBindRegions + i));
-    }
-}
-
-void marshal_VkPhysicalDeviceGroupProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceGroupProperties* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)forMarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
-    vkStream->write((VkBool32*)&forMarshaling->subsetAllocation, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceGroupProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceGroupProperties* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
-    vkStream->read((VkPhysicalDevice*)forUnmarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
-    vkStream->read((VkBool32*)&forUnmarshaling->subsetAllocation, sizeof(VkBool32));
-}
-
-void marshal_VkDeviceGroupDeviceCreateInfo(
-    VulkanStream* vkStream,
-    const VkDeviceGroupDeviceCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
-    vkStream->write((const VkPhysicalDevice*)forMarshaling->pPhysicalDevices, forMarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
-}
-
-void unmarshal_VkDeviceGroupDeviceCreateInfo(
-    VulkanStream* vkStream,
-    VkDeviceGroupDeviceCreateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
-    vkStream->read((VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
-}
-
-VkResult marshal_vkEnumeratePhysicalDeviceGroups(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-{
-    uint32_t opcode = OP_vkEnumeratePhysicalDeviceGroups;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
-    {
-        marshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
-    }
-    VkResult marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
-}
-
-VkResult unmarshal_vkEnumeratePhysicalDeviceGroups(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
-    {
-        unmarshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
-    }
-    VkResult unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
-}
-
-void marshal_VkBufferMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkBufferMemoryRequirementsInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
-}
-
-void unmarshal_VkBufferMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkBufferMemoryRequirementsInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
-}
-
-void marshal_VkImageMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkImageMemoryRequirementsInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
-}
-
-void unmarshal_VkImageMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkImageMemoryRequirementsInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
-}
-
-void marshal_VkImageSparseMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    const VkImageSparseMemoryRequirementsInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
-}
-
-void unmarshal_VkImageSparseMemoryRequirementsInfo2(
-    VulkanStream* vkStream,
-    VkImageSparseMemoryRequirementsInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
-}
-
-void marshal_VkMemoryRequirements2(
-    VulkanStream* vkStream,
-    const VkMemoryRequirements2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forMarshaling->memoryRequirements));
-}
-
-void unmarshal_VkMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkMemoryRequirements2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
-}
-
-void marshal_VkSparseImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    const VkSparseImageMemoryRequirements2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forMarshaling->memoryRequirements));
-}
-
-void unmarshal_VkSparseImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkSparseImageMemoryRequirements2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
-}
-
-void marshal_vkGetImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageMemoryRequirements2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageMemoryRequirementsInfo2(vkStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
-    marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetImageMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
-    unmarshal_VkImageMemoryRequirementsInfo2(vkStream, (VkImageMemoryRequirementsInfo2*)(pInfo));
-    unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void marshal_vkGetBufferMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetBufferMemoryRequirements2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkBufferMemoryRequirementsInfo2(vkStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
-    marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetBufferMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
-    unmarshal_VkBufferMemoryRequirementsInfo2(vkStream, (VkBufferMemoryRequirementsInfo2*)(pInfo));
-    unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void marshal_vkGetImageSparseMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageSparseMemoryRequirements2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
-    vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        marshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
-    }
-}
-
-void unmarshal_vkGetImageSparseMemoryRequirements2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkImageSparseMemoryRequirementsInfo2));
-    unmarshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (VkImageSparseMemoryRequirementsInfo2*)(pInfo));
-    vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        unmarshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
-    }
-}
-
-void marshal_VkPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceFeatures2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forMarshaling->features));
-}
-
-void unmarshal_VkPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceFeatures2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forUnmarshaling->features));
-}
-
-void marshal_VkPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forMarshaling->properties));
-}
-
-void unmarshal_VkPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forUnmarshaling->properties));
-}
-
-void marshal_VkFormatProperties2(
-    VulkanStream* vkStream,
-    const VkFormatProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forMarshaling->formatProperties));
-}
-
-void unmarshal_VkFormatProperties2(
-    VulkanStream* vkStream,
-    VkFormatProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forUnmarshaling->formatProperties));
-}
-
-void marshal_VkImageFormatProperties2(
-    VulkanStream* vkStream,
-    const VkImageFormatProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forMarshaling->imageFormatProperties));
-}
-
-void unmarshal_VkImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkImageFormatProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties));
-}
-
-void marshal_VkPhysicalDeviceImageFormatInfo2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceImageFormatInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
-    vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
-    vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
-    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
-}
-
-void unmarshal_VkPhysicalDeviceImageFormatInfo2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceImageFormatInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
-    vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
-    vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
-    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
-}
-
-void marshal_VkQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    const VkQueueFamilyProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forMarshaling->queueFamilyProperties));
-}
-
-void unmarshal_VkQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkQueueFamilyProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forUnmarshaling->queueFamilyProperties));
-}
-
-void marshal_VkPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMemoryProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forMarshaling->memoryProperties));
-}
-
-void unmarshal_VkPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMemoryProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forUnmarshaling->memoryProperties));
-}
-
-void marshal_VkSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    const VkSparseImageFormatProperties2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forMarshaling->properties));
-}
-
-void unmarshal_VkSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkSparseImageFormatProperties2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forUnmarshaling->properties));
-}
-
-void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
-    vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
-    vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
-    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
-}
-
-void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
-    vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
-    vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
-    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
-}
-
-void marshal_vkGetPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceFeatures2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
-}
-
-void unmarshal_vkGetPhysicalDeviceFeatures2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
-}
-
-void marshal_vkGetPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
-}
-
-void marshal_vkGetPhysicalDeviceFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceFormatProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    marshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    unmarshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
-}
-
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceImageFormatProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
-    marshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
-    VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pImageFormatInfo, sizeof(const VkPhysicalDeviceImageFormatInfo2));
-    unmarshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
-    unmarshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
-    VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
-}
-
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        marshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
-    }
-}
-
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        unmarshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
-    }
-}
-
-void marshal_vkGetPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceMemoryProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceMemoryProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
-}
-
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
-    }
-}
-
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pFormatInfo, sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
-    unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
-    }
-}
-
-void marshal_vkTrimCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags)
-{
-    uint32_t opcode = OP_vkTrimCommandPool;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
-}
-
-void unmarshal_vkTrimCommandPool(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->read((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
-}
-
-void marshal_VkPhysicalDevicePointClippingProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDevicePointClippingProperties* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkPointClippingBehavior*)&forMarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
-}
-
-void unmarshal_VkPhysicalDevicePointClippingProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevicePointClippingProperties* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
-}
-
-void marshal_VkInputAttachmentAspectReference(
-    VulkanStream* vkStream,
-    const VkInputAttachmentAspectReference* forMarshaling)
-{
-    vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->inputAttachmentIndex, sizeof(uint32_t));
-    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
-}
-
-void unmarshal_VkInputAttachmentAspectReference(
-    VulkanStream* vkStream,
-    VkInputAttachmentAspectReference* forUnmarshaling)
-{
-    vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentIndex, sizeof(uint32_t));
-    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
-}
-
-void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->aspectReferenceCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)forMarshaling->aspectReferenceCount; ++i)
-    {
-        marshal_VkInputAttachmentAspectReference(vkStream, (const VkInputAttachmentAspectReference*)(forMarshaling->pAspectReferences + i));
-    }
-}
-
-void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
-    VulkanStream* vkStream,
-    VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->aspectReferenceCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pAspectReferences, forUnmarshaling->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
-    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->aspectReferenceCount; ++i)
-    {
-        unmarshal_VkInputAttachmentAspectReference(vkStream, (VkInputAttachmentAspectReference*)(forUnmarshaling->pAspectReferences + i));
-    }
-}
-
-void marshal_VkImageViewUsageCreateInfo(
-    VulkanStream* vkStream,
-    const VkImageViewUsageCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
-}
-
-void unmarshal_VkImageViewUsageCreateInfo(
-    VulkanStream* vkStream,
-    VkImageViewUsageCreateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
-}
-
-void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
-    VulkanStream* vkStream,
-    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkTessellationDomainOrigin*)&forMarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
-}
-
-void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
-    VulkanStream* vkStream,
-    VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkTessellationDomainOrigin*)&forUnmarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
-}
-
-void marshal_VkRenderPassMultiviewCreateInfo(
-    VulkanStream* vkStream,
-    const VkRenderPassMultiviewCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pViewMasks, forMarshaling->subpassCount * sizeof(const uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
-    vkStream->write((const int32_t*)forMarshaling->pViewOffsets, forMarshaling->dependencyCount * sizeof(const int32_t));
-    vkStream->write((uint32_t*)&forMarshaling->correlationMaskCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pCorrelationMasks, forMarshaling->correlationMaskCount * sizeof(const uint32_t));
-}
-
-void unmarshal_VkRenderPassMultiviewCreateInfo(
-    VulkanStream* vkStream,
-    VkRenderPassMultiviewCreateInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
-    vkStream->read((int32_t*)forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->correlationMaskCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
-}
-
-void marshal_VkPhysicalDeviceMultiviewFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMultiviewFeatures* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->multiview, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->multiviewGeometryShader, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->multiviewTessellationShader, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceMultiviewFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMultiviewFeatures* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->multiview, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->multiviewGeometryShader, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->multiviewTessellationShader, sizeof(VkBool32));
-}
-
-void marshal_VkPhysicalDeviceMultiviewProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceMultiviewProperties* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->maxMultiviewViewCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
-}
-
-void unmarshal_VkPhysicalDeviceMultiviewProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceMultiviewProperties* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
-}
-
-void marshal_VkPhysicalDeviceVariablePointerFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceVariablePointerFeatures* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->variablePointers, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->variablePointers, sizeof(VkBool32));
-}
-
-void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->protectedMemory, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->protectedMemory, sizeof(VkBool32));
-}
-
-void marshal_VkPhysicalDeviceProtectedMemoryProperties(
-    VulkanStream* vkStream,
-    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->protectedNoFault, sizeof(VkBool32));
-}
-
-void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->protectedNoFault, sizeof(VkBool32));
-}
-
-void marshal_VkDeviceQueueInfo2(
-    VulkanStream* vkStream,
-    const VkDeviceQueueInfo2* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
-    vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->queueIndex, sizeof(uint32_t));
-}
-
-void unmarshal_VkDeviceQueueInfo2(
-    VulkanStream* vkStream,
-    VkDeviceQueueInfo2* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
-    vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->queueIndex, sizeof(uint32_t));
-}
-
-void marshal_VkProtectedSubmitInfo(
-    VulkanStream* vkStream,
-    const VkProtectedSubmitInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->protectedSubmit, sizeof(VkBool32));
-}
-
-void unmarshal_VkProtectedSubmitInfo(
-    VulkanStream* vkStream,
-    VkProtectedSubmitInfo* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->protectedSubmit, sizeof(VkBool32));
-}
-
-void marshal_vkGetDeviceQueue2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceQueueInfo2* pQueueInfo,
-    VkQueue* pQueue)
-{
-    uint32_t opcode = OP_vkGetDeviceQueue2;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDeviceQueueInfo2(vkStream, (const VkDeviceQueueInfo2*)(pQueueInfo));
-    vkStream->read((VkQueue*)pQueue, sizeof(VkQueue));
-}
-
-void unmarshal_vkGetDeviceQueue2(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceQueueInfo2* pQueueInfo,
-    VkQueue* pQueue)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pQueueInfo, sizeof(const VkDeviceQueueInfo2));
-    unmarshal_VkDeviceQueueInfo2(vkStream, (VkDeviceQueueInfo2*)(pQueueInfo));
-    vkStream->write((VkQueue*)pQueue, sizeof(VkQueue));
-}
-
-void marshal_VkSamplerYcbcrConversionCreateInfo(
-    VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionCreateInfo* forMarshaling)
-{
-    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
-    vkStream->write((VkSamplerYcbcrModelConversion*)&forMarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
-    vkStream->write((VkSamplerYcbcrRange*)&forMarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
-    marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->components));
-    vkStream->write((VkChromaLocation*)&forMarshaling->xChromaOffset, sizeof(VkChromaLocation));
-    vkStream->write((VkChromaLocation*)&forMarshaling->yChromaOffset, sizeof(VkChromaLocation));
-    vkStream->write((VkFilter*)&forMarshaling->chromaFilter, sizeof(VkFilter));
-    vkStream->write((VkBool32*)&forMarshaling->forceExplicitReconstruction, sizeof(VkBool32));
-}
-
-void unmarshal_VkSamplerYcbcrConversionCreateInfo(
+void unmarshal_VkBaseInStructure(
     VulkanStream* vkStream,
-    VkSamplerYcbcrConversionCreateInfo* forUnmarshaling)
+    VkBaseInStructure* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
-    vkStream->read((VkSamplerYcbcrModelConversion*)&forUnmarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
-    vkStream->read((VkSamplerYcbcrRange*)&forUnmarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
-    unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->components));
-    vkStream->read((VkChromaLocation*)&forUnmarshaling->xChromaOffset, sizeof(VkChromaLocation));
-    vkStream->read((VkChromaLocation*)&forUnmarshaling->yChromaOffset, sizeof(VkChromaLocation));
-    vkStream->read((VkFilter*)&forUnmarshaling->chromaFilter, sizeof(VkFilter));
-    vkStream->read((VkBool32*)&forUnmarshaling->forceExplicitReconstruction, sizeof(VkBool32));
+    vkStream->read((VkBaseInStructure**)&forUnmarshaling->pNext, sizeof(const VkBaseInStructure*));
+    // TODO: Unsupported : const VkBaseInStructure* pNext
 }
 
-void marshal_VkSamplerYcbcrConversionInfo(
+#endif
+#ifdef VK_VERSION_1_1
+void marshal_VkPhysicalDeviceSubgroupProperties(
     VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionInfo* forMarshaling)
+    const VkPhysicalDeviceSubgroupProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkSamplerYcbcrConversion*)&forMarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
+    vkStream->write((VkShaderStageFlags*)&forMarshaling->supportedStages, sizeof(VkShaderStageFlags));
+    vkStream->write((VkSubgroupFeatureFlags*)&forMarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
+    vkStream->write((VkBool32*)&forMarshaling->quadOperationsInAllStages, sizeof(VkBool32));
 }
 
-void unmarshal_VkSamplerYcbcrConversionInfo(
+void unmarshal_VkPhysicalDeviceSubgroupProperties(
     VulkanStream* vkStream,
-    VkSamplerYcbcrConversionInfo* forUnmarshaling)
+    VkPhysicalDeviceSubgroupProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkSamplerYcbcrConversion*)&forUnmarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
+    vkStream->read((VkShaderStageFlags*)&forUnmarshaling->supportedStages, sizeof(VkShaderStageFlags));
+    vkStream->read((VkSubgroupFeatureFlags*)&forUnmarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
+    vkStream->read((VkBool32*)&forUnmarshaling->quadOperationsInAllStages, sizeof(VkBool32));
 }
 
-void marshal_VkBindImagePlaneMemoryInfo(
+void marshal_VkBindBufferMemoryInfo(
     VulkanStream* vkStream,
-    const VkBindImagePlaneMemoryInfo* forMarshaling)
+    const VkBindBufferMemoryInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+    vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+    vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
-void unmarshal_VkBindImagePlaneMemoryInfo(
+void unmarshal_VkBindBufferMemoryInfo(
     VulkanStream* vkStream,
-    VkBindImagePlaneMemoryInfo* forUnmarshaling)
+    VkBindBufferMemoryInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+    vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
-void marshal_VkImagePlaneMemoryRequirementsInfo(
+void marshal_VkBindImageMemoryInfo(
     VulkanStream* vkStream,
-    const VkImagePlaneMemoryRequirementsInfo* forMarshaling)
+    const VkBindImageMemoryInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+    vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+    vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
-void unmarshal_VkImagePlaneMemoryRequirementsInfo(
+void unmarshal_VkBindImageMemoryInfo(
     VulkanStream* vkStream,
-    VkImagePlaneMemoryRequirementsInfo* forUnmarshaling)
+    VkBindImageMemoryInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+    vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
 }
 
-void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+void marshal_VkPhysicalDevice16BitStorageFeatures(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling)
+    const VkPhysicalDevice16BitStorageFeatures* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->samplerYcbcrConversion, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->storagePushConstant16, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->storageInputOutput16, sizeof(VkBool32));
 }
 
-void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+void unmarshal_VkPhysicalDevice16BitStorageFeatures(
     VulkanStream* vkStream,
-    VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling)
+    VkPhysicalDevice16BitStorageFeatures* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant16, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->storageInputOutput16, sizeof(VkBool32));
 }
 
-void marshal_VkSamplerYcbcrConversionImageFormatProperties(
+void marshal_VkMemoryDedicatedRequirements(
     VulkanStream* vkStream,
-    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling)
+    const VkMemoryDedicatedRequirements* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
+    vkStream->write((VkBool32*)&forMarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
 }
 
-void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
+void unmarshal_VkMemoryDedicatedRequirements(
     VulkanStream* vkStream,
-    VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling)
+    VkMemoryDedicatedRequirements* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
-}
-
-VkResult marshal_vkCreateSamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion)
-{
-    uint32_t opcode = OP_vkCreateSamplerYcbcrConversion;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    VkResult marshal_vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSamplerYcbcrConversion_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateSamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerYcbcrConversionCreateInfo));
-    unmarshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    VkResult unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return;
-}
-
-void marshal_vkDestroySamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroySamplerYcbcrConversion;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroySamplerYcbcrConversion(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_VkDescriptorUpdateTemplateEntry(
-    VulkanStream* vkStream,
-    const VkDescriptorUpdateTemplateEntry* forMarshaling)
-{
-    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));
-    vkStream->write((size_t*)&forMarshaling->offset, sizeof(size_t));
-    vkStream->write((size_t*)&forMarshaling->stride, sizeof(size_t));
-}
-
-void unmarshal_VkDescriptorUpdateTemplateEntry(
-    VulkanStream* vkStream,
-    VkDescriptorUpdateTemplateEntry* forUnmarshaling)
-{
-    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));
-    vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
-    vkStream->read((size_t*)&forUnmarshaling->offset, sizeof(size_t));
-    vkStream->read((size_t*)&forUnmarshaling->stride, sizeof(size_t));
+    vkStream->read((VkBool32*)&forUnmarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
 }
 
-void marshal_VkDescriptorUpdateTemplateCreateInfo(
+void marshal_VkMemoryDedicatedAllocateInfo(
     VulkanStream* vkStream,
-    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling)
+    const VkMemoryDedicatedAllocateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((VkDescriptorUpdateTemplateCreateFlags*)&forMarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
-    vkStream->write((uint32_t*)&forMarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorUpdateEntryCount; ++i)
-    {
-        marshal_VkDescriptorUpdateTemplateEntry(vkStream, (const VkDescriptorUpdateTemplateEntry*)(forMarshaling->pDescriptorUpdateEntries + i));
-    }
-    vkStream->write((VkDescriptorUpdateTemplateType*)&forMarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
-    vkStream->write((VkDescriptorSetLayout*)&forMarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
-    vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->write((VkPipelineLayout*)&forMarshaling->pipelineLayout, sizeof(VkPipelineLayout));
-    vkStream->write((uint32_t*)&forMarshaling->set, sizeof(uint32_t));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
 }
 
-void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
+void unmarshal_VkMemoryDedicatedAllocateInfo(
     VulkanStream* vkStream,
-    VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling)
+    VkMemoryDedicatedAllocateInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((VkDescriptorUpdateTemplateCreateFlags*)&forUnmarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
-    vkStream->read((uint32_t*)&forUnmarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pDescriptorUpdateEntries, forUnmarshaling->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
-    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorUpdateEntryCount; ++i)
-    {
-        unmarshal_VkDescriptorUpdateTemplateEntry(vkStream, (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i));
-    }
-    vkStream->read((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
-    vkStream->read((VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
-    vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->read((VkPipelineLayout*)&forUnmarshaling->pipelineLayout, sizeof(VkPipelineLayout));
-    vkStream->read((uint32_t*)&forUnmarshaling->set, sizeof(uint32_t));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
 }
 
-VkResult marshal_vkCreateDescriptorUpdateTemplate(
+void marshal_VkMemoryAllocateFlagsInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+    const VkMemoryAllocateFlagsInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateDescriptorUpdateTemplate;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    VkResult marshal_vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkMemoryAllocateFlags*)&forMarshaling->flags, sizeof(VkMemoryAllocateFlags));
+    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkCreateDescriptorUpdateTemplate(
+void unmarshal_VkMemoryAllocateFlagsInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+    VkMemoryAllocateFlagsInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorUpdateTemplateCreateInfo));
-    unmarshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    VkResult unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkMemoryAllocateFlags*)&forUnmarshaling->flags, sizeof(VkMemoryAllocateFlags));
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
 }
 
-void marshal_vkDestroyDescriptorUpdateTemplate(
+void marshal_VkDeviceGroupRenderPassBeginInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator)
+    const VkDeviceGroupRenderPassBeginInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkDestroyDescriptorUpdateTemplate;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->deviceRenderAreaCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)forMarshaling->deviceRenderAreaCount; ++i)
     {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+        marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pDeviceRenderAreas + i));
     }
 }
 
-void unmarshal_vkDestroyDescriptorUpdateTemplate(
+void unmarshal_VkDeviceGroupRenderPassBeginInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator)
+    VkDeviceGroupRenderPassBeginInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceRenderAreaCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pDeviceRenderAreas, forUnmarshaling->deviceRenderAreaCount * sizeof(const VkRect2D));
+    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->deviceRenderAreaCount; ++i)
     {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+        unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDeviceRenderAreas + i));
     }
 }
 
-void marshal_vkUpdateDescriptorSetWithTemplate(
+void marshal_VkDeviceGroupCommandBufferBeginInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData)
+    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkUpdateDescriptorSetWithTemplate;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
-    vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->write((const void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->write((const void*)pData, sizeof(const uint8_t));
-    }
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
 }
 
-void unmarshal_vkUpdateDescriptorSetWithTemplate(
+void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData)
+    VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
-    vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->read((void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->alloc((void**)&pData, sizeof(const uint8_t));
-        vkStream->read((void*)pData, sizeof(const uint8_t));
-    }
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
 }
 
-void marshal_VkExternalMemoryProperties(
+void marshal_VkDeviceGroupSubmitInfo(
     VulkanStream* vkStream,
-    const VkExternalMemoryProperties* forMarshaling)
+    const VkDeviceGroupSubmitInfo* forMarshaling)
 {
-    vkStream->write((VkExternalMemoryFeatureFlags*)&forMarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
-    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
-    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pWaitSemaphoreDeviceIndices, forMarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pCommandBufferDeviceMasks, forMarshaling->commandBufferCount * sizeof(const uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pSignalSemaphoreDeviceIndices, forMarshaling->signalSemaphoreCount * sizeof(const uint32_t));
 }
 
-void unmarshal_VkExternalMemoryProperties(
+void unmarshal_VkDeviceGroupSubmitInfo(
     VulkanStream* vkStream,
-    VkExternalMemoryProperties* forUnmarshaling)
+    VkDeviceGroupSubmitInfo* forUnmarshaling)
 {
-    vkStream->read((VkExternalMemoryFeatureFlags*)&forUnmarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
-    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
-    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
 }
 
-void marshal_VkPhysicalDeviceExternalImageFormatInfo(
+void marshal_VkDeviceGroupBindSparseInfo(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling)
+    const VkDeviceGroupBindSparseInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    vkStream->write((uint32_t*)&forMarshaling->resourceDeviceIndex, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->memoryDeviceIndex, sizeof(uint32_t));
 }
 
-void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
+void unmarshal_VkDeviceGroupBindSparseInfo(
     VulkanStream* vkStream,
-    VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling)
+    VkDeviceGroupBindSparseInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    vkStream->read((uint32_t*)&forUnmarshaling->resourceDeviceIndex, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->memoryDeviceIndex, sizeof(uint32_t));
 }
 
-void marshal_VkExternalImageFormatProperties(
+void marshal_VkBindBufferMemoryDeviceGroupInfo(
     VulkanStream* vkStream,
-    const VkExternalImageFormatProperties* forMarshaling)
+    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
 }
 
-void unmarshal_VkExternalImageFormatProperties(
+void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
     VulkanStream* vkStream,
-    VkExternalImageFormatProperties* forUnmarshaling)
+    VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
 }
 
-void marshal_VkPhysicalDeviceExternalBufferInfo(
+void marshal_VkBindImageMemoryDeviceGroupInfo(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalBufferInfo* forMarshaling)
+    const VkBindImageMemoryDeviceGroupInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
-    vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
-    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)forMarshaling->splitInstanceBindRegionCount; ++i)
+    {
+        marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pSplitInstanceBindRegions + i));
+    }
 }
 
-void unmarshal_VkPhysicalDeviceExternalBufferInfo(
+void unmarshal_VkBindImageMemoryDeviceGroupInfo(
     VulkanStream* vkStream,
-    VkPhysicalDeviceExternalBufferInfo* forUnmarshaling)
+    VkBindImageMemoryDeviceGroupInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
-    vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
-    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pSplitInstanceBindRegions, forUnmarshaling->splitInstanceBindRegionCount * sizeof(const VkRect2D));
+    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->splitInstanceBindRegionCount; ++i)
+    {
+        unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pSplitInstanceBindRegions + i));
+    }
 }
 
-void marshal_VkExternalBufferProperties(
+void marshal_VkPhysicalDeviceGroupProperties(
     VulkanStream* vkStream,
-    const VkExternalBufferProperties* forMarshaling)
+    const VkPhysicalDeviceGroupProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
+    vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
+    vkStream->write((VkPhysicalDevice*)forMarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
+    vkStream->write((VkBool32*)&forMarshaling->subsetAllocation, sizeof(VkBool32));
 }
 
-void unmarshal_VkExternalBufferProperties(
+void unmarshal_VkPhysicalDeviceGroupProperties(
     VulkanStream* vkStream,
-    VkExternalBufferProperties* forUnmarshaling)
+    VkPhysicalDeviceGroupProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
+    vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
+    vkStream->read((VkPhysicalDevice*)forUnmarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
+    vkStream->read((VkBool32*)&forUnmarshaling->subsetAllocation, sizeof(VkBool32));
 }
 
-void marshal_VkPhysicalDeviceIDProperties(
+void marshal_VkDeviceGroupDeviceCreateInfo(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceIDProperties* forMarshaling)
+    const VkDeviceGroupDeviceCreateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->write((uint8_t*)forMarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
-    vkStream->write((uint8_t*)forMarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
-    vkStream->write((uint8_t*)forMarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
-    vkStream->write((uint32_t*)&forMarshaling->deviceNodeMask, sizeof(uint32_t));
-    vkStream->write((VkBool32*)&forMarshaling->deviceLUIDValid, sizeof(VkBool32));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
+    vkStream->write((const VkPhysicalDevice*)forMarshaling->pPhysicalDevices, forMarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
 }
 
-void unmarshal_VkPhysicalDeviceIDProperties(
+void unmarshal_VkDeviceGroupDeviceCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDeviceIDProperties* forUnmarshaling)
+    VkDeviceGroupDeviceCreateInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
-    // TODO: Unsupported : void* pNext
-    vkStream->read((uint8_t*)forUnmarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
-    vkStream->read((uint8_t*)forUnmarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
-    vkStream->read((uint8_t*)forUnmarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceNodeMask, sizeof(uint32_t));
-    vkStream->read((VkBool32*)&forUnmarshaling->deviceLUIDValid, sizeof(VkBool32));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+    vkStream->read((VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
 }
 
-void marshal_vkGetPhysicalDeviceExternalBufferProperties(
+void marshal_VkBufferMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties)
+    const VkBufferMemoryRequirementsInfo2* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalBufferProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
-    marshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
 }
 
-void unmarshal_vkGetPhysicalDeviceExternalBufferProperties(
+void unmarshal_VkBufferMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties)
+    VkBufferMemoryRequirementsInfo2* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalBufferInfo, sizeof(const VkPhysicalDeviceExternalBufferInfo));
-    unmarshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
-    unmarshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
 }
 
-void marshal_VkExternalMemoryImageCreateInfo(
+void marshal_VkImageMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    const VkExternalMemoryImageCreateInfo* forMarshaling)
+    const VkImageMemoryRequirementsInfo2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
 }
 
-void unmarshal_VkExternalMemoryImageCreateInfo(
+void unmarshal_VkImageMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    VkExternalMemoryImageCreateInfo* forUnmarshaling)
+    VkImageMemoryRequirementsInfo2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
 }
 
-void marshal_VkExternalMemoryBufferCreateInfo(
+void marshal_VkImageSparseMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    const VkExternalMemoryBufferCreateInfo* forMarshaling)
+    const VkImageSparseMemoryRequirementsInfo2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
 }
 
-void unmarshal_VkExternalMemoryBufferCreateInfo(
+void unmarshal_VkImageSparseMemoryRequirementsInfo2(
     VulkanStream* vkStream,
-    VkExternalMemoryBufferCreateInfo* forUnmarshaling)
+    VkImageSparseMemoryRequirementsInfo2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
 }
 
-void marshal_VkExportMemoryAllocateInfo(
+void marshal_VkMemoryRequirements2(
     VulkanStream* vkStream,
-    const VkExportMemoryAllocateInfo* forMarshaling)
+    const VkMemoryRequirements2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forMarshaling->memoryRequirements));
 }
 
-void unmarshal_VkExportMemoryAllocateInfo(
+void unmarshal_VkMemoryRequirements2(
     VulkanStream* vkStream,
-    VkExportMemoryAllocateInfo* forUnmarshaling)
+    VkMemoryRequirements2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
 }
 
-void marshal_VkPhysicalDeviceExternalFenceInfo(
+void marshal_VkSparseImageMemoryRequirements2(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalFenceInfo* forMarshaling)
+    const VkSparseImageMemoryRequirements2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forMarshaling->memoryRequirements));
 }
 
-void unmarshal_VkPhysicalDeviceExternalFenceInfo(
+void unmarshal_VkSparseImageMemoryRequirements2(
     VulkanStream* vkStream,
-    VkPhysicalDeviceExternalFenceInfo* forUnmarshaling)
+    VkSparseImageMemoryRequirements2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
 }
 
-void marshal_VkExternalFenceProperties(
+void marshal_VkPhysicalDeviceFeatures2(
     VulkanStream* vkStream,
-    const VkExternalFenceProperties* forMarshaling)
+    const VkPhysicalDeviceFeatures2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
-    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
-    vkStream->write((VkExternalFenceFeatureFlags*)&forMarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
+    marshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forMarshaling->features));
 }
 
-void unmarshal_VkExternalFenceProperties(
+void unmarshal_VkPhysicalDeviceFeatures2(
     VulkanStream* vkStream,
-    VkExternalFenceProperties* forUnmarshaling)
+    VkPhysicalDeviceFeatures2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
-    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
-    vkStream->read((VkExternalFenceFeatureFlags*)&forUnmarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
+    unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forUnmarshaling->features));
 }
 
-void marshal_vkGetPhysicalDeviceExternalFenceProperties(
+void marshal_VkPhysicalDeviceProperties2(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties)
+    const VkPhysicalDeviceProperties2* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalFenceProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
-    marshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forMarshaling->properties));
 }
 
-void unmarshal_vkGetPhysicalDeviceExternalFenceProperties(
+void unmarshal_VkPhysicalDeviceProperties2(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties)
+    VkPhysicalDeviceProperties2* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalFenceInfo, sizeof(const VkPhysicalDeviceExternalFenceInfo));
-    unmarshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
-    unmarshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forUnmarshaling->properties));
 }
 
-void marshal_VkExportFenceCreateInfo(
+void marshal_VkFormatProperties2(
     VulkanStream* vkStream,
-    const VkExportFenceCreateInfo* forMarshaling)
+    const VkFormatProperties2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forMarshaling->formatProperties));
 }
 
-void unmarshal_VkExportFenceCreateInfo(
+void unmarshal_VkFormatProperties2(
     VulkanStream* vkStream,
-    VkExportFenceCreateInfo* forUnmarshaling)
+    VkFormatProperties2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forUnmarshaling->formatProperties));
 }
 
-void marshal_VkExportSemaphoreCreateInfo(
+void marshal_VkImageFormatProperties2(
     VulkanStream* vkStream,
-    const VkExportSemaphoreCreateInfo* forMarshaling)
+    const VkImageFormatProperties2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forMarshaling->imageFormatProperties));
 }
 
-void unmarshal_VkExportSemaphoreCreateInfo(
+void unmarshal_VkImageFormatProperties2(
     VulkanStream* vkStream,
-    VkExportSemaphoreCreateInfo* forUnmarshaling)
+    VkImageFormatProperties2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties));
 }
 
-void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
+void marshal_VkPhysicalDeviceImageFormatInfo2(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling)
+    const VkPhysicalDeviceImageFormatInfo2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+    vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
+    vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
+    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+    vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
 }
 
-void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
+void unmarshal_VkPhysicalDeviceImageFormatInfo2(
     VulkanStream* vkStream,
-    VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling)
+    VkPhysicalDeviceImageFormatInfo2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+    vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
+    vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
+    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+    vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
 }
 
-void marshal_VkExternalSemaphoreProperties(
+void marshal_VkQueueFamilyProperties2(
     VulkanStream* vkStream,
-    const VkExternalSemaphoreProperties* forMarshaling)
+    const VkQueueFamilyProperties2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
-    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
-    vkStream->write((VkExternalSemaphoreFeatureFlags*)&forMarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
+    marshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forMarshaling->queueFamilyProperties));
 }
 
-void unmarshal_VkExternalSemaphoreProperties(
+void unmarshal_VkQueueFamilyProperties2(
     VulkanStream* vkStream,
-    VkExternalSemaphoreProperties* forUnmarshaling)
+    VkQueueFamilyProperties2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
-    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
-    vkStream->read((VkExternalSemaphoreFeatureFlags*)&forUnmarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
-}
-
-void marshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
-    marshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalSemaphoreInfo, sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
-    unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
-    unmarshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+    unmarshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forUnmarshaling->queueFamilyProperties));
 }
 
-void marshal_VkPhysicalDeviceMaintenance3Properties(
+void marshal_VkPhysicalDeviceMemoryProperties2(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceMaintenance3Properties* forMarshaling)
+    const VkPhysicalDeviceMemoryProperties2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->maxPerSetDescriptors, sizeof(uint32_t));
-    vkStream->write((VkDeviceSize*)&forMarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
+    marshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forMarshaling->memoryProperties));
 }
 
-void unmarshal_VkPhysicalDeviceMaintenance3Properties(
+void unmarshal_VkPhysicalDeviceMemoryProperties2(
     VulkanStream* vkStream,
-    VkPhysicalDeviceMaintenance3Properties* forUnmarshaling)
+    VkPhysicalDeviceMemoryProperties2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, sizeof(uint32_t));
-    vkStream->read((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
+    unmarshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forUnmarshaling->memoryProperties));
 }
 
-void marshal_VkDescriptorSetLayoutSupport(
+void marshal_VkSparseImageFormatProperties2(
     VulkanStream* vkStream,
-    const VkDescriptorSetLayoutSupport* forMarshaling)
+    const VkSparseImageFormatProperties2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->supported, sizeof(VkBool32));
+    marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forMarshaling->properties));
 }
 
-void unmarshal_VkDescriptorSetLayoutSupport(
+void unmarshal_VkSparseImageFormatProperties2(
     VulkanStream* vkStream,
-    VkDescriptorSetLayoutSupport* forUnmarshaling)
+    VkSparseImageFormatProperties2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->supported, sizeof(VkBool32));
+    unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forUnmarshaling->properties));
 }
 
-void marshal_vkGetDescriptorSetLayoutSupport(
+void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport)
+    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetDescriptorSetLayoutSupport;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    marshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+    vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
+    vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
+    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+    vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
 }
 
-void unmarshal_vkGetDescriptorSetLayoutSupport(
+void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport)
+    VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
-    unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    unmarshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+    vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
+    vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
+    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+    vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
 }
 
-void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+void marshal_VkPhysicalDevicePointClippingProperties(
     VulkanStream* vkStream,
-    const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling)
+    const VkPhysicalDevicePointClippingProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->write((VkBool32*)&forMarshaling->shaderDrawParameters, sizeof(VkBool32));
+    vkStream->write((VkPointClippingBehavior*)&forMarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
 }
 
-void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+void unmarshal_VkPhysicalDevicePointClippingProperties(
     VulkanStream* vkStream,
-    VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling)
+    VkPhysicalDevicePointClippingProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
     // TODO: Unsupported : void* pNext
-    vkStream->read((VkBool32*)&forUnmarshaling->shaderDrawParameters, sizeof(VkBool32));
+    vkStream->read((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
 }
 
-#endif
-#ifdef VK_KHR_surface
-void marshal_vkDestroySurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkSurfaceKHR surface,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroySurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
+void marshal_VkInputAttachmentAspectReference(
+    VulkanStream* vkStream,
+    const VkInputAttachmentAspectReference* forMarshaling)
+{
+    vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->inputAttachmentIndex, sizeof(uint32_t));
+    vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
 }
 
-void unmarshal_vkDestroySurfaceKHR(
+void unmarshal_VkInputAttachmentAspectReference(
     VulkanStream* vkStream,
-    VkInstance instance,
-    VkSurfaceKHR surface,
-    const VkAllocationCallbacks* pAllocator)
+    VkInputAttachmentAspectReference* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
+    vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentIndex, sizeof(uint32_t));
+    vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    VkSurfaceKHR surface,
-    VkBool32* pSupported)
+    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((VkBool32*)pSupported, sizeof(VkBool32));
-    VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->aspectReferenceCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)forMarshaling->aspectReferenceCount; ++i)
+    {
+        marshal_VkInputAttachmentAspectReference(vkStream, (const VkInputAttachmentAspectReference*)(forMarshaling->pAspectReferences + i));
+    }
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    VkSurfaceKHR surface,
-    VkBool32* pSupported)
+    VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((VkBool32*)pSupported, sizeof(VkBool32));
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->aspectReferenceCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pAspectReferences, forUnmarshaling->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
+    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->aspectReferenceCount; ++i)
+    {
+        unmarshal_VkInputAttachmentAspectReference(vkStream, (VkInputAttachmentAspectReference*)(forUnmarshaling->pAspectReferences + i));
+    }
 }
 
-void marshal_VkSurfaceCapabilitiesKHR(
+void marshal_VkImageViewUsageCreateInfo(
     VulkanStream* vkStream,
-    const VkSurfaceCapabilitiesKHR* forMarshaling)
+    const VkImageViewUsageCreateInfo* forMarshaling)
 {
-    vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&forMarshaling->maxImageCount, sizeof(uint32_t));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->currentExtent));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minImageExtent));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxImageExtent));
-    vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
-    vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
-    vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
-    vkStream->write((VkCompositeAlphaFlagsKHR*)&forMarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
-    vkStream->write((VkImageUsageFlags*)&forMarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
 }
 
-void unmarshal_VkSurfaceCapabilitiesKHR(
+void unmarshal_VkImageViewUsageCreateInfo(
     VulkanStream* vkStream,
-    VkSurfaceCapabilitiesKHR* forUnmarshaling)
+    VkImageViewUsageCreateInfo* forUnmarshaling)
 {
-    vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&forUnmarshaling->maxImageCount, sizeof(uint32_t));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->currentExtent));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minImageExtent));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxImageExtent));
-    vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
-    vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
-    vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
-    vkStream->read((VkCompositeAlphaFlagsKHR*)&forUnmarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
-    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    marshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
-    VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkTessellationDomainOrigin*)&forMarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+    VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    unmarshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkTessellationDomainOrigin*)&forUnmarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
 }
 
-void marshal_VkSurfaceFormatKHR(
+void marshal_VkRenderPassMultiviewCreateInfo(
     VulkanStream* vkStream,
-    const VkSurfaceFormatKHR* forMarshaling)
+    const VkRenderPassMultiviewCreateInfo* forMarshaling)
 {
-    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
-    vkStream->write((VkColorSpaceKHR*)&forMarshaling->colorSpace, sizeof(VkColorSpaceKHR));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pViewMasks, forMarshaling->subpassCount * sizeof(const uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
+    vkStream->write((const int32_t*)forMarshaling->pViewOffsets, forMarshaling->dependencyCount * sizeof(const int32_t));
+    vkStream->write((uint32_t*)&forMarshaling->correlationMaskCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pCorrelationMasks, forMarshaling->correlationMaskCount * sizeof(const uint32_t));
 }
 
-void unmarshal_VkSurfaceFormatKHR(
+void unmarshal_VkRenderPassMultiviewCreateInfo(
     VulkanStream* vkStream,
-    VkSurfaceFormatKHR* forUnmarshaling)
+    VkRenderPassMultiviewCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
-    vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->colorSpace, sizeof(VkColorSpaceKHR));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
+    vkStream->read((int32_t*)forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->correlationMaskCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+void marshal_VkPhysicalDeviceMultiviewFeatures(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormatKHR* pSurfaceFormats)
+    const VkPhysicalDeviceMultiviewFeatures* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
-    {
-        marshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->multiview, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->multiviewGeometryShader, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->multiviewTessellationShader, sizeof(VkBool32));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+void unmarshal_VkPhysicalDeviceMultiviewFeatures(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormatKHR* pSurfaceFormats)
+    VkPhysicalDeviceMultiviewFeatures* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
-    {
-        unmarshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->multiview, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->multiviewGeometryShader, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->multiviewTessellationShader, sizeof(VkBool32));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+void marshal_VkPhysicalDeviceMultiviewProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pPresentModeCount,
-    VkPresentModeKHR* pPresentModes)
+    const VkPhysicalDeviceMultiviewProperties* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
-    vkStream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
-    VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->maxMultiviewViewCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+void unmarshal_VkPhysicalDeviceMultiviewProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pPresentModeCount,
-    VkPresentModeKHR* pPresentModes)
+    VkPhysicalDeviceMultiviewProperties* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
-    vkStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
-    VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
 }
 
-#endif
-#ifdef VK_KHR_swapchain
-void marshal_VkSwapchainCreateInfoKHR(
+void marshal_VkPhysicalDeviceVariablePointerFeatures(
     VulkanStream* vkStream,
-    const VkSwapchainCreateInfoKHR* forMarshaling)
+    const VkPhysicalDeviceVariablePointerFeatures* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkSwapchainCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
-    vkStream->write((VkSurfaceKHR*)&forMarshaling->surface, sizeof(VkSurfaceKHR));
-    vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
-    vkStream->write((VkFormat*)&forMarshaling->imageFormat, sizeof(VkFormat));
-    vkStream->write((VkColorSpaceKHR*)&forMarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
-    vkStream->write((uint32_t*)&forMarshaling->imageArrayLayers, sizeof(uint32_t));
-    vkStream->write((VkImageUsageFlags*)&forMarshaling->imageUsage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkSharingMode*)&forMarshaling->imageSharingMode, sizeof(VkSharingMode));
-    vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t**)&forMarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
-    if (forMarshaling->pQueueFamilyIndices)
-    {
-        vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
-    }
-    vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
-    vkStream->write((VkCompositeAlphaFlagBitsKHR*)&forMarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
-    vkStream->write((VkPresentModeKHR*)&forMarshaling->presentMode, sizeof(VkPresentModeKHR));
-    vkStream->write((VkBool32*)&forMarshaling->clipped, sizeof(VkBool32));
-    vkStream->write((VkSwapchainKHR*)&forMarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->variablePointers, sizeof(VkBool32));
 }
 
-void unmarshal_VkSwapchainCreateInfoKHR(
+void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
     VulkanStream* vkStream,
-    VkSwapchainCreateInfoKHR* forUnmarshaling)
+    VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
-    vkStream->read((VkSurfaceKHR*)&forUnmarshaling->surface, sizeof(VkSurfaceKHR));
-    vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
-    vkStream->read((VkFormat*)&forUnmarshaling->imageFormat, sizeof(VkFormat));
-    vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
-    vkStream->read((uint32_t*)&forUnmarshaling->imageArrayLayers, sizeof(uint32_t));
-    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->imageUsage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkSharingMode*)&forUnmarshaling->imageSharingMode, sizeof(VkSharingMode));
-    vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
-    vkStream->read((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
-    if (forUnmarshaling->pQueueFamilyIndices)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
-        vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
-    }
-    vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
-    vkStream->read((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
-    vkStream->read((VkPresentModeKHR*)&forUnmarshaling->presentMode, sizeof(VkPresentModeKHR));
-    vkStream->read((VkBool32*)&forUnmarshaling->clipped, sizeof(VkBool32));
-    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->variablePointers, sizeof(VkBool32));
 }
 
-VkResult marshal_vkCreateSwapchainKHR(
+void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkSwapchainCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchain)
+    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateSwapchainKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSwapchainCreateInfoKHR(vkStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
-    VkResult marshal_vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSwapchainKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->protectedMemory, sizeof(VkBool32));
 }
 
-VkResult unmarshal_vkCreateSwapchainKHR(
+void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkSwapchainCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchain)
+    VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSwapchainCreateInfoKHR));
-    unmarshal_VkSwapchainCreateInfoKHR(vkStream, (VkSwapchainCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
-    VkResult unmarshal_vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSwapchainKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->protectedMemory, sizeof(VkBool32));
 }
 
-void marshal_vkDestroySwapchainKHR(
+void marshal_VkPhysicalDeviceProtectedMemoryProperties(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    const VkAllocationCallbacks* pAllocator)
+    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling)
 {
-    uint32_t opcode = OP_vkDestroySwapchainKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->protectedNoFault, sizeof(VkBool32));
 }
 
-void unmarshal_vkDestroySwapchainKHR(
+void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    const VkAllocationCallbacks* pAllocator)
+    VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkGetSwapchainImagesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pSwapchainImageCount,
-    VkImage* pSwapchainImages)
-{
-    uint32_t opcode = OP_vkGetSwapchainImagesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
-    vkStream->read((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
-    VkResult marshal_vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetSwapchainImagesKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetSwapchainImagesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pSwapchainImageCount,
-    VkImage* pSwapchainImages)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
-    vkStream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
-    VkResult unmarshal_vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetSwapchainImagesKHR_VkResult_return;
-}
-
-VkResult marshal_vkAcquireNextImageKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint64_t timeout,
-    VkSemaphore semaphore,
-    VkFence fence,
-    uint32_t* pImageIndex)
-{
-    uint32_t opcode = OP_vkAcquireNextImageKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((uint64_t*)&timeout, sizeof(uint64_t));
-    vkStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
-    vkStream->write((VkFence*)&fence, sizeof(VkFence));
-    vkStream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
-    VkResult marshal_vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkAcquireNextImageKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkAcquireNextImageKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint64_t timeout,
-    VkSemaphore semaphore,
-    VkFence fence,
-    uint32_t* pImageIndex)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((uint64_t*)&timeout, sizeof(uint64_t));
-    vkStream->read((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
-    vkStream->read((VkFence*)&fence, sizeof(VkFence));
-    vkStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
-    VkResult unmarshal_vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAcquireNextImageKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->protectedNoFault, sizeof(VkBool32));
 }
 
-void marshal_VkPresentInfoKHR(
+void marshal_VkDeviceQueueInfo2(
     VulkanStream* vkStream,
-    const VkPresentInfoKHR* forMarshaling)
+    const VkDeviceQueueInfo2* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
-    vkStream->write((const VkSwapchainKHR*)forMarshaling->pSwapchains, forMarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
-    vkStream->write((const uint32_t*)forMarshaling->pImageIndices, forMarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->write((VkResult**)&forMarshaling->pResults, sizeof(VkResult*));
-    if (forMarshaling->pResults)
-    {
-        vkStream->write((VkResult*)forMarshaling->pResults, forMarshaling->swapchainCount * sizeof(VkResult));
-    }
+    vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+    vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->queueIndex, sizeof(uint32_t));
 }
 
-void unmarshal_VkPresentInfoKHR(
+void unmarshal_VkDeviceQueueInfo2(
     VulkanStream* vkStream,
-    VkPresentInfoKHR* forUnmarshaling)
+    VkDeviceQueueInfo2* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
-    vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
-    vkStream->read((VkSwapchainKHR*)forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
-    vkStream->alloc((void**)&forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->read((VkResult**)&forUnmarshaling->pResults, sizeof(VkResult*));
-    if (forUnmarshaling->pResults)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
-        vkStream->read((VkResult*)forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
-    }
+    vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+    vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->queueIndex, sizeof(uint32_t));
 }
 
-VkResult marshal_vkQueuePresentKHR(
+void marshal_VkProtectedSubmitInfo(
     VulkanStream* vkStream,
-    VkQueue queue,
-    const VkPresentInfoKHR* pPresentInfo)
+    const VkProtectedSubmitInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkQueuePresentKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    marshal_VkPresentInfoKHR(vkStream, (const VkPresentInfoKHR*)(pPresentInfo));
-    VkResult marshal_vkQueuePresentKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkQueuePresentKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->protectedSubmit, sizeof(VkBool32));
 }
 
-VkResult unmarshal_vkQueuePresentKHR(
+void unmarshal_VkProtectedSubmitInfo(
     VulkanStream* vkStream,
-    VkQueue queue,
-    const VkPresentInfoKHR* pPresentInfo)
+    VkProtectedSubmitInfo* forUnmarshaling)
 {
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->alloc((void**)&pPresentInfo, sizeof(const VkPresentInfoKHR));
-    unmarshal_VkPresentInfoKHR(vkStream, (VkPresentInfoKHR*)(pPresentInfo));
-    VkResult unmarshal_vkQueuePresentKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkQueuePresentKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->protectedSubmit, sizeof(VkBool32));
 }
 
-void marshal_VkImageSwapchainCreateInfoKHR(
+void marshal_VkSamplerYcbcrConversionCreateInfo(
     VulkanStream* vkStream,
-    const VkImageSwapchainCreateInfoKHR* forMarshaling)
+    const VkSamplerYcbcrConversionCreateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+    vkStream->write((VkSamplerYcbcrModelConversion*)&forMarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+    vkStream->write((VkSamplerYcbcrRange*)&forMarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
+    marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->components));
+    vkStream->write((VkChromaLocation*)&forMarshaling->xChromaOffset, sizeof(VkChromaLocation));
+    vkStream->write((VkChromaLocation*)&forMarshaling->yChromaOffset, sizeof(VkChromaLocation));
+    vkStream->write((VkFilter*)&forMarshaling->chromaFilter, sizeof(VkFilter));
+    vkStream->write((VkBool32*)&forMarshaling->forceExplicitReconstruction, sizeof(VkBool32));
 }
 
-void unmarshal_VkImageSwapchainCreateInfoKHR(
+void unmarshal_VkSamplerYcbcrConversionCreateInfo(
     VulkanStream* vkStream,
-    VkImageSwapchainCreateInfoKHR* forUnmarshaling)
+    VkSamplerYcbcrConversionCreateInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+    vkStream->read((VkSamplerYcbcrModelConversion*)&forUnmarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+    vkStream->read((VkSamplerYcbcrRange*)&forUnmarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
+    unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->components));
+    vkStream->read((VkChromaLocation*)&forUnmarshaling->xChromaOffset, sizeof(VkChromaLocation));
+    vkStream->read((VkChromaLocation*)&forUnmarshaling->yChromaOffset, sizeof(VkChromaLocation));
+    vkStream->read((VkFilter*)&forUnmarshaling->chromaFilter, sizeof(VkFilter));
+    vkStream->read((VkBool32*)&forUnmarshaling->forceExplicitReconstruction, sizeof(VkBool32));
 }
 
-void marshal_VkBindImageMemorySwapchainInfoKHR(
+void marshal_VkSamplerYcbcrConversionInfo(
     VulkanStream* vkStream,
-    const VkBindImageMemorySwapchainInfoKHR* forMarshaling)
+    const VkSamplerYcbcrConversionInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((uint32_t*)&forMarshaling->imageIndex, sizeof(uint32_t));
+    vkStream->write((VkSamplerYcbcrConversion*)&forMarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
 }
 
-void unmarshal_VkBindImageMemorySwapchainInfoKHR(
+void unmarshal_VkSamplerYcbcrConversionInfo(
     VulkanStream* vkStream,
-    VkBindImageMemorySwapchainInfoKHR* forUnmarshaling)
+    VkSamplerYcbcrConversionInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((uint32_t*)&forUnmarshaling->imageIndex, sizeof(uint32_t));
+    vkStream->read((VkSamplerYcbcrConversion*)&forUnmarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
 }
 
-void marshal_VkAcquireNextImageInfoKHR(
+void marshal_VkBindImagePlaneMemoryInfo(
     VulkanStream* vkStream,
-    const VkAcquireNextImageInfoKHR* forMarshaling)
+    const VkBindImagePlaneMemoryInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((uint64_t*)&forMarshaling->timeout, sizeof(uint64_t));
-    vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
-    vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
-    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+    vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
 }
 
-void unmarshal_VkAcquireNextImageInfoKHR(
+void unmarshal_VkBindImagePlaneMemoryInfo(
     VulkanStream* vkStream,
-    VkAcquireNextImageInfoKHR* forUnmarshaling)
+    VkBindImagePlaneMemoryInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((uint64_t*)&forUnmarshaling->timeout, sizeof(uint64_t));
-    vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
-    vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
-    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+    vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
 }
 
-void marshal_VkDeviceGroupPresentCapabilitiesKHR(
+void marshal_VkImagePlaneMemoryRequirementsInfo(
     VulkanStream* vkStream,
-    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling)
+    const VkImagePlaneMemoryRequirementsInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)forMarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
-    vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
 }
 
-void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
+void unmarshal_VkImagePlaneMemoryRequirementsInfo(
     VulkanStream* vkStream,
-    VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling)
+    VkImagePlaneMemoryRequirementsInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)forUnmarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
-    vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
 }
 
-void marshal_VkDeviceGroupPresentInfoKHR(
+void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
     VulkanStream* vkStream,
-    const VkDeviceGroupPresentInfoKHR* forMarshaling)
+    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)forMarshaling->pDeviceMasks, forMarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->write((VkDeviceGroupPresentModeFlagBitsKHR*)&forMarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->samplerYcbcrConversion, sizeof(VkBool32));
 }
 
-void unmarshal_VkDeviceGroupPresentInfoKHR(
-    VulkanStream* vkStream,
-    VkDeviceGroupPresentInfoKHR* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
-    vkStream->read((VkDeviceGroupPresentModeFlagBitsKHR*)&forUnmarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
+void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling)
+{
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, sizeof(VkBool32));
 }
 
-void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
+void marshal_VkSamplerYcbcrConversionImageFormatProperties(
     VulkanStream* vkStream,
-    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling)
+    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
 }
 
-void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
+void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
     VulkanStream* vkStream,
-    VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling)
+    VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
 }
 
-VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+void marshal_VkDescriptorUpdateTemplateEntry(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
+    const VkDescriptorUpdateTemplateEntry* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDeviceGroupPresentCapabilitiesKHR(vkStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
-    VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+    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));
+    vkStream->write((size_t*)&forMarshaling->offset, sizeof(size_t));
+    vkStream->write((size_t*)&forMarshaling->stride, sizeof(size_t));
 }
 
-VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+void unmarshal_VkDescriptorUpdateTemplateEntry(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
+    VkDescriptorUpdateTemplateEntry* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    unmarshal_VkDeviceGroupPresentCapabilitiesKHR(vkStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
-    VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+    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));
+    vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
+    vkStream->read((size_t*)&forUnmarshaling->offset, sizeof(size_t));
+    vkStream->read((size_t*)&forUnmarshaling->stride, sizeof(size_t));
 }
 
-VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR(
+void marshal_VkDescriptorUpdateTemplateCreateInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkSurfaceKHR surface,
-    VkDeviceGroupPresentModeFlagsKHR* pModes)
+    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetDeviceGroupSurfacePresentModesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
-    VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkDescriptorUpdateTemplateCreateFlags*)&forMarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
+    vkStream->write((uint32_t*)&forMarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
+    for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorUpdateEntryCount; ++i)
+    {
+        marshal_VkDescriptorUpdateTemplateEntry(vkStream, (const VkDescriptorUpdateTemplateEntry*)(forMarshaling->pDescriptorUpdateEntries + i));
+    }
+    vkStream->write((VkDescriptorUpdateTemplateType*)&forMarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
+    vkStream->write((VkDescriptorSetLayout*)&forMarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+    vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+    vkStream->write((VkPipelineLayout*)&forMarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+    vkStream->write((uint32_t*)&forMarshaling->set, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR(
+void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkSurfaceKHR surface,
-    VkDeviceGroupPresentModeFlagsKHR* pModes)
+    VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
-    VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkDescriptorUpdateTemplateCreateFlags*)&forUnmarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
+    vkStream->read((uint32_t*)&forUnmarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pDescriptorUpdateEntries, forUnmarshaling->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
+    for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorUpdateEntryCount; ++i)
+    {
+        unmarshal_VkDescriptorUpdateTemplateEntry(vkStream, (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i));
+    }
+    vkStream->read((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
+    vkStream->read((VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+    vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+    vkStream->read((VkPipelineLayout*)&forUnmarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+    vkStream->read((uint32_t*)&forUnmarshaling->set, sizeof(uint32_t));
 }
 
-VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR(
+void marshal_VkExternalMemoryProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pRectCount,
-    VkRect2D* pRects)
+    const VkExternalMemoryProperties* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDevicePresentRectanglesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->read((uint32_t*)pRectCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
-    {
-        marshal_VkRect2D(vkStream, (VkRect2D*)(pRects + i));
-    }
-    VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+    vkStream->write((VkExternalMemoryFeatureFlags*)&forMarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
+    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR(
+void unmarshal_VkExternalMemoryProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    uint32_t* pRectCount,
-    VkRect2D* pRects)
+    VkExternalMemoryProperties* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    vkStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
-    {
-        unmarshal_VkRect2D(vkStream, (VkRect2D*)(pRects + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+    vkStream->read((VkExternalMemoryFeatureFlags*)&forUnmarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
+    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-VkResult marshal_vkAcquireNextImage2KHR(
+void marshal_VkPhysicalDeviceExternalImageFormatInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkAcquireNextImageInfoKHR* pAcquireInfo,
-    uint32_t* pImageIndex)
+    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkAcquireNextImage2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkAcquireNextImageInfoKHR(vkStream, (const VkAcquireNextImageInfoKHR*)(pAcquireInfo));
-    vkStream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
-    VkResult marshal_vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkAcquireNextImage2KHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-VkResult unmarshal_vkAcquireNextImage2KHR(
+void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    const VkAcquireNextImageInfoKHR* pAcquireInfo,
-    uint32_t* pImageIndex)
+    VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pAcquireInfo, sizeof(const VkAcquireNextImageInfoKHR));
-    unmarshal_VkAcquireNextImageInfoKHR(vkStream, (VkAcquireNextImageInfoKHR*)(pAcquireInfo));
-    vkStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
-    VkResult unmarshal_vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAcquireNextImage2KHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-#endif
-#ifdef VK_KHR_display
-void marshal_VkDisplayPropertiesKHR(
+void marshal_VkExternalImageFormatProperties(
     VulkanStream* vkStream,
-    const VkDisplayPropertiesKHR* forMarshaling)
+    const VkExternalImageFormatProperties* forMarshaling)
 {
-    vkStream->write((VkDisplayKHR*)&forMarshaling->display, sizeof(VkDisplayKHR));
-    vkStream->putString(forMarshaling->displayName);
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalDimensions));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalResolution));
-    vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
-    vkStream->write((VkBool32*)&forMarshaling->planeReorderPossible, sizeof(VkBool32));
-    vkStream->write((VkBool32*)&forMarshaling->persistentContent, sizeof(VkBool32));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
 }
 
-void unmarshal_VkDisplayPropertiesKHR(
+void unmarshal_VkExternalImageFormatProperties(
     VulkanStream* vkStream,
-    VkDisplayPropertiesKHR* forUnmarshaling)
+    VkExternalImageFormatProperties* forUnmarshaling)
 {
-    vkStream->read((VkDisplayKHR*)&forUnmarshaling->display, sizeof(VkDisplayKHR));
-    vkStream->loadStringInPlace((char**)&forUnmarshaling->displayName);
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalDimensions));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalResolution));
-    vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
-    vkStream->read((VkBool32*)&forUnmarshaling->planeReorderPossible, sizeof(VkBool32));
-    vkStream->read((VkBool32*)&forUnmarshaling->persistentContent, sizeof(VkBool32));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
 }
 
-void marshal_VkDisplayModeParametersKHR(
+void marshal_VkPhysicalDeviceExternalBufferInfo(
     VulkanStream* vkStream,
-    const VkDisplayModeParametersKHR* forMarshaling)
+    const VkPhysicalDeviceExternalBufferInfo* forMarshaling)
 {
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->visibleRegion));
-    vkStream->write((uint32_t*)&forMarshaling->refreshRate, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
+    vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
+    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-void unmarshal_VkDisplayModeParametersKHR(
+void unmarshal_VkPhysicalDeviceExternalBufferInfo(
     VulkanStream* vkStream,
-    VkDisplayModeParametersKHR* forUnmarshaling)
+    VkPhysicalDeviceExternalBufferInfo* forUnmarshaling)
 {
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->visibleRegion));
-    vkStream->read((uint32_t*)&forUnmarshaling->refreshRate, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
+    vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
+    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-void marshal_VkDisplayModePropertiesKHR(
+void marshal_VkExternalBufferProperties(
     VulkanStream* vkStream,
-    const VkDisplayModePropertiesKHR* forMarshaling)
+    const VkExternalBufferProperties* forMarshaling)
 {
-    vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
-    marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
 }
 
-void unmarshal_VkDisplayModePropertiesKHR(
+void unmarshal_VkExternalBufferProperties(
     VulkanStream* vkStream,
-    VkDisplayModePropertiesKHR* forUnmarshaling)
+    VkExternalBufferProperties* forUnmarshaling)
 {
-    vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
-    unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
 }
 
-void marshal_VkDisplayModeCreateInfoKHR(
+void marshal_VkPhysicalDeviceIDProperties(
     VulkanStream* vkStream,
-    const VkDisplayModeCreateInfoKHR* forMarshaling)
+    const VkPhysicalDeviceIDProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkDisplayModeCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
-    marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((uint8_t*)forMarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
+    vkStream->write((uint8_t*)forMarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
+    vkStream->write((uint8_t*)forMarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
+    vkStream->write((uint32_t*)&forMarshaling->deviceNodeMask, sizeof(uint32_t));
+    vkStream->write((VkBool32*)&forMarshaling->deviceLUIDValid, sizeof(VkBool32));
 }
 
-void unmarshal_VkDisplayModeCreateInfoKHR(
+void unmarshal_VkPhysicalDeviceIDProperties(
     VulkanStream* vkStream,
-    VkDisplayModeCreateInfoKHR* forUnmarshaling)
+    VkPhysicalDeviceIDProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkDisplayModeCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
-    unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((uint8_t*)forUnmarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
+    vkStream->read((uint8_t*)forUnmarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
+    vkStream->read((uint8_t*)forUnmarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceNodeMask, sizeof(uint32_t));
+    vkStream->read((VkBool32*)&forUnmarshaling->deviceLUIDValid, sizeof(VkBool32));
 }
 
-void marshal_VkDisplayPlaneCapabilitiesKHR(
+void marshal_VkExternalMemoryImageCreateInfo(
     VulkanStream* vkStream,
-    const VkDisplayPlaneCapabilitiesKHR* forMarshaling)
+    const VkExternalMemoryImageCreateInfo* forMarshaling)
 {
-    vkStream->write((VkDisplayPlaneAlphaFlagsKHR*)&forMarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
-    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minSrcPosition));
-    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxSrcPosition));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minSrcExtent));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxSrcExtent));
-    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minDstPosition));
-    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxDstPosition));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minDstExtent));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxDstExtent));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-void unmarshal_VkDisplayPlaneCapabilitiesKHR(
+void unmarshal_VkExternalMemoryImageCreateInfo(
     VulkanStream* vkStream,
-    VkDisplayPlaneCapabilitiesKHR* forUnmarshaling)
+    VkExternalMemoryImageCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkDisplayPlaneAlphaFlagsKHR*)&forUnmarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
-    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minSrcPosition));
-    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxSrcPosition));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minSrcExtent));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSrcExtent));
-    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minDstPosition));
-    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxDstPosition));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minDstExtent));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxDstExtent));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-void marshal_VkDisplayPlanePropertiesKHR(
+void marshal_VkExternalMemoryBufferCreateInfo(
     VulkanStream* vkStream,
-    const VkDisplayPlanePropertiesKHR* forMarshaling)
+    const VkExternalMemoryBufferCreateInfo* forMarshaling)
 {
-    vkStream->write((VkDisplayKHR*)&forMarshaling->currentDisplay, sizeof(VkDisplayKHR));
-    vkStream->write((uint32_t*)&forMarshaling->currentStackIndex, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-void unmarshal_VkDisplayPlanePropertiesKHR(
+void unmarshal_VkExternalMemoryBufferCreateInfo(
     VulkanStream* vkStream,
-    VkDisplayPlanePropertiesKHR* forUnmarshaling)
+    VkExternalMemoryBufferCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkDisplayKHR*)&forUnmarshaling->currentDisplay, sizeof(VkDisplayKHR));
-    vkStream->read((uint32_t*)&forUnmarshaling->currentStackIndex, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-void marshal_VkDisplaySurfaceCreateInfoKHR(
+void marshal_VkExportMemoryAllocateInfo(
     VulkanStream* vkStream,
-    const VkDisplaySurfaceCreateInfoKHR* forMarshaling)
+    const VkExportMemoryAllocateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkDisplaySurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
-    vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
-    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));
-    vkStream->write((float*)&forMarshaling->globalAlpha, sizeof(float));
-    vkStream->write((VkDisplayPlaneAlphaFlagBitsKHR*)&forMarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
-    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
+    vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-void unmarshal_VkDisplaySurfaceCreateInfoKHR(
+void unmarshal_VkExportMemoryAllocateInfo(
     VulkanStream* vkStream,
-    VkDisplaySurfaceCreateInfoKHR* forUnmarshaling)
+    VkExportMemoryAllocateInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkDisplaySurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
-    vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
-    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));
-    vkStream->read((float*)&forUnmarshaling->globalAlpha, sizeof(float));
-    vkStream->read((VkDisplayPlaneAlphaFlagBitsKHR*)&forUnmarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
-    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
+    vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
 }
 
-VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+void marshal_VkPhysicalDeviceExternalFenceInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPropertiesKHR* pProperties)
+    const VkPhysicalDeviceExternalFenceInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+void unmarshal_VkPhysicalDeviceExternalFenceInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPropertiesKHR* pProperties)
+    VkPhysicalDeviceExternalFenceInfo* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
-VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+void marshal_VkExternalFenceProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlanePropertiesKHR* pProperties)
+    const VkExternalFenceProperties* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->write((VkExternalFenceFeatureFlags*)&forMarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+void unmarshal_VkExternalFenceProperties(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlanePropertiesKHR* pProperties)
+    VkExternalFenceProperties* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t planeIndex,
-    uint32_t* pDisplayCount,
-    VkDisplayKHR* pDisplays)
-{
-    uint32_t opcode = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
-    vkStream->read((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
-    VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t planeIndex,
-    uint32_t* pDisplayCount,
-    VkDisplayKHR* pDisplays)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&planeIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
-    vkStream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
-    VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetDisplayModePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModePropertiesKHR* pProperties)
-{
-    uint32_t opcode = OP_vkGetDisplayModePropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDisplayModePropertiesKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+    vkStream->read((VkExternalFenceFeatureFlags*)&forUnmarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
 }
 
-VkResult unmarshal_vkGetDisplayModePropertiesKHR(
+void marshal_VkExportFenceCreateInfo(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModePropertiesKHR* pProperties)
+    const VkExportFenceCreateInfo* forMarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return;
-}
-
-VkResult marshal_vkCreateDisplayModeKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    const VkDisplayModeCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDisplayModeKHR* pMode)
-{
-    uint32_t opcode = OP_vkCreateDisplayModeKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    marshal_VkDisplayModeCreateInfoKHR(vkStream, (const VkDisplayModeCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
-    VkResult marshal_vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDisplayModeKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDisplayModeKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    const VkDisplayModeCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDisplayModeKHR* pMode)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDisplayModeCreateInfoKHR));
-    unmarshal_VkDisplayModeCreateInfoKHR(vkStream, (VkDisplayModeCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
-    VkResult unmarshal_vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDisplayModeKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayModeKHR mode,
-    uint32_t planeIndex,
-    VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-{
-    uint32_t opcode = OP_vkGetDisplayPlaneCapabilitiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
-    vkStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
-    marshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
-    VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayModeKHR mode,
-    uint32_t planeIndex,
-    VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
-    vkStream->read((uint32_t*)&planeIndex, sizeof(uint32_t));
-    unmarshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
-    VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
-}
-
-VkResult marshal_vkCreateDisplayPlaneSurfaceKHR(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    uint32_t opcode = OP_vkCreateDisplayPlaneSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkDisplaySurfaceCreateInfoKHR(vkStream, (const VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
 }
 
-VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR(
+void unmarshal_VkExportFenceCreateInfo(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkExportFenceCreateInfo* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDisplaySurfaceCreateInfoKHR));
-    unmarshal_VkDisplaySurfaceCreateInfoKHR(vkStream, (VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
 }
 
-#endif
-#ifdef VK_KHR_display_swapchain
-void marshal_VkDisplayPresentInfoKHR(
+void marshal_VkExportSemaphoreCreateInfo(
     VulkanStream* vkStream,
-    const VkDisplayPresentInfoKHR* forMarshaling)
+    const VkExportSemaphoreCreateInfo* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->srcRect));
-    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->dstRect));
-    vkStream->write((VkBool32*)&forMarshaling->persistent, sizeof(VkBool32));
+    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
 }
 
-void unmarshal_VkDisplayPresentInfoKHR(
+void unmarshal_VkExportSemaphoreCreateInfo(
     VulkanStream* vkStream,
-    VkDisplayPresentInfoKHR* forUnmarshaling)
+    VkExportSemaphoreCreateInfo* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->srcRect));
-    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->dstRect));
-    vkStream->read((VkBool32*)&forUnmarshaling->persistent, sizeof(VkBool32));
+    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
 }
 
-VkResult marshal_vkCreateSharedSwapchainsKHR(
+void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainCreateInfoKHR* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchains)
+    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateSharedSwapchainsKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
-    {
-        marshal_VkSwapchainCreateInfoKHR(vkStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
-    }
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
-    VkResult marshal_vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
-VkResult unmarshal_vkCreateSharedSwapchainsKHR(
+void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
     VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainCreateInfoKHR* pCreateInfos,
-    const VkAllocationCallbacks* pAllocator,
-    VkSwapchainKHR* pSwapchains)
+    VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&swapchainCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pCreateInfos, ((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
-    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
-    {
-        unmarshal_VkSwapchainCreateInfoKHR(vkStream, (VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
-    }
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
-    VkResult unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
-#endif
-#ifdef VK_KHR_xlib_surface
-void marshal_VkXlibSurfaceCreateInfoKHR(
+void marshal_VkExternalSemaphoreProperties(
     VulkanStream* vkStream,
-    const VkXlibSurfaceCreateInfoKHR* forMarshaling)
+    const VkExternalSemaphoreProperties* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkXlibSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
-    vkStream->write((Display**)&forMarshaling->dpy, sizeof(Display*));
-    if (forMarshaling->dpy)
-    {
-        vkStream->write((Display*)forMarshaling->dpy, sizeof(Display));
-    }
-    vkStream->write((Window*)&forMarshaling->window, sizeof(Window));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->write((VkExternalSemaphoreFeatureFlags*)&forMarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
 }
 
-void unmarshal_VkXlibSurfaceCreateInfoKHR(
+void unmarshal_VkExternalSemaphoreProperties(
     VulkanStream* vkStream,
-    VkXlibSurfaceCreateInfoKHR* forUnmarshaling)
+    VkExternalSemaphoreProperties* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkXlibSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
-    vkStream->read((Display**)&forUnmarshaling->dpy, sizeof(Display*));
-    if (forUnmarshaling->dpy)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->dpy, sizeof(Display));
-        vkStream->read((Display*)forUnmarshaling->dpy, sizeof(Display));
-    }
-    vkStream->read((Window*)&forUnmarshaling->window, sizeof(Window));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+    vkStream->read((VkExternalSemaphoreFeatureFlags*)&forUnmarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
 }
 
-VkResult marshal_vkCreateXlibSurfaceKHR(
+void marshal_VkPhysicalDeviceMaintenance3Properties(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkPhysicalDeviceMaintenance3Properties* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateXlibSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkXlibSurfaceCreateInfoKHR(vkStream, (const VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateXlibSurfaceKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->maxPerSetDescriptors, sizeof(uint32_t));
+    vkStream->write((VkDeviceSize*)&forMarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
 }
 
-VkResult unmarshal_vkCreateXlibSurfaceKHR(
+void unmarshal_VkPhysicalDeviceMaintenance3Properties(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkPhysicalDeviceMaintenance3Properties* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkXlibSurfaceCreateInfoKHR));
-    unmarshal_VkXlibSurfaceCreateInfoKHR(vkStream, (VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateXlibSurfaceKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, sizeof(uint32_t));
+    vkStream->read((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
 }
 
-VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+void marshal_VkDescriptorSetLayoutSupport(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    Display* dpy,
-    VisualID visualID)
+    const VkDescriptorSetLayoutSupport* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((Display*)dpy, sizeof(Display));
-    vkStream->write((VisualID*)&visualID, sizeof(VisualID));
-    VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->supported, sizeof(VkBool32));
 }
 
-VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+void unmarshal_VkDescriptorSetLayoutSupport(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    Display* dpy,
-    VisualID visualID)
+    VkDescriptorSetLayoutSupport* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((Display*)dpy, sizeof(Display));
-    vkStream->read((VisualID*)&visualID, sizeof(VisualID));
-    VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->supported, sizeof(VkBool32));
 }
 
-#endif
-#ifdef VK_KHR_xcb_surface
-void marshal_VkXcbSurfaceCreateInfoKHR(
+void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
     VulkanStream* vkStream,
-    const VkXcbSurfaceCreateInfoKHR* forMarshaling)
+    const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
-    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->write((VkXcbSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
-    vkStream->write((xcb_connection_t**)&forMarshaling->connection, sizeof(xcb_connection_t*));
-    if (forMarshaling->connection)
-    {
-        vkStream->write((xcb_connection_t*)forMarshaling->connection, sizeof(xcb_connection_t));
-    }
-    vkStream->write((xcb_window_t*)&forMarshaling->window, sizeof(xcb_window_t));
+    vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->write((VkBool32*)&forMarshaling->shaderDrawParameters, sizeof(VkBool32));
 }
 
-void unmarshal_VkXcbSurfaceCreateInfoKHR(
+void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
     VulkanStream* vkStream,
-    VkXcbSurfaceCreateInfoKHR* forUnmarshaling)
+    VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->read((VkXcbSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
-    vkStream->read((xcb_connection_t**)&forUnmarshaling->connection, sizeof(xcb_connection_t*));
-    if (forUnmarshaling->connection)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(xcb_connection_t));
-        vkStream->read((xcb_connection_t*)forUnmarshaling->connection, sizeof(xcb_connection_t));
-    }
-    vkStream->read((xcb_window_t*)&forUnmarshaling->window, sizeof(xcb_window_t));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+    // TODO: Unsupported : void* pNext
+    vkStream->read((VkBool32*)&forUnmarshaling->shaderDrawParameters, sizeof(VkBool32));
 }
 
-VkResult marshal_vkCreateXcbSurfaceKHR(
+#endif
+#ifdef VK_KHR_surface
+void marshal_VkSurfaceCapabilitiesKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkSurfaceCapabilitiesKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateXcbSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkXcbSurfaceCreateInfoKHR(vkStream, (const VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateXcbSurfaceKHR_VkResult_return;
+    vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
+    vkStream->write((uint32_t*)&forMarshaling->maxImageCount, sizeof(uint32_t));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->currentExtent));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minImageExtent));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxImageExtent));
+    vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
+    vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+    vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+    vkStream->write((VkCompositeAlphaFlagsKHR*)&forMarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+    vkStream->write((VkImageUsageFlags*)&forMarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
 }
 
-VkResult unmarshal_vkCreateXcbSurfaceKHR(
+void unmarshal_VkSurfaceCapabilitiesKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkSurfaceCapabilitiesKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkXcbSurfaceCreateInfoKHR));
-    unmarshal_VkXcbSurfaceCreateInfoKHR(vkStream, (VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateXcbSurfaceKHR_VkResult_return;
+    vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
+    vkStream->read((uint32_t*)&forUnmarshaling->maxImageCount, sizeof(uint32_t));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->currentExtent));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minImageExtent));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxImageExtent));
+    vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
+    vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+    vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+    vkStream->read((VkCompositeAlphaFlagsKHR*)&forUnmarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
 }
 
-VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+void marshal_VkSurfaceFormatKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    xcb_connection_t* connection,
-    xcb_visualid_t visual_id)
+    const VkSurfaceFormatKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
-    vkStream->write((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
-    VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+    vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+    vkStream->write((VkColorSpaceKHR*)&forMarshaling->colorSpace, sizeof(VkColorSpaceKHR));
 }
 
-VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+void unmarshal_VkSurfaceFormatKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    xcb_connection_t* connection,
-    xcb_visualid_t visual_id)
+    VkSurfaceFormatKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
-    vkStream->read((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
-    VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+    vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+    vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->colorSpace, sizeof(VkColorSpaceKHR));
 }
 
 #endif
-#ifdef VK_KHR_wayland_surface
-void marshal_VkWaylandSurfaceCreateInfoKHR(
+#ifdef VK_KHR_swapchain
+void marshal_VkSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    const VkWaylandSurfaceCreateInfoKHR* forMarshaling)
+    const VkSwapchainCreateInfoKHR* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkWaylandSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
-    vkStream->write((wl_display**)&forMarshaling->display, sizeof(wl_display*));
-    if (forMarshaling->display)
-    {
-        vkStream->write((wl_display*)forMarshaling->display, sizeof(wl_display));
-    }
-    vkStream->write((wl_surface**)&forMarshaling->surface, sizeof(wl_surface*));
-    if (forMarshaling->surface)
+    vkStream->write((VkSwapchainCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
+    vkStream->write((VkSurfaceKHR*)&forMarshaling->surface, sizeof(VkSurfaceKHR));
+    vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
+    vkStream->write((VkFormat*)&forMarshaling->imageFormat, sizeof(VkFormat));
+    vkStream->write((VkColorSpaceKHR*)&forMarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
+    vkStream->write((uint32_t*)&forMarshaling->imageArrayLayers, sizeof(uint32_t));
+    vkStream->write((VkImageUsageFlags*)&forMarshaling->imageUsage, sizeof(VkImageUsageFlags));
+    vkStream->write((VkSharingMode*)&forMarshaling->imageSharingMode, sizeof(VkSharingMode));
+    vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t**)&forMarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+    if (forMarshaling->pQueueFamilyIndices)
     {
-        vkStream->write((wl_surface*)forMarshaling->surface, sizeof(wl_surface));
+        vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
     }
+    vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+    vkStream->write((VkCompositeAlphaFlagBitsKHR*)&forMarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
+    vkStream->write((VkPresentModeKHR*)&forMarshaling->presentMode, sizeof(VkPresentModeKHR));
+    vkStream->write((VkBool32*)&forMarshaling->clipped, sizeof(VkBool32));
+    vkStream->write((VkSwapchainKHR*)&forMarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
 }
 
-void unmarshal_VkWaylandSurfaceCreateInfoKHR(
+void unmarshal_VkSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    VkWaylandSurfaceCreateInfoKHR* forUnmarshaling)
+    VkSwapchainCreateInfoKHR* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkWaylandSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
-    vkStream->read((wl_display**)&forUnmarshaling->display, sizeof(wl_display*));
-    if (forUnmarshaling->display)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->display, sizeof(wl_display));
-        vkStream->read((wl_display*)forUnmarshaling->display, sizeof(wl_display));
-    }
-    vkStream->read((wl_surface**)&forUnmarshaling->surface, sizeof(wl_surface*));
-    if (forUnmarshaling->surface)
+    vkStream->read((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
+    vkStream->read((VkSurfaceKHR*)&forUnmarshaling->surface, sizeof(VkSurfaceKHR));
+    vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
+    vkStream->read((VkFormat*)&forUnmarshaling->imageFormat, sizeof(VkFormat));
+    vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
+    vkStream->read((uint32_t*)&forUnmarshaling->imageArrayLayers, sizeof(uint32_t));
+    vkStream->read((VkImageUsageFlags*)&forUnmarshaling->imageUsage, sizeof(VkImageUsageFlags));
+    vkStream->read((VkSharingMode*)&forUnmarshaling->imageSharingMode, sizeof(VkSharingMode));
+    vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+    vkStream->read((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+    if (forUnmarshaling->pQueueFamilyIndices)
     {
-        vkStream->alloc((void**)&forUnmarshaling->surface, sizeof(wl_surface));
-        vkStream->read((wl_surface*)forUnmarshaling->surface, sizeof(wl_surface));
+        vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+        vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
     }
+    vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+    vkStream->read((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
+    vkStream->read((VkPresentModeKHR*)&forUnmarshaling->presentMode, sizeof(VkPresentModeKHR));
+    vkStream->read((VkBool32*)&forUnmarshaling->clipped, sizeof(VkBool32));
+    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
 }
 
-VkResult marshal_vkCreateWaylandSurfaceKHR(
+void marshal_VkPresentInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkPresentInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateWaylandSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkWaylandSurfaceCreateInfoKHR(vkStream, (const VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+    vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+    vkStream->write((const VkSwapchainKHR*)forMarshaling->pSwapchains, forMarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+    vkStream->write((const uint32_t*)forMarshaling->pImageIndices, forMarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->write((VkResult**)&forMarshaling->pResults, sizeof(VkResult*));
+    if (forMarshaling->pResults)
     {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+        vkStream->write((VkResult*)forMarshaling->pResults, forMarshaling->swapchainCount * sizeof(VkResult));
     }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateWaylandSurfaceKHR_VkResult_return;
 }
 
-VkResult unmarshal_vkCreateWaylandSurfaceKHR(
+void unmarshal_VkPresentInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkPresentInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkWaylandSurfaceCreateInfoKHR));
-    unmarshal_VkWaylandSurfaceCreateInfoKHR(vkStream, (VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+    vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+    vkStream->read((VkSwapchainKHR*)forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+    vkStream->alloc((void**)&forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->read((VkResult**)&forUnmarshaling->pResults, sizeof(VkResult*));
+    if (forUnmarshaling->pResults)
     {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+        vkStream->alloc((void**)&forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
+        vkStream->read((VkResult*)forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
     }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return;
-}
-
-VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    wl_display* display)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((wl_display*)display, sizeof(wl_display));
-    VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
-}
-
-VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    wl_display* display)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((wl_display*)display, sizeof(wl_display));
-    VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
 }
 
-#endif
-#ifdef VK_KHR_mir_surface
-void marshal_VkMirSurfaceCreateInfoKHR(
+void marshal_VkImageSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    const VkMirSurfaceCreateInfoKHR* forMarshaling)
+    const VkImageSwapchainCreateInfoKHR* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkMirSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
-    vkStream->write((MirConnection**)&forMarshaling->connection, sizeof(MirConnection*));
-    if (forMarshaling->connection)
-    {
-        vkStream->write((MirConnection*)forMarshaling->connection, sizeof(MirConnection));
-    }
-    vkStream->write((MirSurface**)&forMarshaling->mirSurface, sizeof(MirSurface*));
-    if (forMarshaling->mirSurface)
-    {
-        vkStream->write((MirSurface*)forMarshaling->mirSurface, sizeof(MirSurface));
-    }
+    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
 }
 
-void unmarshal_VkMirSurfaceCreateInfoKHR(
+void unmarshal_VkImageSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    VkMirSurfaceCreateInfoKHR* forUnmarshaling)
+    VkImageSwapchainCreateInfoKHR* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkMirSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
-    vkStream->read((MirConnection**)&forUnmarshaling->connection, sizeof(MirConnection*));
-    if (forUnmarshaling->connection)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(MirConnection));
-        vkStream->read((MirConnection*)forUnmarshaling->connection, sizeof(MirConnection));
-    }
-    vkStream->read((MirSurface**)&forUnmarshaling->mirSurface, sizeof(MirSurface*));
-    if (forUnmarshaling->mirSurface)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->mirSurface, sizeof(MirSurface));
-        vkStream->read((MirSurface*)forUnmarshaling->mirSurface, sizeof(MirSurface));
-    }
+    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
 }
 
-VkResult marshal_vkCreateMirSurfaceKHR(
+void marshal_VkBindImageMemorySwapchainInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMirSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkBindImageMemorySwapchainInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateMirSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkMirSurfaceCreateInfoKHR(vkStream, (const VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateMirSurfaceKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->write((uint32_t*)&forMarshaling->imageIndex, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkCreateMirSurfaceKHR(
+void unmarshal_VkBindImageMemorySwapchainInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMirSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkBindImageMemorySwapchainInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkMirSurfaceCreateInfoKHR));
-    unmarshal_VkMirSurfaceCreateInfoKHR(vkStream, (VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateMirSurfaceKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->read((uint32_t*)&forUnmarshaling->imageIndex, sizeof(uint32_t));
 }
 
-VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+void marshal_VkAcquireNextImageInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    MirConnection* connection)
+    const VkAcquireNextImageInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->read((MirConnection*)connection, sizeof(MirConnection));
-    VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->write((uint64_t*)&forMarshaling->timeout, sizeof(uint64_t));
+    vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+    vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+    vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
 }
 
-VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+void unmarshal_VkAcquireNextImageInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex,
-    MirConnection* connection)
+    VkAcquireNextImageInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    vkStream->write((MirConnection*)connection, sizeof(MirConnection));
-    VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+    vkStream->read((uint64_t*)&forUnmarshaling->timeout, sizeof(uint64_t));
+    vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+    vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+    vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
 }
 
-#endif
-#ifdef VK_KHR_android_surface
-void marshal_VkAndroidSurfaceCreateInfoKHR(
+void marshal_VkDeviceGroupPresentCapabilitiesKHR(
     VulkanStream* vkStream,
-    const VkAndroidSurfaceCreateInfoKHR* forMarshaling)
+    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkAndroidSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
-    vkStream->write((ANativeWindow**)&forMarshaling->window, sizeof(ANativeWindow*));
-    if (forMarshaling->window)
-    {
-        vkStream->write((ANativeWindow*)forMarshaling->window, sizeof(ANativeWindow));
-    }
+    vkStream->write((uint32_t*)forMarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
+    vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
 }
 
-void unmarshal_VkAndroidSurfaceCreateInfoKHR(
+void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
     VulkanStream* vkStream,
-    VkAndroidSurfaceCreateInfoKHR* forUnmarshaling)
+    VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkAndroidSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
-    vkStream->read((ANativeWindow**)&forUnmarshaling->window, sizeof(ANativeWindow*));
-    if (forUnmarshaling->window)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->window, sizeof(ANativeWindow));
-        vkStream->read((ANativeWindow*)forUnmarshaling->window, sizeof(ANativeWindow));
-    }
+    vkStream->read((uint32_t*)forUnmarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
+    vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
 }
 
-VkResult marshal_vkCreateAndroidSurfaceKHR(
+void marshal_VkDeviceGroupPresentInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkDeviceGroupPresentInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateAndroidSurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkAndroidSurfaceCreateInfoKHR(vkStream, (const VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+    vkStream->write((const uint32_t*)forMarshaling->pDeviceMasks, forMarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->write((VkDeviceGroupPresentModeFlagBitsKHR*)&forMarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
 }
 
-VkResult unmarshal_vkCreateAndroidSurfaceKHR(
+void unmarshal_VkDeviceGroupPresentInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkDeviceGroupPresentInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkAndroidSurfaceCreateInfoKHR));
-    unmarshal_VkAndroidSurfaceCreateInfoKHR(vkStream, (VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+    vkStream->alloc((void**)&forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->read((uint32_t*)forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+    vkStream->read((VkDeviceGroupPresentModeFlagBitsKHR*)&forUnmarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
 }
 
-#endif
-#ifdef VK_KHR_win32_surface
-void marshal_VkWin32SurfaceCreateInfoKHR(
+void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    const VkWin32SurfaceCreateInfoKHR* forMarshaling)
+    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling)
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->write((VkWin32SurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
-    vkStream->write((HINSTANCE*)&forMarshaling->hinstance, sizeof(HINSTANCE));
-    vkStream->write((HWND*)&forMarshaling->hwnd, sizeof(HWND));
+    vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
 }
 
-void unmarshal_VkWin32SurfaceCreateInfoKHR(
+void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
     VulkanStream* vkStream,
-    VkWin32SurfaceCreateInfoKHR* forUnmarshaling)
+    VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling)
 {
     vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
     vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
     // TODO: Unsupported : const void* pNext
-    vkStream->read((VkWin32SurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
-    vkStream->read((HINSTANCE*)&forUnmarshaling->hinstance, sizeof(HINSTANCE));
-    vkStream->read((HWND*)&forUnmarshaling->hwnd, sizeof(HWND));
+    vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
 }
 
-VkResult marshal_vkCreateWin32SurfaceKHR(
+#endif
+#ifdef VK_KHR_display
+void marshal_VkDisplayPropertiesKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    const VkDisplayPropertiesKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCreateWin32SurfaceKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkWin32SurfaceCreateInfoKHR(vkStream, (const VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateWin32SurfaceKHR_VkResult_return;
+    vkStream->write((VkDisplayKHR*)&forMarshaling->display, sizeof(VkDisplayKHR));
+    vkStream->putString(forMarshaling->displayName);
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalDimensions));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalResolution));
+    vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+    vkStream->write((VkBool32*)&forMarshaling->planeReorderPossible, sizeof(VkBool32));
+    vkStream->write((VkBool32*)&forMarshaling->persistentContent, sizeof(VkBool32));
 }
 
-VkResult unmarshal_vkCreateWin32SurfaceKHR(
+void unmarshal_VkDisplayPropertiesKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
+    VkDisplayPropertiesKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkWin32SurfaceCreateInfoKHR));
-    unmarshal_VkWin32SurfaceCreateInfoKHR(vkStream, (VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateWin32SurfaceKHR_VkResult_return;
+    vkStream->read((VkDisplayKHR*)&forUnmarshaling->display, sizeof(VkDisplayKHR));
+    vkStream->loadStringInPlace((char**)&forUnmarshaling->displayName);
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalDimensions));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalResolution));
+    vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+    vkStream->read((VkBool32*)&forUnmarshaling->planeReorderPossible, sizeof(VkBool32));
+    vkStream->read((VkBool32*)&forUnmarshaling->persistentContent, sizeof(VkBool32));
 }
 
-VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+void marshal_VkDisplayModeParametersKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex)
+    const VkDisplayModeParametersKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->visibleRegion));
+    vkStream->write((uint32_t*)&forMarshaling->refreshRate, sizeof(uint32_t));
 }
 
-VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+void unmarshal_VkDisplayModeParametersKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t queueFamilyIndex)
+    VkDisplayModeParametersKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
-    VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
-    return unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->visibleRegion));
+    vkStream->read((uint32_t*)&forUnmarshaling->refreshRate, sizeof(uint32_t));
 }
 
-#endif
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-#endif
-#ifdef VK_KHR_multiview
-#endif
-#ifdef VK_KHR_get_physical_device_properties2
-void marshal_vkGetPhysicalDeviceFeatures2KHR(
+void marshal_VkDisplayModePropertiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures)
+    const VkDisplayModePropertiesKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceFeatures2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
+    marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
 }
 
-void unmarshal_vkGetPhysicalDeviceFeatures2KHR(
+void unmarshal_VkDisplayModePropertiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceFeatures2* pFeatures)
+    VkDisplayModePropertiesKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+    vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
+    unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
 }
 
-void marshal_vkGetPhysicalDeviceProperties2KHR(
+void marshal_VkDisplayModeCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties)
+    const VkDisplayModeCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkDisplayModeCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
+    marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
 }
 
-void unmarshal_vkGetPhysicalDeviceProperties2KHR(
+void unmarshal_VkDisplayModeCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceProperties2* pProperties)
+    VkDisplayModeCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkDisplayModeCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
+    unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
 }
 
-void marshal_vkGetPhysicalDeviceFormatProperties2KHR(
+void marshal_VkDisplayPlaneCapabilitiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties)
+    const VkDisplayPlaneCapabilitiesKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceFormatProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    marshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+    vkStream->write((VkDisplayPlaneAlphaFlagsKHR*)&forMarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
+    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minSrcPosition));
+    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxSrcPosition));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minSrcExtent));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxSrcExtent));
+    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minDstPosition));
+    marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxDstPosition));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minDstExtent));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxDstExtent));
 }
 
-void unmarshal_vkGetPhysicalDeviceFormatProperties2KHR(
+void unmarshal_VkDisplayPlaneCapabilitiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkFormatProperties2* pFormatProperties)
+    VkDisplayPlaneCapabilitiesKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    unmarshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+    vkStream->read((VkDisplayPlaneAlphaFlagsKHR*)&forUnmarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
+    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minSrcPosition));
+    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxSrcPosition));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minSrcExtent));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSrcExtent));
+    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minDstPosition));
+    unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxDstPosition));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minDstExtent));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxDstExtent));
 }
 
-VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+void marshal_VkDisplayPlanePropertiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties)
+    const VkDisplayPlanePropertiesKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
-    marshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
-    VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+    vkStream->write((VkDisplayKHR*)&forMarshaling->currentDisplay, sizeof(VkDisplayKHR));
+    vkStream->write((uint32_t*)&forMarshaling->currentStackIndex, sizeof(uint32_t));
 }
 
-VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+void unmarshal_VkDisplayPlanePropertiesKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
-    VkImageFormatProperties2* pImageFormatProperties)
+    VkDisplayPlanePropertiesKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pImageFormatInfo, sizeof(const VkPhysicalDeviceImageFormatInfo2));
-    unmarshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
-    unmarshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
-    VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+    vkStream->read((VkDisplayKHR*)&forUnmarshaling->currentDisplay, sizeof(VkDisplayKHR));
+    vkStream->read((uint32_t*)&forUnmarshaling->currentStackIndex, sizeof(uint32_t));
 }
 
-void marshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+void marshal_VkDisplaySurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties)
+    const VkDisplaySurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        marshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
-    }
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkDisplaySurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
+    vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
+    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));
+    vkStream->write((float*)&forMarshaling->globalAlpha, sizeof(float));
+    vkStream->write((VkDisplayPlaneAlphaFlagBitsKHR*)&forMarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
+    marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
 }
 
-void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+void unmarshal_VkDisplaySurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pQueueFamilyPropertyCount,
-    VkQueueFamilyProperties2* pQueueFamilyProperties)
+    VkDisplaySurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
-    {
-        unmarshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
-    }
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkDisplaySurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
+    vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
+    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));
+    vkStream->read((float*)&forUnmarshaling->globalAlpha, sizeof(float));
+    vkStream->read((VkDisplayPlaneAlphaFlagBitsKHR*)&forUnmarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
+    unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
 }
 
-void marshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+#endif
+#ifdef VK_KHR_display_swapchain
+void marshal_VkDisplayPresentInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+    const VkDisplayPresentInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->srcRect));
+    marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->dstRect));
+    vkStream->write((VkBool32*)&forMarshaling->persistent, sizeof(VkBool32));
 }
 
-void unmarshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+void unmarshal_VkDisplayPresentInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+    VkDisplayPresentInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->srcRect));
+    unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->dstRect));
+    vkStream->read((VkBool32*)&forUnmarshaling->persistent, sizeof(VkBool32));
 }
 
-void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+#endif
+#ifdef VK_KHR_xlib_surface
+void marshal_VkXlibSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties)
+    const VkXlibSurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkXlibSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
+    vkStream->write((Display**)&forMarshaling->dpy, sizeof(Display*));
+    if (forMarshaling->dpy)
     {
-        marshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        vkStream->write((Display*)forMarshaling->dpy, sizeof(Display));
     }
+    vkStream->write((Window*)&forMarshaling->window, sizeof(Window));
 }
 
-void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+void unmarshal_VkXlibSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-    uint32_t* pPropertyCount,
-    VkSparseImageFormatProperties2* pProperties)
+    VkXlibSurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pFormatInfo, sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
-    unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkXlibSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
+    vkStream->read((Display**)&forUnmarshaling->dpy, sizeof(Display*));
+    if (forUnmarshaling->dpy)
     {
-        unmarshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+        vkStream->alloc((void**)&forUnmarshaling->dpy, sizeof(Display));
+        vkStream->read((Display*)forUnmarshaling->dpy, sizeof(Display));
     }
+    vkStream->read((Window*)&forUnmarshaling->window, sizeof(Window));
 }
 
 #endif
-#ifdef VK_KHR_device_group
-void marshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-    uint32_t opcode = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
-    vkStream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
-}
-
-void unmarshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t heapIndex,
-    uint32_t localDeviceIndex,
-    uint32_t remoteDeviceIndex,
-    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&heapIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
-    vkStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
-}
-
-void marshal_vkCmdSetDeviceMaskKHR(
+#ifdef VK_KHR_xcb_surface
+void marshal_VkXcbSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask)
+    const VkXcbSurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdSetDeviceMaskKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkXcbSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
+    vkStream->write((xcb_connection_t**)&forMarshaling->connection, sizeof(xcb_connection_t*));
+    if (forMarshaling->connection)
+    {
+        vkStream->write((xcb_connection_t*)forMarshaling->connection, sizeof(xcb_connection_t));
+    }
+    vkStream->write((xcb_window_t*)&forMarshaling->window, sizeof(xcb_window_t));
 }
 
-void unmarshal_vkCmdSetDeviceMaskKHR(
+void unmarshal_VkXcbSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t deviceMask)
+    VkXcbSurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&deviceMask, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkXcbSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
+    vkStream->read((xcb_connection_t**)&forUnmarshaling->connection, sizeof(xcb_connection_t*));
+    if (forUnmarshaling->connection)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(xcb_connection_t));
+        vkStream->read((xcb_connection_t*)forUnmarshaling->connection, sizeof(xcb_connection_t));
+    }
+    vkStream->read((xcb_window_t*)&forUnmarshaling->window, sizeof(xcb_window_t));
 }
 
-void marshal_vkCmdDispatchBaseKHR(
+#endif
+#ifdef VK_KHR_wayland_surface
+void marshal_VkWaylandSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
+    const VkWaylandSurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkCmdDispatchBaseKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkWaylandSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
+    vkStream->write((wl_display**)&forMarshaling->display, sizeof(wl_display*));
+    if (forMarshaling->display)
+    {
+        vkStream->write((wl_display*)forMarshaling->display, sizeof(wl_display));
+    }
+    vkStream->write((wl_surface**)&forMarshaling->surface, sizeof(wl_surface*));
+    if (forMarshaling->surface)
+    {
+        vkStream->write((wl_surface*)forMarshaling->surface, sizeof(wl_surface));
+    }
 }
 
-void unmarshal_vkCmdDispatchBaseKHR(
+void unmarshal_VkWaylandSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t baseGroupX,
-    uint32_t baseGroupY,
-    uint32_t baseGroupZ,
-    uint32_t groupCountX,
-    uint32_t groupCountY,
-    uint32_t groupCountZ)
+    VkWaylandSurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&baseGroupX, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&baseGroupY, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&baseGroupZ, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkWaylandSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
+    vkStream->read((wl_display**)&forUnmarshaling->display, sizeof(wl_display*));
+    if (forUnmarshaling->display)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->display, sizeof(wl_display));
+        vkStream->read((wl_display*)forUnmarshaling->display, sizeof(wl_display));
+    }
+    vkStream->read((wl_surface**)&forUnmarshaling->surface, sizeof(wl_surface*));
+    if (forUnmarshaling->surface)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->surface, sizeof(wl_surface));
+        vkStream->read((wl_surface*)forUnmarshaling->surface, sizeof(wl_surface));
+    }
 }
 
 #endif
-#ifdef VK_KHR_shader_draw_parameters
-#endif
-#ifdef VK_KHR_maintenance1
-void marshal_vkTrimCommandPoolKHR(
+#ifdef VK_KHR_mir_surface
+void marshal_VkMirSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags)
+    const VkMirSurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkTrimCommandPoolKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkMirSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
+    vkStream->write((MirConnection**)&forMarshaling->connection, sizeof(MirConnection*));
+    if (forMarshaling->connection)
+    {
+        vkStream->write((MirConnection*)forMarshaling->connection, sizeof(MirConnection));
+    }
+    vkStream->write((MirSurface**)&forMarshaling->mirSurface, sizeof(MirSurface*));
+    if (forMarshaling->mirSurface)
+    {
+        vkStream->write((MirSurface*)forMarshaling->mirSurface, sizeof(MirSurface));
+    }
 }
 
-void unmarshal_vkTrimCommandPoolKHR(
+void unmarshal_VkMirSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkDevice device,
-    VkCommandPool commandPool,
-    VkCommandPoolTrimFlags flags)
+    VkMirSurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
-    vkStream->read((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkMirSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
+    vkStream->read((MirConnection**)&forUnmarshaling->connection, sizeof(MirConnection*));
+    if (forUnmarshaling->connection)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(MirConnection));
+        vkStream->read((MirConnection*)forUnmarshaling->connection, sizeof(MirConnection));
+    }
+    vkStream->read((MirSurface**)&forUnmarshaling->mirSurface, sizeof(MirSurface*));
+    if (forUnmarshaling->mirSurface)
+    {
+        vkStream->alloc((void**)&forUnmarshaling->mirSurface, sizeof(MirSurface));
+        vkStream->read((MirSurface*)forUnmarshaling->mirSurface, sizeof(MirSurface));
+    }
 }
 
 #endif
-#ifdef VK_KHR_device_group_creation
-VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR(
+#ifdef VK_KHR_android_surface
+void marshal_VkAndroidSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+    const VkAndroidSurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkEnumeratePhysicalDeviceGroupsKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkAndroidSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
+    vkStream->write((ANativeWindow**)&forMarshaling->window, sizeof(ANativeWindow*));
+    if (forMarshaling->window)
     {
-        marshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        vkStream->write((ANativeWindow*)forMarshaling->window, sizeof(ANativeWindow));
     }
-    VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
 }
 
-VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR(
+void unmarshal_VkAndroidSurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkInstance instance,
-    uint32_t* pPhysicalDeviceGroupCount,
-    VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+    VkAndroidSurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkAndroidSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
+    vkStream->read((ANativeWindow**)&forUnmarshaling->window, sizeof(ANativeWindow*));
+    if (forUnmarshaling->window)
     {
-        unmarshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+        vkStream->alloc((void**)&forUnmarshaling->window, sizeof(ANativeWindow));
+        vkStream->read((ANativeWindow*)forUnmarshaling->window, sizeof(ANativeWindow));
     }
-    VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
 }
 
 #endif
-#ifdef VK_KHR_external_memory_capabilities
-void marshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+#ifdef VK_KHR_win32_surface
+void marshal_VkWin32SurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties)
+    const VkWin32SurfaceCreateInfoKHR* forMarshaling)
 {
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
-    marshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+    vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->write((VkWin32SurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
+    vkStream->write((HINSTANCE*)&forMarshaling->hinstance, sizeof(HINSTANCE));
+    vkStream->write((HWND*)&forMarshaling->hwnd, sizeof(HWND));
 }
 
-void unmarshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+void unmarshal_VkWin32SurfaceCreateInfoKHR(
     VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
-    VkExternalBufferProperties* pExternalBufferProperties)
+    VkWin32SurfaceCreateInfoKHR* forUnmarshaling)
 {
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalBufferInfo, sizeof(const VkPhysicalDeviceExternalBufferInfo));
-    unmarshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
-    unmarshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->read((VkWin32SurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
+    vkStream->read((HINSTANCE*)&forUnmarshaling->hinstance, sizeof(HINSTANCE));
+    vkStream->read((HWND*)&forUnmarshaling->hwnd, sizeof(HWND));
 }
 
+#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
@@ -12882,71 +5735,6 @@ void unmarshal_VkMemoryGetWin32HandleInfoKHR(
     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-VkResult marshal_vkGetMemoryWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    uint32_t opcode = OP_vkGetMemoryWin32HandleKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkMemoryGetWin32HandleInfoKHR(vkStream, (const VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult marshal_vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryWin32HandleKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkMemoryGetWin32HandleInfoKHR));
-    unmarshal_VkMemoryGetWin32HandleInfoKHR(vkStream, (VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    HANDLE handle,
-    VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-{
-    uint32_t opcode = OP_vkGetMemoryWin32HandlePropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->write((HANDLE*)&handle, sizeof(HANDLE));
-    marshal_VkMemoryWin32HandlePropertiesKHR(vkStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
-    VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    HANDLE handle,
-    VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->read((HANDLE*)&handle, sizeof(HANDLE));
-    unmarshal_VkMemoryWin32HandlePropertiesKHR(vkStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
-    VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_external_memory_fd
 void marshal_VkImportMemoryFdInfoKHR(
@@ -13013,71 +5801,6 @@ void unmarshal_VkMemoryGetFdInfoKHR(
     vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
 }
 
-VkResult marshal_vkGetMemoryFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    uint32_t opcode = OP_vkGetMemoryFdKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkMemoryGetFdInfoKHR(vkStream, (const VkMemoryGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->read((int*)pFd, sizeof(int));
-    VkResult marshal_vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryFdKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkMemoryGetFdInfoKHR));
-    unmarshal_VkMemoryGetFdInfoKHR(vkStream, (VkMemoryGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->write((int*)pFd, sizeof(int));
-    VkResult unmarshal_vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryFdKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    int fd,
-    VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-{
-    uint32_t opcode = OP_vkGetMemoryFdPropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->write((int*)&fd, sizeof(int));
-    marshal_VkMemoryFdPropertiesKHR(vkStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
-    VkResult marshal_vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryFdPropertiesKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    int fd,
-    VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->read((int*)&fd, sizeof(int));
-    unmarshal_VkMemoryFdPropertiesKHR(vkStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
-    VkResult unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_win32_keyed_mutex
 void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
@@ -13119,31 +5842,6 @@ void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
 
 #endif
 #ifdef VK_KHR_external_semaphore_capabilities
-void marshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
-    marshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
-    VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalSemaphoreInfo, sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
-    unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
-    unmarshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
-}
-
 #endif
 #ifdef VK_KHR_external_semaphore
 #endif
@@ -13275,64 +5973,6 @@ void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
-VkResult marshal_vkImportSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-{
-    uint32_t opcode = OP_vkImportSemaphoreWin32HandleKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImportSemaphoreWin32HandleInfoKHR(vkStream, (const VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
-    VkResult marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkImportSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pImportSemaphoreWin32HandleInfo, sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
-    unmarshal_VkImportSemaphoreWin32HandleInfoKHR(vkStream, (VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
-    VkResult unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    uint32_t opcode = OP_vkGetSemaphoreWin32HandleKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSemaphoreGetWin32HandleInfoKHR(vkStream, (const VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetSemaphoreWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
-    unmarshal_VkSemaphoreGetWin32HandleInfoKHR(vkStream, (VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_external_semaphore_fd
 void marshal_VkImportSemaphoreFdInfoKHR(
@@ -13383,64 +6023,6 @@ void unmarshal_VkSemaphoreGetFdInfoKHR(
     vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
 }
 
-VkResult marshal_vkImportSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-{
-    uint32_t opcode = OP_vkImportSemaphoreFdKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImportSemaphoreFdInfoKHR(vkStream, (const VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
-    VkResult marshal_vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkImportSemaphoreFdKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkImportSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pImportSemaphoreFdInfo, sizeof(const VkImportSemaphoreFdInfoKHR));
-    unmarshal_VkImportSemaphoreFdInfoKHR(vkStream, (VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
-    VkResult unmarshal_vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkImportSemaphoreFdKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    uint32_t opcode = OP_vkGetSemaphoreFdKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSemaphoreGetFdInfoKHR(vkStream, (const VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->read((int*)pFd, sizeof(int));
-    VkResult marshal_vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetSemaphoreFdKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetSemaphoreFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkSemaphoreGetFdInfoKHR));
-    unmarshal_VkSemaphoreGetFdInfoKHR(vkStream, (VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->write((int*)pFd, sizeof(int));
-    VkResult unmarshal_vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetSemaphoreFdKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_push_descriptor
 void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
@@ -13463,90 +6045,6 @@ void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
     vkStream->read((uint32_t*)&forUnmarshaling->maxPushDescriptors, sizeof(uint32_t));
 }
 
-void marshal_vkCmdPushDescriptorSetKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t set,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites)
-{
-    uint32_t opcode = OP_vkCmdPushDescriptorSetKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->write((uint32_t*)&set, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
-    {
-        marshal_VkWriteDescriptorSet(vkStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
-    }
-}
-
-void unmarshal_vkCmdPushDescriptorSetKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineBindPoint pipelineBindPoint,
-    VkPipelineLayout layout,
-    uint32_t set,
-    uint32_t descriptorWriteCount,
-    const VkWriteDescriptorSet* pDescriptorWrites)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
-    vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->read((uint32_t*)&set, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDescriptorWrites, ((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
-    for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
-    {
-        unmarshal_VkWriteDescriptorSet(vkStream, (VkWriteDescriptorSet*)(pDescriptorWrites + i));
-    }
-}
-
-void marshal_vkCmdPushDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    VkPipelineLayout layout,
-    uint32_t set,
-    const void* pData)
-{
-    uint32_t opcode = OP_vkCmdPushDescriptorSetWithTemplateKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->write((uint32_t*)&set, sizeof(uint32_t));
-    vkStream->write((const void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->write((const void*)pData, sizeof(const uint8_t));
-    }
-}
-
-void unmarshal_vkCmdPushDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    VkPipelineLayout layout,
-    uint32_t set,
-    const void* pData)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
-    vkStream->read((uint32_t*)&set, sizeof(uint32_t));
-    vkStream->read((void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->alloc((void**)&pData, sizeof(const uint8_t));
-        vkStream->read((void*)pData, sizeof(const uint8_t));
-    }
-}
-
 #endif
 #ifdef VK_KHR_16bit_storage
 #endif
@@ -13639,120 +6137,6 @@ void unmarshal_VkPresentRegionsKHR(
 
 #endif
 #ifdef VK_KHR_descriptor_update_template
-VkResult marshal_vkCreateDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-{
-    uint32_t opcode = OP_vkCreateDescriptorUpdateTemplateKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    VkResult marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorUpdateTemplateCreateInfo));
-    unmarshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
-}
-
-void marshal_vkDestroyDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDescriptorUpdateTemplateKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDescriptorUpdateTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_vkUpdateDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData)
-{
-    uint32_t opcode = OP_vkUpdateDescriptorSetWithTemplateKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
-    vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->write((const void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->write((const void*)pData, sizeof(const uint8_t));
-    }
-}
-
-void unmarshal_vkUpdateDescriptorSetWithTemplateKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDescriptorSet descriptorSet,
-    VkDescriptorUpdateTemplate descriptorUpdateTemplate,
-    const void* pData)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
-    vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
-    vkStream->read((void**)&pData, sizeof(const void*));
-    if (pData)
-    {
-        vkStream->alloc((void**)&pData, sizeof(const uint8_t));
-        vkStream->read((void*)pData, sizeof(const uint8_t));
-    }
-}
-
 #endif
 #ifdef VK_KHR_create_renderpass2
 void marshal_VkAttachmentDescription2KHR(
@@ -13986,50 +6370,6 @@ void unmarshal_VkRenderPassCreateInfo2KHR(
     vkStream->read((uint32_t*)forUnmarshaling->pCorrelatedViewMasks, forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
 }
 
-VkResult marshal_vkCreateRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo2KHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass)
-{
-    uint32_t opcode = OP_vkCreateRenderPass2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkRenderPassCreateInfo2KHR(vkStream, (const VkRenderPassCreateInfo2KHR*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    VkResult marshal_vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateRenderPass2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkRenderPassCreateInfo2KHR* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkRenderPass* pRenderPass)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo2KHR));
-    unmarshal_VkRenderPassCreateInfo2KHR(vkStream, (VkRenderPassCreateInfo2KHR*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
-    VkResult unmarshal_vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateRenderPass2KHR_VkResult_return;
-}
-
 void marshal_VkSubpassBeginInfoKHR(
     VulkanStream* vkStream,
     const VkSubpassBeginInfoKHR* forMarshaling)
@@ -14050,32 +6390,6 @@ void unmarshal_VkSubpassBeginInfoKHR(
     vkStream->read((VkSubpassContents*)&forUnmarshaling->contents, sizeof(VkSubpassContents));
 }
 
-void marshal_vkCmdBeginRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-{
-    uint32_t opcode = OP_vkCmdBeginRenderPass2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkRenderPassBeginInfo(vkStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
-    marshal_VkSubpassBeginInfoKHR(vkStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
-}
-
-void unmarshal_vkCmdBeginRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkRenderPassBeginInfo* pRenderPassBegin,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
-    unmarshal_VkRenderPassBeginInfo(vkStream, (VkRenderPassBeginInfo*)(pRenderPassBegin));
-    vkStream->alloc((void**)&pSubpassBeginInfo, sizeof(const VkSubpassBeginInfoKHR));
-    unmarshal_VkSubpassBeginInfoKHR(vkStream, (VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
-}
-
 void marshal_VkSubpassEndInfoKHR(
     VulkanStream* vkStream,
     const VkSubpassEndInfoKHR* forMarshaling)
@@ -14094,53 +6408,6 @@ void unmarshal_VkSubpassEndInfoKHR(
     // TODO: Unsupported : const void* pNext
 }
 
-void marshal_vkCmdNextSubpass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-    uint32_t opcode = OP_vkCmdNextSubpass2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkSubpassBeginInfoKHR(vkStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
-    marshal_VkSubpassEndInfoKHR(vkStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
-}
-
-void unmarshal_vkCmdNextSubpass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pSubpassBeginInfo, sizeof(const VkSubpassBeginInfoKHR));
-    unmarshal_VkSubpassBeginInfoKHR(vkStream, (VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
-    vkStream->alloc((void**)&pSubpassEndInfo, sizeof(const VkSubpassEndInfoKHR));
-    unmarshal_VkSubpassEndInfoKHR(vkStream, (VkSubpassEndInfoKHR*)(pSubpassEndInfo));
-}
-
-void marshal_vkCmdEndRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-    uint32_t opcode = OP_vkCmdEndRenderPass2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkSubpassEndInfoKHR(vkStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
-}
-
-void unmarshal_vkCmdEndRenderPass2KHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pSubpassEndInfo, sizeof(const VkSubpassEndInfoKHR));
-    unmarshal_VkSubpassEndInfoKHR(vkStream, (VkSubpassEndInfoKHR*)(pSubpassEndInfo));
-}
-
 #endif
 #ifdef VK_KHR_shared_presentable_image
 void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
@@ -14163,59 +6430,8 @@ void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
     vkStream->read((VkImageUsageFlags*)&forUnmarshaling->sharedPresentSupportedUsageFlags, sizeof(VkImageUsageFlags));
 }
 
-VkResult marshal_vkGetSwapchainStatusKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain)
-{
-    uint32_t opcode = OP_vkGetSwapchainStatusKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    VkResult marshal_vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetSwapchainStatusKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetSwapchainStatusKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    VkResult unmarshal_vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetSwapchainStatusKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_external_fence_capabilities
-void marshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
-    marshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
-    VkExternalFenceProperties* pExternalFenceProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pExternalFenceInfo, sizeof(const VkPhysicalDeviceExternalFenceInfo));
-    unmarshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
-    unmarshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
-}
-
 #endif
 #ifdef VK_KHR_external_fence
 #endif
@@ -14303,64 +6519,6 @@ void unmarshal_VkFenceGetWin32HandleInfoKHR(
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
-VkResult marshal_vkImportFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-{
-    uint32_t opcode = OP_vkImportFenceWin32HandleKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImportFenceWin32HandleInfoKHR(vkStream, (const VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
-    VkResult marshal_vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkImportFenceWin32HandleKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkImportFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pImportFenceWin32HandleInfo, sizeof(const VkImportFenceWin32HandleInfoKHR));
-    unmarshal_VkImportFenceWin32HandleInfoKHR(vkStream, (VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
-    VkResult unmarshal_vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkImportFenceWin32HandleKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    uint32_t opcode = OP_vkGetFenceWin32HandleKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkFenceGetWin32HandleInfoKHR(vkStream, (const VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult marshal_vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetFenceWin32HandleKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetFenceWin32HandleKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
-    HANDLE* pHandle)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkFenceGetWin32HandleInfoKHR));
-    unmarshal_VkFenceGetWin32HandleInfoKHR(vkStream, (VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
-    vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult unmarshal_vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetFenceWin32HandleKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_external_fence_fd
 void marshal_VkImportFenceFdInfoKHR(
@@ -14411,64 +6569,6 @@ void unmarshal_VkFenceGetFdInfoKHR(
     vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
 }
 
-VkResult marshal_vkImportFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-{
-    uint32_t opcode = OP_vkImportFenceFdKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImportFenceFdInfoKHR(vkStream, (const VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
-    VkResult marshal_vkImportFenceFdKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkImportFenceFdKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkImportFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pImportFenceFdInfo, sizeof(const VkImportFenceFdInfoKHR));
-    unmarshal_VkImportFenceFdInfoKHR(vkStream, (VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
-    VkResult unmarshal_vkImportFenceFdKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkImportFenceFdKHR_VkResult_return;
-}
-
-VkResult marshal_vkGetFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    uint32_t opcode = OP_vkGetFenceFdKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkFenceGetFdInfoKHR(vkStream, (const VkFenceGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->read((int*)pFd, sizeof(int));
-    VkResult marshal_vkGetFenceFdKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetFenceFdKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetFenceFdKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkFenceGetFdInfoKHR* pGetFdInfo,
-    int* pFd)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkFenceGetFdInfoKHR));
-    unmarshal_VkFenceGetFdInfoKHR(vkStream, (VkFenceGetFdInfoKHR*)(pGetFdInfo));
-    vkStream->write((int*)pFd, sizeof(int));
-    VkResult unmarshal_vkGetFenceFdKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetFenceFdKHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_maintenance2
 #endif
@@ -14533,78 +6633,6 @@ void unmarshal_VkSurfaceFormat2KHR(
     unmarshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(&forUnmarshaling->surfaceFormat));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
-    marshal_VkSurfaceCapabilities2KHR(vkStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
-    VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pSurfaceInfo, sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
-    unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
-    unmarshal_VkSurfaceCapabilities2KHR(vkStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
-}
-
-VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormat2KHR* pSurfaceFormats)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
-    vkStream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
-    {
-        marshal_VkSurfaceFormat2KHR(vkStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
-    uint32_t* pSurfaceFormatCount,
-    VkSurfaceFormat2KHR* pSurfaceFormats)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pSurfaceInfo, sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
-    unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
-    vkStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
-    {
-        unmarshal_VkSurfaceFormat2KHR(vkStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_variable_pointers
 #endif
@@ -14711,149 +6739,6 @@ void unmarshal_VkDisplayPlaneCapabilities2KHR(
     unmarshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(&forUnmarshaling->capabilities));
 }
 
-VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayProperties2KHR* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayProperties2KHR(vkStream, (VkDisplayProperties2KHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayProperties2KHR* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayProperties2KHR(vkStream, (VkDisplayProperties2KHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
-}
-
-VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlaneProperties2KHR* pProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayPlaneProperties2KHR(vkStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    uint32_t* pPropertyCount,
-    VkDisplayPlaneProperties2KHR* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayPlaneProperties2KHR(vkStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
-}
-
-VkResult marshal_vkGetDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModeProperties2KHR* pProperties)
-{
-    uint32_t opcode = OP_vkGetDisplayModeProperties2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        marshal_VkDisplayModeProperties2KHR(vkStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
-    }
-    VkResult marshal_vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDisplayModeProperties2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetDisplayModeProperties2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display,
-    uint32_t* pPropertyCount,
-    VkDisplayModeProperties2KHR* pProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
-    {
-        unmarshal_VkDisplayModeProperties2KHR(vkStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
-    }
-    VkResult unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return;
-}
-
-VkResult marshal_vkGetDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
-    VkDisplayPlaneCapabilities2KHR* pCapabilities)
-{
-    uint32_t opcode = OP_vkGetDisplayPlaneCapabilities2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkDisplayPlaneInfo2KHR(vkStream, (const VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
-    marshal_VkDisplayPlaneCapabilities2KHR(vkStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
-    VkResult marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
-    VkDisplayPlaneCapabilities2KHR* pCapabilities)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->alloc((void**)&pDisplayPlaneInfo, sizeof(const VkDisplayPlaneInfo2KHR));
-    unmarshal_VkDisplayPlaneInfo2KHR(vkStream, (VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
-    unmarshal_VkDisplayPlaneCapabilities2KHR(vkStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
-    VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_dedicated_allocation
 #endif
@@ -14862,91 +6747,6 @@ VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR(
 #ifdef VK_KHR_relaxed_block_layout
 #endif
 #ifdef VK_KHR_get_memory_requirements2
-void marshal_vkGetImageMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageMemoryRequirements2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageMemoryRequirementsInfo2(vkStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
-    marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetImageMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
-    unmarshal_VkImageMemoryRequirementsInfo2(vkStream, (VkImageMemoryRequirementsInfo2*)(pInfo));
-    unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void marshal_vkGetBufferMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetBufferMemoryRequirements2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkBufferMemoryRequirementsInfo2(vkStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
-    marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void unmarshal_vkGetBufferMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkBufferMemoryRequirementsInfo2* pInfo,
-    VkMemoryRequirements2* pMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
-    unmarshal_VkBufferMemoryRequirementsInfo2(vkStream, (VkBufferMemoryRequirementsInfo2*)(pInfo));
-    unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
-}
-
-void marshal_vkGetImageSparseMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-    uint32_t opcode = OP_vkGetImageSparseMemoryRequirements2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
-    vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        marshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
-    }
-}
-
-void unmarshal_vkGetImageSparseMemoryRequirements2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkImageSparseMemoryRequirementsInfo2* pInfo,
-    uint32_t* pSparseMemoryRequirementCount,
-    VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkImageSparseMemoryRequirementsInfo2));
-    unmarshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (VkImageSparseMemoryRequirementsInfo2*)(pInfo));
-    vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
-    {
-        unmarshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
-    }
-}
-
 #endif
 #ifdef VK_KHR_image_format_list
 void marshal_VkImageFormatListCreateInfoKHR(
@@ -14974,268 +6774,12 @@ void unmarshal_VkImageFormatListCreateInfoKHR(
 
 #endif
 #ifdef VK_KHR_sampler_ycbcr_conversion
-VkResult marshal_vkCreateSamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion)
-{
-    uint32_t opcode = OP_vkCreateSamplerYcbcrConversionKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    VkResult marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSamplerYcbcrConversion* pYcbcrConversion)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerYcbcrConversionCreateInfo));
-    unmarshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
-}
-
-void marshal_vkDestroySamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroySamplerYcbcrConversionKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroySamplerYcbcrConversionKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSamplerYcbcrConversion ycbcrConversion,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
 #endif
 #ifdef VK_KHR_bind_memory2
-VkResult marshal_vkBindBufferMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos)
-{
-    uint32_t opcode = OP_vkBindBufferMemory2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        marshal_VkBindBufferMemoryInfo(vkStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult marshal_vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindBufferMemory2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkBindBufferMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindBufferMemoryInfo* pBindInfos)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        unmarshal_VkBindBufferMemoryInfo(vkStream, (VkBindBufferMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult unmarshal_vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindBufferMemory2KHR_VkResult_return;
-}
-
-VkResult marshal_vkBindImageMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos)
-{
-    uint32_t opcode = OP_vkBindImageMemory2KHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        marshal_VkBindImageMemoryInfo(vkStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult marshal_vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
-    return marshal_vkBindImageMemory2KHR_VkResult_return;
-}
-
-VkResult unmarshal_vkBindImageMemory2KHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t bindInfoCount,
-    const VkBindImageMemoryInfo* pBindInfos)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
-    for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
-    {
-        unmarshal_VkBindImageMemoryInfo(vkStream, (VkBindImageMemoryInfo*)(pBindInfos + i));
-    }
-    VkResult unmarshal_vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkBindImageMemory2KHR_VkResult_return;
-}
-
 #endif
 #ifdef VK_KHR_maintenance3
-void marshal_vkGetDescriptorSetLayoutSupportKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport)
-{
-    uint32_t opcode = OP_vkGetDescriptorSetLayoutSupportKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    marshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
-}
-
-void unmarshal_vkGetDescriptorSetLayoutSupportKHR(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
-    VkDescriptorSetLayoutSupport* pSupport)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
-    unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
-    unmarshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
-}
-
 #endif
 #ifdef VK_KHR_draw_indirect_count
-void marshal_vkCmdDrawIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    uint32_t opcode = OP_vkCmdDrawIndirectCountKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDrawIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void marshal_vkCmdDrawIndexedIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    uint32_t opcode = OP_vkCmdDrawIndexedIndirectCountKHR;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDrawIndexedIndirectCountKHR(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
-}
-
 #endif
 #ifdef VK_KHR_8bit_storage
 void marshal_VkPhysicalDevice8BitStorageFeaturesKHR(
@@ -15297,127 +6841,6 @@ void unmarshal_VkDebugReportCallbackCreateInfoEXT(
     }
 }
 
-VkResult marshal_vkCreateDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugReportCallbackEXT* pCallback)
-{
-    uint32_t opcode = OP_vkCreateDebugReportCallbackEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkDebugReportCallbackCreateInfoEXT(vkStream, (const VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
-    VkResult marshal_vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDebugReportCallbackEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugReportCallbackEXT* pCallback)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDebugReportCallbackCreateInfoEXT));
-    unmarshal_VkDebugReportCallbackCreateInfoEXT(vkStream, (VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
-    VkResult unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return;
-}
-
-void marshal_vkDestroyDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportCallbackEXT callback,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDebugReportCallbackEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDebugReportCallbackEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportCallbackEXT callback,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_vkDebugReportMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportFlagsEXT flags,
-    VkDebugReportObjectTypeEXT objectType,
-    uint64_t object,
-    size_t location,
-    int32_t messageCode,
-    const char* pLayerPrefix,
-    const char* pMessage)
-{
-    uint32_t opcode = OP_vkDebugReportMessageEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
-    vkStream->write((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
-    vkStream->write((uint64_t*)&object, sizeof(uint64_t));
-    vkStream->write((size_t*)&location, sizeof(size_t));
-    vkStream->write((int32_t*)&messageCode, sizeof(int32_t));
-    vkStream->putString(pLayerPrefix);
-    vkStream->putString(pMessage);
-}
-
-void unmarshal_vkDebugReportMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugReportFlagsEXT flags,
-    VkDebugReportObjectTypeEXT objectType,
-    uint64_t object,
-    size_t location,
-    int32_t messageCode,
-    const char* pLayerPrefix,
-    const char* pMessage)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
-    vkStream->read((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
-    vkStream->read((uint64_t*)&object, sizeof(uint64_t));
-    vkStream->read((size_t*)&location, sizeof(size_t));
-    vkStream->read((int32_t*)&messageCode, sizeof(int32_t));
-    vkStream->loadStringInPlace((char**)&pLayerPrefix);
-    vkStream->loadStringInPlace((char**)&pMessage);
-}
-
 #endif
 #ifdef VK_NV_glsl_shader
 #endif
@@ -15511,132 +6934,20 @@ void marshal_VkDebugMarkerMarkerInfoEXT(
 {
     vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
     vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->putString(forMarshaling->pMarkerName);
-    vkStream->write((float*)forMarshaling->color, 4 * sizeof(float));
-}
-
-void unmarshal_VkDebugMarkerMarkerInfoEXT(
-    VulkanStream* vkStream,
-    VkDebugMarkerMarkerInfoEXT* forUnmarshaling)
-{
-    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
-    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
-    // TODO: Unsupported : const void* pNext
-    vkStream->loadStringInPlace((char**)&forUnmarshaling->pMarkerName);
-    vkStream->read((float*)forUnmarshaling->color, 4 * sizeof(float));
-}
-
-VkResult marshal_vkDebugMarkerSetObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-{
-    uint32_t opcode = OP_vkDebugMarkerSetObjectTagEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDebugMarkerObjectTagInfoEXT(vkStream, (const VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
-    VkResult marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkDebugMarkerSetObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pTagInfo, sizeof(const VkDebugMarkerObjectTagInfoEXT));
-    unmarshal_VkDebugMarkerObjectTagInfoEXT(vkStream, (VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
-    VkResult unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
-}
-
-VkResult marshal_vkDebugMarkerSetObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-{
-    uint32_t opcode = OP_vkDebugMarkerSetObjectNameEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDebugMarkerObjectNameInfoEXT(vkStream, (const VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
-    VkResult marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkDebugMarkerSetObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pNameInfo, sizeof(const VkDebugMarkerObjectNameInfoEXT));
-    unmarshal_VkDebugMarkerObjectNameInfoEXT(vkStream, (VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
-    VkResult unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
-}
-
-void marshal_vkCmdDebugMarkerBeginEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-{
-    uint32_t opcode = OP_vkCmdDebugMarkerBeginEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkDebugMarkerMarkerInfoEXT(vkStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
-}
-
-void unmarshal_vkCmdDebugMarkerBeginEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pMarkerInfo, sizeof(const VkDebugMarkerMarkerInfoEXT));
-    unmarshal_VkDebugMarkerMarkerInfoEXT(vkStream, (VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
-}
-
-void marshal_vkCmdDebugMarkerEndEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    uint32_t opcode = OP_vkCmdDebugMarkerEndEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void unmarshal_vkCmdDebugMarkerEndEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void marshal_vkCmdDebugMarkerInsertEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-{
-    uint32_t opcode = OP_vkCmdDebugMarkerInsertEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkDebugMarkerMarkerInfoEXT(vkStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+    // TODO: Unsupported : const void* pNext
+    vkStream->putString(forMarshaling->pMarkerName);
+    vkStream->write((float*)forMarshaling->color, 4 * sizeof(float));
 }
 
-void unmarshal_vkCmdDebugMarkerInsertEXT(
+void unmarshal_VkDebugMarkerMarkerInfoEXT(
     VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+    VkDebugMarkerMarkerInfoEXT* forUnmarshaling)
 {
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pMarkerInfo, sizeof(const VkDebugMarkerMarkerInfoEXT));
-    unmarshal_VkDebugMarkerMarkerInfoEXT(vkStream, (VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+    vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+    vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+    // TODO: Unsupported : const void* pNext
+    vkStream->loadStringInPlace((char**)&forUnmarshaling->pMarkerName);
+    vkStream->read((float*)forUnmarshaling->color, 4 * sizeof(float));
 }
 
 #endif
@@ -15707,86 +7018,6 @@ void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
 
 #endif
 #ifdef VK_AMD_draw_indirect_count
-void marshal_vkCmdDrawIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    uint32_t opcode = OP_vkCmdDrawIndirectCountAMD;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDrawIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void marshal_vkCmdDrawIndexedIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    uint32_t opcode = OP_vkCmdDrawIndexedIndirectCountAMD;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdDrawIndexedIndirectCountAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkBuffer buffer,
-    VkDeviceSize offset,
-    VkBuffer countBuffer,
-    VkDeviceSize countBufferOffset,
-    uint32_t maxDrawCount,
-    uint32_t stride)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
-    vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
-}
-
 #endif
 #ifdef VK_AMD_negative_viewport_height
 #endif
@@ -15865,48 +7096,6 @@ void unmarshal_VkShaderStatisticsInfoAMD(
     vkStream->read((uint32_t*)forUnmarshaling->computeWorkGroupSize, 3 * sizeof(uint32_t));
 }
 
-VkResult marshal_vkGetShaderInfoAMD(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    VkShaderStageFlagBits shaderStage,
-    VkShaderInfoTypeAMD infoType,
-    size_t* pInfoSize,
-    void* pInfo)
-{
-    uint32_t opcode = OP_vkGetShaderInfoAMD;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
-    vkStream->write((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
-    vkStream->write((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
-    vkStream->read((size_t*)pInfoSize, sizeof(size_t));
-    vkStream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
-    VkResult marshal_vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetShaderInfoAMD_VkResult_return;
-}
-
-VkResult unmarshal_vkGetShaderInfoAMD(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkPipeline pipeline,
-    VkShaderStageFlagBits shaderStage,
-    VkShaderInfoTypeAMD infoType,
-    size_t* pInfoSize,
-    void* pInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
-    vkStream->read((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
-    vkStream->read((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
-    vkStream->write((size_t*)pInfoSize, sizeof(size_t));
-    vkStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
-    VkResult unmarshal_vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetShaderInfoAMD_VkResult_return;
-}
-
 #endif
 #ifdef VK_AMD_shader_image_load_store_lod
 #endif
@@ -15933,56 +7122,6 @@ void unmarshal_VkExternalImageFormatPropertiesNV(
     vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
 }
 
-VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkExternalMemoryHandleTypeFlagsNV externalHandleType,
-    VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->write((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
-    vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
-    marshal_VkExternalImageFormatPropertiesNV(vkStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
-    VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkFormat format,
-    VkImageType type,
-    VkImageTiling tiling,
-    VkImageUsageFlags usage,
-    VkImageCreateFlags flags,
-    VkExternalMemoryHandleTypeFlagsNV externalHandleType,
-    VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkFormat*)&format, sizeof(VkFormat));
-    vkStream->read((VkImageType*)&type, sizeof(VkImageType));
-    vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
-    vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
-    vkStream->read((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
-    vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
-    unmarshal_VkExternalImageFormatPropertiesNV(vkStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
-    VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
-}
-
 #endif
 #ifdef VK_NV_external_memory
 void marshal_VkExternalMemoryImageCreateInfoNV(
@@ -16080,40 +7219,6 @@ void unmarshal_VkExportMemoryWin32HandleInfoNV(
     vkStream->read((DWORD*)&forUnmarshaling->dwAccess, sizeof(DWORD));
 }
 
-VkResult marshal_vkGetMemoryWin32HandleNV(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkExternalMemoryHandleTypeFlagsNV handleType,
-    HANDLE* pHandle)
-{
-    uint32_t opcode = OP_vkGetMemoryWin32HandleNV;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
-    vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult marshal_vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryWin32HandleNV_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryWin32HandleNV(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDeviceMemory memory,
-    VkExternalMemoryHandleTypeFlagsNV handleType,
-    HANDLE* pHandle)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
-    vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
-    vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
-    VkResult unmarshal_vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryWin32HandleNV_VkResult_return;
-}
-
 #endif
 #ifdef VK_NV_win32_keyed_mutex
 void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
@@ -16211,50 +7316,6 @@ void unmarshal_VkViSurfaceCreateInfoNN(
     }
 }
 
-VkResult marshal_vkCreateViSurfaceNN(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkViSurfaceCreateInfoNN* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    uint32_t opcode = OP_vkCreateViSurfaceNN;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkViSurfaceCreateInfoNN(vkStream, (const VkViSurfaceCreateInfoNN*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateViSurfaceNN_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateViSurfaceNN(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkViSurfaceCreateInfoNN* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkViSurfaceCreateInfoNN));
-    unmarshal_VkViSurfaceCreateInfoNN(vkStream, (VkViSurfaceCreateInfoNN*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateViSurfaceNN_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_shader_subgroup_ballot
 #endif
@@ -16327,43 +7388,6 @@ void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
     vkStream->read((VkBool32*)&forUnmarshaling->conditionalRenderingEnable, sizeof(VkBool32));
 }
 
-void marshal_vkCmdBeginConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-{
-    uint32_t opcode = OP_vkCmdBeginConditionalRenderingEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkConditionalRenderingBeginInfoEXT(vkStream, (const VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
-}
-
-void unmarshal_vkCmdBeginConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pConditionalRenderingBegin, sizeof(const VkConditionalRenderingBeginInfoEXT));
-    unmarshal_VkConditionalRenderingBeginInfoEXT(vkStream, (VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
-}
-
-void marshal_vkCmdEndConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    uint32_t opcode = OP_vkCmdEndConditionalRenderingEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void unmarshal_vkCmdEndConditionalRenderingEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
 #endif
 #ifdef VK_NVX_device_generated_commands
 void marshal_VkDeviceGeneratedCommandsFeaturesNVX(
@@ -16705,303 +7729,6 @@ void unmarshal_VkObjectTablePushConstantEntryNVX(
     vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
 }
 
-void marshal_vkCmdProcessCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-{
-    uint32_t opcode = OP_vkCmdProcessCommandsNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkCmdProcessCommandsInfoNVX(vkStream, (const VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
-}
-
-void unmarshal_vkCmdProcessCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pProcessCommandsInfo, sizeof(const VkCmdProcessCommandsInfoNVX));
-    unmarshal_VkCmdProcessCommandsInfoNVX(vkStream, (VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
-}
-
-void marshal_vkCmdReserveSpaceForCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-{
-    uint32_t opcode = OP_vkCmdReserveSpaceForCommandsNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkCmdReserveSpaceForCommandsInfoNVX(vkStream, (const VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
-}
-
-void unmarshal_vkCmdReserveSpaceForCommandsNVX(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pReserveSpaceInfo, sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
-    unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(vkStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
-}
-
-VkResult marshal_vkCreateIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-{
-    uint32_t opcode = OP_vkCreateIndirectCommandsLayoutNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkIndirectCommandsLayoutCreateInfoNVX(vkStream, (const VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
-    VkResult marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
-    unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(vkStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
-    VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
-}
-
-void marshal_vkDestroyIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkIndirectCommandsLayoutNVX indirectCommandsLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyIndirectCommandsLayoutNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyIndirectCommandsLayoutNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkIndirectCommandsLayoutNVX indirectCommandsLayout,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkCreateObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkObjectTableCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkObjectTableNVX* pObjectTable)
-{
-    uint32_t opcode = OP_vkCreateObjectTableNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkObjectTableCreateInfoNVX(vkStream, (const VkObjectTableCreateInfoNVX*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
-    VkResult marshal_vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateObjectTableNVX_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkObjectTableCreateInfoNVX* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkObjectTableNVX* pObjectTable)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkObjectTableCreateInfoNVX));
-    unmarshal_VkObjectTableCreateInfoNVX(vkStream, (VkObjectTableCreateInfoNVX*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
-    VkResult unmarshal_vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateObjectTableNVX_VkResult_return;
-}
-
-void marshal_vkDestroyObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyObjectTableNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyObjectTableNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkRegisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectTableEntryNVX* const* ppObjectTableEntries,
-    const uint32_t* pObjectIndices)
-{
-    uint32_t opcode = OP_vkRegisterObjectsNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
-    vkStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    VkResult marshal_vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
-    return marshal_vkRegisterObjectsNVX_VkResult_return;
-}
-
-VkResult unmarshal_vkRegisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectTableEntryNVX* const* ppObjectTableEntries,
-    const uint32_t* pObjectIndices)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->read((uint32_t*)&objectCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    VkResult unmarshal_vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkRegisterObjectsNVX_VkResult_return;
-}
-
-VkResult marshal_vkUnregisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectEntryTypeNVX* pObjectEntryTypes,
-    const uint32_t* pObjectIndices)
-{
-    uint32_t opcode = OP_vkUnregisterObjectsNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
-    vkStream->write((const VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
-    vkStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    VkResult marshal_vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
-    return marshal_vkUnregisterObjectsNVX_VkResult_return;
-}
-
-VkResult unmarshal_vkUnregisterObjectsNVX(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkObjectTableNVX objectTable,
-    uint32_t objectCount,
-    const VkObjectEntryTypeNVX* pObjectEntryTypes,
-    const uint32_t* pObjectIndices)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
-    vkStream->read((uint32_t*)&objectCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
-    vkStream->read((VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
-    vkStream->alloc((void**)&pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    vkStream->read((uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
-    VkResult unmarshal_vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkUnregisterObjectsNVX_VkResult_return;
-}
-
-void marshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
-    VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    marshal_VkDeviceGeneratedCommandsFeaturesNVX(vkStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
-    marshal_VkDeviceGeneratedCommandsLimitsNVX(vkStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
-}
-
-void unmarshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
-    VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(vkStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
-    unmarshal_VkDeviceGeneratedCommandsLimitsNVX(vkStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
-}
-
 #endif
 #ifdef VK_NV_clip_space_w_scaling
 void marshal_VkViewportWScalingNV(
@@ -17059,135 +7786,10 @@ void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
     }
 }
 
-void marshal_vkCmdSetViewportWScalingNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewportWScalingNV* pViewportWScalings)
-{
-    uint32_t opcode = OP_vkCmdSetViewportWScalingNV;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
-    {
-        marshal_VkViewportWScalingNV(vkStream, (const VkViewportWScalingNV*)(pViewportWScalings + i));
-    }
-}
-
-void unmarshal_vkCmdSetViewportWScalingNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstViewport,
-    uint32_t viewportCount,
-    const VkViewportWScalingNV* pViewportWScalings)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&firstViewport, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&viewportCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pViewportWScalings, ((viewportCount)) * sizeof(const VkViewportWScalingNV));
-    for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
-    {
-        unmarshal_VkViewportWScalingNV(vkStream, (VkViewportWScalingNV*)(pViewportWScalings + i));
-    }
-}
-
 #endif
 #ifdef VK_EXT_direct_mode_display
-VkResult marshal_vkReleaseDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display)
-{
-    uint32_t opcode = OP_vkReleaseDisplayEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    VkResult marshal_vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkReleaseDisplayEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkReleaseDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkDisplayKHR display)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    VkResult unmarshal_vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkReleaseDisplayEXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_acquire_xlib_display
-VkResult marshal_vkAcquireXlibDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    VkDisplayKHR display)
-{
-    uint32_t opcode = OP_vkAcquireXlibDisplayEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((Display*)dpy, sizeof(Display));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    VkResult marshal_vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkAcquireXlibDisplayEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkAcquireXlibDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    VkDisplayKHR display)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((Display*)dpy, sizeof(Display));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    VkResult unmarshal_vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkAcquireXlibDisplayEXT_VkResult_return;
-}
-
-VkResult marshal_vkGetRandROutputDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    RROutput rrOutput,
-    VkDisplayKHR* pDisplay)
-{
-    uint32_t opcode = OP_vkGetRandROutputDisplayEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((Display*)dpy, sizeof(Display));
-    vkStream->write((RROutput*)&rrOutput, sizeof(RROutput));
-    vkStream->read((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
-    VkResult marshal_vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetRandROutputDisplayEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkGetRandROutputDisplayEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    Display* dpy,
-    RROutput rrOutput,
-    VkDisplayKHR* pDisplay)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((Display*)dpy, sizeof(Display));
-    vkStream->read((RROutput*)&rrOutput, sizeof(RROutput));
-    vkStream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
-    VkResult unmarshal_vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetRandROutputDisplayEXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_display_surface_counter
 void marshal_VkSurfaceCapabilities2EXT(
@@ -17230,36 +7832,6 @@ void unmarshal_VkSurfaceCapabilities2EXT(
     vkStream->read((VkSurfaceCounterFlagsEXT*)&forUnmarshaling->supportedSurfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
 }
 
-VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    marshal_VkSurfaceCapabilities2EXT(vkStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
-    VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSurfaceKHR surface,
-    VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
-    unmarshal_VkSurfaceCapabilities2EXT(vkStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
-    VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_display_control
 void marshal_VkDisplayPowerInfoEXT(
@@ -17342,163 +7914,6 @@ void unmarshal_VkSwapchainCounterCreateInfoEXT(
     vkStream->read((VkSurfaceCounterFlagsEXT*)&forUnmarshaling->surfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
 }
 
-VkResult marshal_vkDisplayPowerControlEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-{
-    uint32_t opcode = OP_vkDisplayPowerControlEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    marshal_VkDisplayPowerInfoEXT(vkStream, (const VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
-    VkResult marshal_vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkDisplayPowerControlEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkDisplayPowerControlEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->alloc((void**)&pDisplayPowerInfo, sizeof(const VkDisplayPowerInfoEXT));
-    unmarshal_VkDisplayPowerInfoEXT(vkStream, (VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
-    VkResult unmarshal_vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkDisplayPowerControlEXT_VkResult_return;
-}
-
-VkResult marshal_vkRegisterDeviceEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceEventInfoEXT* pDeviceEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    uint32_t opcode = OP_vkRegisterDeviceEventEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDeviceEventInfoEXT(vkStream, (const VkDeviceEventInfoEXT*)(pDeviceEventInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkFence*)pFence, sizeof(VkFence));
-    VkResult marshal_vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkRegisterDeviceEventEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkRegisterDeviceEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDeviceEventInfoEXT* pDeviceEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pDeviceEventInfo, sizeof(const VkDeviceEventInfoEXT));
-    unmarshal_VkDeviceEventInfoEXT(vkStream, (VkDeviceEventInfoEXT*)(pDeviceEventInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkFence*)pFence, sizeof(VkFence));
-    VkResult unmarshal_vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkRegisterDeviceEventEXT_VkResult_return;
-}
-
-VkResult marshal_vkRegisterDisplayEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayEventInfoEXT* pDisplayEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    uint32_t opcode = OP_vkRegisterDisplayEventEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    marshal_VkDisplayEventInfoEXT(vkStream, (const VkDisplayEventInfoEXT*)(pDisplayEventInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkFence*)pFence, sizeof(VkFence));
-    VkResult marshal_vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkRegisterDisplayEventEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkRegisterDisplayEventEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkDisplayKHR display,
-    const VkDisplayEventInfoEXT* pDisplayEventInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkFence* pFence)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
-    vkStream->alloc((void**)&pDisplayEventInfo, sizeof(const VkDisplayEventInfoEXT));
-    unmarshal_VkDisplayEventInfoEXT(vkStream, (VkDisplayEventInfoEXT*)(pDisplayEventInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkFence*)pFence, sizeof(VkFence));
-    VkResult unmarshal_vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkRegisterDisplayEventEXT_VkResult_return;
-}
-
-VkResult marshal_vkGetSwapchainCounterEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkSurfaceCounterFlagBitsEXT counter,
-    uint64_t* pCounterValue)
-{
-    uint32_t opcode = OP_vkGetSwapchainCounterEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
-    vkStream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
-    VkResult marshal_vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetSwapchainCounterEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkGetSwapchainCounterEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkSurfaceCounterFlagBitsEXT counter,
-    uint64_t* pCounterValue)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
-    vkStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
-    VkResult unmarshal_vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetSwapchainCounterEXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_GOOGLE_display_timing
 void marshal_VkRefreshCycleDurationGOOGLE(
@@ -17590,76 +8005,6 @@ void unmarshal_VkPresentTimesInfoGOOGLE(
     }
 }
 
-VkResult marshal_vkGetRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-{
-    uint32_t opcode = OP_vkGetRefreshCycleDurationGOOGLE;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    marshal_VkRefreshCycleDurationGOOGLE(vkStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
-    VkResult marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
-}
-
-VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    unmarshal_VkRefreshCycleDurationGOOGLE(vkStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
-    VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
-}
-
-VkResult marshal_vkGetPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pPresentationTimingCount,
-    VkPastPresentationTimingGOOGLE* pPresentationTimings)
-{
-    uint32_t opcode = OP_vkGetPastPresentationTimingGOOGLE;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
-    {
-        marshal_VkPastPresentationTimingGOOGLE(vkStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
-    }
-    VkResult marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
-}
-
-VkResult unmarshal_vkGetPastPresentationTimingGOOGLE(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkSwapchainKHR swapchain,
-    uint32_t* pPresentationTimingCount,
-    VkPastPresentationTimingGOOGLE* pPresentationTimings)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
-    vkStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
-    {
-        unmarshal_VkPastPresentationTimingGOOGLE(vkStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
-    }
-    VkResult unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
-}
-
 #endif
 #ifdef VK_NV_sample_mask_override_coverage
 #endif
@@ -17800,50 +8145,15 @@ void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
     // TODO: Unsupported : const void* pNext
     vkStream->read((VkPipelineDiscardRectangleStateCreateFlagsEXT*)&forUnmarshaling->flags, sizeof(VkPipelineDiscardRectangleStateCreateFlagsEXT));
     vkStream->read((VkDiscardRectangleModeEXT*)&forUnmarshaling->discardRectangleMode, sizeof(VkDiscardRectangleModeEXT));
-    vkStream->read((uint32_t*)&forUnmarshaling->discardRectangleCount, sizeof(uint32_t));
-    vkStream->read((VkRect2D**)&forUnmarshaling->pDiscardRectangles, sizeof(const VkRect2D*));
-    if (forUnmarshaling->pDiscardRectangles)
-    {
-        vkStream->alloc((void**)&forUnmarshaling->pDiscardRectangles, forUnmarshaling->discardRectangleCount * sizeof(const VkRect2D));
-        for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->discardRectangleCount; ++i)
-        {
-            unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDiscardRectangles + i));
-        }
-    }
-}
-
-void marshal_vkCmdSetDiscardRectangleEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstDiscardRectangle,
-    uint32_t discardRectangleCount,
-    const VkRect2D* pDiscardRectangles)
-{
-    uint32_t opcode = OP_vkCmdSetDiscardRectangleEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
-    vkStream->write((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
-    {
-        marshal_VkRect2D(vkStream, (const VkRect2D*)(pDiscardRectangles + i));
-    }
-}
-
-void unmarshal_vkCmdSetDiscardRectangleEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    uint32_t firstDiscardRectangle,
-    uint32_t discardRectangleCount,
-    const VkRect2D* pDiscardRectangles)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
-    vkStream->read((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pDiscardRectangles, ((discardRectangleCount)) * sizeof(const VkRect2D));
-    for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
+    vkStream->read((uint32_t*)&forUnmarshaling->discardRectangleCount, sizeof(uint32_t));
+    vkStream->read((VkRect2D**)&forUnmarshaling->pDiscardRectangles, sizeof(const VkRect2D*));
+    if (forUnmarshaling->pDiscardRectangles)
     {
-        unmarshal_VkRect2D(vkStream, (VkRect2D*)(pDiscardRectangles + i));
+        vkStream->alloc((void**)&forUnmarshaling->pDiscardRectangles, forUnmarshaling->discardRectangleCount * sizeof(const VkRect2D));
+        for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->discardRectangleCount; ++i)
+        {
+            unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDiscardRectangles + i));
+        }
     }
 }
 
@@ -17963,42 +8273,6 @@ void unmarshal_VkHdrMetadataEXT(
     vkStream->read((float*)&forUnmarshaling->maxFrameAverageLightLevel, sizeof(float));
 }
 
-void marshal_vkSetHdrMetadataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainKHR* pSwapchains,
-    const VkHdrMetadataEXT* pMetadata)
-{
-    uint32_t opcode = OP_vkSetHdrMetadataEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
-    vkStream->write((const VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
-    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
-    {
-        marshal_VkHdrMetadataEXT(vkStream, (const VkHdrMetadataEXT*)(pMetadata + i));
-    }
-}
-
-void unmarshal_vkSetHdrMetadataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    uint32_t swapchainCount,
-    const VkSwapchainKHR* pSwapchains,
-    const VkHdrMetadataEXT* pMetadata)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((uint32_t*)&swapchainCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
-    vkStream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
-    vkStream->alloc((void**)&pMetadata, ((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
-    for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
-    {
-        unmarshal_VkHdrMetadataEXT(vkStream, (VkHdrMetadataEXT*)(pMetadata + i));
-    }
-}
-
 #endif
 #ifdef VK_MVK_ios_surface
 void marshal_VkIOSSurfaceCreateInfoMVK(
@@ -18032,50 +8306,6 @@ void unmarshal_VkIOSSurfaceCreateInfoMVK(
     }
 }
 
-VkResult marshal_vkCreateIOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    uint32_t opcode = OP_vkCreateIOSSurfaceMVK;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkIOSSurfaceCreateInfoMVK(vkStream, (const VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateIOSSurfaceMVK_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateIOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkIOSSurfaceCreateInfoMVK));
-    unmarshal_VkIOSSurfaceCreateInfoMVK(vkStream, (VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateIOSSurfaceMVK_VkResult_return;
-}
-
 #endif
 #ifdef VK_MVK_macos_surface
 void marshal_VkMacOSSurfaceCreateInfoMVK(
@@ -18109,50 +8339,6 @@ void unmarshal_VkMacOSSurfaceCreateInfoMVK(
     }
 }
 
-VkResult marshal_vkCreateMacOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    uint32_t opcode = OP_vkCreateMacOSSurfaceMVK;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkMacOSSurfaceCreateInfoMVK(vkStream, (const VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult marshal_vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateMacOSSurfaceMVK_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateMacOSSurfaceMVK(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkSurfaceKHR* pSurface)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkMacOSSurfaceCreateInfoMVK));
-    unmarshal_VkMacOSSurfaceCreateInfoMVK(vkStream, (VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
-    VkResult unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_external_memory_dma_buf
 #endif
@@ -18354,282 +8540,6 @@ void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
     }
 }
 
-VkResult marshal_vkSetDebugUtilsObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-{
-    uint32_t opcode = OP_vkSetDebugUtilsObjectNameEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (const VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
-    VkResult marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkSetDebugUtilsObjectNameEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pNameInfo, sizeof(const VkDebugUtilsObjectNameInfoEXT));
-    unmarshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
-    VkResult unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
-}
-
-VkResult marshal_vkSetDebugUtilsObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-{
-    uint32_t opcode = OP_vkSetDebugUtilsObjectTagEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkDebugUtilsObjectTagInfoEXT(vkStream, (const VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
-    VkResult marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkSetDebugUtilsObjectTagEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pTagInfo, sizeof(const VkDebugUtilsObjectTagInfoEXT));
-    unmarshal_VkDebugUtilsObjectTagInfoEXT(vkStream, (VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
-    VkResult unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
-}
-
-void marshal_vkQueueBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    uint32_t opcode = OP_vkQueueBeginDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void unmarshal_vkQueueBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
-    unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void marshal_vkQueueEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue)
-{
-    uint32_t opcode = OP_vkQueueEndDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-}
-
-void unmarshal_vkQueueEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-}
-
-void marshal_vkQueueInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    uint32_t opcode = OP_vkQueueInsertDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void unmarshal_vkQueueInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
-    unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void marshal_vkCmdBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    uint32_t opcode = OP_vkCmdBeginDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void unmarshal_vkCmdBeginDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
-    unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void marshal_vkCmdEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    uint32_t opcode = OP_vkCmdEndDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void unmarshal_vkCmdEndDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-}
-
-void marshal_vkCmdInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    uint32_t opcode = OP_vkCmdInsertDebugUtilsLabelEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-void unmarshal_vkCmdInsertDebugUtilsLabelEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
-    unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
-}
-
-VkResult marshal_vkCreateDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugUtilsMessengerEXT* pMessenger)
-{
-    uint32_t opcode = OP_vkCreateDebugUtilsMessengerEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    marshal_VkDebugUtilsMessengerCreateInfoEXT(vkStream, (const VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
-    VkResult marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkDebugUtilsMessengerEXT* pMessenger)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
-    unmarshal_VkDebugUtilsMessengerCreateInfoEXT(vkStream, (VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
-    VkResult unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
-}
-
-void marshal_vkDestroyDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessengerEXT messenger,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyDebugUtilsMessengerEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyDebugUtilsMessengerEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessengerEXT messenger,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void marshal_vkSubmitDebugUtilsMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
-    VkDebugUtilsMessageTypeFlagsEXT messageTypes,
-    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-{
-    uint32_t opcode = OP_vkSubmitDebugUtilsMessageEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
-    vkStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
-    marshal_VkDebugUtilsMessengerCallbackDataEXT(vkStream, (const VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
-}
-
-void unmarshal_vkSubmitDebugUtilsMessageEXT(
-    VulkanStream* vkStream,
-    VkInstance instance,
-    VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
-    VkDebugUtilsMessageTypeFlagsEXT messageTypes,
-    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-{
-    vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
-    vkStream->read((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
-    vkStream->read((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
-    vkStream->alloc((void**)&pCallbackData, sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
-    unmarshal_VkDebugUtilsMessengerCallbackDataEXT(vkStream, (VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
-}
-
 #endif
 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
 void marshal_VkAndroidHardwareBufferUsageANDROID(
@@ -18769,68 +8679,6 @@ void unmarshal_VkExternalFormatANDROID(
     vkStream->read((uint64_t*)&forUnmarshaling->externalFormat, sizeof(uint64_t));
 }
 
-VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const AHardwareBuffer* buffer,
-    VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-{
-    uint32_t opcode = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((const AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
-    marshal_VkAndroidHardwareBufferPropertiesANDROID(vkStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
-    VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
-}
-
-VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const AHardwareBuffer* buffer,
-    VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&buffer, sizeof(const AHardwareBuffer));
-    vkStream->read((AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
-    unmarshal_VkAndroidHardwareBufferPropertiesANDROID(vkStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
-    VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
-}
-
-VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
-    AHardwareBuffer** pBuffer)
-{
-    uint32_t opcode = OP_vkGetMemoryAndroidHardwareBufferANDROID;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(vkStream, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
-    vkStream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
-    VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
-    AHardwareBuffer** pBuffer)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pInfo, sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
-    unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(vkStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
-    vkStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
-    VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_sampler_filter_minmax
 void marshal_VkSamplerReductionModeCreateInfoEXT(
@@ -19076,51 +8924,6 @@ void unmarshal_VkMultisamplePropertiesEXT(
     unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSampleLocationGridSize));
 }
 
-void marshal_vkCmdSetSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-{
-    uint32_t opcode = OP_vkCmdSetSampleLocationsEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    marshal_VkSampleLocationsInfoEXT(vkStream, (const VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
-}
-
-void unmarshal_vkCmdSetSampleLocationsEXT(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->alloc((void**)&pSampleLocationsInfo, sizeof(const VkSampleLocationsInfoEXT));
-    unmarshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
-}
-
-void marshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSampleCountFlagBits samples,
-    VkMultisamplePropertiesEXT* pMultisampleProperties)
-{
-    uint32_t opcode = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
-    marshal_VkMultisamplePropertiesEXT(vkStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
-}
-
-void unmarshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
-    VulkanStream* vkStream,
-    VkPhysicalDevice physicalDevice,
-    VkSampleCountFlagBits samples,
-    VkMultisamplePropertiesEXT* pMultisampleProperties)
-{
-    vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
-    vkStream->read((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
-    unmarshal_VkMultisamplePropertiesEXT(vkStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
-}
-
 #endif
 #ifdef VK_EXT_blend_operation_advanced
 void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
@@ -19313,152 +9116,6 @@ void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
     vkStream->read((VkValidationCacheEXT*)&forUnmarshaling->validationCache, sizeof(VkValidationCacheEXT));
 }
 
-VkResult marshal_vkCreateValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkValidationCacheCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkValidationCacheEXT* pValidationCache)
-{
-    uint32_t opcode = OP_vkCreateValidationCacheEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    marshal_VkValidationCacheCreateInfoEXT(vkStream, (const VkValidationCacheCreateInfoEXT*)(pCreateInfo));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->read((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
-    VkResult marshal_vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkCreateValidationCacheEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkCreateValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    const VkValidationCacheCreateInfoEXT* pCreateInfo,
-    const VkAllocationCallbacks* pAllocator,
-    VkValidationCacheEXT* pValidationCache)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->alloc((void**)&pCreateInfo, sizeof(const VkValidationCacheCreateInfoEXT));
-    unmarshal_VkValidationCacheCreateInfoEXT(vkStream, (VkValidationCacheCreateInfoEXT*)(pCreateInfo));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-    vkStream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
-    VkResult unmarshal_vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkCreateValidationCacheEXT_VkResult_return;
-}
-
-void marshal_vkDestroyValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    const VkAllocationCallbacks* pAllocator)
-{
-    uint32_t opcode = OP_vkDestroyValidationCacheEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
-    vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-void unmarshal_vkDestroyValidationCacheEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    const VkAllocationCallbacks* pAllocator)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
-    vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
-    if (pAllocator)
-    {
-        vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
-        unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
-    }
-}
-
-VkResult marshal_vkMergeValidationCachesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT dstCache,
-    uint32_t srcCacheCount,
-    const VkValidationCacheEXT* pSrcCaches)
-{
-    uint32_t opcode = OP_vkMergeValidationCachesEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
-    vkStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
-    vkStream->write((const VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
-    VkResult marshal_vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkMergeValidationCachesEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkMergeValidationCachesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT dstCache,
-    uint32_t srcCacheCount,
-    const VkValidationCacheEXT* pSrcCaches)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
-    vkStream->read((uint32_t*)&srcCacheCount, sizeof(uint32_t));
-    vkStream->alloc((void**)&pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
-    vkStream->read((VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
-    VkResult unmarshal_vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkMergeValidationCachesEXT_VkResult_return;
-}
-
-VkResult marshal_vkGetValidationCacheDataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    size_t* pDataSize,
-    void* pData)
-{
-    uint32_t opcode = OP_vkGetValidationCacheDataEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
-    vkStream->read((size_t*)pDataSize, sizeof(size_t));
-    vkStream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
-    VkResult marshal_vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetValidationCacheDataEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkGetValidationCacheDataEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkValidationCacheEXT validationCache,
-    size_t* pDataSize,
-    void* pData)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
-    vkStream->write((size_t*)pDataSize, sizeof(size_t));
-    vkStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
-    VkResult unmarshal_vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetValidationCacheDataEXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_EXT_descriptor_indexing
 void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
@@ -19746,83 +9403,8 @@ void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
     vkStream->read((VkDeviceSize*)&forUnmarshaling->minImportedHostPointerAlignment, sizeof(VkDeviceSize));
 }
 
-VkResult marshal_vkGetMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    const void* pHostPointer,
-    VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-{
-    uint32_t opcode = OP_vkGetMemoryHostPointerPropertiesEXT;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->write((const void**)&pHostPointer, sizeof(const void*));
-    if (pHostPointer)
-    {
-        vkStream->write((const void*)pHostPointer, sizeof(const uint8_t));
-    }
-    marshal_VkMemoryHostPointerPropertiesEXT(vkStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
-    VkResult marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
-    vkStream->read(&marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
-    return marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
-}
-
-VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT(
-    VulkanStream* vkStream,
-    VkDevice device,
-    VkExternalMemoryHandleTypeFlagBits handleType,
-    const void* pHostPointer,
-    VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-{
-    vkStream->read((VkDevice*)&device, sizeof(VkDevice));
-    vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
-    vkStream->read((void**)&pHostPointer, sizeof(const void*));
-    if (pHostPointer)
-    {
-        vkStream->alloc((void**)&pHostPointer, sizeof(const uint8_t));
-        vkStream->read((void*)pHostPointer, sizeof(const uint8_t));
-    }
-    unmarshal_VkMemoryHostPointerPropertiesEXT(vkStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
-    VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
-    vkStream->write(&unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
-    return unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
-}
-
 #endif
 #ifdef VK_AMD_buffer_marker
-void marshal_vkCmdWriteBufferMarkerAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    uint32_t marker)
-{
-    uint32_t opcode = OP_vkCmdWriteBufferMarkerAMD;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
-    vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->write((uint32_t*)&marker, sizeof(uint32_t));
-}
-
-void unmarshal_vkCmdWriteBufferMarkerAMD(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    VkPipelineStageFlagBits pipelineStage,
-    VkBuffer dstBuffer,
-    VkDeviceSize dstOffset,
-    uint32_t marker)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
-    vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
-    vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
-    vkStream->read((uint32_t*)&marker, sizeof(uint32_t));
-}
-
 #endif
 #ifdef VK_AMD_shader_core_properties
 void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
@@ -19993,65 +9575,6 @@ void unmarshal_VkCheckpointDataNV(
     }
 }
 
-void marshal_vkCmdSetCheckpointNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const void* pCheckpointMarker)
-{
-    uint32_t opcode = OP_vkCmdSetCheckpointNV;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->write((const void**)&pCheckpointMarker, sizeof(const void*));
-    if (pCheckpointMarker)
-    {
-        vkStream->write((const void*)pCheckpointMarker, sizeof(const uint8_t));
-    }
-}
-
-void unmarshal_vkCmdSetCheckpointNV(
-    VulkanStream* vkStream,
-    VkCommandBuffer commandBuffer,
-    const void* pCheckpointMarker)
-{
-    vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
-    vkStream->read((void**)&pCheckpointMarker, sizeof(const void*));
-    if (pCheckpointMarker)
-    {
-        vkStream->alloc((void**)&pCheckpointMarker, sizeof(const uint8_t));
-        vkStream->read((void*)pCheckpointMarker, sizeof(const uint8_t));
-    }
-}
-
-void marshal_vkGetQueueCheckpointDataNV(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t* pCheckpointDataCount,
-    VkCheckpointDataNV* pCheckpointData)
-{
-    uint32_t opcode = OP_vkGetQueueCheckpointDataNV;
-    vkStream->write(&opcode, sizeof(uint32_t));
-    vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
-    {
-        marshal_VkCheckpointDataNV(vkStream, (VkCheckpointDataNV*)(pCheckpointData + i));
-    }
-}
-
-void unmarshal_vkGetQueueCheckpointDataNV(
-    VulkanStream* vkStream,
-    VkQueue queue,
-    uint32_t* pCheckpointDataCount,
-    VkCheckpointDataNV* pCheckpointData)
-{
-    vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
-    vkStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
-    for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
-    {
-        unmarshal_VkCheckpointDataNV(vkStream, (VkCheckpointDataNV*)(pCheckpointData + i));
-    }
-}
-
 #endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.h b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
new file mode 100644
index 0000000000000000000000000000000000000000..aebb3a5e32580c4e6735ddfd6e457dd9849ddb6a
--- /dev/null
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
@@ -0,0 +1,3346 @@
+// 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.
+
+// Autogenerated module goldfish_vk_marshaling_guest
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// 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 "goldfish_vk_marshaling_guest.h"
+#include "VulkanStream.h"
+
+// Stuff we are not going to use but if included,
+// will cause compile errors. These are Android Vulkan
+// required extensions, but the approach will be to
+// implement them completely on the guest side.
+#undef VK_KHR_android_surface
+#undef VK_ANDROID_external_memory_android_hardware_buffer
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void marshal_VkApplicationInfo(
+    VulkanStream* vkStream,
+    const VkApplicationInfo* forMarshaling);
+
+void unmarshal_VkApplicationInfo(
+    VulkanStream* vkStream,
+    VkApplicationInfo* forUnmarshaling);
+
+void marshal_VkInstanceCreateInfo(
+    VulkanStream* vkStream,
+    const VkInstanceCreateInfo* forMarshaling);
+
+void unmarshal_VkInstanceCreateInfo(
+    VulkanStream* vkStream,
+    VkInstanceCreateInfo* forUnmarshaling);
+
+void marshal_VkAllocationCallbacks(
+    VulkanStream* vkStream,
+    const VkAllocationCallbacks* forMarshaling);
+
+void unmarshal_VkAllocationCallbacks(
+    VulkanStream* vkStream,
+    VkAllocationCallbacks* forUnmarshaling);
+
+#define OP_vkCreateInstance 20000
+#define OP_vkDestroyInstance 20001
+#define OP_vkEnumeratePhysicalDevices 20002
+void marshal_VkPhysicalDeviceFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceFeatures* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceFeatures 20003
+void marshal_VkFormatProperties(
+    VulkanStream* vkStream,
+    const VkFormatProperties* forMarshaling);
+
+void unmarshal_VkFormatProperties(
+    VulkanStream* vkStream,
+    VkFormatProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceFormatProperties 20004
+void marshal_VkExtent3D(
+    VulkanStream* vkStream,
+    const VkExtent3D* forMarshaling);
+
+void unmarshal_VkExtent3D(
+    VulkanStream* vkStream,
+    VkExtent3D* forUnmarshaling);
+
+void marshal_VkImageFormatProperties(
+    VulkanStream* vkStream,
+    const VkImageFormatProperties* forMarshaling);
+
+void unmarshal_VkImageFormatProperties(
+    VulkanStream* vkStream,
+    VkImageFormatProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceImageFormatProperties 20005
+void marshal_VkPhysicalDeviceLimits(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceLimits* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceLimits(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceLimits* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSparseProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSparseProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSparseProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSparseProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceProperties 20006
+void marshal_VkQueueFamilyProperties(
+    VulkanStream* vkStream,
+    const VkQueueFamilyProperties* forMarshaling);
+
+void unmarshal_VkQueueFamilyProperties(
+    VulkanStream* vkStream,
+    VkQueueFamilyProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceQueueFamilyProperties 20007
+void marshal_VkMemoryType(
+    VulkanStream* vkStream,
+    const VkMemoryType* forMarshaling);
+
+void unmarshal_VkMemoryType(
+    VulkanStream* vkStream,
+    VkMemoryType* forUnmarshaling);
+
+void marshal_VkMemoryHeap(
+    VulkanStream* vkStream,
+    const VkMemoryHeap* forMarshaling);
+
+void unmarshal_VkMemoryHeap(
+    VulkanStream* vkStream,
+    VkMemoryHeap* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMemoryProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMemoryProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMemoryProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMemoryProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceMemoryProperties 20008
+#define OP_vkGetInstanceProcAddr 20009
+#define OP_vkGetDeviceProcAddr 20010
+void marshal_VkDeviceQueueCreateInfo(
+    VulkanStream* vkStream,
+    const VkDeviceQueueCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceQueueCreateInfo(
+    VulkanStream* vkStream,
+    VkDeviceQueueCreateInfo* forUnmarshaling);
+
+void marshal_VkDeviceCreateInfo(
+    VulkanStream* vkStream,
+    const VkDeviceCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceCreateInfo(
+    VulkanStream* vkStream,
+    VkDeviceCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateDevice 20011
+#define OP_vkDestroyDevice 20012
+void marshal_VkExtensionProperties(
+    VulkanStream* vkStream,
+    const VkExtensionProperties* forMarshaling);
+
+void unmarshal_VkExtensionProperties(
+    VulkanStream* vkStream,
+    VkExtensionProperties* forUnmarshaling);
+
+#define OP_vkEnumerateInstanceExtensionProperties 20013
+#define OP_vkEnumerateDeviceExtensionProperties 20014
+void marshal_VkLayerProperties(
+    VulkanStream* vkStream,
+    const VkLayerProperties* forMarshaling);
+
+void unmarshal_VkLayerProperties(
+    VulkanStream* vkStream,
+    VkLayerProperties* forUnmarshaling);
+
+#define OP_vkEnumerateInstanceLayerProperties 20015
+#define OP_vkEnumerateDeviceLayerProperties 20016
+#define OP_vkGetDeviceQueue 20017
+void marshal_VkSubmitInfo(
+    VulkanStream* vkStream,
+    const VkSubmitInfo* forMarshaling);
+
+void unmarshal_VkSubmitInfo(
+    VulkanStream* vkStream,
+    VkSubmitInfo* forUnmarshaling);
+
+#define OP_vkQueueSubmit 20018
+#define OP_vkQueueWaitIdle 20019
+#define OP_vkDeviceWaitIdle 20020
+void marshal_VkMemoryAllocateInfo(
+    VulkanStream* vkStream,
+    const VkMemoryAllocateInfo* forMarshaling);
+
+void unmarshal_VkMemoryAllocateInfo(
+    VulkanStream* vkStream,
+    VkMemoryAllocateInfo* forUnmarshaling);
+
+#define OP_vkAllocateMemory 20021
+#define OP_vkFreeMemory 20022
+#define OP_vkMapMemory 20023
+#define OP_vkUnmapMemory 20024
+void marshal_VkMappedMemoryRange(
+    VulkanStream* vkStream,
+    const VkMappedMemoryRange* forMarshaling);
+
+void unmarshal_VkMappedMemoryRange(
+    VulkanStream* vkStream,
+    VkMappedMemoryRange* forUnmarshaling);
+
+#define OP_vkFlushMappedMemoryRanges 20025
+#define OP_vkInvalidateMappedMemoryRanges 20026
+#define OP_vkGetDeviceMemoryCommitment 20027
+#define OP_vkBindBufferMemory 20028
+#define OP_vkBindImageMemory 20029
+void marshal_VkMemoryRequirements(
+    VulkanStream* vkStream,
+    const VkMemoryRequirements* forMarshaling);
+
+void unmarshal_VkMemoryRequirements(
+    VulkanStream* vkStream,
+    VkMemoryRequirements* forUnmarshaling);
+
+#define OP_vkGetBufferMemoryRequirements 20030
+#define OP_vkGetImageMemoryRequirements 20031
+void marshal_VkSparseImageFormatProperties(
+    VulkanStream* vkStream,
+    const VkSparseImageFormatProperties* forMarshaling);
+
+void unmarshal_VkSparseImageFormatProperties(
+    VulkanStream* vkStream,
+    VkSparseImageFormatProperties* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryRequirements(
+    VulkanStream* vkStream,
+    const VkSparseImageMemoryRequirements* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryRequirements(
+    VulkanStream* vkStream,
+    VkSparseImageMemoryRequirements* forUnmarshaling);
+
+#define OP_vkGetImageSparseMemoryRequirements 20032
+#define OP_vkGetPhysicalDeviceSparseImageFormatProperties 20033
+void marshal_VkSparseMemoryBind(
+    VulkanStream* vkStream,
+    const VkSparseMemoryBind* forMarshaling);
+
+void unmarshal_VkSparseMemoryBind(
+    VulkanStream* vkStream,
+    VkSparseMemoryBind* forUnmarshaling);
+
+void marshal_VkSparseBufferMemoryBindInfo(
+    VulkanStream* vkStream,
+    const VkSparseBufferMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseBufferMemoryBindInfo(
+    VulkanStream* vkStream,
+    VkSparseBufferMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkSparseImageOpaqueMemoryBindInfo(
+    VulkanStream* vkStream,
+    const VkSparseImageOpaqueMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
+    VulkanStream* vkStream,
+    VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkImageSubresource(
+    VulkanStream* vkStream,
+    const VkImageSubresource* forMarshaling);
+
+void unmarshal_VkImageSubresource(
+    VulkanStream* vkStream,
+    VkImageSubresource* forUnmarshaling);
+
+void marshal_VkOffset3D(
+    VulkanStream* vkStream,
+    const VkOffset3D* forMarshaling);
+
+void unmarshal_VkOffset3D(
+    VulkanStream* vkStream,
+    VkOffset3D* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryBind(
+    VulkanStream* vkStream,
+    const VkSparseImageMemoryBind* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryBind(
+    VulkanStream* vkStream,
+    VkSparseImageMemoryBind* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryBindInfo(
+    VulkanStream* vkStream,
+    const VkSparseImageMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryBindInfo(
+    VulkanStream* vkStream,
+    VkSparseImageMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkBindSparseInfo(
+    VulkanStream* vkStream,
+    const VkBindSparseInfo* forMarshaling);
+
+void unmarshal_VkBindSparseInfo(
+    VulkanStream* vkStream,
+    VkBindSparseInfo* forUnmarshaling);
+
+#define OP_vkQueueBindSparse 20034
+void marshal_VkFenceCreateInfo(
+    VulkanStream* vkStream,
+    const VkFenceCreateInfo* forMarshaling);
+
+void unmarshal_VkFenceCreateInfo(
+    VulkanStream* vkStream,
+    VkFenceCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateFence 20035
+#define OP_vkDestroyFence 20036
+#define OP_vkResetFences 20037
+#define OP_vkGetFenceStatus 20038
+#define OP_vkWaitForFences 20039
+void marshal_VkSemaphoreCreateInfo(
+    VulkanStream* vkStream,
+    const VkSemaphoreCreateInfo* forMarshaling);
+
+void unmarshal_VkSemaphoreCreateInfo(
+    VulkanStream* vkStream,
+    VkSemaphoreCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateSemaphore 20040
+#define OP_vkDestroySemaphore 20041
+void marshal_VkEventCreateInfo(
+    VulkanStream* vkStream,
+    const VkEventCreateInfo* forMarshaling);
+
+void unmarshal_VkEventCreateInfo(
+    VulkanStream* vkStream,
+    VkEventCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateEvent 20042
+#define OP_vkDestroyEvent 20043
+#define OP_vkGetEventStatus 20044
+#define OP_vkSetEvent 20045
+#define OP_vkResetEvent 20046
+void marshal_VkQueryPoolCreateInfo(
+    VulkanStream* vkStream,
+    const VkQueryPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkQueryPoolCreateInfo(
+    VulkanStream* vkStream,
+    VkQueryPoolCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateQueryPool 20047
+#define OP_vkDestroyQueryPool 20048
+#define OP_vkGetQueryPoolResults 20049
+void marshal_VkBufferCreateInfo(
+    VulkanStream* vkStream,
+    const VkBufferCreateInfo* forMarshaling);
+
+void unmarshal_VkBufferCreateInfo(
+    VulkanStream* vkStream,
+    VkBufferCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateBuffer 20050
+#define OP_vkDestroyBuffer 20051
+void marshal_VkBufferViewCreateInfo(
+    VulkanStream* vkStream,
+    const VkBufferViewCreateInfo* forMarshaling);
+
+void unmarshal_VkBufferViewCreateInfo(
+    VulkanStream* vkStream,
+    VkBufferViewCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateBufferView 20052
+#define OP_vkDestroyBufferView 20053
+void marshal_VkImageCreateInfo(
+    VulkanStream* vkStream,
+    const VkImageCreateInfo* forMarshaling);
+
+void unmarshal_VkImageCreateInfo(
+    VulkanStream* vkStream,
+    VkImageCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateImage 20054
+#define OP_vkDestroyImage 20055
+void marshal_VkSubresourceLayout(
+    VulkanStream* vkStream,
+    const VkSubresourceLayout* forMarshaling);
+
+void unmarshal_VkSubresourceLayout(
+    VulkanStream* vkStream,
+    VkSubresourceLayout* forUnmarshaling);
+
+#define OP_vkGetImageSubresourceLayout 20056
+void marshal_VkComponentMapping(
+    VulkanStream* vkStream,
+    const VkComponentMapping* forMarshaling);
+
+void unmarshal_VkComponentMapping(
+    VulkanStream* vkStream,
+    VkComponentMapping* forUnmarshaling);
+
+void marshal_VkImageSubresourceRange(
+    VulkanStream* vkStream,
+    const VkImageSubresourceRange* forMarshaling);
+
+void unmarshal_VkImageSubresourceRange(
+    VulkanStream* vkStream,
+    VkImageSubresourceRange* forUnmarshaling);
+
+void marshal_VkImageViewCreateInfo(
+    VulkanStream* vkStream,
+    const VkImageViewCreateInfo* forMarshaling);
+
+void unmarshal_VkImageViewCreateInfo(
+    VulkanStream* vkStream,
+    VkImageViewCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateImageView 20057
+#define OP_vkDestroyImageView 20058
+void marshal_VkShaderModuleCreateInfo(
+    VulkanStream* vkStream,
+    const VkShaderModuleCreateInfo* forMarshaling);
+
+void unmarshal_VkShaderModuleCreateInfo(
+    VulkanStream* vkStream,
+    VkShaderModuleCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateShaderModule 20059
+#define OP_vkDestroyShaderModule 20060
+void marshal_VkPipelineCacheCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineCacheCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineCacheCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineCacheCreateInfo* forUnmarshaling);
+
+#define OP_vkCreatePipelineCache 20061
+#define OP_vkDestroyPipelineCache 20062
+#define OP_vkGetPipelineCacheData 20063
+#define OP_vkMergePipelineCaches 20064
+void marshal_VkSpecializationMapEntry(
+    VulkanStream* vkStream,
+    const VkSpecializationMapEntry* forMarshaling);
+
+void unmarshal_VkSpecializationMapEntry(
+    VulkanStream* vkStream,
+    VkSpecializationMapEntry* forUnmarshaling);
+
+void marshal_VkSpecializationInfo(
+    VulkanStream* vkStream,
+    const VkSpecializationInfo* forMarshaling);
+
+void unmarshal_VkSpecializationInfo(
+    VulkanStream* vkStream,
+    VkSpecializationInfo* forUnmarshaling);
+
+void marshal_VkPipelineShaderStageCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineShaderStageCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineShaderStageCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineShaderStageCreateInfo* forUnmarshaling);
+
+void marshal_VkVertexInputBindingDescription(
+    VulkanStream* vkStream,
+    const VkVertexInputBindingDescription* forMarshaling);
+
+void unmarshal_VkVertexInputBindingDescription(
+    VulkanStream* vkStream,
+    VkVertexInputBindingDescription* forUnmarshaling);
+
+void marshal_VkVertexInputAttributeDescription(
+    VulkanStream* vkStream,
+    const VkVertexInputAttributeDescription* forMarshaling);
+
+void unmarshal_VkVertexInputAttributeDescription(
+    VulkanStream* vkStream,
+    VkVertexInputAttributeDescription* forUnmarshaling);
+
+void marshal_VkPipelineVertexInputStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineVertexInputStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineVertexInputStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineVertexInputStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineInputAssemblyStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineInputAssemblyStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineTessellationStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineTessellationStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineTessellationStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineTessellationStateCreateInfo* forUnmarshaling);
+
+void marshal_VkViewport(
+    VulkanStream* vkStream,
+    const VkViewport* forMarshaling);
+
+void unmarshal_VkViewport(
+    VulkanStream* vkStream,
+    VkViewport* forUnmarshaling);
+
+void marshal_VkOffset2D(
+    VulkanStream* vkStream,
+    const VkOffset2D* forMarshaling);
+
+void unmarshal_VkOffset2D(
+    VulkanStream* vkStream,
+    VkOffset2D* forUnmarshaling);
+
+void marshal_VkExtent2D(
+    VulkanStream* vkStream,
+    const VkExtent2D* forMarshaling);
+
+void unmarshal_VkExtent2D(
+    VulkanStream* vkStream,
+    VkExtent2D* forUnmarshaling);
+
+void marshal_VkRect2D(
+    VulkanStream* vkStream,
+    const VkRect2D* forMarshaling);
+
+void unmarshal_VkRect2D(
+    VulkanStream* vkStream,
+    VkRect2D* forUnmarshaling);
+
+void marshal_VkPipelineViewportStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineViewportStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineViewportStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineViewportStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineRasterizationStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineRasterizationStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineRasterizationStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineMultisampleStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineMultisampleStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineMultisampleStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineMultisampleStateCreateInfo* forUnmarshaling);
+
+void marshal_VkStencilOpState(
+    VulkanStream* vkStream,
+    const VkStencilOpState* forMarshaling);
+
+void unmarshal_VkStencilOpState(
+    VulkanStream* vkStream,
+    VkStencilOpState* forUnmarshaling);
+
+void marshal_VkPipelineDepthStencilStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineDepthStencilStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineDepthStencilStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineDepthStencilStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendAttachmentState(
+    VulkanStream* vkStream,
+    const VkPipelineColorBlendAttachmentState* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendAttachmentState(
+    VulkanStream* vkStream,
+    VkPipelineColorBlendAttachmentState* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineColorBlendStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineColorBlendStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineDynamicStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineDynamicStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineDynamicStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineDynamicStateCreateInfo* forUnmarshaling);
+
+void marshal_VkGraphicsPipelineCreateInfo(
+    VulkanStream* vkStream,
+    const VkGraphicsPipelineCreateInfo* forMarshaling);
+
+void unmarshal_VkGraphicsPipelineCreateInfo(
+    VulkanStream* vkStream,
+    VkGraphicsPipelineCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateGraphicsPipelines 20065
+void marshal_VkComputePipelineCreateInfo(
+    VulkanStream* vkStream,
+    const VkComputePipelineCreateInfo* forMarshaling);
+
+void unmarshal_VkComputePipelineCreateInfo(
+    VulkanStream* vkStream,
+    VkComputePipelineCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateComputePipelines 20066
+#define OP_vkDestroyPipeline 20067
+void marshal_VkPushConstantRange(
+    VulkanStream* vkStream,
+    const VkPushConstantRange* forMarshaling);
+
+void unmarshal_VkPushConstantRange(
+    VulkanStream* vkStream,
+    VkPushConstantRange* forUnmarshaling);
+
+void marshal_VkPipelineLayoutCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineLayoutCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineLayoutCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineLayoutCreateInfo* forUnmarshaling);
+
+#define OP_vkCreatePipelineLayout 20068
+#define OP_vkDestroyPipelineLayout 20069
+void marshal_VkSamplerCreateInfo(
+    VulkanStream* vkStream,
+    const VkSamplerCreateInfo* forMarshaling);
+
+void unmarshal_VkSamplerCreateInfo(
+    VulkanStream* vkStream,
+    VkSamplerCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateSampler 20070
+#define OP_vkDestroySampler 20071
+void marshal_VkDescriptorSetLayoutBinding(
+    VulkanStream* vkStream,
+    const VkDescriptorSetLayoutBinding* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutBinding(
+    VulkanStream* vkStream,
+    VkDescriptorSetLayoutBinding* forUnmarshaling);
+
+void marshal_VkDescriptorSetLayoutCreateInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorSetLayoutCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutCreateInfo(
+    VulkanStream* vkStream,
+    VkDescriptorSetLayoutCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateDescriptorSetLayout 20072
+#define OP_vkDestroyDescriptorSetLayout 20073
+void marshal_VkDescriptorPoolSize(
+    VulkanStream* vkStream,
+    const VkDescriptorPoolSize* forMarshaling);
+
+void unmarshal_VkDescriptorPoolSize(
+    VulkanStream* vkStream,
+    VkDescriptorPoolSize* forUnmarshaling);
+
+void marshal_VkDescriptorPoolCreateInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorPoolCreateInfo(
+    VulkanStream* vkStream,
+    VkDescriptorPoolCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateDescriptorPool 20074
+#define OP_vkDestroyDescriptorPool 20075
+#define OP_vkResetDescriptorPool 20076
+void marshal_VkDescriptorSetAllocateInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorSetAllocateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorSetAllocateInfo(
+    VulkanStream* vkStream,
+    VkDescriptorSetAllocateInfo* forUnmarshaling);
+
+#define OP_vkAllocateDescriptorSets 20077
+#define OP_vkFreeDescriptorSets 20078
+void marshal_VkDescriptorImageInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorImageInfo* forMarshaling);
+
+void unmarshal_VkDescriptorImageInfo(
+    VulkanStream* vkStream,
+    VkDescriptorImageInfo* forUnmarshaling);
+
+void marshal_VkDescriptorBufferInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorBufferInfo* forMarshaling);
+
+void unmarshal_VkDescriptorBufferInfo(
+    VulkanStream* vkStream,
+    VkDescriptorBufferInfo* forUnmarshaling);
+
+void marshal_VkWriteDescriptorSet(
+    VulkanStream* vkStream,
+    const VkWriteDescriptorSet* forMarshaling);
+
+void unmarshal_VkWriteDescriptorSet(
+    VulkanStream* vkStream,
+    VkWriteDescriptorSet* forUnmarshaling);
+
+void marshal_VkCopyDescriptorSet(
+    VulkanStream* vkStream,
+    const VkCopyDescriptorSet* forMarshaling);
+
+void unmarshal_VkCopyDescriptorSet(
+    VulkanStream* vkStream,
+    VkCopyDescriptorSet* forUnmarshaling);
+
+#define OP_vkUpdateDescriptorSets 20079
+void marshal_VkFramebufferCreateInfo(
+    VulkanStream* vkStream,
+    const VkFramebufferCreateInfo* forMarshaling);
+
+void unmarshal_VkFramebufferCreateInfo(
+    VulkanStream* vkStream,
+    VkFramebufferCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateFramebuffer 20080
+#define OP_vkDestroyFramebuffer 20081
+void marshal_VkAttachmentDescription(
+    VulkanStream* vkStream,
+    const VkAttachmentDescription* forMarshaling);
+
+void unmarshal_VkAttachmentDescription(
+    VulkanStream* vkStream,
+    VkAttachmentDescription* forUnmarshaling);
+
+void marshal_VkAttachmentReference(
+    VulkanStream* vkStream,
+    const VkAttachmentReference* forMarshaling);
+
+void unmarshal_VkAttachmentReference(
+    VulkanStream* vkStream,
+    VkAttachmentReference* forUnmarshaling);
+
+void marshal_VkSubpassDescription(
+    VulkanStream* vkStream,
+    const VkSubpassDescription* forMarshaling);
+
+void unmarshal_VkSubpassDescription(
+    VulkanStream* vkStream,
+    VkSubpassDescription* forUnmarshaling);
+
+void marshal_VkSubpassDependency(
+    VulkanStream* vkStream,
+    const VkSubpassDependency* forMarshaling);
+
+void unmarshal_VkSubpassDependency(
+    VulkanStream* vkStream,
+    VkSubpassDependency* forUnmarshaling);
+
+void marshal_VkRenderPassCreateInfo(
+    VulkanStream* vkStream,
+    const VkRenderPassCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassCreateInfo(
+    VulkanStream* vkStream,
+    VkRenderPassCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateRenderPass 20082
+#define OP_vkDestroyRenderPass 20083
+#define OP_vkGetRenderAreaGranularity 20084
+void marshal_VkCommandPoolCreateInfo(
+    VulkanStream* vkStream,
+    const VkCommandPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkCommandPoolCreateInfo(
+    VulkanStream* vkStream,
+    VkCommandPoolCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateCommandPool 20085
+#define OP_vkDestroyCommandPool 20086
+#define OP_vkResetCommandPool 20087
+void marshal_VkCommandBufferAllocateInfo(
+    VulkanStream* vkStream,
+    const VkCommandBufferAllocateInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferAllocateInfo(
+    VulkanStream* vkStream,
+    VkCommandBufferAllocateInfo* forUnmarshaling);
+
+#define OP_vkAllocateCommandBuffers 20088
+#define OP_vkFreeCommandBuffers 20089
+void marshal_VkCommandBufferInheritanceInfo(
+    VulkanStream* vkStream,
+    const VkCommandBufferInheritanceInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferInheritanceInfo(
+    VulkanStream* vkStream,
+    VkCommandBufferInheritanceInfo* forUnmarshaling);
+
+void marshal_VkCommandBufferBeginInfo(
+    VulkanStream* vkStream,
+    const VkCommandBufferBeginInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferBeginInfo(
+    VulkanStream* vkStream,
+    VkCommandBufferBeginInfo* forUnmarshaling);
+
+#define OP_vkBeginCommandBuffer 20090
+#define OP_vkEndCommandBuffer 20091
+#define OP_vkResetCommandBuffer 20092
+#define OP_vkCmdBindPipeline 20093
+#define OP_vkCmdSetViewport 20094
+#define OP_vkCmdSetScissor 20095
+#define OP_vkCmdSetLineWidth 20096
+#define OP_vkCmdSetDepthBias 20097
+#define OP_vkCmdSetBlendConstants 20098
+#define OP_vkCmdSetDepthBounds 20099
+#define OP_vkCmdSetStencilCompareMask 20100
+#define OP_vkCmdSetStencilWriteMask 20101
+#define OP_vkCmdSetStencilReference 20102
+#define OP_vkCmdBindDescriptorSets 20103
+#define OP_vkCmdBindIndexBuffer 20104
+#define OP_vkCmdBindVertexBuffers 20105
+#define OP_vkCmdDraw 20106
+#define OP_vkCmdDrawIndexed 20107
+#define OP_vkCmdDrawIndirect 20108
+#define OP_vkCmdDrawIndexedIndirect 20109
+#define OP_vkCmdDispatch 20110
+#define OP_vkCmdDispatchIndirect 20111
+void marshal_VkBufferCopy(
+    VulkanStream* vkStream,
+    const VkBufferCopy* forMarshaling);
+
+void unmarshal_VkBufferCopy(
+    VulkanStream* vkStream,
+    VkBufferCopy* forUnmarshaling);
+
+#define OP_vkCmdCopyBuffer 20112
+void marshal_VkImageSubresourceLayers(
+    VulkanStream* vkStream,
+    const VkImageSubresourceLayers* forMarshaling);
+
+void unmarshal_VkImageSubresourceLayers(
+    VulkanStream* vkStream,
+    VkImageSubresourceLayers* forUnmarshaling);
+
+void marshal_VkImageCopy(
+    VulkanStream* vkStream,
+    const VkImageCopy* forMarshaling);
+
+void unmarshal_VkImageCopy(
+    VulkanStream* vkStream,
+    VkImageCopy* forUnmarshaling);
+
+#define OP_vkCmdCopyImage 20113
+void marshal_VkImageBlit(
+    VulkanStream* vkStream,
+    const VkImageBlit* forMarshaling);
+
+void unmarshal_VkImageBlit(
+    VulkanStream* vkStream,
+    VkImageBlit* forUnmarshaling);
+
+#define OP_vkCmdBlitImage 20114
+void marshal_VkBufferImageCopy(
+    VulkanStream* vkStream,
+    const VkBufferImageCopy* forMarshaling);
+
+void unmarshal_VkBufferImageCopy(
+    VulkanStream* vkStream,
+    VkBufferImageCopy* forUnmarshaling);
+
+#define OP_vkCmdCopyBufferToImage 20115
+#define OP_vkCmdCopyImageToBuffer 20116
+#define OP_vkCmdUpdateBuffer 20117
+#define OP_vkCmdFillBuffer 20118
+void marshal_VkClearColorValue(
+    VulkanStream* vkStream,
+    const VkClearColorValue* forMarshaling);
+
+void unmarshal_VkClearColorValue(
+    VulkanStream* vkStream,
+    VkClearColorValue* forUnmarshaling);
+
+#define OP_vkCmdClearColorImage 20119
+void marshal_VkClearDepthStencilValue(
+    VulkanStream* vkStream,
+    const VkClearDepthStencilValue* forMarshaling);
+
+void unmarshal_VkClearDepthStencilValue(
+    VulkanStream* vkStream,
+    VkClearDepthStencilValue* forUnmarshaling);
+
+#define OP_vkCmdClearDepthStencilImage 20120
+void marshal_VkClearValue(
+    VulkanStream* vkStream,
+    const VkClearValue* forMarshaling);
+
+void unmarshal_VkClearValue(
+    VulkanStream* vkStream,
+    VkClearValue* forUnmarshaling);
+
+void marshal_VkClearAttachment(
+    VulkanStream* vkStream,
+    const VkClearAttachment* forMarshaling);
+
+void unmarshal_VkClearAttachment(
+    VulkanStream* vkStream,
+    VkClearAttachment* forUnmarshaling);
+
+void marshal_VkClearRect(
+    VulkanStream* vkStream,
+    const VkClearRect* forMarshaling);
+
+void unmarshal_VkClearRect(
+    VulkanStream* vkStream,
+    VkClearRect* forUnmarshaling);
+
+#define OP_vkCmdClearAttachments 20121
+void marshal_VkImageResolve(
+    VulkanStream* vkStream,
+    const VkImageResolve* forMarshaling);
+
+void unmarshal_VkImageResolve(
+    VulkanStream* vkStream,
+    VkImageResolve* forUnmarshaling);
+
+#define OP_vkCmdResolveImage 20122
+#define OP_vkCmdSetEvent 20123
+#define OP_vkCmdResetEvent 20124
+void marshal_VkMemoryBarrier(
+    VulkanStream* vkStream,
+    const VkMemoryBarrier* forMarshaling);
+
+void unmarshal_VkMemoryBarrier(
+    VulkanStream* vkStream,
+    VkMemoryBarrier* forUnmarshaling);
+
+void marshal_VkBufferMemoryBarrier(
+    VulkanStream* vkStream,
+    const VkBufferMemoryBarrier* forMarshaling);
+
+void unmarshal_VkBufferMemoryBarrier(
+    VulkanStream* vkStream,
+    VkBufferMemoryBarrier* forUnmarshaling);
+
+void marshal_VkImageMemoryBarrier(
+    VulkanStream* vkStream,
+    const VkImageMemoryBarrier* forMarshaling);
+
+void unmarshal_VkImageMemoryBarrier(
+    VulkanStream* vkStream,
+    VkImageMemoryBarrier* forUnmarshaling);
+
+#define OP_vkCmdWaitEvents 20125
+#define OP_vkCmdPipelineBarrier 20126
+#define OP_vkCmdBeginQuery 20127
+#define OP_vkCmdEndQuery 20128
+#define OP_vkCmdResetQueryPool 20129
+#define OP_vkCmdWriteTimestamp 20130
+#define OP_vkCmdCopyQueryPoolResults 20131
+#define OP_vkCmdPushConstants 20132
+void marshal_VkRenderPassBeginInfo(
+    VulkanStream* vkStream,
+    const VkRenderPassBeginInfo* forMarshaling);
+
+void unmarshal_VkRenderPassBeginInfo(
+    VulkanStream* vkStream,
+    VkRenderPassBeginInfo* forUnmarshaling);
+
+#define OP_vkCmdBeginRenderPass 20133
+#define OP_vkCmdNextSubpass 20134
+#define OP_vkCmdEndRenderPass 20135
+#define OP_vkCmdExecuteCommands 20136
+void marshal_VkDispatchIndirectCommand(
+    VulkanStream* vkStream,
+    const VkDispatchIndirectCommand* forMarshaling);
+
+void unmarshal_VkDispatchIndirectCommand(
+    VulkanStream* vkStream,
+    VkDispatchIndirectCommand* forUnmarshaling);
+
+void marshal_VkDrawIndexedIndirectCommand(
+    VulkanStream* vkStream,
+    const VkDrawIndexedIndirectCommand* forMarshaling);
+
+void unmarshal_VkDrawIndexedIndirectCommand(
+    VulkanStream* vkStream,
+    VkDrawIndexedIndirectCommand* forUnmarshaling);
+
+void marshal_VkDrawIndirectCommand(
+    VulkanStream* vkStream,
+    const VkDrawIndirectCommand* forMarshaling);
+
+void unmarshal_VkDrawIndirectCommand(
+    VulkanStream* vkStream,
+    VkDrawIndirectCommand* forUnmarshaling);
+
+void marshal_VkBaseOutStructure(
+    VulkanStream* vkStream,
+    const VkBaseOutStructure* forMarshaling);
+
+void unmarshal_VkBaseOutStructure(
+    VulkanStream* vkStream,
+    VkBaseOutStructure* forUnmarshaling);
+
+void marshal_VkBaseInStructure(
+    VulkanStream* vkStream,
+    const VkBaseInStructure* forMarshaling);
+
+void unmarshal_VkBaseInStructure(
+    VulkanStream* vkStream,
+    VkBaseInStructure* forUnmarshaling);
+
+#endif
+#ifdef VK_VERSION_1_1
+#define OP_vkEnumerateInstanceVersion 20137
+void marshal_VkPhysicalDeviceSubgroupProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSubgroupProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSubgroupProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSubgroupProperties* forUnmarshaling);
+
+void marshal_VkBindBufferMemoryInfo(
+    VulkanStream* vkStream,
+    const VkBindBufferMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindBufferMemoryInfo(
+    VulkanStream* vkStream,
+    VkBindBufferMemoryInfo* forUnmarshaling);
+
+void marshal_VkBindImageMemoryInfo(
+    VulkanStream* vkStream,
+    const VkBindImageMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindImageMemoryInfo(
+    VulkanStream* vkStream,
+    VkBindImageMemoryInfo* forUnmarshaling);
+
+#define OP_vkBindBufferMemory2 20138
+#define OP_vkBindImageMemory2 20139
+void marshal_VkPhysicalDevice16BitStorageFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDevice16BitStorageFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDevice16BitStorageFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDevice16BitStorageFeatures* forUnmarshaling);
+
+void marshal_VkMemoryDedicatedRequirements(
+    VulkanStream* vkStream,
+    const VkMemoryDedicatedRequirements* forMarshaling);
+
+void unmarshal_VkMemoryDedicatedRequirements(
+    VulkanStream* vkStream,
+    VkMemoryDedicatedRequirements* forUnmarshaling);
+
+void marshal_VkMemoryDedicatedAllocateInfo(
+    VulkanStream* vkStream,
+    const VkMemoryDedicatedAllocateInfo* forMarshaling);
+
+void unmarshal_VkMemoryDedicatedAllocateInfo(
+    VulkanStream* vkStream,
+    VkMemoryDedicatedAllocateInfo* forUnmarshaling);
+
+void marshal_VkMemoryAllocateFlagsInfo(
+    VulkanStream* vkStream,
+    const VkMemoryAllocateFlagsInfo* forMarshaling);
+
+void unmarshal_VkMemoryAllocateFlagsInfo(
+    VulkanStream* vkStream,
+    VkMemoryAllocateFlagsInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupRenderPassBeginInfo(
+    VulkanStream* vkStream,
+    const VkDeviceGroupRenderPassBeginInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupRenderPassBeginInfo(
+    VulkanStream* vkStream,
+    VkDeviceGroupRenderPassBeginInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupCommandBufferBeginInfo(
+    VulkanStream* vkStream,
+    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
+    VulkanStream* vkStream,
+    VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupSubmitInfo(
+    VulkanStream* vkStream,
+    const VkDeviceGroupSubmitInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupSubmitInfo(
+    VulkanStream* vkStream,
+    VkDeviceGroupSubmitInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupBindSparseInfo(
+    VulkanStream* vkStream,
+    const VkDeviceGroupBindSparseInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupBindSparseInfo(
+    VulkanStream* vkStream,
+    VkDeviceGroupBindSparseInfo* forUnmarshaling);
+
+#define OP_vkGetDeviceGroupPeerMemoryFeatures 20140
+#define OP_vkCmdSetDeviceMask 20141
+#define OP_vkCmdDispatchBase 20142
+void marshal_VkBindBufferMemoryDeviceGroupInfo(
+    VulkanStream* vkStream,
+    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling);
+
+void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
+    VulkanStream* vkStream,
+    VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling);
+
+void marshal_VkBindImageMemoryDeviceGroupInfo(
+    VulkanStream* vkStream,
+    const VkBindImageMemoryDeviceGroupInfo* forMarshaling);
+
+void unmarshal_VkBindImageMemoryDeviceGroupInfo(
+    VulkanStream* vkStream,
+    VkBindImageMemoryDeviceGroupInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceGroupProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceGroupProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceGroupProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceGroupProperties* forUnmarshaling);
+
+void marshal_VkDeviceGroupDeviceCreateInfo(
+    VulkanStream* vkStream,
+    const VkDeviceGroupDeviceCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupDeviceCreateInfo(
+    VulkanStream* vkStream,
+    VkDeviceGroupDeviceCreateInfo* forUnmarshaling);
+
+#define OP_vkEnumeratePhysicalDeviceGroups 20143
+void marshal_VkBufferMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    const VkBufferMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkBufferMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    VkBufferMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkImageMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    const VkImageMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkImageMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    VkImageMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkImageSparseMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    const VkImageSparseMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkImageSparseMemoryRequirementsInfo2(
+    VulkanStream* vkStream,
+    VkImageSparseMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkMemoryRequirements2(
+    VulkanStream* vkStream,
+    const VkMemoryRequirements2* forMarshaling);
+
+void unmarshal_VkMemoryRequirements2(
+    VulkanStream* vkStream,
+    VkMemoryRequirements2* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryRequirements2(
+    VulkanStream* vkStream,
+    const VkSparseImageMemoryRequirements2* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryRequirements2(
+    VulkanStream* vkStream,
+    VkSparseImageMemoryRequirements2* forUnmarshaling);
+
+#define OP_vkGetImageMemoryRequirements2 20144
+#define OP_vkGetBufferMemoryRequirements2 20145
+#define OP_vkGetImageSparseMemoryRequirements2 20146
+void marshal_VkPhysicalDeviceFeatures2(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceFeatures2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFeatures2(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceFeatures2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProperties2(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceProperties2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProperties2(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceProperties2* forUnmarshaling);
+
+void marshal_VkFormatProperties2(
+    VulkanStream* vkStream,
+    const VkFormatProperties2* forMarshaling);
+
+void unmarshal_VkFormatProperties2(
+    VulkanStream* vkStream,
+    VkFormatProperties2* forUnmarshaling);
+
+void marshal_VkImageFormatProperties2(
+    VulkanStream* vkStream,
+    const VkImageFormatProperties2* forMarshaling);
+
+void unmarshal_VkImageFormatProperties2(
+    VulkanStream* vkStream,
+    VkImageFormatProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceImageFormatInfo2(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceImageFormatInfo2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceImageFormatInfo2(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceImageFormatInfo2* forUnmarshaling);
+
+void marshal_VkQueueFamilyProperties2(
+    VulkanStream* vkStream,
+    const VkQueueFamilyProperties2* forMarshaling);
+
+void unmarshal_VkQueueFamilyProperties2(
+    VulkanStream* vkStream,
+    VkQueueFamilyProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMemoryProperties2(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMemoryProperties2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMemoryProperties2(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMemoryProperties2* forUnmarshaling);
+
+void marshal_VkSparseImageFormatProperties2(
+    VulkanStream* vkStream,
+    const VkSparseImageFormatProperties2* forMarshaling);
+
+void unmarshal_VkSparseImageFormatProperties2(
+    VulkanStream* vkStream,
+    VkSparseImageFormatProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceFeatures2 20147
+#define OP_vkGetPhysicalDeviceProperties2 20148
+#define OP_vkGetPhysicalDeviceFormatProperties2 20149
+#define OP_vkGetPhysicalDeviceImageFormatProperties2 20150
+#define OP_vkGetPhysicalDeviceQueueFamilyProperties2 20151
+#define OP_vkGetPhysicalDeviceMemoryProperties2 20152
+#define OP_vkGetPhysicalDeviceSparseImageFormatProperties2 20153
+#define OP_vkTrimCommandPool 20154
+void marshal_VkPhysicalDevicePointClippingProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDevicePointClippingProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDevicePointClippingProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDevicePointClippingProperties* forUnmarshaling);
+
+void marshal_VkInputAttachmentAspectReference(
+    VulkanStream* vkStream,
+    const VkInputAttachmentAspectReference* forMarshaling);
+
+void unmarshal_VkInputAttachmentAspectReference(
+    VulkanStream* vkStream,
+    VkInputAttachmentAspectReference* forUnmarshaling);
+
+void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
+    VulkanStream* vkStream,
+    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
+    VulkanStream* vkStream,
+    VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling);
+
+void marshal_VkImageViewUsageCreateInfo(
+    VulkanStream* vkStream,
+    const VkImageViewUsageCreateInfo* forMarshaling);
+
+void unmarshal_VkImageViewUsageCreateInfo(
+    VulkanStream* vkStream,
+    VkImageViewUsageCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+    VulkanStream* vkStream,
+    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+    VulkanStream* vkStream,
+    VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling);
+
+void marshal_VkRenderPassMultiviewCreateInfo(
+    VulkanStream* vkStream,
+    const VkRenderPassMultiviewCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassMultiviewCreateInfo(
+    VulkanStream* vkStream,
+    VkRenderPassMultiviewCreateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMultiviewFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMultiviewFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMultiviewFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMultiviewProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMultiviewProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMultiviewProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceVariablePointerFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceVariablePointerFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProtectedMemoryProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling);
+
+void marshal_VkDeviceQueueInfo2(
+    VulkanStream* vkStream,
+    const VkDeviceQueueInfo2* forMarshaling);
+
+void unmarshal_VkDeviceQueueInfo2(
+    VulkanStream* vkStream,
+    VkDeviceQueueInfo2* forUnmarshaling);
+
+void marshal_VkProtectedSubmitInfo(
+    VulkanStream* vkStream,
+    const VkProtectedSubmitInfo* forMarshaling);
+
+void unmarshal_VkProtectedSubmitInfo(
+    VulkanStream* vkStream,
+    VkProtectedSubmitInfo* forUnmarshaling);
+
+#define OP_vkGetDeviceQueue2 20155
+void marshal_VkSamplerYcbcrConversionCreateInfo(
+    VulkanStream* vkStream,
+    const VkSamplerYcbcrConversionCreateInfo* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionCreateInfo(
+    VulkanStream* vkStream,
+    VkSamplerYcbcrConversionCreateInfo* forUnmarshaling);
+
+void marshal_VkSamplerYcbcrConversionInfo(
+    VulkanStream* vkStream,
+    const VkSamplerYcbcrConversionInfo* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionInfo(
+    VulkanStream* vkStream,
+    VkSamplerYcbcrConversionInfo* forUnmarshaling);
+
+void marshal_VkBindImagePlaneMemoryInfo(
+    VulkanStream* vkStream,
+    const VkBindImagePlaneMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindImagePlaneMemoryInfo(
+    VulkanStream* vkStream,
+    VkBindImagePlaneMemoryInfo* forUnmarshaling);
+
+void marshal_VkImagePlaneMemoryRequirementsInfo(
+    VulkanStream* vkStream,
+    const VkImagePlaneMemoryRequirementsInfo* forMarshaling);
+
+void unmarshal_VkImagePlaneMemoryRequirementsInfo(
+    VulkanStream* vkStream,
+    VkImagePlaneMemoryRequirementsInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling);
+
+void marshal_VkSamplerYcbcrConversionImageFormatProperties(
+    VulkanStream* vkStream,
+    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
+    VulkanStream* vkStream,
+    VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling);
+
+#define OP_vkCreateSamplerYcbcrConversion 20156
+#define OP_vkDestroySamplerYcbcrConversion 20157
+void marshal_VkDescriptorUpdateTemplateEntry(
+    VulkanStream* vkStream,
+    const VkDescriptorUpdateTemplateEntry* forMarshaling);
+
+void unmarshal_VkDescriptorUpdateTemplateEntry(
+    VulkanStream* vkStream,
+    VkDescriptorUpdateTemplateEntry* forUnmarshaling);
+
+void marshal_VkDescriptorUpdateTemplateCreateInfo(
+    VulkanStream* vkStream,
+    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
+    VulkanStream* vkStream,
+    VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling);
+
+#define OP_vkCreateDescriptorUpdateTemplate 20158
+#define OP_vkDestroyDescriptorUpdateTemplate 20159
+#define OP_vkUpdateDescriptorSetWithTemplate 20160
+void marshal_VkExternalMemoryProperties(
+    VulkanStream* vkStream,
+    const VkExternalMemoryProperties* forMarshaling);
+
+void unmarshal_VkExternalMemoryProperties(
+    VulkanStream* vkStream,
+    VkExternalMemoryProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalImageFormatInfo(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling);
+
+void marshal_VkExternalImageFormatProperties(
+    VulkanStream* vkStream,
+    const VkExternalImageFormatProperties* forMarshaling);
+
+void unmarshal_VkExternalImageFormatProperties(
+    VulkanStream* vkStream,
+    VkExternalImageFormatProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalBufferInfo(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceExternalBufferInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalBufferInfo(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceExternalBufferInfo* forUnmarshaling);
+
+void marshal_VkExternalBufferProperties(
+    VulkanStream* vkStream,
+    const VkExternalBufferProperties* forMarshaling);
+
+void unmarshal_VkExternalBufferProperties(
+    VulkanStream* vkStream,
+    VkExternalBufferProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceIDProperties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceIDProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceIDProperties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceIDProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceExternalBufferProperties 20161
+void marshal_VkExternalMemoryImageCreateInfo(
+    VulkanStream* vkStream,
+    const VkExternalMemoryImageCreateInfo* forMarshaling);
+
+void unmarshal_VkExternalMemoryImageCreateInfo(
+    VulkanStream* vkStream,
+    VkExternalMemoryImageCreateInfo* forUnmarshaling);
+
+void marshal_VkExternalMemoryBufferCreateInfo(
+    VulkanStream* vkStream,
+    const VkExternalMemoryBufferCreateInfo* forMarshaling);
+
+void unmarshal_VkExternalMemoryBufferCreateInfo(
+    VulkanStream* vkStream,
+    VkExternalMemoryBufferCreateInfo* forUnmarshaling);
+
+void marshal_VkExportMemoryAllocateInfo(
+    VulkanStream* vkStream,
+    const VkExportMemoryAllocateInfo* forMarshaling);
+
+void unmarshal_VkExportMemoryAllocateInfo(
+    VulkanStream* vkStream,
+    VkExportMemoryAllocateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalFenceInfo(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceExternalFenceInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalFenceInfo(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceExternalFenceInfo* forUnmarshaling);
+
+void marshal_VkExternalFenceProperties(
+    VulkanStream* vkStream,
+    const VkExternalFenceProperties* forMarshaling);
+
+void unmarshal_VkExternalFenceProperties(
+    VulkanStream* vkStream,
+    VkExternalFenceProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceExternalFenceProperties 20162
+void marshal_VkExportFenceCreateInfo(
+    VulkanStream* vkStream,
+    const VkExportFenceCreateInfo* forMarshaling);
+
+void unmarshal_VkExportFenceCreateInfo(
+    VulkanStream* vkStream,
+    VkExportFenceCreateInfo* forUnmarshaling);
+
+void marshal_VkExportSemaphoreCreateInfo(
+    VulkanStream* vkStream,
+    const VkExportSemaphoreCreateInfo* forMarshaling);
+
+void unmarshal_VkExportSemaphoreCreateInfo(
+    VulkanStream* vkStream,
+    VkExportSemaphoreCreateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling);
+
+void marshal_VkExternalSemaphoreProperties(
+    VulkanStream* vkStream,
+    const VkExternalSemaphoreProperties* forMarshaling);
+
+void unmarshal_VkExternalSemaphoreProperties(
+    VulkanStream* vkStream,
+    VkExternalSemaphoreProperties* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceExternalSemaphoreProperties 20163
+void marshal_VkPhysicalDeviceMaintenance3Properties(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMaintenance3Properties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMaintenance3Properties(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMaintenance3Properties* forUnmarshaling);
+
+void marshal_VkDescriptorSetLayoutSupport(
+    VulkanStream* vkStream,
+    const VkDescriptorSetLayoutSupport* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutSupport(
+    VulkanStream* vkStream,
+    VkDescriptorSetLayoutSupport* forUnmarshaling);
+
+#define OP_vkGetDescriptorSetLayoutSupport 20164
+void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_surface
+#define OP_vkDestroySurfaceKHR 20165
+#define OP_vkGetPhysicalDeviceSurfaceSupportKHR 20166
+void marshal_VkSurfaceCapabilitiesKHR(
+    VulkanStream* vkStream,
+    const VkSurfaceCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilitiesKHR(
+    VulkanStream* vkStream,
+    VkSurfaceCapabilitiesKHR* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR 20167
+void marshal_VkSurfaceFormatKHR(
+    VulkanStream* vkStream,
+    const VkSurfaceFormatKHR* forMarshaling);
+
+void unmarshal_VkSurfaceFormatKHR(
+    VulkanStream* vkStream,
+    VkSurfaceFormatKHR* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceSurfaceFormatsKHR 20168
+#define OP_vkGetPhysicalDeviceSurfacePresentModesKHR 20169
+#endif
+#ifdef VK_KHR_swapchain
+void marshal_VkSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkSwapchainCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateSwapchainKHR 20170
+#define OP_vkDestroySwapchainKHR 20171
+#define OP_vkGetSwapchainImagesKHR 20172
+#define OP_vkAcquireNextImageKHR 20173
+void marshal_VkPresentInfoKHR(
+    VulkanStream* vkStream,
+    const VkPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkPresentInfoKHR(
+    VulkanStream* vkStream,
+    VkPresentInfoKHR* forUnmarshaling);
+
+#define OP_vkQueuePresentKHR 20174
+void marshal_VkImageSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkImageSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkImageSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkImageSwapchainCreateInfoKHR* forUnmarshaling);
+
+void marshal_VkBindImageMemorySwapchainInfoKHR(
+    VulkanStream* vkStream,
+    const VkBindImageMemorySwapchainInfoKHR* forMarshaling);
+
+void unmarshal_VkBindImageMemorySwapchainInfoKHR(
+    VulkanStream* vkStream,
+    VkBindImageMemorySwapchainInfoKHR* forUnmarshaling);
+
+void marshal_VkAcquireNextImageInfoKHR(
+    VulkanStream* vkStream,
+    const VkAcquireNextImageInfoKHR* forMarshaling);
+
+void unmarshal_VkAcquireNextImageInfoKHR(
+    VulkanStream* vkStream,
+    VkAcquireNextImageInfoKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupPresentCapabilitiesKHR(
+    VulkanStream* vkStream,
+    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
+    VulkanStream* vkStream,
+    VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupPresentInfoKHR(
+    VulkanStream* vkStream,
+    const VkDeviceGroupPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupPresentInfoKHR(
+    VulkanStream* vkStream,
+    VkDeviceGroupPresentInfoKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkGetDeviceGroupPresentCapabilitiesKHR 20175
+#define OP_vkGetDeviceGroupSurfacePresentModesKHR 20176
+#define OP_vkGetPhysicalDevicePresentRectanglesKHR 20177
+#define OP_vkAcquireNextImage2KHR 20178
+#endif
+#ifdef VK_KHR_display
+void marshal_VkDisplayPropertiesKHR(
+    VulkanStream* vkStream,
+    const VkDisplayPropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPropertiesKHR(
+    VulkanStream* vkStream,
+    VkDisplayPropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayModeParametersKHR(
+    VulkanStream* vkStream,
+    const VkDisplayModeParametersKHR* forMarshaling);
+
+void unmarshal_VkDisplayModeParametersKHR(
+    VulkanStream* vkStream,
+    VkDisplayModeParametersKHR* forUnmarshaling);
+
+void marshal_VkDisplayModePropertiesKHR(
+    VulkanStream* vkStream,
+    const VkDisplayModePropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayModePropertiesKHR(
+    VulkanStream* vkStream,
+    VkDisplayModePropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayModeCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkDisplayModeCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplayModeCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkDisplayModeCreateInfoKHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneCapabilitiesKHR(
+    VulkanStream* vkStream,
+    const VkDisplayPlaneCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneCapabilitiesKHR(
+    VulkanStream* vkStream,
+    VkDisplayPlaneCapabilitiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayPlanePropertiesKHR(
+    VulkanStream* vkStream,
+    const VkDisplayPlanePropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPlanePropertiesKHR(
+    VulkanStream* vkStream,
+    VkDisplayPlanePropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplaySurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkDisplaySurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplaySurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkDisplaySurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceDisplayPropertiesKHR 20179
+#define OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR 20180
+#define OP_vkGetDisplayPlaneSupportedDisplaysKHR 20181
+#define OP_vkGetDisplayModePropertiesKHR 20182
+#define OP_vkCreateDisplayModeKHR 20183
+#define OP_vkGetDisplayPlaneCapabilitiesKHR 20184
+#define OP_vkCreateDisplayPlaneSurfaceKHR 20185
+#endif
+#ifdef VK_KHR_display_swapchain
+void marshal_VkDisplayPresentInfoKHR(
+    VulkanStream* vkStream,
+    const VkDisplayPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplayPresentInfoKHR(
+    VulkanStream* vkStream,
+    VkDisplayPresentInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateSharedSwapchainsKHR 20186
+#endif
+#ifdef VK_KHR_xlib_surface
+void marshal_VkXlibSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkXlibSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkXlibSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkXlibSurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateXlibSurfaceKHR 20187
+#define OP_vkGetPhysicalDeviceXlibPresentationSupportKHR 20188
+#endif
+#ifdef VK_KHR_xcb_surface
+void marshal_VkXcbSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkXcbSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkXcbSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkXcbSurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateXcbSurfaceKHR 20189
+#define OP_vkGetPhysicalDeviceXcbPresentationSupportKHR 20190
+#endif
+#ifdef VK_KHR_wayland_surface
+void marshal_VkWaylandSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkWaylandSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkWaylandSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkWaylandSurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateWaylandSurfaceKHR 20191
+#define OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR 20192
+#endif
+#ifdef VK_KHR_mir_surface
+void marshal_VkMirSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkMirSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkMirSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkMirSurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateMirSurfaceKHR 20193
+#define OP_vkGetPhysicalDeviceMirPresentationSupportKHR 20194
+#endif
+#ifdef VK_KHR_android_surface
+void marshal_VkAndroidSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkAndroidSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkAndroidSurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkAndroidSurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateAndroidSurfaceKHR 20195
+#endif
+#ifdef VK_KHR_win32_surface
+void marshal_VkWin32SurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkWin32SurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkWin32SurfaceCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkWin32SurfaceCreateInfoKHR* forUnmarshaling);
+
+#define OP_vkCreateWin32SurfaceKHR 20196
+#define OP_vkGetPhysicalDeviceWin32PresentationSupportKHR 20197
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#define OP_vkGetPhysicalDeviceFeatures2KHR 20198
+#define OP_vkGetPhysicalDeviceProperties2KHR 20199
+#define OP_vkGetPhysicalDeviceFormatProperties2KHR 20200
+#define OP_vkGetPhysicalDeviceImageFormatProperties2KHR 20201
+#define OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR 20202
+#define OP_vkGetPhysicalDeviceMemoryProperties2KHR 20203
+#define OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR 20204
+#endif
+#ifdef VK_KHR_device_group
+#define OP_vkGetDeviceGroupPeerMemoryFeaturesKHR 20205
+#define OP_vkCmdSetDeviceMaskKHR 20206
+#define OP_vkCmdDispatchBaseKHR 20207
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#define OP_vkTrimCommandPoolKHR 20208
+#endif
+#ifdef VK_KHR_device_group_creation
+#define OP_vkEnumeratePhysicalDeviceGroupsKHR 20209
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#define OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR 20210
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportMemoryWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportMemoryWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkImportMemoryWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportMemoryWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkExportMemoryWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportMemoryWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkExportMemoryWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkMemoryWin32HandlePropertiesKHR(
+    VulkanStream* vkStream,
+    const VkMemoryWin32HandlePropertiesKHR* forMarshaling);
+
+void unmarshal_VkMemoryWin32HandlePropertiesKHR(
+    VulkanStream* vkStream,
+    VkMemoryWin32HandlePropertiesKHR* forUnmarshaling);
+
+void marshal_VkMemoryGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkMemoryGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkMemoryGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkMemoryGetWin32HandleInfoKHR* forUnmarshaling);
+
+#define OP_vkGetMemoryWin32HandleKHR 20211
+#define OP_vkGetMemoryWin32HandlePropertiesKHR 20212
+#endif
+#ifdef VK_KHR_external_memory_fd
+void marshal_VkImportMemoryFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportMemoryFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportMemoryFdInfoKHR(
+    VulkanStream* vkStream,
+    VkImportMemoryFdInfoKHR* forUnmarshaling);
+
+void marshal_VkMemoryFdPropertiesKHR(
+    VulkanStream* vkStream,
+    const VkMemoryFdPropertiesKHR* forMarshaling);
+
+void unmarshal_VkMemoryFdPropertiesKHR(
+    VulkanStream* vkStream,
+    VkMemoryFdPropertiesKHR* forUnmarshaling);
+
+void marshal_VkMemoryGetFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkMemoryGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkMemoryGetFdInfoKHR(
+    VulkanStream* vkStream,
+    VkMemoryGetFdInfoKHR* forUnmarshaling);
+
+#define OP_vkGetMemoryFdKHR 20213
+#define OP_vkGetMemoryFdPropertiesKHR 20214
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+    VulkanStream* vkStream,
+    const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling);
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+    VulkanStream* vkStream,
+    VkWin32KeyedMutexAcquireReleaseInfoKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#define OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR 20215
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void marshal_VkImportSemaphoreWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportSemaphoreWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportSemaphoreWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkImportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportSemaphoreWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportSemaphoreWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkExportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkD3D12FenceSubmitInfoKHR(
+    VulkanStream* vkStream,
+    const VkD3D12FenceSubmitInfoKHR* forMarshaling);
+
+void unmarshal_VkD3D12FenceSubmitInfoKHR(
+    VulkanStream* vkStream,
+    VkD3D12FenceSubmitInfoKHR* forUnmarshaling);
+
+void marshal_VkSemaphoreGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkSemaphoreGetWin32HandleInfoKHR* forUnmarshaling);
+
+#define OP_vkImportSemaphoreWin32HandleKHR 20216
+#define OP_vkGetSemaphoreWin32HandleKHR 20217
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void marshal_VkImportSemaphoreFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportSemaphoreFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportSemaphoreFdInfoKHR(
+    VulkanStream* vkStream,
+    VkImportSemaphoreFdInfoKHR* forUnmarshaling);
+
+void marshal_VkSemaphoreGetFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkSemaphoreGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkSemaphoreGetFdInfoKHR(
+    VulkanStream* vkStream,
+    VkSemaphoreGetFdInfoKHR* forUnmarshaling);
+
+#define OP_vkImportSemaphoreFdKHR 20218
+#define OP_vkGetSemaphoreFdKHR 20219
+#endif
+#ifdef VK_KHR_push_descriptor
+void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+    VulkanStream* vkStream,
+    const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling);
+
+void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+    VulkanStream* vkStream,
+    VkPhysicalDevicePushDescriptorPropertiesKHR* forUnmarshaling);
+
+#define OP_vkCmdPushDescriptorSetKHR 20220
+#define OP_vkCmdPushDescriptorSetWithTemplateKHR 20221
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void marshal_VkRectLayerKHR(
+    VulkanStream* vkStream,
+    const VkRectLayerKHR* forMarshaling);
+
+void unmarshal_VkRectLayerKHR(
+    VulkanStream* vkStream,
+    VkRectLayerKHR* forUnmarshaling);
+
+void marshal_VkPresentRegionKHR(
+    VulkanStream* vkStream,
+    const VkPresentRegionKHR* forMarshaling);
+
+void unmarshal_VkPresentRegionKHR(
+    VulkanStream* vkStream,
+    VkPresentRegionKHR* forUnmarshaling);
+
+void marshal_VkPresentRegionsKHR(
+    VulkanStream* vkStream,
+    const VkPresentRegionsKHR* forMarshaling);
+
+void unmarshal_VkPresentRegionsKHR(
+    VulkanStream* vkStream,
+    VkPresentRegionsKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#define OP_vkCreateDescriptorUpdateTemplateKHR 20222
+#define OP_vkDestroyDescriptorUpdateTemplateKHR 20223
+#define OP_vkUpdateDescriptorSetWithTemplateKHR 20224
+#endif
+#ifdef VK_KHR_create_renderpass2
+void marshal_VkAttachmentDescription2KHR(
+    VulkanStream* vkStream,
+    const VkAttachmentDescription2KHR* forMarshaling);
+
+void unmarshal_VkAttachmentDescription2KHR(
+    VulkanStream* vkStream,
+    VkAttachmentDescription2KHR* forUnmarshaling);
+
+void marshal_VkAttachmentReference2KHR(
+    VulkanStream* vkStream,
+    const VkAttachmentReference2KHR* forMarshaling);
+
+void unmarshal_VkAttachmentReference2KHR(
+    VulkanStream* vkStream,
+    VkAttachmentReference2KHR* forUnmarshaling);
+
+void marshal_VkSubpassDescription2KHR(
+    VulkanStream* vkStream,
+    const VkSubpassDescription2KHR* forMarshaling);
+
+void unmarshal_VkSubpassDescription2KHR(
+    VulkanStream* vkStream,
+    VkSubpassDescription2KHR* forUnmarshaling);
+
+void marshal_VkSubpassDependency2KHR(
+    VulkanStream* vkStream,
+    const VkSubpassDependency2KHR* forMarshaling);
+
+void unmarshal_VkSubpassDependency2KHR(
+    VulkanStream* vkStream,
+    VkSubpassDependency2KHR* forUnmarshaling);
+
+void marshal_VkRenderPassCreateInfo2KHR(
+    VulkanStream* vkStream,
+    const VkRenderPassCreateInfo2KHR* forMarshaling);
+
+void unmarshal_VkRenderPassCreateInfo2KHR(
+    VulkanStream* vkStream,
+    VkRenderPassCreateInfo2KHR* forUnmarshaling);
+
+#define OP_vkCreateRenderPass2KHR 20225
+void marshal_VkSubpassBeginInfoKHR(
+    VulkanStream* vkStream,
+    const VkSubpassBeginInfoKHR* forMarshaling);
+
+void unmarshal_VkSubpassBeginInfoKHR(
+    VulkanStream* vkStream,
+    VkSubpassBeginInfoKHR* forUnmarshaling);
+
+#define OP_vkCmdBeginRenderPass2KHR 20226
+void marshal_VkSubpassEndInfoKHR(
+    VulkanStream* vkStream,
+    const VkSubpassEndInfoKHR* forMarshaling);
+
+void unmarshal_VkSubpassEndInfoKHR(
+    VulkanStream* vkStream,
+    VkSubpassEndInfoKHR* forUnmarshaling);
+
+#define OP_vkCmdNextSubpass2KHR 20227
+#define OP_vkCmdEndRenderPass2KHR 20228
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
+    VulkanStream* vkStream,
+    const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
+    VulkanStream* vkStream,
+    VkSharedPresentSurfaceCapabilitiesKHR* forUnmarshaling);
+
+#define OP_vkGetSwapchainStatusKHR 20229
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#define OP_vkGetPhysicalDeviceExternalFencePropertiesKHR 20230
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void marshal_VkImportFenceWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportFenceWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportFenceWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkImportFenceWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportFenceWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkExportFenceWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportFenceWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkExportFenceWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkFenceGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    const VkFenceGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkFenceGetWin32HandleInfoKHR(
+    VulkanStream* vkStream,
+    VkFenceGetWin32HandleInfoKHR* forUnmarshaling);
+
+#define OP_vkImportFenceWin32HandleKHR 20231
+#define OP_vkGetFenceWin32HandleKHR 20232
+#endif
+#ifdef VK_KHR_external_fence_fd
+void marshal_VkImportFenceFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkImportFenceFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportFenceFdInfoKHR(
+    VulkanStream* vkStream,
+    VkImportFenceFdInfoKHR* forUnmarshaling);
+
+void marshal_VkFenceGetFdInfoKHR(
+    VulkanStream* vkStream,
+    const VkFenceGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkFenceGetFdInfoKHR(
+    VulkanStream* vkStream,
+    VkFenceGetFdInfoKHR* forUnmarshaling);
+
+#define OP_vkImportFenceFdKHR 20233
+#define OP_vkGetFenceFdKHR 20234
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void marshal_VkPhysicalDeviceSurfaceInfo2KHR(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSurfaceInfo2KHR* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSurfaceInfo2KHR* forUnmarshaling);
+
+void marshal_VkSurfaceCapabilities2KHR(
+    VulkanStream* vkStream,
+    const VkSurfaceCapabilities2KHR* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilities2KHR(
+    VulkanStream* vkStream,
+    VkSurfaceCapabilities2KHR* forUnmarshaling);
+
+void marshal_VkSurfaceFormat2KHR(
+    VulkanStream* vkStream,
+    const VkSurfaceFormat2KHR* forMarshaling);
+
+void unmarshal_VkSurfaceFormat2KHR(
+    VulkanStream* vkStream,
+    VkSurfaceFormat2KHR* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR 20235
+#define OP_vkGetPhysicalDeviceSurfaceFormats2KHR 20236
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void marshal_VkDisplayProperties2KHR(
+    VulkanStream* vkStream,
+    const VkDisplayProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayProperties2KHR(
+    VulkanStream* vkStream,
+    VkDisplayProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneProperties2KHR(
+    VulkanStream* vkStream,
+    const VkDisplayPlaneProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneProperties2KHR(
+    VulkanStream* vkStream,
+    VkDisplayPlaneProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayModeProperties2KHR(
+    VulkanStream* vkStream,
+    const VkDisplayModeProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayModeProperties2KHR(
+    VulkanStream* vkStream,
+    VkDisplayModeProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneInfo2KHR(
+    VulkanStream* vkStream,
+    const VkDisplayPlaneInfo2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneInfo2KHR(
+    VulkanStream* vkStream,
+    VkDisplayPlaneInfo2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneCapabilities2KHR(
+    VulkanStream* vkStream,
+    const VkDisplayPlaneCapabilities2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneCapabilities2KHR(
+    VulkanStream* vkStream,
+    VkDisplayPlaneCapabilities2KHR* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceDisplayProperties2KHR 20237
+#define OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR 20238
+#define OP_vkGetDisplayModeProperties2KHR 20239
+#define OP_vkGetDisplayPlaneCapabilities2KHR 20240
+#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
+#define OP_vkGetImageMemoryRequirements2KHR 20241
+#define OP_vkGetBufferMemoryRequirements2KHR 20242
+#define OP_vkGetImageSparseMemoryRequirements2KHR 20243
+#endif
+#ifdef VK_KHR_image_format_list
+void marshal_VkImageFormatListCreateInfoKHR(
+    VulkanStream* vkStream,
+    const VkImageFormatListCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkImageFormatListCreateInfoKHR(
+    VulkanStream* vkStream,
+    VkImageFormatListCreateInfoKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#define OP_vkCreateSamplerYcbcrConversionKHR 20244
+#define OP_vkDestroySamplerYcbcrConversionKHR 20245
+#endif
+#ifdef VK_KHR_bind_memory2
+#define OP_vkBindBufferMemory2KHR 20246
+#define OP_vkBindImageMemory2KHR 20247
+#endif
+#ifdef VK_KHR_maintenance3
+#define OP_vkGetDescriptorSetLayoutSupportKHR 20248
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#define OP_vkCmdDrawIndirectCountKHR 20249
+#define OP_vkCmdDrawIndexedIndirectCountKHR 20250
+#endif
+#ifdef VK_KHR_8bit_storage
+void marshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+    VulkanStream* vkStream,
+    const VkPhysicalDevice8BitStorageFeaturesKHR* forMarshaling);
+
+void unmarshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+    VulkanStream* vkStream,
+    VkPhysicalDevice8BitStorageFeaturesKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_debug_report
+void marshal_VkDebugReportCallbackCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugReportCallbackCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugReportCallbackCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugReportCallbackCreateInfoEXT* forUnmarshaling);
+
+#define OP_vkCreateDebugReportCallbackEXT 20251
+#define OP_vkDestroyDebugReportCallbackEXT 20252
+#define OP_vkDebugReportMessageEXT 20253
+#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
+void marshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+    VulkanStream* vkStream,
+    const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+    VulkanStream* vkStream,
+    VkPipelineRasterizationStateRasterizationOrderAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void marshal_VkDebugMarkerObjectNameInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugMarkerObjectNameInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerObjectNameInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugMarkerObjectNameInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugMarkerObjectTagInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugMarkerObjectTagInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerObjectTagInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugMarkerObjectTagInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugMarkerMarkerInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugMarkerMarkerInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerMarkerInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugMarkerMarkerInfoEXT* forUnmarshaling);
+
+#define OP_vkDebugMarkerSetObjectTagEXT 20254
+#define OP_vkDebugMarkerSetObjectNameEXT 20255
+#define OP_vkCmdDebugMarkerBeginEXT 20256
+#define OP_vkCmdDebugMarkerEndEXT 20257
+#define OP_vkCmdDebugMarkerInsertEXT 20258
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void marshal_VkDedicatedAllocationImageCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkDedicatedAllocationImageCreateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationImageCreateInfoNV(
+    VulkanStream* vkStream,
+    VkDedicatedAllocationImageCreateInfoNV* forUnmarshaling);
+
+void marshal_VkDedicatedAllocationBufferCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationBufferCreateInfoNV(
+    VulkanStream* vkStream,
+    VkDedicatedAllocationBufferCreateInfoNV* forUnmarshaling);
+
+void marshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+    VulkanStream* vkStream,
+    const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+    VulkanStream* vkStream,
+    VkDedicatedAllocationMemoryAllocateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#define OP_vkCmdDrawIndirectCountAMD 20259
+#define OP_vkCmdDrawIndexedIndirectCountAMD 20260
+#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
+void marshal_VkTextureLODGatherFormatPropertiesAMD(
+    VulkanStream* vkStream,
+    const VkTextureLODGatherFormatPropertiesAMD* forMarshaling);
+
+void unmarshal_VkTextureLODGatherFormatPropertiesAMD(
+    VulkanStream* vkStream,
+    VkTextureLODGatherFormatPropertiesAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_shader_info
+void marshal_VkShaderResourceUsageAMD(
+    VulkanStream* vkStream,
+    const VkShaderResourceUsageAMD* forMarshaling);
+
+void unmarshal_VkShaderResourceUsageAMD(
+    VulkanStream* vkStream,
+    VkShaderResourceUsageAMD* forUnmarshaling);
+
+void marshal_VkShaderStatisticsInfoAMD(
+    VulkanStream* vkStream,
+    const VkShaderStatisticsInfoAMD* forMarshaling);
+
+void unmarshal_VkShaderStatisticsInfoAMD(
+    VulkanStream* vkStream,
+    VkShaderStatisticsInfoAMD* forUnmarshaling);
+
+#define OP_vkGetShaderInfoAMD 20261
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void marshal_VkExternalImageFormatPropertiesNV(
+    VulkanStream* vkStream,
+    const VkExternalImageFormatPropertiesNV* forMarshaling);
+
+void unmarshal_VkExternalImageFormatPropertiesNV(
+    VulkanStream* vkStream,
+    VkExternalImageFormatPropertiesNV* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV 20262
+#endif
+#ifdef VK_NV_external_memory
+void marshal_VkExternalMemoryImageCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkExternalMemoryImageCreateInfoNV* forMarshaling);
+
+void unmarshal_VkExternalMemoryImageCreateInfoNV(
+    VulkanStream* vkStream,
+    VkExternalMemoryImageCreateInfoNV* forUnmarshaling);
+
+void marshal_VkExportMemoryAllocateInfoNV(
+    VulkanStream* vkStream,
+    const VkExportMemoryAllocateInfoNV* forMarshaling);
+
+void unmarshal_VkExportMemoryAllocateInfoNV(
+    VulkanStream* vkStream,
+    VkExportMemoryAllocateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoNV(
+    VulkanStream* vkStream,
+    const VkImportMemoryWin32HandleInfoNV* forMarshaling);
+
+void unmarshal_VkImportMemoryWin32HandleInfoNV(
+    VulkanStream* vkStream,
+    VkImportMemoryWin32HandleInfoNV* forUnmarshaling);
+
+void marshal_VkExportMemoryWin32HandleInfoNV(
+    VulkanStream* vkStream,
+    const VkExportMemoryWin32HandleInfoNV* forMarshaling);
+
+void unmarshal_VkExportMemoryWin32HandleInfoNV(
+    VulkanStream* vkStream,
+    VkExportMemoryWin32HandleInfoNV* forUnmarshaling);
+
+#define OP_vkGetMemoryWin32HandleNV 20263
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+    VulkanStream* vkStream,
+    const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling);
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+    VulkanStream* vkStream,
+    VkWin32KeyedMutexAcquireReleaseInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_validation_flags
+void marshal_VkValidationFlagsEXT(
+    VulkanStream* vkStream,
+    const VkValidationFlagsEXT* forMarshaling);
+
+void unmarshal_VkValidationFlagsEXT(
+    VulkanStream* vkStream,
+    VkValidationFlagsEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NN_vi_surface
+void marshal_VkViSurfaceCreateInfoNN(
+    VulkanStream* vkStream,
+    const VkViSurfaceCreateInfoNN* forMarshaling);
+
+void unmarshal_VkViSurfaceCreateInfoNN(
+    VulkanStream* vkStream,
+    VkViSurfaceCreateInfoNN* forUnmarshaling);
+
+#define OP_vkCreateViSurfaceNN 20264
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void marshal_VkConditionalRenderingBeginInfoEXT(
+    VulkanStream* vkStream,
+    const VkConditionalRenderingBeginInfoEXT* forMarshaling);
+
+void unmarshal_VkConditionalRenderingBeginInfoEXT(
+    VulkanStream* vkStream,
+    VkConditionalRenderingBeginInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceConditionalRenderingFeaturesEXT* forUnmarshaling);
+
+void marshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+    VulkanStream* vkStream,
+    const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling);
+
+void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+    VulkanStream* vkStream,
+    VkCommandBufferInheritanceConditionalRenderingInfoEXT* forUnmarshaling);
+
+#define OP_vkCmdBeginConditionalRenderingEXT 20265
+#define OP_vkCmdEndConditionalRenderingEXT 20266
+#endif
+#ifdef VK_NVX_device_generated_commands
+void marshal_VkDeviceGeneratedCommandsFeaturesNVX(
+    VulkanStream* vkStream,
+    const VkDeviceGeneratedCommandsFeaturesNVX* forMarshaling);
+
+void unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(
+    VulkanStream* vkStream,
+    VkDeviceGeneratedCommandsFeaturesNVX* forUnmarshaling);
+
+void marshal_VkDeviceGeneratedCommandsLimitsNVX(
+    VulkanStream* vkStream,
+    const VkDeviceGeneratedCommandsLimitsNVX* forMarshaling);
+
+void unmarshal_VkDeviceGeneratedCommandsLimitsNVX(
+    VulkanStream* vkStream,
+    VkDeviceGeneratedCommandsLimitsNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsTokenNVX(
+    VulkanStream* vkStream,
+    const VkIndirectCommandsTokenNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsTokenNVX(
+    VulkanStream* vkStream,
+    VkIndirectCommandsTokenNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsLayoutTokenNVX(
+    VulkanStream* vkStream,
+    const VkIndirectCommandsLayoutTokenNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsLayoutTokenNVX(
+    VulkanStream* vkStream,
+    VkIndirectCommandsLayoutTokenNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsLayoutCreateInfoNVX(
+    VulkanStream* vkStream,
+    const VkIndirectCommandsLayoutCreateInfoNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(
+    VulkanStream* vkStream,
+    VkIndirectCommandsLayoutCreateInfoNVX* forUnmarshaling);
+
+void marshal_VkCmdProcessCommandsInfoNVX(
+    VulkanStream* vkStream,
+    const VkCmdProcessCommandsInfoNVX* forMarshaling);
+
+void unmarshal_VkCmdProcessCommandsInfoNVX(
+    VulkanStream* vkStream,
+    VkCmdProcessCommandsInfoNVX* forUnmarshaling);
+
+void marshal_VkCmdReserveSpaceForCommandsInfoNVX(
+    VulkanStream* vkStream,
+    const VkCmdReserveSpaceForCommandsInfoNVX* forMarshaling);
+
+void unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(
+    VulkanStream* vkStream,
+    VkCmdReserveSpaceForCommandsInfoNVX* forUnmarshaling);
+
+void marshal_VkObjectTableCreateInfoNVX(
+    VulkanStream* vkStream,
+    const VkObjectTableCreateInfoNVX* forMarshaling);
+
+void unmarshal_VkObjectTableCreateInfoNVX(
+    VulkanStream* vkStream,
+    VkObjectTableCreateInfoNVX* forUnmarshaling);
+
+void marshal_VkObjectTableEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTableEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTableEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTablePipelineEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTablePipelineEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTablePipelineEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTablePipelineEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableDescriptorSetEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTableDescriptorSetEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableDescriptorSetEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTableDescriptorSetEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableVertexBufferEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTableVertexBufferEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableVertexBufferEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTableVertexBufferEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableIndexBufferEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTableIndexBufferEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableIndexBufferEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTableIndexBufferEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTablePushConstantEntryNVX(
+    VulkanStream* vkStream,
+    const VkObjectTablePushConstantEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTablePushConstantEntryNVX(
+    VulkanStream* vkStream,
+    VkObjectTablePushConstantEntryNVX* forUnmarshaling);
+
+#define OP_vkCmdProcessCommandsNVX 20267
+#define OP_vkCmdReserveSpaceForCommandsNVX 20268
+#define OP_vkCreateIndirectCommandsLayoutNVX 20269
+#define OP_vkDestroyIndirectCommandsLayoutNVX 20270
+#define OP_vkCreateObjectTableNVX 20271
+#define OP_vkDestroyObjectTableNVX 20272
+#define OP_vkRegisterObjectsNVX 20273
+#define OP_vkUnregisterObjectsNVX 20274
+#define OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX 20275
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void marshal_VkViewportWScalingNV(
+    VulkanStream* vkStream,
+    const VkViewportWScalingNV* forMarshaling);
+
+void unmarshal_VkViewportWScalingNV(
+    VulkanStream* vkStream,
+    VkViewportWScalingNV* forUnmarshaling);
+
+void marshal_VkPipelineViewportWScalingStateCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
+    VulkanStream* vkStream,
+    VkPipelineViewportWScalingStateCreateInfoNV* forUnmarshaling);
+
+#define OP_vkCmdSetViewportWScalingNV 20276
+#endif
+#ifdef VK_EXT_direct_mode_display
+#define OP_vkReleaseDisplayEXT 20277
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#define OP_vkAcquireXlibDisplayEXT 20278
+#define OP_vkGetRandROutputDisplayEXT 20279
+#endif
+#ifdef VK_EXT_display_surface_counter
+void marshal_VkSurfaceCapabilities2EXT(
+    VulkanStream* vkStream,
+    const VkSurfaceCapabilities2EXT* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilities2EXT(
+    VulkanStream* vkStream,
+    VkSurfaceCapabilities2EXT* forUnmarshaling);
+
+#define OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT 20280
+#endif
+#ifdef VK_EXT_display_control
+void marshal_VkDisplayPowerInfoEXT(
+    VulkanStream* vkStream,
+    const VkDisplayPowerInfoEXT* forMarshaling);
+
+void unmarshal_VkDisplayPowerInfoEXT(
+    VulkanStream* vkStream,
+    VkDisplayPowerInfoEXT* forUnmarshaling);
+
+void marshal_VkDeviceEventInfoEXT(
+    VulkanStream* vkStream,
+    const VkDeviceEventInfoEXT* forMarshaling);
+
+void unmarshal_VkDeviceEventInfoEXT(
+    VulkanStream* vkStream,
+    VkDeviceEventInfoEXT* forUnmarshaling);
+
+void marshal_VkDisplayEventInfoEXT(
+    VulkanStream* vkStream,
+    const VkDisplayEventInfoEXT* forMarshaling);
+
+void unmarshal_VkDisplayEventInfoEXT(
+    VulkanStream* vkStream,
+    VkDisplayEventInfoEXT* forUnmarshaling);
+
+void marshal_VkSwapchainCounterCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkSwapchainCounterCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkSwapchainCounterCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkSwapchainCounterCreateInfoEXT* forUnmarshaling);
+
+#define OP_vkDisplayPowerControlEXT 20281
+#define OP_vkRegisterDeviceEventEXT 20282
+#define OP_vkRegisterDisplayEventEXT 20283
+#define OP_vkGetSwapchainCounterEXT 20284
+#endif
+#ifdef VK_GOOGLE_display_timing
+void marshal_VkRefreshCycleDurationGOOGLE(
+    VulkanStream* vkStream,
+    const VkRefreshCycleDurationGOOGLE* forMarshaling);
+
+void unmarshal_VkRefreshCycleDurationGOOGLE(
+    VulkanStream* vkStream,
+    VkRefreshCycleDurationGOOGLE* forUnmarshaling);
+
+void marshal_VkPastPresentationTimingGOOGLE(
+    VulkanStream* vkStream,
+    const VkPastPresentationTimingGOOGLE* forMarshaling);
+
+void unmarshal_VkPastPresentationTimingGOOGLE(
+    VulkanStream* vkStream,
+    VkPastPresentationTimingGOOGLE* forUnmarshaling);
+
+void marshal_VkPresentTimeGOOGLE(
+    VulkanStream* vkStream,
+    const VkPresentTimeGOOGLE* forMarshaling);
+
+void unmarshal_VkPresentTimeGOOGLE(
+    VulkanStream* vkStream,
+    VkPresentTimeGOOGLE* forUnmarshaling);
+
+void marshal_VkPresentTimesInfoGOOGLE(
+    VulkanStream* vkStream,
+    const VkPresentTimesInfoGOOGLE* forMarshaling);
+
+void unmarshal_VkPresentTimesInfoGOOGLE(
+    VulkanStream* vkStream,
+    VkPresentTimesInfoGOOGLE* forUnmarshaling);
+
+#define OP_vkGetRefreshCycleDurationGOOGLE 20285
+#define OP_vkGetPastPresentationTimingGOOGLE 20286
+#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
+void marshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void marshal_VkViewportSwizzleNV(
+    VulkanStream* vkStream,
+    const VkViewportSwizzleNV* forMarshaling);
+
+void unmarshal_VkViewportSwizzleNV(
+    VulkanStream* vkStream,
+    VkViewportSwizzleNV* forUnmarshaling);
+
+void marshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+    VulkanStream* vkStream,
+    VkPipelineViewportSwizzleStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void marshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceDiscardRectanglePropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkPipelineDiscardRectangleStateCreateInfoEXT* forUnmarshaling);
+
+#define OP_vkCmdSetDiscardRectangleEXT 20287
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void marshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkPipelineRasterizationConservativeStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void marshal_VkXYColorEXT(
+    VulkanStream* vkStream,
+    const VkXYColorEXT* forMarshaling);
+
+void unmarshal_VkXYColorEXT(
+    VulkanStream* vkStream,
+    VkXYColorEXT* forUnmarshaling);
+
+void marshal_VkHdrMetadataEXT(
+    VulkanStream* vkStream,
+    const VkHdrMetadataEXT* forMarshaling);
+
+void unmarshal_VkHdrMetadataEXT(
+    VulkanStream* vkStream,
+    VkHdrMetadataEXT* forUnmarshaling);
+
+#define OP_vkSetHdrMetadataEXT 20288
+#endif
+#ifdef VK_MVK_ios_surface
+void marshal_VkIOSSurfaceCreateInfoMVK(
+    VulkanStream* vkStream,
+    const VkIOSSurfaceCreateInfoMVK* forMarshaling);
+
+void unmarshal_VkIOSSurfaceCreateInfoMVK(
+    VulkanStream* vkStream,
+    VkIOSSurfaceCreateInfoMVK* forUnmarshaling);
+
+#define OP_vkCreateIOSSurfaceMVK 20289
+#endif
+#ifdef VK_MVK_macos_surface
+void marshal_VkMacOSSurfaceCreateInfoMVK(
+    VulkanStream* vkStream,
+    const VkMacOSSurfaceCreateInfoMVK* forMarshaling);
+
+void unmarshal_VkMacOSSurfaceCreateInfoMVK(
+    VulkanStream* vkStream,
+    VkMacOSSurfaceCreateInfoMVK* forUnmarshaling);
+
+#define OP_vkCreateMacOSSurfaceMVK 20290
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void marshal_VkDebugUtilsObjectNameInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugUtilsObjectNameInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsObjectNameInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugUtilsObjectNameInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsObjectTagInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugUtilsObjectTagInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsObjectTagInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugUtilsObjectTagInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsLabelEXT(
+    VulkanStream* vkStream,
+    const VkDebugUtilsLabelEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsLabelEXT(
+    VulkanStream* vkStream,
+    VkDebugUtilsLabelEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsMessengerCallbackDataEXT(
+    VulkanStream* vkStream,
+    const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
+    VulkanStream* vkStream,
+    VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsMessengerCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling);
+
+#define OP_vkSetDebugUtilsObjectNameEXT 20291
+#define OP_vkSetDebugUtilsObjectTagEXT 20292
+#define OP_vkQueueBeginDebugUtilsLabelEXT 20293
+#define OP_vkQueueEndDebugUtilsLabelEXT 20294
+#define OP_vkQueueInsertDebugUtilsLabelEXT 20295
+#define OP_vkCmdBeginDebugUtilsLabelEXT 20296
+#define OP_vkCmdEndDebugUtilsLabelEXT 20297
+#define OP_vkCmdInsertDebugUtilsLabelEXT 20298
+#define OP_vkCreateDebugUtilsMessengerEXT 20299
+#define OP_vkDestroyDebugUtilsMessengerEXT 20300
+#define OP_vkSubmitDebugUtilsMessageEXT 20301
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void marshal_VkAndroidHardwareBufferUsageANDROID(
+    VulkanStream* vkStream,
+    const VkAndroidHardwareBufferUsageANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferUsageANDROID(
+    VulkanStream* vkStream,
+    VkAndroidHardwareBufferUsageANDROID* forUnmarshaling);
+
+void marshal_VkAndroidHardwareBufferPropertiesANDROID(
+    VulkanStream* vkStream,
+    const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferPropertiesANDROID(
+    VulkanStream* vkStream,
+    VkAndroidHardwareBufferPropertiesANDROID* forUnmarshaling);
+
+void marshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+    VulkanStream* vkStream,
+    const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+    VulkanStream* vkStream,
+    VkAndroidHardwareBufferFormatPropertiesANDROID* forUnmarshaling);
+
+void marshal_VkImportAndroidHardwareBufferInfoANDROID(
+    VulkanStream* vkStream,
+    const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling);
+
+void unmarshal_VkImportAndroidHardwareBufferInfoANDROID(
+    VulkanStream* vkStream,
+    VkImportAndroidHardwareBufferInfoANDROID* forUnmarshaling);
+
+void marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+    VulkanStream* vkStream,
+    const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling);
+
+void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+    VulkanStream* vkStream,
+    VkMemoryGetAndroidHardwareBufferInfoANDROID* forUnmarshaling);
+
+void marshal_VkExternalFormatANDROID(
+    VulkanStream* vkStream,
+    const VkExternalFormatANDROID* forMarshaling);
+
+void unmarshal_VkExternalFormatANDROID(
+    VulkanStream* vkStream,
+    VkExternalFormatANDROID* forUnmarshaling);
+
+#define OP_vkGetAndroidHardwareBufferPropertiesANDROID 20302
+#define OP_vkGetMemoryAndroidHardwareBufferANDROID 20303
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void marshal_VkSamplerReductionModeCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkSamplerReductionModeCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkSamplerReductionModeCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkSamplerReductionModeCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forUnmarshaling);
+
+#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
+void marshal_VkSampleLocationEXT(
+    VulkanStream* vkStream,
+    const VkSampleLocationEXT* forMarshaling);
+
+void unmarshal_VkSampleLocationEXT(
+    VulkanStream* vkStream,
+    VkSampleLocationEXT* forUnmarshaling);
+
+void marshal_VkSampleLocationsInfoEXT(
+    VulkanStream* vkStream,
+    const VkSampleLocationsInfoEXT* forMarshaling);
+
+void unmarshal_VkSampleLocationsInfoEXT(
+    VulkanStream* vkStream,
+    VkSampleLocationsInfoEXT* forUnmarshaling);
+
+void marshal_VkAttachmentSampleLocationsEXT(
+    VulkanStream* vkStream,
+    const VkAttachmentSampleLocationsEXT* forMarshaling);
+
+void unmarshal_VkAttachmentSampleLocationsEXT(
+    VulkanStream* vkStream,
+    VkAttachmentSampleLocationsEXT* forUnmarshaling);
+
+void marshal_VkSubpassSampleLocationsEXT(
+    VulkanStream* vkStream,
+    const VkSubpassSampleLocationsEXT* forMarshaling);
+
+void unmarshal_VkSubpassSampleLocationsEXT(
+    VulkanStream* vkStream,
+    VkSubpassSampleLocationsEXT* forUnmarshaling);
+
+void marshal_VkRenderPassSampleLocationsBeginInfoEXT(
+    VulkanStream* vkStream,
+    const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling);
+
+void unmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
+    VulkanStream* vkStream,
+    VkRenderPassSampleLocationsBeginInfoEXT* forUnmarshaling);
+
+void marshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkPipelineSampleLocationsStateCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceSampleLocationsPropertiesEXT* forUnmarshaling);
+
+void marshal_VkMultisamplePropertiesEXT(
+    VulkanStream* vkStream,
+    const VkMultisamplePropertiesEXT* forMarshaling);
+
+void unmarshal_VkMultisamplePropertiesEXT(
+    VulkanStream* vkStream,
+    VkMultisamplePropertiesEXT* forUnmarshaling);
+
+#define OP_vkCmdSetSampleLocationsEXT 20304
+#define OP_vkGetPhysicalDeviceMultisamplePropertiesEXT 20305
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkPipelineColorBlendAdvancedStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void marshal_VkPipelineCoverageToColorStateCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
+    VulkanStream* vkStream,
+    VkPipelineCoverageToColorStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void marshal_VkPipelineCoverageModulationStateCreateInfoNV(
+    VulkanStream* vkStream,
+    const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
+    VulkanStream* vkStream,
+    VkPipelineCoverageModulationStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void marshal_VkValidationCacheCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkValidationCacheCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkValidationCacheCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkValidationCacheCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkShaderModuleValidationCacheCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkShaderModuleValidationCacheCreateInfoEXT* forUnmarshaling);
+
+#define OP_vkCreateValidationCacheEXT 20306
+#define OP_vkDestroyValidationCacheEXT 20307
+#define OP_vkMergeValidationCachesEXT 20308
+#define OP_vkGetValidationCacheDataEXT 20309
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forUnmarshaling);
+
+void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+    VulkanStream* vkStream,
+    const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+    VulkanStream* vkStream,
+    VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forUnmarshaling);
+
+void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+    VulkanStream* vkStream,
+    const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+    VulkanStream* vkStream,
+    VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void marshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkDeviceQueueGlobalPriorityCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void marshal_VkImportMemoryHostPointerInfoEXT(
+    VulkanStream* vkStream,
+    const VkImportMemoryHostPointerInfoEXT* forMarshaling);
+
+void unmarshal_VkImportMemoryHostPointerInfoEXT(
+    VulkanStream* vkStream,
+    VkImportMemoryHostPointerInfoEXT* forUnmarshaling);
+
+void marshal_VkMemoryHostPointerPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkMemoryHostPointerPropertiesEXT* forMarshaling);
+
+void unmarshal_VkMemoryHostPointerPropertiesEXT(
+    VulkanStream* vkStream,
+    VkMemoryHostPointerPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling);
+
+#define OP_vkGetMemoryHostPointerPropertiesEXT 20310
+#endif
+#ifdef VK_AMD_buffer_marker
+#define OP_vkCmdWriteBufferMarkerAMD 20311
+#endif
+#ifdef VK_AMD_shader_core_properties
+void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceShaderCorePropertiesAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+    VulkanStream* vkStream,
+    const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+    VulkanStream* vkStream,
+    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling);
+
+void marshal_VkVertexInputBindingDivisorDescriptionEXT(
+    VulkanStream* vkStream,
+    const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling);
+
+void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
+    VulkanStream* vkStream,
+    VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling);
+
+void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+    VulkanStream* vkStream,
+    VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void marshal_VkQueueFamilyCheckpointPropertiesNV(
+    VulkanStream* vkStream,
+    const VkQueueFamilyCheckpointPropertiesNV* forMarshaling);
+
+void unmarshal_VkQueueFamilyCheckpointPropertiesNV(
+    VulkanStream* vkStream,
+    VkQueueFamilyCheckpointPropertiesNV* forUnmarshaling);
+
+void marshal_VkCheckpointDataNV(
+    VulkanStream* vkStream,
+    const VkCheckpointDataNV* forMarshaling);
+
+void unmarshal_VkCheckpointDataNV(
+    VulkanStream* vkStream,
+    VkCheckpointDataNV* forUnmarshaling);
+
+#define OP_vkCmdSetCheckpointNV 20312
+#define OP_vkGetQueueCheckpointDataNV 20313
+#endif
+
+} // namespace goldfish_vk