// 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 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml
// cereal -o ../vulkan-cereal/stream-servers/vulkan/cereal
//
// Please do not modify directly;
// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
// or directly from Python by defining:
// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
// CEREAL_OUTPUT_DIR: Where to put the generated sources.
//
// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
// $CEREAL_OUTPUT_DIR
//
#pragma once
#include <vulkan/vulkan.h>

#include "VulkanStreamGuest.h"
#include "goldfish_vk_marshaling_guest.h"
#include "goldfish_vk_private_defs.h"
#include "vk_platform_compat.h"
#include "vulkan_gfxstream.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 gfxstream {
namespace vk {

#ifdef VK_VERSION_1_0
void marshal_VkExtent2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        const VkExtent2D* forMarshaling);

void unmarshal_VkExtent2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          VkExtent2D* forUnmarshaling);

void marshal_VkExtent3D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        const VkExtent3D* forMarshaling);

void unmarshal_VkExtent3D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          VkExtent3D* forUnmarshaling);

void marshal_VkOffset2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        const VkOffset2D* forMarshaling);

void unmarshal_VkOffset2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          VkOffset2D* forUnmarshaling);

void marshal_VkOffset3D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        const VkOffset3D* forMarshaling);

void unmarshal_VkOffset3D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          VkOffset3D* forUnmarshaling);

void marshal_VkRect2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                      const VkRect2D* forMarshaling);

void unmarshal_VkRect2D(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        VkRect2D* forUnmarshaling);

void marshal_VkBaseInStructure(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkBaseInStructure* forMarshaling);

void unmarshal_VkBaseInStructure(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkBaseInStructure* forUnmarshaling);

void marshal_VkBaseOutStructure(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkBaseOutStructure* forMarshaling);

void unmarshal_VkBaseOutStructure(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkBaseOutStructure* forUnmarshaling);

void marshal_VkBufferMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkBufferMemoryBarrier* forMarshaling);

void unmarshal_VkBufferMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkBufferMemoryBarrier* forUnmarshaling);

void marshal_VkDispatchIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkDispatchIndirectCommand* forMarshaling);

void unmarshal_VkDispatchIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkDispatchIndirectCommand* forUnmarshaling);

void marshal_VkDrawIndexedIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkDrawIndexedIndirectCommand* forMarshaling);

void unmarshal_VkDrawIndexedIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkDrawIndexedIndirectCommand* forUnmarshaling);

void marshal_VkDrawIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkDrawIndirectCommand* forMarshaling);

void unmarshal_VkDrawIndirectCommand(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkDrawIndirectCommand* forUnmarshaling);

void marshal_VkImageSubresourceRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkImageSubresourceRange* forMarshaling);

void unmarshal_VkImageSubresourceRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkImageSubresourceRange* forUnmarshaling);

void marshal_VkImageMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkImageMemoryBarrier* forMarshaling);

void unmarshal_VkImageMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkImageMemoryBarrier* forUnmarshaling);

void marshal_VkMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                             const VkMemoryBarrier* forMarshaling);

void unmarshal_VkMemoryBarrier(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               VkMemoryBarrier* forUnmarshaling);

void marshal_VkPipelineCacheHeaderVersionOne(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkPipelineCacheHeaderVersionOne* forMarshaling);

void unmarshal_VkPipelineCacheHeaderVersionOne(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkPipelineCacheHeaderVersionOne* forUnmarshaling);

void marshal_VkAllocationCallbacks(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkAllocationCallbacks* forMarshaling);

void unmarshal_VkAllocationCallbacks(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkAllocationCallbacks* forUnmarshaling);

void marshal_VkApplicationInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkApplicationInfo* forMarshaling);

void unmarshal_VkApplicationInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkApplicationInfo* forUnmarshaling);

void marshal_VkFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkFormatProperties* forMarshaling);

void unmarshal_VkFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkFormatProperties* forUnmarshaling);

void marshal_VkImageFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkImageFormatProperties* forMarshaling);

void unmarshal_VkImageFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkImageFormatProperties* forUnmarshaling);

void marshal_VkInstanceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkInstanceCreateInfo* forMarshaling);

void unmarshal_VkInstanceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkInstanceCreateInfo* forUnmarshaling);

void marshal_VkMemoryHeap(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkMemoryHeap* forMarshaling);

void unmarshal_VkMemoryHeap(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkMemoryHeap* forUnmarshaling);

void marshal_VkMemoryType(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkMemoryType* forMarshaling);

void unmarshal_VkMemoryType(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkMemoryType* forUnmarshaling);

void marshal_VkPhysicalDeviceFeatures(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkPhysicalDeviceFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceFeatures(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkPhysicalDeviceFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceLimits(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkPhysicalDeviceLimits* forMarshaling);

void unmarshal_VkPhysicalDeviceLimits(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkPhysicalDeviceLimits* forUnmarshaling);

void marshal_VkPhysicalDeviceMemoryProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceMemoryProperties(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceMemoryProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceSparseProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSparseProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceSparseProperties(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceSparseProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkPhysicalDeviceProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkPhysicalDeviceProperties* forUnmarshaling);

void marshal_VkQueueFamilyProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkQueueFamilyProperties* forMarshaling);

void unmarshal_VkQueueFamilyProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkQueueFamilyProperties* forUnmarshaling);

#define OP_vkCreateInstance 20000
#define OP_vkDestroyInstance 20001
#define OP_vkEnumeratePhysicalDevices 20002
#define OP_vkGetPhysicalDeviceFeatures 20003
#define OP_vkGetPhysicalDeviceFormatProperties 20004
#define OP_vkGetPhysicalDeviceImageFormatProperties 20005
#define OP_vkGetPhysicalDeviceProperties 20006
#define OP_vkGetPhysicalDeviceQueueFamilyProperties 20007
#define OP_vkGetPhysicalDeviceMemoryProperties 20008
#define OP_vkGetInstanceProcAddr 20009
#define OP_vkGetDeviceProcAddr 20010
void marshal_VkDeviceQueueCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkDeviceQueueCreateInfo* forMarshaling);

void unmarshal_VkDeviceQueueCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkDeviceQueueCreateInfo* forUnmarshaling);

void marshal_VkDeviceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkDeviceCreateInfo* forMarshaling);

void unmarshal_VkDeviceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkDeviceCreateInfo* forUnmarshaling);

#define OP_vkCreateDevice 20011
#define OP_vkDestroyDevice 20012
void marshal_VkExtensionProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkExtensionProperties* forMarshaling);

void unmarshal_VkExtensionProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkExtensionProperties* forUnmarshaling);

#define OP_vkEnumerateInstanceExtensionProperties 20013
#define OP_vkEnumerateDeviceExtensionProperties 20014
void marshal_VkLayerProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkLayerProperties* forMarshaling);

void unmarshal_VkLayerProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkLayerProperties* forUnmarshaling);

#define OP_vkEnumerateInstanceLayerProperties 20015
#define OP_vkEnumerateDeviceLayerProperties 20016
void marshal_VkSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkSubmitInfo* forMarshaling);

void unmarshal_VkSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkSubmitInfo* forUnmarshaling);

#define OP_vkGetDeviceQueue 20017
#define OP_vkQueueSubmit 20018
#define OP_vkQueueWaitIdle 20019
#define OP_vkDeviceWaitIdle 20020
void marshal_VkMappedMemoryRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkMappedMemoryRange* forMarshaling);

void unmarshal_VkMappedMemoryRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkMappedMemoryRange* forUnmarshaling);

void marshal_VkMemoryAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkMemoryAllocateInfo* forMarshaling);

void unmarshal_VkMemoryAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkMemoryAllocateInfo* forUnmarshaling);

#define OP_vkAllocateMemory 20021
#define OP_vkFreeMemory 20022
#define OP_vkMapMemory 20023
#define OP_vkUnmapMemory 20024
#define OP_vkFlushMappedMemoryRanges 20025
#define OP_vkInvalidateMappedMemoryRanges 20026
#define OP_vkGetDeviceMemoryCommitment 20027
void marshal_VkMemoryRequirements(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkMemoryRequirements* forMarshaling);

void unmarshal_VkMemoryRequirements(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkMemoryRequirements* forUnmarshaling);

#define OP_vkBindBufferMemory 20028
#define OP_vkBindImageMemory 20029
#define OP_vkGetBufferMemoryRequirements 20030
#define OP_vkGetImageMemoryRequirements 20031
void marshal_VkSparseMemoryBind(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkSparseMemoryBind* forMarshaling);

void unmarshal_VkSparseMemoryBind(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkSparseMemoryBind* forUnmarshaling);

void marshal_VkSparseBufferMemoryBindInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkSparseBufferMemoryBindInfo* forMarshaling);

void unmarshal_VkSparseBufferMemoryBindInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkSparseBufferMemoryBindInfo* forUnmarshaling);

void marshal_VkSparseImageOpaqueMemoryBindInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSparseImageOpaqueMemoryBindInfo* forMarshaling);

void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling);

void marshal_VkImageSubresource(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkImageSubresource* forMarshaling);

void unmarshal_VkImageSubresource(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkImageSubresource* forUnmarshaling);

void marshal_VkSparseImageMemoryBind(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkSparseImageMemoryBind* forMarshaling);

void unmarshal_VkSparseImageMemoryBind(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkSparseImageMemoryBind* forUnmarshaling);

void marshal_VkSparseImageMemoryBindInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkSparseImageMemoryBindInfo* forMarshaling);

void unmarshal_VkSparseImageMemoryBindInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkSparseImageMemoryBindInfo* forUnmarshaling);

void marshal_VkBindSparseInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkBindSparseInfo* forMarshaling);

void unmarshal_VkBindSparseInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkBindSparseInfo* forUnmarshaling);

void marshal_VkSparseImageFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkSparseImageFormatProperties* forMarshaling);

void unmarshal_VkSparseImageFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkSparseImageFormatProperties* forUnmarshaling);

void marshal_VkSparseImageMemoryRequirements(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkSparseImageMemoryRequirements* forMarshaling);

void unmarshal_VkSparseImageMemoryRequirements(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkSparseImageMemoryRequirements* forUnmarshaling);

#define OP_vkGetImageSparseMemoryRequirements 20032
#define OP_vkGetPhysicalDeviceSparseImageFormatProperties 20033
#define OP_vkQueueBindSparse 20034
void marshal_VkFenceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkFenceCreateInfo* forMarshaling);

void unmarshal_VkFenceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 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(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkSemaphoreCreateInfo* forMarshaling);

void unmarshal_VkSemaphoreCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkSemaphoreCreateInfo* forUnmarshaling);

#define OP_vkCreateSemaphore 20040
#define OP_vkDestroySemaphore 20041
void marshal_VkEventCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkEventCreateInfo* forMarshaling);

void unmarshal_VkEventCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 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(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkQueryPoolCreateInfo* forMarshaling);

void unmarshal_VkQueryPoolCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkQueryPoolCreateInfo* forUnmarshaling);

#define OP_vkCreateQueryPool 20047
#define OP_vkDestroyQueryPool 20048
#define OP_vkGetQueryPoolResults 20049
void marshal_VkBufferCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkBufferCreateInfo* forMarshaling);

void unmarshal_VkBufferCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkBufferCreateInfo* forUnmarshaling);

#define OP_vkCreateBuffer 20050
#define OP_vkDestroyBuffer 20051
void marshal_VkBufferViewCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkBufferViewCreateInfo* forMarshaling);

void unmarshal_VkBufferViewCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkBufferViewCreateInfo* forUnmarshaling);

#define OP_vkCreateBufferView 20052
#define OP_vkDestroyBufferView 20053
void marshal_VkImageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkImageCreateInfo* forMarshaling);

void unmarshal_VkImageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkImageCreateInfo* forUnmarshaling);

void marshal_VkSubresourceLayout(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSubresourceLayout* forMarshaling);

void unmarshal_VkSubresourceLayout(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSubresourceLayout* forUnmarshaling);

#define OP_vkCreateImage 20054
#define OP_vkDestroyImage 20055
#define OP_vkGetImageSubresourceLayout 20056
void marshal_VkComponentMapping(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkComponentMapping* forMarshaling);

void unmarshal_VkComponentMapping(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkComponentMapping* forUnmarshaling);

void marshal_VkImageViewCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkImageViewCreateInfo* forMarshaling);

void unmarshal_VkImageViewCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkImageViewCreateInfo* forUnmarshaling);

#define OP_vkCreateImageView 20057
#define OP_vkDestroyImageView 20058
void marshal_VkShaderModuleCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkShaderModuleCreateInfo* forMarshaling);

void unmarshal_VkShaderModuleCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkShaderModuleCreateInfo* forUnmarshaling);

#define OP_vkCreateShaderModule 20059
#define OP_vkDestroyShaderModule 20060
void marshal_VkPipelineCacheCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkPipelineCacheCreateInfo* forMarshaling);

void unmarshal_VkPipelineCacheCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkPipelineCacheCreateInfo* forUnmarshaling);

#define OP_vkCreatePipelineCache 20061
#define OP_vkDestroyPipelineCache 20062
#define OP_vkGetPipelineCacheData 20063
#define OP_vkMergePipelineCaches 20064
void marshal_VkSpecializationMapEntry(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkSpecializationMapEntry* forMarshaling);

void unmarshal_VkSpecializationMapEntry(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkSpecializationMapEntry* forUnmarshaling);

void marshal_VkSpecializationInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkSpecializationInfo* forMarshaling);

void unmarshal_VkSpecializationInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkSpecializationInfo* forUnmarshaling);

void marshal_VkPipelineShaderStageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkPipelineShaderStageCreateInfo* forMarshaling);

void unmarshal_VkPipelineShaderStageCreateInfo(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkPipelineShaderStageCreateInfo* forUnmarshaling);

void marshal_VkComputePipelineCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkComputePipelineCreateInfo* forMarshaling);

void unmarshal_VkComputePipelineCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkComputePipelineCreateInfo* forUnmarshaling);

void marshal_VkVertexInputBindingDescription(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVertexInputBindingDescription* forMarshaling);

void unmarshal_VkVertexInputBindingDescription(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVertexInputBindingDescription* forUnmarshaling);

void marshal_VkVertexInputAttributeDescription(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVertexInputAttributeDescription* forMarshaling);

void unmarshal_VkVertexInputAttributeDescription(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVertexInputAttributeDescription* forUnmarshaling);

void marshal_VkPipelineVertexInputStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineVertexInputStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineVertexInputStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineVertexInputStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineInputAssemblyStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineInputAssemblyStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineTessellationStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineTessellationStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineTessellationStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineTessellationStateCreateInfo* forUnmarshaling);

void marshal_VkViewport(VulkanStreamGuest* vkStream, VkStructureType rootType,
                        const VkViewport* forMarshaling);

void unmarshal_VkViewport(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          VkViewport* forUnmarshaling);

void marshal_VkPipelineViewportStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineViewportStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineRasterizationStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineRasterizationStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineMultisampleStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineMultisampleStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineMultisampleStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineMultisampleStateCreateInfo* forUnmarshaling);

void marshal_VkStencilOpState(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkStencilOpState* forMarshaling);

void unmarshal_VkStencilOpState(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkStencilOpState* forUnmarshaling);

void marshal_VkPipelineDepthStencilStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineDepthStencilStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineDepthStencilStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineDepthStencilStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineColorBlendAttachmentState(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineColorBlendAttachmentState* forMarshaling);

void unmarshal_VkPipelineColorBlendAttachmentState(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineColorBlendAttachmentState* forUnmarshaling);

void marshal_VkPipelineColorBlendStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineColorBlendStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineColorBlendStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineColorBlendStateCreateInfo* forUnmarshaling);

void marshal_VkPipelineDynamicStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineDynamicStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineDynamicStateCreateInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPipelineDynamicStateCreateInfo* forUnmarshaling);

void marshal_VkGraphicsPipelineCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkGraphicsPipelineCreateInfo* forMarshaling);

void unmarshal_VkGraphicsPipelineCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkGraphicsPipelineCreateInfo* forUnmarshaling);

#define OP_vkCreateGraphicsPipelines 20065
#define OP_vkCreateComputePipelines 20066
#define OP_vkDestroyPipeline 20067
void marshal_VkPushConstantRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkPushConstantRange* forMarshaling);

void unmarshal_VkPushConstantRange(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkPushConstantRange* forUnmarshaling);

void marshal_VkPipelineLayoutCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkPipelineLayoutCreateInfo* forMarshaling);

void unmarshal_VkPipelineLayoutCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkPipelineLayoutCreateInfo* forUnmarshaling);

#define OP_vkCreatePipelineLayout 20068
#define OP_vkDestroyPipelineLayout 20069
void marshal_VkSamplerCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSamplerCreateInfo* forMarshaling);

void unmarshal_VkSamplerCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSamplerCreateInfo* forUnmarshaling);

#define OP_vkCreateSampler 20070
#define OP_vkDestroySampler 20071
void marshal_VkCopyDescriptorSet(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkCopyDescriptorSet* forMarshaling);

void unmarshal_VkCopyDescriptorSet(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkCopyDescriptorSet* forUnmarshaling);

void marshal_VkDescriptorBufferInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkDescriptorBufferInfo* forMarshaling);

void unmarshal_VkDescriptorBufferInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkDescriptorBufferInfo* forUnmarshaling);

void marshal_VkDescriptorImageInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkDescriptorImageInfo* forMarshaling);

void unmarshal_VkDescriptorImageInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkDescriptorImageInfo* forUnmarshaling);

void marshal_VkDescriptorPoolSize(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkDescriptorPoolSize* forMarshaling);

void unmarshal_VkDescriptorPoolSize(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkDescriptorPoolSize* forUnmarshaling);

void marshal_VkDescriptorPoolCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkDescriptorPoolCreateInfo* forMarshaling);

void unmarshal_VkDescriptorPoolCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkDescriptorPoolCreateInfo* forUnmarshaling);

void marshal_VkDescriptorSetAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkDescriptorSetAllocateInfo* forMarshaling);

void unmarshal_VkDescriptorSetAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkDescriptorSetAllocateInfo* forUnmarshaling);

void marshal_VkDescriptorSetLayoutBinding(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkDescriptorSetLayoutBinding* forMarshaling);

void unmarshal_VkDescriptorSetLayoutBinding(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkDescriptorSetLayoutBinding* forUnmarshaling);

void marshal_VkDescriptorSetLayoutCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkDescriptorSetLayoutCreateInfo* forMarshaling);

void unmarshal_VkDescriptorSetLayoutCreateInfo(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkDescriptorSetLayoutCreateInfo* forUnmarshaling);

void marshal_VkWriteDescriptorSet(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkWriteDescriptorSet* forMarshaling);

void unmarshal_VkWriteDescriptorSet(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkWriteDescriptorSet* forUnmarshaling);

#define OP_vkCreateDescriptorSetLayout 20072
#define OP_vkDestroyDescriptorSetLayout 20073
#define OP_vkCreateDescriptorPool 20074
#define OP_vkDestroyDescriptorPool 20075
#define OP_vkResetDescriptorPool 20076
#define OP_vkAllocateDescriptorSets 20077
#define OP_vkFreeDescriptorSets 20078
#define OP_vkUpdateDescriptorSets 20079
void marshal_VkAttachmentDescription(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkAttachmentDescription* forMarshaling);

void unmarshal_VkAttachmentDescription(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkAttachmentDescription* forUnmarshaling);

void marshal_VkAttachmentReference(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkAttachmentReference* forMarshaling);

void unmarshal_VkAttachmentReference(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkAttachmentReference* forUnmarshaling);

void marshal_VkFramebufferCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkFramebufferCreateInfo* forMarshaling);

void unmarshal_VkFramebufferCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkFramebufferCreateInfo* forUnmarshaling);

void marshal_VkSubpassDescription(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkSubpassDescription* forMarshaling);

void unmarshal_VkSubpassDescription(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkSubpassDescription* forUnmarshaling);

void marshal_VkSubpassDependency(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSubpassDependency* forMarshaling);

void unmarshal_VkSubpassDependency(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSubpassDependency* forUnmarshaling);

void marshal_VkRenderPassCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkRenderPassCreateInfo* forMarshaling);

void unmarshal_VkRenderPassCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkRenderPassCreateInfo* forUnmarshaling);

#define OP_vkCreateFramebuffer 20080
#define OP_vkDestroyFramebuffer 20081
#define OP_vkCreateRenderPass 20082
#define OP_vkDestroyRenderPass 20083
#define OP_vkGetRenderAreaGranularity 20084
void marshal_VkCommandPoolCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkCommandPoolCreateInfo* forMarshaling);

void unmarshal_VkCommandPoolCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkCommandPoolCreateInfo* forUnmarshaling);

#define OP_vkCreateCommandPool 20085
#define OP_vkDestroyCommandPool 20086
#define OP_vkResetCommandPool 20087
void marshal_VkCommandBufferAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkCommandBufferAllocateInfo* forMarshaling);

void unmarshal_VkCommandBufferAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkCommandBufferAllocateInfo* forUnmarshaling);

void marshal_VkCommandBufferInheritanceInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkCommandBufferInheritanceInfo* forMarshaling);

void unmarshal_VkCommandBufferInheritanceInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkCommandBufferInheritanceInfo* forUnmarshaling);

void marshal_VkCommandBufferBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkCommandBufferBeginInfo* forMarshaling);

void unmarshal_VkCommandBufferBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkCommandBufferBeginInfo* forUnmarshaling);

#define OP_vkAllocateCommandBuffers 20088
#define OP_vkFreeCommandBuffers 20089
#define OP_vkBeginCommandBuffer 20090
#define OP_vkEndCommandBuffer 20091
#define OP_vkResetCommandBuffer 20092
void marshal_VkBufferCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkBufferCopy* forMarshaling);

void unmarshal_VkBufferCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkBufferCopy* forUnmarshaling);

void marshal_VkImageSubresourceLayers(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkImageSubresourceLayers* forMarshaling);

void unmarshal_VkImageSubresourceLayers(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkImageSubresourceLayers* forUnmarshaling);

void marshal_VkBufferImageCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkBufferImageCopy* forMarshaling);

void unmarshal_VkBufferImageCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkBufferImageCopy* forUnmarshaling);

void marshal_VkClearColorValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkClearColorValue* forMarshaling);

void unmarshal_VkClearColorValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkClearColorValue* forUnmarshaling);

void marshal_VkClearDepthStencilValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkClearDepthStencilValue* forMarshaling);

void unmarshal_VkClearDepthStencilValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkClearDepthStencilValue* forUnmarshaling);

void marshal_VkClearValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkClearValue* forMarshaling);

void unmarshal_VkClearValue(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkClearValue* forUnmarshaling);

void marshal_VkClearAttachment(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkClearAttachment* forMarshaling);

void unmarshal_VkClearAttachment(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkClearAttachment* forUnmarshaling);

void marshal_VkClearRect(VulkanStreamGuest* vkStream, VkStructureType rootType,
                         const VkClearRect* forMarshaling);

void unmarshal_VkClearRect(VulkanStreamGuest* vkStream, VkStructureType rootType,
                           VkClearRect* forUnmarshaling);

void marshal_VkImageBlit(VulkanStreamGuest* vkStream, VkStructureType rootType,
                         const VkImageBlit* forMarshaling);

void unmarshal_VkImageBlit(VulkanStreamGuest* vkStream, VkStructureType rootType,
                           VkImageBlit* forUnmarshaling);

void marshal_VkImageCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                         const VkImageCopy* forMarshaling);

void unmarshal_VkImageCopy(VulkanStreamGuest* vkStream, VkStructureType rootType,
                           VkImageCopy* forUnmarshaling);

void marshal_VkImageResolve(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            const VkImageResolve* forMarshaling);

void unmarshal_VkImageResolve(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              VkImageResolve* forUnmarshaling);

void marshal_VkRenderPassBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkRenderPassBeginInfo* forMarshaling);

void unmarshal_VkRenderPassBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkRenderPassBeginInfo* forUnmarshaling);

#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
#define OP_vkCmdCopyBuffer 20112
#define OP_vkCmdCopyImage 20113
#define OP_vkCmdBlitImage 20114
#define OP_vkCmdCopyBufferToImage 20115
#define OP_vkCmdCopyImageToBuffer 20116
#define OP_vkCmdUpdateBuffer 20117
#define OP_vkCmdFillBuffer 20118
#define OP_vkCmdClearColorImage 20119
#define OP_vkCmdClearDepthStencilImage 20120
#define OP_vkCmdClearAttachments 20121
#define OP_vkCmdResolveImage 20122
#define OP_vkCmdSetEvent 20123
#define OP_vkCmdResetEvent 20124
#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
#define OP_vkCmdBeginRenderPass 20133
#define OP_vkCmdNextSubpass 20134
#define OP_vkCmdEndRenderPass 20135
#define OP_vkCmdExecuteCommands 20136
#endif
#ifdef VK_VERSION_1_1
#define OP_vkEnumerateInstanceVersion 20137
void marshal_VkPhysicalDeviceSubgroupProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSubgroupProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceSubgroupProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSubgroupProperties* forUnmarshaling);

void marshal_VkBindBufferMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkBindBufferMemoryInfo* forMarshaling);

void unmarshal_VkBindBufferMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkBindBufferMemoryInfo* forUnmarshaling);

void marshal_VkBindImageMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkBindImageMemoryInfo* forMarshaling);

void unmarshal_VkBindImageMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkBindImageMemoryInfo* forUnmarshaling);

#define OP_vkBindBufferMemory2 20138
#define OP_vkBindImageMemory2 20139
void marshal_VkPhysicalDevice16BitStorageFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevice16BitStorageFeatures* forMarshaling);

void unmarshal_VkPhysicalDevice16BitStorageFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevice16BitStorageFeatures* forUnmarshaling);

void marshal_VkMemoryDedicatedRequirements(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkMemoryDedicatedRequirements* forMarshaling);

void unmarshal_VkMemoryDedicatedRequirements(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkMemoryDedicatedRequirements* forUnmarshaling);

void marshal_VkMemoryDedicatedAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkMemoryDedicatedAllocateInfo* forMarshaling);

void unmarshal_VkMemoryDedicatedAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkMemoryDedicatedAllocateInfo* forUnmarshaling);

void marshal_VkMemoryAllocateFlagsInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkMemoryAllocateFlagsInfo* forMarshaling);

void unmarshal_VkMemoryAllocateFlagsInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkMemoryAllocateFlagsInfo* forUnmarshaling);

void marshal_VkDeviceGroupRenderPassBeginInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceGroupRenderPassBeginInfo* forMarshaling);

void unmarshal_VkDeviceGroupRenderPassBeginInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkDeviceGroupRenderPassBeginInfo* forUnmarshaling);

void marshal_VkDeviceGroupCommandBufferBeginInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling);

void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling);

void marshal_VkDeviceGroupSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkDeviceGroupSubmitInfo* forMarshaling);

void unmarshal_VkDeviceGroupSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkDeviceGroupSubmitInfo* forUnmarshaling);

void marshal_VkDeviceGroupBindSparseInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkDeviceGroupBindSparseInfo* forMarshaling);

void unmarshal_VkDeviceGroupBindSparseInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkDeviceGroupBindSparseInfo* forUnmarshaling);

#define OP_vkGetDeviceGroupPeerMemoryFeatures 20140
#define OP_vkCmdSetDeviceMask 20141
#define OP_vkCmdDispatchBase 20142
void marshal_VkBindBufferMemoryDeviceGroupInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling);

void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling);

void marshal_VkBindImageMemoryDeviceGroupInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindImageMemoryDeviceGroupInfo* forMarshaling);

void unmarshal_VkBindImageMemoryDeviceGroupInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkBindImageMemoryDeviceGroupInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceGroupProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkPhysicalDeviceGroupProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceGroupProperties(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkPhysicalDeviceGroupProperties* forUnmarshaling);

void marshal_VkDeviceGroupDeviceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDeviceGroupDeviceCreateInfo* forMarshaling);

void unmarshal_VkDeviceGroupDeviceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkDeviceGroupDeviceCreateInfo* forUnmarshaling);

#define OP_vkEnumeratePhysicalDeviceGroups 20143
void marshal_VkBufferMemoryRequirementsInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkBufferMemoryRequirementsInfo2* forMarshaling);

void unmarshal_VkBufferMemoryRequirementsInfo2(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkBufferMemoryRequirementsInfo2* forUnmarshaling);

void marshal_VkImageMemoryRequirementsInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkImageMemoryRequirementsInfo2* forMarshaling);

void unmarshal_VkImageMemoryRequirementsInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkImageMemoryRequirementsInfo2* forUnmarshaling);

void marshal_VkImageSparseMemoryRequirementsInfo2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImageSparseMemoryRequirementsInfo2* forMarshaling);

void unmarshal_VkImageSparseMemoryRequirementsInfo2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImageSparseMemoryRequirementsInfo2* forUnmarshaling);

void marshal_VkMemoryRequirements2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkMemoryRequirements2* forMarshaling);

void unmarshal_VkMemoryRequirements2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkMemoryRequirements2* forUnmarshaling);

void marshal_VkSparseImageMemoryRequirements2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSparseImageMemoryRequirements2* forMarshaling);

void unmarshal_VkSparseImageMemoryRequirements2(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkSparseImageMemoryRequirements2* forUnmarshaling);

#define OP_vkGetImageMemoryRequirements2 20144
#define OP_vkGetBufferMemoryRequirements2 20145
#define OP_vkGetImageSparseMemoryRequirements2 20146
void marshal_VkPhysicalDeviceFeatures2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkPhysicalDeviceFeatures2* forMarshaling);

void unmarshal_VkPhysicalDeviceFeatures2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkPhysicalDeviceFeatures2* forUnmarshaling);

void marshal_VkPhysicalDeviceProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkPhysicalDeviceProperties2* forMarshaling);

void unmarshal_VkPhysicalDeviceProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkPhysicalDeviceProperties2* forUnmarshaling);

void marshal_VkFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkFormatProperties2* forMarshaling);

void unmarshal_VkFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkFormatProperties2* forUnmarshaling);

void marshal_VkImageFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkImageFormatProperties2* forMarshaling);

void unmarshal_VkImageFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkImageFormatProperties2* forUnmarshaling);

void marshal_VkPhysicalDeviceImageFormatInfo2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceImageFormatInfo2* forMarshaling);

void unmarshal_VkPhysicalDeviceImageFormatInfo2(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceImageFormatInfo2* forUnmarshaling);

void marshal_VkQueueFamilyProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkQueueFamilyProperties2* forMarshaling);

void unmarshal_VkQueueFamilyProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkQueueFamilyProperties2* forUnmarshaling);

void marshal_VkPhysicalDeviceMemoryProperties2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties2* forMarshaling);

void unmarshal_VkPhysicalDeviceMemoryProperties2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMemoryProperties2* forUnmarshaling);

void marshal_VkSparseImageFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkSparseImageFormatProperties2* forMarshaling);

void unmarshal_VkSparseImageFormatProperties2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkSparseImageFormatProperties2* forUnmarshaling);

void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling);

void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    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(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePointClippingProperties* forMarshaling);

void unmarshal_VkPhysicalDevicePointClippingProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePointClippingProperties* forUnmarshaling);

void marshal_VkInputAttachmentAspectReference(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkInputAttachmentAspectReference* forMarshaling);

void unmarshal_VkInputAttachmentAspectReference(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkInputAttachmentAspectReference* forUnmarshaling);

void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling);

void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling);

void marshal_VkImageViewUsageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkImageViewUsageCreateInfo* forMarshaling);

void unmarshal_VkImageViewUsageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkImageViewUsageCreateInfo* forUnmarshaling);

void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling);

void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling);

void marshal_VkRenderPassMultiviewCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkRenderPassMultiviewCreateInfo* forMarshaling);

void unmarshal_VkRenderPassMultiviewCreateInfo(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkRenderPassMultiviewCreateInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceMultiviewFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMultiviewFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceMultiviewFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMultiviewFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceMultiviewProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMultiviewProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceMultiviewProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMultiviewProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceVariablePointersFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVariablePointersFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceVariablePointersFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVariablePointersFeatures* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceVariablePointersFeatures,
                      marshal_VkPhysicalDeviceVariablePointerFeatures)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceVariablePointersFeatures,
                      unmarshal_VkPhysicalDeviceVariablePointerFeatures)

void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceProtectedMemoryProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling);

void marshal_VkDeviceQueueInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkDeviceQueueInfo2* forMarshaling);

void unmarshal_VkDeviceQueueInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkDeviceQueueInfo2* forUnmarshaling);

void marshal_VkProtectedSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkProtectedSubmitInfo* forMarshaling);

void unmarshal_VkProtectedSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkProtectedSubmitInfo* forUnmarshaling);

#define OP_vkGetDeviceQueue2 20155
void marshal_VkSamplerYcbcrConversionCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSamplerYcbcrConversionCreateInfo* forMarshaling);

void unmarshal_VkSamplerYcbcrConversionCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSamplerYcbcrConversionCreateInfo* forUnmarshaling);

void marshal_VkSamplerYcbcrConversionInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkSamplerYcbcrConversionInfo* forMarshaling);

void unmarshal_VkSamplerYcbcrConversionInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkSamplerYcbcrConversionInfo* forUnmarshaling);

void marshal_VkBindImagePlaneMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkBindImagePlaneMemoryInfo* forMarshaling);

void unmarshal_VkBindImagePlaneMemoryInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkBindImagePlaneMemoryInfo* forUnmarshaling);

void marshal_VkImagePlaneMemoryRequirementsInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImagePlaneMemoryRequirementsInfo* forMarshaling);

void unmarshal_VkImagePlaneMemoryRequirementsInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImagePlaneMemoryRequirementsInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling);

void marshal_VkSamplerYcbcrConversionImageFormatProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling);

void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling);

#define OP_vkCreateSamplerYcbcrConversion 20156
#define OP_vkDestroySamplerYcbcrConversion 20157
void marshal_VkDescriptorUpdateTemplateEntry(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkDescriptorUpdateTemplateEntry* forMarshaling);

void unmarshal_VkDescriptorUpdateTemplateEntry(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkDescriptorUpdateTemplateEntry* forUnmarshaling);

void marshal_VkDescriptorUpdateTemplateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling);

void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling);

#define OP_vkCreateDescriptorUpdateTemplate 20158
#define OP_vkDestroyDescriptorUpdateTemplate 20159
#define OP_vkUpdateDescriptorSetWithTemplate 20160
void marshal_VkExternalMemoryProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkExternalMemoryProperties* forMarshaling);

void unmarshal_VkExternalMemoryProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkExternalMemoryProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalImageFormatInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling);

void marshal_VkExternalImageFormatProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkExternalImageFormatProperties* forMarshaling);

void unmarshal_VkExternalImageFormatProperties(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkExternalImageFormatProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalBufferInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalBufferInfo* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalBufferInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalBufferInfo* forUnmarshaling);

void marshal_VkExternalBufferProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkExternalBufferProperties* forMarshaling);

void unmarshal_VkExternalBufferProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkExternalBufferProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceIDProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkPhysicalDeviceIDProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceIDProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkPhysicalDeviceIDProperties* forUnmarshaling);

#define OP_vkGetPhysicalDeviceExternalBufferProperties 20161
void marshal_VkExternalMemoryImageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkExternalMemoryImageCreateInfo* forMarshaling);

void unmarshal_VkExternalMemoryImageCreateInfo(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkExternalMemoryImageCreateInfo* forUnmarshaling);

void marshal_VkExternalMemoryBufferCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkExternalMemoryBufferCreateInfo* forMarshaling);

void unmarshal_VkExternalMemoryBufferCreateInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkExternalMemoryBufferCreateInfo* forUnmarshaling);

void marshal_VkExportMemoryAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkExportMemoryAllocateInfo* forMarshaling);

void unmarshal_VkExportMemoryAllocateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkExportMemoryAllocateInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalFenceInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalFenceInfo* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalFenceInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalFenceInfo* forUnmarshaling);

void marshal_VkExternalFenceProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkExternalFenceProperties* forMarshaling);

void unmarshal_VkExternalFenceProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkExternalFenceProperties* forUnmarshaling);

#define OP_vkGetPhysicalDeviceExternalFenceProperties 20162
void marshal_VkExportFenceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkExportFenceCreateInfo* forMarshaling);

void unmarshal_VkExportFenceCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkExportFenceCreateInfo* forUnmarshaling);

void marshal_VkExportSemaphoreCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkExportSemaphoreCreateInfo* forMarshaling);

void unmarshal_VkExportSemaphoreCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkExportSemaphoreCreateInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling);

void marshal_VkExternalSemaphoreProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkExternalSemaphoreProperties* forMarshaling);

void unmarshal_VkExternalSemaphoreProperties(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkExternalSemaphoreProperties* forUnmarshaling);

#define OP_vkGetPhysicalDeviceExternalSemaphoreProperties 20163
void marshal_VkPhysicalDeviceMaintenance3Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMaintenance3Properties* forMarshaling);

void unmarshal_VkPhysicalDeviceMaintenance3Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMaintenance3Properties* forUnmarshaling);

void marshal_VkDescriptorSetLayoutSupport(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkDescriptorSetLayoutSupport* forMarshaling);

void unmarshal_VkDescriptorSetLayoutSupport(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkDescriptorSetLayoutSupport* forUnmarshaling);

#define OP_vkGetDescriptorSetLayoutSupport 20164
void marshal_VkPhysicalDeviceShaderDrawParametersFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderDrawParametersFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderDrawParametersFeatures* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceShaderDrawParametersFeatures,
                      marshal_VkPhysicalDeviceShaderDrawParameterFeatures)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceShaderDrawParametersFeatures,
                      unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures)

#endif
#ifdef VK_VERSION_1_2
void marshal_VkPhysicalDeviceVulkan11Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVulkan11Features* forMarshaling);

void unmarshal_VkPhysicalDeviceVulkan11Features(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceVulkan11Features* forUnmarshaling);

void marshal_VkPhysicalDeviceVulkan11Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVulkan11Properties* forMarshaling);

void unmarshal_VkPhysicalDeviceVulkan11Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVulkan11Properties* forUnmarshaling);

void marshal_VkPhysicalDeviceVulkan12Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Features* forMarshaling);

void unmarshal_VkPhysicalDeviceVulkan12Features(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceVulkan12Features* forUnmarshaling);

void marshal_VkConformanceVersion(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkConformanceVersion* forMarshaling);

void unmarshal_VkConformanceVersion(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkConformanceVersion* forUnmarshaling);

void marshal_VkPhysicalDeviceVulkan12Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Properties* forMarshaling);

void unmarshal_VkPhysicalDeviceVulkan12Properties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVulkan12Properties* forUnmarshaling);

void marshal_VkImageFormatListCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkImageFormatListCreateInfo* forMarshaling);

void unmarshal_VkImageFormatListCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkImageFormatListCreateInfo* forUnmarshaling);

#define OP_vkCmdDrawIndirectCount 282774587
#define OP_vkCmdDrawIndexedIndirectCount 245204359
void marshal_VkAttachmentDescription2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkAttachmentDescription2* forMarshaling);

void unmarshal_VkAttachmentDescription2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkAttachmentDescription2* forUnmarshaling);

void marshal_VkAttachmentReference2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkAttachmentReference2* forMarshaling);

void unmarshal_VkAttachmentReference2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkAttachmentReference2* forUnmarshaling);

void marshal_VkSubpassDescription2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkSubpassDescription2* forMarshaling);

void unmarshal_VkSubpassDescription2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkSubpassDescription2* forUnmarshaling);

void marshal_VkSubpassDependency2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkSubpassDependency2* forMarshaling);

void unmarshal_VkSubpassDependency2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkSubpassDependency2* forUnmarshaling);

void marshal_VkRenderPassCreateInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkRenderPassCreateInfo2* forMarshaling);

void unmarshal_VkRenderPassCreateInfo2(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkRenderPassCreateInfo2* forUnmarshaling);

void marshal_VkSubpassBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkSubpassBeginInfo* forMarshaling);

void unmarshal_VkSubpassBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkSubpassBeginInfo* forUnmarshaling);

void marshal_VkSubpassEndInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkSubpassEndInfo* forMarshaling);

void unmarshal_VkSubpassEndInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkSubpassEndInfo* forUnmarshaling);

#define OP_vkCreateRenderPass2 279590827
#define OP_vkCmdBeginRenderPass2 235222847
#define OP_vkCmdNextSubpass2 244873750
#define OP_vkCmdEndRenderPass2 221297834
void marshal_VkPhysicalDevice8BitStorageFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevice8BitStorageFeatures* forMarshaling);

void unmarshal_VkPhysicalDevice8BitStorageFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevice8BitStorageFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceDriverProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDriverProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceDriverProperties(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceDriverProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceShaderAtomicInt64Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicInt64Features* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderAtomicInt64Features* forUnmarshaling);

void marshal_VkPhysicalDeviceShaderFloat16Int8Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderFloat16Int8Features* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderFloat16Int8Features* forUnmarshaling);

void marshal_VkPhysicalDeviceFloatControlsProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFloatControlsProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceFloatControlsProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFloatControlsProperties* forUnmarshaling);

void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDescriptorSetLayoutBindingFlagsCreateInfo* forMarshaling);

void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDescriptorSetLayoutBindingFlagsCreateInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceDescriptorIndexingFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDescriptorIndexingFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceDescriptorIndexingProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDescriptorIndexingProperties* forUnmarshaling);

void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountAllocateInfo* forMarshaling);

void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDescriptorSetVariableDescriptorCountAllocateInfo* forUnmarshaling);

void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountLayoutSupport* forMarshaling);

void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDescriptorSetVariableDescriptorCountLayoutSupport* forUnmarshaling);

void marshal_VkSubpassDescriptionDepthStencilResolve(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSubpassDescriptionDepthStencilResolve* forMarshaling);

void unmarshal_VkSubpassDescriptionDepthStencilResolve(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSubpassDescriptionDepthStencilResolve* forUnmarshaling);

void marshal_VkPhysicalDeviceDepthStencilResolveProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDepthStencilResolveProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDepthStencilResolveProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceScalarBlockLayoutFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceScalarBlockLayoutFeatures* forUnmarshaling);

void marshal_VkImageStencilUsageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkImageStencilUsageCreateInfo* forMarshaling);

void unmarshal_VkImageStencilUsageCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkImageStencilUsageCreateInfo* forUnmarshaling);

void marshal_VkSamplerReductionModeCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSamplerReductionModeCreateInfo* forMarshaling);

void unmarshal_VkSamplerReductionModeCreateInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkSamplerReductionModeCreateInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSamplerFilterMinmaxProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSamplerFilterMinmaxProperties* forUnmarshaling);

void marshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVulkanMemoryModelFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVulkanMemoryModelFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceImagelessFramebufferFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceImagelessFramebufferFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceImagelessFramebufferFeatures* forUnmarshaling);

void marshal_VkFramebufferAttachmentImageInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkFramebufferAttachmentImageInfo* forMarshaling);

void unmarshal_VkFramebufferAttachmentImageInfo(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkFramebufferAttachmentImageInfo* forUnmarshaling);

void marshal_VkFramebufferAttachmentsCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkFramebufferAttachmentsCreateInfo* forMarshaling);

void unmarshal_VkFramebufferAttachmentsCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkFramebufferAttachmentsCreateInfo* forUnmarshaling);

void marshal_VkRenderPassAttachmentBeginInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkRenderPassAttachmentBeginInfo* forMarshaling);

void unmarshal_VkRenderPassAttachmentBeginInfo(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkRenderPassAttachmentBeginInfo* forUnmarshaling);

void marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forUnmarshaling);

void marshal_VkAttachmentReferenceStencilLayout(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAttachmentReferenceStencilLayout* forMarshaling);

void unmarshal_VkAttachmentReferenceStencilLayout(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAttachmentReferenceStencilLayout* forUnmarshaling);

void marshal_VkAttachmentDescriptionStencilLayout(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAttachmentDescriptionStencilLayout* forMarshaling);

void unmarshal_VkAttachmentDescriptionStencilLayout(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAttachmentDescriptionStencilLayout* forUnmarshaling);

void marshal_VkPhysicalDeviceHostQueryResetFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceHostQueryResetFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceHostQueryResetFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceHostQueryResetFeatures* forUnmarshaling);

#define OP_vkResetQueryPool 252097672
void marshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTimelineSemaphoreFeatures* forUnmarshaling);

void marshal_VkPhysicalDeviceTimelineSemaphoreProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreProperties* forMarshaling);

void unmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTimelineSemaphoreProperties* forUnmarshaling);

void marshal_VkSemaphoreTypeCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkSemaphoreTypeCreateInfo* forMarshaling);

void unmarshal_VkSemaphoreTypeCreateInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkSemaphoreTypeCreateInfo* forUnmarshaling);

void marshal_VkTimelineSemaphoreSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkTimelineSemaphoreSubmitInfo* forMarshaling);

void unmarshal_VkTimelineSemaphoreSubmitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkTimelineSemaphoreSubmitInfo* forUnmarshaling);

void marshal_VkSemaphoreWaitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSemaphoreWaitInfo* forMarshaling);

void unmarshal_VkSemaphoreWaitInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSemaphoreWaitInfo* forUnmarshaling);

void marshal_VkSemaphoreSignalInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkSemaphoreSignalInfo* forMarshaling);

void unmarshal_VkSemaphoreSignalInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkSemaphoreSignalInfo* forUnmarshaling);

#define OP_vkGetSemaphoreCounterValue 267066974
#define OP_vkWaitSemaphores 224777382
#define OP_vkSignalSemaphore 271024127
void marshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeatures* forMarshaling);

void unmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceBufferDeviceAddressFeatures* forUnmarshaling);

void marshal_VkBufferDeviceAddressInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkBufferDeviceAddressInfo* forMarshaling);

void unmarshal_VkBufferDeviceAddressInfo(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkBufferDeviceAddressInfo* forUnmarshaling);

void marshal_VkBufferOpaqueCaptureAddressCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferOpaqueCaptureAddressCreateInfo* forMarshaling);

void unmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferOpaqueCaptureAddressCreateInfo* forUnmarshaling);

void marshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryOpaqueCaptureAddressAllocateInfo* forMarshaling);

void unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMemoryOpaqueCaptureAddressAllocateInfo* forUnmarshaling);

void marshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceMemoryOpaqueCaptureAddressInfo* forMarshaling);

void unmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceMemoryOpaqueCaptureAddressInfo* forUnmarshaling);

#define OP_vkGetBufferDeviceAddress 222632266
#define OP_vkGetBufferOpaqueCaptureAddress 230188231
#define OP_vkGetDeviceMemoryOpaqueCaptureAddress 260620079
#endif
#ifdef VK_KHR_surface
void marshal_VkSurfaceCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkSurfaceCapabilitiesKHR* forMarshaling);

void unmarshal_VkSurfaceCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkSurfaceCapabilitiesKHR* forUnmarshaling);

void marshal_VkSurfaceFormatKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkSurfaceFormatKHR* forMarshaling);

void unmarshal_VkSurfaceFormatKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkSurfaceFormatKHR* forUnmarshaling);

#define OP_vkDestroySurfaceKHR 20165
#define OP_vkGetPhysicalDeviceSurfaceSupportKHR 20166
#define OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR 20167
#define OP_vkGetPhysicalDeviceSurfaceFormatsKHR 20168
#define OP_vkGetPhysicalDeviceSurfacePresentModesKHR 20169
#endif
#ifdef VK_KHR_swapchain
void marshal_VkSwapchainCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkSwapchainCreateInfoKHR* forMarshaling);

void unmarshal_VkSwapchainCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkSwapchainCreateInfoKHR* forUnmarshaling);

void marshal_VkPresentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkPresentInfoKHR* forMarshaling);

void unmarshal_VkPresentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkPresentInfoKHR* forUnmarshaling);

#define OP_vkCreateSwapchainKHR 20170
#define OP_vkDestroySwapchainKHR 20171
#define OP_vkGetSwapchainImagesKHR 20172
#define OP_vkAcquireNextImageKHR 20173
#define OP_vkQueuePresentKHR 20174
void marshal_VkImageSwapchainCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkImageSwapchainCreateInfoKHR* forMarshaling);

void unmarshal_VkImageSwapchainCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkImageSwapchainCreateInfoKHR* forUnmarshaling);

void marshal_VkBindImageMemorySwapchainInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindImageMemorySwapchainInfoKHR* forMarshaling);

void unmarshal_VkBindImageMemorySwapchainInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindImageMemorySwapchainInfoKHR* forUnmarshaling);

void marshal_VkAcquireNextImageInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkAcquireNextImageInfoKHR* forMarshaling);

void unmarshal_VkAcquireNextImageInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkAcquireNextImageInfoKHR* forUnmarshaling);

void marshal_VkDeviceGroupPresentCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling);

void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling);

void marshal_VkDeviceGroupPresentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkDeviceGroupPresentInfoKHR* forMarshaling);

void unmarshal_VkDeviceGroupPresentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkDeviceGroupPresentInfoKHR* forUnmarshaling);

void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling);

void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    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_VkDisplayModeParametersKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkDisplayModeParametersKHR* forMarshaling);

void unmarshal_VkDisplayModeParametersKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkDisplayModeParametersKHR* forUnmarshaling);

void marshal_VkDisplayModeCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkDisplayModeCreateInfoKHR* forMarshaling);

void unmarshal_VkDisplayModeCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkDisplayModeCreateInfoKHR* forUnmarshaling);

void marshal_VkDisplayModePropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkDisplayModePropertiesKHR* forMarshaling);

void unmarshal_VkDisplayModePropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkDisplayModePropertiesKHR* forUnmarshaling);

void marshal_VkDisplayPlaneCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDisplayPlaneCapabilitiesKHR* forMarshaling);

void unmarshal_VkDisplayPlaneCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkDisplayPlaneCapabilitiesKHR* forUnmarshaling);

void marshal_VkDisplayPlanePropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkDisplayPlanePropertiesKHR* forMarshaling);

void unmarshal_VkDisplayPlanePropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkDisplayPlanePropertiesKHR* forUnmarshaling);

void marshal_VkDisplayPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkDisplayPropertiesKHR* forMarshaling);

void unmarshal_VkDisplayPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkDisplayPropertiesKHR* forUnmarshaling);

void marshal_VkDisplaySurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDisplaySurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkDisplaySurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             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(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkDisplayPresentInfoKHR* forMarshaling);

void unmarshal_VkDisplayPresentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkDisplayPresentInfoKHR* forUnmarshaling);

#define OP_vkCreateSharedSwapchainsKHR 20186
#endif
#ifdef VK_KHR_xlib_surface
void marshal_VkXlibSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkXlibSurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkXlibSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkXlibSurfaceCreateInfoKHR* forUnmarshaling);

#define OP_vkCreateXlibSurfaceKHR 20187
#define OP_vkGetPhysicalDeviceXlibPresentationSupportKHR 20188
#endif
#ifdef VK_KHR_xcb_surface
void marshal_VkXcbSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkXcbSurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkXcbSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkXcbSurfaceCreateInfoKHR* forUnmarshaling);

#define OP_vkCreateXcbSurfaceKHR 20189
#define OP_vkGetPhysicalDeviceXcbPresentationSupportKHR 20190
#endif
#ifdef VK_KHR_wayland_surface
void marshal_VkWaylandSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkWaylandSurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkWaylandSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkWaylandSurfaceCreateInfoKHR* forUnmarshaling);

#define OP_vkCreateWaylandSurfaceKHR 20191
#define OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR 20192
#endif
#ifdef VK_KHR_android_surface
void marshal_VkAndroidSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkAndroidSurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkAndroidSurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkAndroidSurfaceCreateInfoKHR* forUnmarshaling);

#define OP_vkCreateAndroidSurfaceKHR 20195
#endif
#ifdef VK_KHR_win32_surface
void marshal_VkWin32SurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkWin32SurfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkWin32SurfaceCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkWin32SurfaceCreateInfoKHR* forUnmarshaling);

#define OP_vkCreateWin32SurfaceKHR 20196
#define OP_vkGetPhysicalDeviceWin32PresentationSupportKHR 20197
#endif
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
#endif
#ifdef VK_KHR_video_queue
void marshal_VkVideoQueueFamilyProperties2KHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoQueueFamilyProperties2KHR* forMarshaling);

void unmarshal_VkVideoQueueFamilyProperties2KHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoQueueFamilyProperties2KHR* forUnmarshaling);

void marshal_VkVideoProfileKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkVideoProfileKHR* forMarshaling);

void unmarshal_VkVideoProfileKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkVideoProfileKHR* forUnmarshaling);

void marshal_VkVideoProfilesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkVideoProfilesKHR* forMarshaling);

void unmarshal_VkVideoProfilesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkVideoProfilesKHR* forUnmarshaling);

void marshal_VkVideoCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkVideoCapabilitiesKHR* forMarshaling);

void unmarshal_VkVideoCapabilitiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkVideoCapabilitiesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceVideoFormatInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVideoFormatInfoKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceVideoFormatInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVideoFormatInfoKHR* forUnmarshaling);

void marshal_VkVideoFormatPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkVideoFormatPropertiesKHR* forMarshaling);

void unmarshal_VkVideoFormatPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkVideoFormatPropertiesKHR* forUnmarshaling);

void marshal_VkVideoPictureResourceKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkVideoPictureResourceKHR* forMarshaling);

void unmarshal_VkVideoPictureResourceKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkVideoPictureResourceKHR* forUnmarshaling);

void marshal_VkVideoReferenceSlotKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkVideoReferenceSlotKHR* forMarshaling);

void unmarshal_VkVideoReferenceSlotKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkVideoReferenceSlotKHR* forUnmarshaling);

void marshal_VkVideoGetMemoryPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkVideoGetMemoryPropertiesKHR* forMarshaling);

void unmarshal_VkVideoGetMemoryPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkVideoGetMemoryPropertiesKHR* forUnmarshaling);

void marshal_VkVideoBindMemoryKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkVideoBindMemoryKHR* forMarshaling);

void unmarshal_VkVideoBindMemoryKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkVideoBindMemoryKHR* forUnmarshaling);

void marshal_VkVideoSessionCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoSessionCreateInfoKHR* forMarshaling);

void unmarshal_VkVideoSessionCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoSessionCreateInfoKHR* forUnmarshaling);

void marshal_VkVideoSessionParametersCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoSessionParametersCreateInfoKHR* forMarshaling);

void unmarshal_VkVideoSessionParametersCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoSessionParametersCreateInfoKHR* forUnmarshaling);

void marshal_VkVideoSessionParametersUpdateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoSessionParametersUpdateInfoKHR* forMarshaling);

void unmarshal_VkVideoSessionParametersUpdateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoSessionParametersUpdateInfoKHR* forUnmarshaling);

void marshal_VkVideoBeginCodingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkVideoBeginCodingInfoKHR* forMarshaling);

void unmarshal_VkVideoBeginCodingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkVideoBeginCodingInfoKHR* forUnmarshaling);

void marshal_VkVideoEndCodingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkVideoEndCodingInfoKHR* forMarshaling);

void unmarshal_VkVideoEndCodingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkVideoEndCodingInfoKHR* forUnmarshaling);

void marshal_VkVideoCodingControlInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoCodingControlInfoKHR* forMarshaling);

void unmarshal_VkVideoCodingControlInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoCodingControlInfoKHR* forUnmarshaling);

#define OP_vkGetPhysicalDeviceVideoCapabilitiesKHR 248113462
#define OP_vkGetPhysicalDeviceVideoFormatPropertiesKHR 261873967
#define OP_vkCreateVideoSessionKHR 227974422
#define OP_vkDestroyVideoSessionKHR 239043215
#define OP_vkGetVideoSessionMemoryRequirementsKHR 256181716
#define OP_vkBindVideoSessionMemoryKHR 215994619
#define OP_vkCreateVideoSessionParametersKHR 265164680
#define OP_vkUpdateVideoSessionParametersKHR 261262143
#define OP_vkDestroyVideoSessionParametersKHR 237919724
#define OP_vkCmdBeginVideoCodingKHR 239581372
#define OP_vkCmdEndVideoCodingKHR 279828574
#define OP_vkCmdControlVideoCodingKHR 252933003
#endif
#ifdef VK_KHR_video_decode_queue
void marshal_VkVideoDecodeInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkVideoDecodeInfoKHR* forMarshaling);

void unmarshal_VkVideoDecodeInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkVideoDecodeInfoKHR* forUnmarshaling);

#define OP_vkCmdDecodeVideoKHR 275796951
#endif
#ifdef VK_KHR_dynamic_rendering
void marshal_VkRenderingAttachmentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkRenderingAttachmentInfoKHR* forMarshaling);

void unmarshal_VkRenderingAttachmentInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkRenderingAttachmentInfoKHR* forUnmarshaling);

void marshal_VkRenderingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkRenderingInfoKHR* forMarshaling);

void unmarshal_VkRenderingInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkRenderingInfoKHR* forUnmarshaling);

void marshal_VkPipelineRenderingCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRenderingCreateInfoKHR* forMarshaling);

void unmarshal_VkPipelineRenderingCreateInfoKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPipelineRenderingCreateInfoKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDynamicRenderingFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDynamicRenderingFeaturesKHR* forUnmarshaling);

void marshal_VkCommandBufferInheritanceRenderingInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCommandBufferInheritanceRenderingInfoKHR* forMarshaling);

void unmarshal_VkCommandBufferInheritanceRenderingInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCommandBufferInheritanceRenderingInfoKHR* forUnmarshaling);

#define OP_vkCmdBeginRenderingKHR 298092805
#define OP_vkCmdEndRenderingKHR 200651584
void marshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderingFragmentShadingRateAttachmentInfoKHR* forMarshaling);

void unmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderingFragmentShadingRateAttachmentInfoKHR* forUnmarshaling);

void marshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderingFragmentDensityMapAttachmentInfoEXT* forMarshaling);

void unmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderingFragmentDensityMapAttachmentInfoEXT* forUnmarshaling);

void marshal_VkAttachmentSampleCountInfoAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkAttachmentSampleCountInfoAMD* forMarshaling);

void unmarshal_VkAttachmentSampleCountInfoAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkAttachmentSampleCountInfoAMD* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkAttachmentSampleCountInfoAMD, marshal_VkAttachmentSampleCountInfoNV)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAttachmentSampleCountInfoAMD,
                      unmarshal_VkAttachmentSampleCountInfoNV)

void marshal_VkMultiviewPerViewAttributesInfoNVX(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMultiviewPerViewAttributesInfoNVX* forMarshaling);

void unmarshal_VkMultiviewPerViewAttributesInfoNVX(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMultiviewPerViewAttributesInfoNVX* forUnmarshaling);

#endif
#ifdef VK_KHR_multiview
DEFINE_ALIAS_FUNCTION(marshal_VkRenderPassMultiviewCreateInfo,
                      marshal_VkRenderPassMultiviewCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkRenderPassMultiviewCreateInfo,
                      unmarshal_VkRenderPassMultiviewCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceMultiviewFeatures,
                      marshal_VkPhysicalDeviceMultiviewFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceMultiviewFeatures,
                      unmarshal_VkPhysicalDeviceMultiviewFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceMultiviewProperties,
                      marshal_VkPhysicalDeviceMultiviewPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceMultiviewProperties,
                      unmarshal_VkPhysicalDeviceMultiviewPropertiesKHR)

#endif
#ifdef VK_KHR_get_physical_device_properties2
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceFeatures2, marshal_VkPhysicalDeviceFeatures2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceFeatures2, unmarshal_VkPhysicalDeviceFeatures2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceProperties2, marshal_VkPhysicalDeviceProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceProperties2,
                      unmarshal_VkPhysicalDeviceProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkFormatProperties2, marshal_VkFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkFormatProperties2, unmarshal_VkFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkImageFormatProperties2, marshal_VkImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageFormatProperties2, unmarshal_VkImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceImageFormatInfo2,
                      marshal_VkPhysicalDeviceImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceImageFormatInfo2,
                      unmarshal_VkPhysicalDeviceImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkQueueFamilyProperties2, marshal_VkQueueFamilyProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkQueueFamilyProperties2, unmarshal_VkQueueFamilyProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceMemoryProperties2,
                      marshal_VkPhysicalDeviceMemoryProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceMemoryProperties2,
                      unmarshal_VkPhysicalDeviceMemoryProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSparseImageFormatProperties2,
                      marshal_VkSparseImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSparseImageFormatProperties2,
                      unmarshal_VkSparseImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceSparseImageFormatInfo2,
                      marshal_VkPhysicalDeviceSparseImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceSparseImageFormatInfo2,
                      unmarshal_VkPhysicalDeviceSparseImageFormatInfo2KHR)

#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_ALIAS_FUNCTION(marshal_VkMemoryAllocateFlagsInfo, marshal_VkMemoryAllocateFlagsInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkMemoryAllocateFlagsInfo, unmarshal_VkMemoryAllocateFlagsInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceGroupRenderPassBeginInfo,
                      marshal_VkDeviceGroupRenderPassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceGroupRenderPassBeginInfo,
                      unmarshal_VkDeviceGroupRenderPassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceGroupCommandBufferBeginInfo,
                      marshal_VkDeviceGroupCommandBufferBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceGroupCommandBufferBeginInfo,
                      unmarshal_VkDeviceGroupCommandBufferBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceGroupSubmitInfo, marshal_VkDeviceGroupSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceGroupSubmitInfo, unmarshal_VkDeviceGroupSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceGroupBindSparseInfo, marshal_VkDeviceGroupBindSparseInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceGroupBindSparseInfo,
                      unmarshal_VkDeviceGroupBindSparseInfoKHR)

#define OP_vkGetDeviceGroupPeerMemoryFeaturesKHR 20205
#define OP_vkCmdSetDeviceMaskKHR 20206
#define OP_vkCmdDispatchBaseKHR 20207
DEFINE_ALIAS_FUNCTION(marshal_VkBindBufferMemoryDeviceGroupInfo,
                      marshal_VkBindBufferMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBindBufferMemoryDeviceGroupInfo,
                      unmarshal_VkBindBufferMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkBindImageMemoryDeviceGroupInfo,
                      marshal_VkBindImageMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBindImageMemoryDeviceGroupInfo,
                      unmarshal_VkBindImageMemoryDeviceGroupInfoKHR)

#endif
#ifdef VK_KHR_shader_draw_parameters
#endif
#ifdef VK_KHR_maintenance1
#define OP_vkTrimCommandPoolKHR 20208
#endif
#ifdef VK_KHR_device_group_creation
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceGroupProperties,
                      marshal_VkPhysicalDeviceGroupPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceGroupProperties,
                      unmarshal_VkPhysicalDeviceGroupPropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceGroupDeviceCreateInfo,
                      marshal_VkDeviceGroupDeviceCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceGroupDeviceCreateInfo,
                      unmarshal_VkDeviceGroupDeviceCreateInfoKHR)

#define OP_vkEnumeratePhysicalDeviceGroupsKHR 20209
#endif
#ifdef VK_KHR_external_memory_capabilities
DEFINE_ALIAS_FUNCTION(marshal_VkExternalMemoryProperties, marshal_VkExternalMemoryPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalMemoryProperties, unmarshal_VkExternalMemoryPropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceExternalImageFormatInfo,
                      marshal_VkPhysicalDeviceExternalImageFormatInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceExternalImageFormatInfo,
                      unmarshal_VkPhysicalDeviceExternalImageFormatInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExternalImageFormatProperties,
                      marshal_VkExternalImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalImageFormatProperties,
                      unmarshal_VkExternalImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceExternalBufferInfo,
                      marshal_VkPhysicalDeviceExternalBufferInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceExternalBufferInfo,
                      unmarshal_VkPhysicalDeviceExternalBufferInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExternalBufferProperties, marshal_VkExternalBufferPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalBufferProperties, unmarshal_VkExternalBufferPropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceIDProperties, marshal_VkPhysicalDeviceIDPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceIDProperties,
                      unmarshal_VkPhysicalDeviceIDPropertiesKHR)

#define OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR 20210
#endif
#ifdef VK_KHR_external_memory
DEFINE_ALIAS_FUNCTION(marshal_VkExternalMemoryImageCreateInfo,
                      marshal_VkExternalMemoryImageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalMemoryImageCreateInfo,
                      unmarshal_VkExternalMemoryImageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExternalMemoryBufferCreateInfo,
                      marshal_VkExternalMemoryBufferCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalMemoryBufferCreateInfo,
                      unmarshal_VkExternalMemoryBufferCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExportMemoryAllocateInfo, marshal_VkExportMemoryAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExportMemoryAllocateInfo, unmarshal_VkExportMemoryAllocateInfoKHR)

#endif
#ifdef VK_KHR_external_memory_win32
void marshal_VkImportMemoryWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportMemoryWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkImportMemoryWin32HandleInfoKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkImportMemoryWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkExportMemoryWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkExportMemoryWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkExportMemoryWin32HandleInfoKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkExportMemoryWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkMemoryWin32HandlePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryWin32HandlePropertiesKHR* forMarshaling);

void unmarshal_VkMemoryWin32HandlePropertiesKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkMemoryWin32HandlePropertiesKHR* forUnmarshaling);

void marshal_VkMemoryGetWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkMemoryGetWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkMemoryGetWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkMemoryGetWin32HandleInfoKHR* forUnmarshaling);

#define OP_vkGetMemoryWin32HandleKHR 20211
#define OP_vkGetMemoryWin32HandlePropertiesKHR 20212
#endif
#ifdef VK_KHR_external_memory_fd
void marshal_VkImportMemoryFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkImportMemoryFdInfoKHR* forMarshaling);

void unmarshal_VkImportMemoryFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkImportMemoryFdInfoKHR* forUnmarshaling);

void marshal_VkMemoryFdPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkMemoryFdPropertiesKHR* forMarshaling);

void unmarshal_VkMemoryFdPropertiesKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkMemoryFdPropertiesKHR* forUnmarshaling);

void marshal_VkMemoryGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkMemoryGetFdInfoKHR* forMarshaling);

void unmarshal_VkMemoryGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkMemoryGetFdInfoKHR* forUnmarshaling);

#define OP_vkGetMemoryFdKHR 20213
#define OP_vkGetMemoryFdPropertiesKHR 20214
#endif
#ifdef VK_KHR_win32_keyed_mutex
void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling);

void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkWin32KeyedMutexAcquireReleaseInfoKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_external_semaphore_capabilities
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceExternalSemaphoreInfo,
                      marshal_VkPhysicalDeviceExternalSemaphoreInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceExternalSemaphoreInfo,
                      unmarshal_VkPhysicalDeviceExternalSemaphoreInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExternalSemaphoreProperties,
                      marshal_VkExternalSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalSemaphoreProperties,
                      unmarshal_VkExternalSemaphorePropertiesKHR)

#define OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR 20215
#endif
#ifdef VK_KHR_external_semaphore
DEFINE_ALIAS_FUNCTION(marshal_VkExportSemaphoreCreateInfo, marshal_VkExportSemaphoreCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExportSemaphoreCreateInfo,
                      unmarshal_VkExportSemaphoreCreateInfoKHR)

#endif
#ifdef VK_KHR_external_semaphore_win32
void marshal_VkImportSemaphoreWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportSemaphoreWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkImportSemaphoreWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImportSemaphoreWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkExportSemaphoreWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkExportSemaphoreWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkExportSemaphoreWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkD3D12FenceSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkD3D12FenceSubmitInfoKHR* forMarshaling);

void unmarshal_VkD3D12FenceSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkD3D12FenceSubmitInfoKHR* forUnmarshaling);

void marshal_VkSemaphoreGetWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkSemaphoreGetWin32HandleInfoKHR* forUnmarshaling);

#define OP_vkImportSemaphoreWin32HandleKHR 20216
#define OP_vkGetSemaphoreWin32HandleKHR 20217
#endif
#ifdef VK_KHR_external_semaphore_fd
void marshal_VkImportSemaphoreFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkImportSemaphoreFdInfoKHR* forMarshaling);

void unmarshal_VkImportSemaphoreFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkImportSemaphoreFdInfoKHR* forUnmarshaling);

void marshal_VkSemaphoreGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkSemaphoreGetFdInfoKHR* forMarshaling);

void unmarshal_VkSemaphoreGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkSemaphoreGetFdInfoKHR* forUnmarshaling);

#define OP_vkImportSemaphoreFdKHR 20218
#define OP_vkGetSemaphoreFdKHR 20219
#endif
#ifdef VK_KHR_push_descriptor
void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePushDescriptorPropertiesKHR* forUnmarshaling);

#define OP_vkCmdPushDescriptorSetKHR 20220
#define OP_vkCmdPushDescriptorSetWithTemplateKHR 20221
#endif
#ifdef VK_KHR_shader_float16_int8
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceShaderFloat16Int8Features,
                      marshal_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceShaderFloat16Int8Features,
                      unmarshal_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceShaderFloat16Int8Features,
                      marshal_VkPhysicalDeviceFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceShaderFloat16Int8Features,
                      unmarshal_VkPhysicalDeviceFloat16Int8FeaturesKHR)

#endif
#ifdef VK_KHR_16bit_storage
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDevice16BitStorageFeatures,
                      marshal_VkPhysicalDevice16BitStorageFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDevice16BitStorageFeatures,
                      unmarshal_VkPhysicalDevice16BitStorageFeaturesKHR)

#endif
#ifdef VK_KHR_incremental_present
void marshal_VkRectLayerKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            const VkRectLayerKHR* forMarshaling);

void unmarshal_VkRectLayerKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              VkRectLayerKHR* forUnmarshaling);

void marshal_VkPresentRegionKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkPresentRegionKHR* forMarshaling);

void unmarshal_VkPresentRegionKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkPresentRegionKHR* forUnmarshaling);

void marshal_VkPresentRegionsKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkPresentRegionsKHR* forMarshaling);

void unmarshal_VkPresentRegionsKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkPresentRegionsKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_descriptor_update_template
DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorUpdateTemplateEntry,
                      marshal_VkDescriptorUpdateTemplateEntryKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorUpdateTemplateEntry,
                      unmarshal_VkDescriptorUpdateTemplateEntryKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorUpdateTemplateCreateInfo,
                      marshal_VkDescriptorUpdateTemplateCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorUpdateTemplateCreateInfo,
                      unmarshal_VkDescriptorUpdateTemplateCreateInfoKHR)

#define OP_vkCreateDescriptorUpdateTemplateKHR 20222
#define OP_vkDestroyDescriptorUpdateTemplateKHR 20223
#define OP_vkUpdateDescriptorSetWithTemplateKHR 20224
#endif
#ifdef VK_KHR_imageless_framebuffer
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceImagelessFramebufferFeatures,
                      marshal_VkPhysicalDeviceImagelessFramebufferFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceImagelessFramebufferFeatures,
                      unmarshal_VkPhysicalDeviceImagelessFramebufferFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkFramebufferAttachmentsCreateInfo,
                      marshal_VkFramebufferAttachmentsCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkFramebufferAttachmentsCreateInfo,
                      unmarshal_VkFramebufferAttachmentsCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkFramebufferAttachmentImageInfo,
                      marshal_VkFramebufferAttachmentImageInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkFramebufferAttachmentImageInfo,
                      unmarshal_VkFramebufferAttachmentImageInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkRenderPassAttachmentBeginInfo,
                      marshal_VkRenderPassAttachmentBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkRenderPassAttachmentBeginInfo,
                      unmarshal_VkRenderPassAttachmentBeginInfoKHR)

#endif
#ifdef VK_KHR_create_renderpass2
DEFINE_ALIAS_FUNCTION(marshal_VkRenderPassCreateInfo2, marshal_VkRenderPassCreateInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkRenderPassCreateInfo2, unmarshal_VkRenderPassCreateInfo2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkAttachmentDescription2, marshal_VkAttachmentDescription2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAttachmentDescription2, unmarshal_VkAttachmentDescription2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkAttachmentReference2, marshal_VkAttachmentReference2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAttachmentReference2, unmarshal_VkAttachmentReference2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSubpassDescription2, marshal_VkSubpassDescription2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSubpassDescription2, unmarshal_VkSubpassDescription2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSubpassDependency2, marshal_VkSubpassDependency2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSubpassDependency2, unmarshal_VkSubpassDependency2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSubpassBeginInfo, marshal_VkSubpassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSubpassBeginInfo, unmarshal_VkSubpassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSubpassEndInfo, marshal_VkSubpassEndInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSubpassEndInfo, unmarshal_VkSubpassEndInfoKHR)

#define OP_vkCreateRenderPass2KHR 20225
#define OP_vkCmdBeginRenderPass2KHR 20226
#define OP_vkCmdNextSubpass2KHR 20227
#define OP_vkCmdEndRenderPass2KHR 20228
#endif
#ifdef VK_KHR_shared_presentable_image
void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling);

void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSharedPresentSurfaceCapabilitiesKHR* forUnmarshaling);

#define OP_vkGetSwapchainStatusKHR 20229
#endif
#ifdef VK_KHR_external_fence_capabilities
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceExternalFenceInfo,
                      marshal_VkPhysicalDeviceExternalFenceInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceExternalFenceInfo,
                      unmarshal_VkPhysicalDeviceExternalFenceInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkExternalFenceProperties, marshal_VkExternalFencePropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExternalFenceProperties, unmarshal_VkExternalFencePropertiesKHR)

#define OP_vkGetPhysicalDeviceExternalFencePropertiesKHR 20230
#endif
#ifdef VK_KHR_external_fence
DEFINE_ALIAS_FUNCTION(marshal_VkExportFenceCreateInfo, marshal_VkExportFenceCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkExportFenceCreateInfo, unmarshal_VkExportFenceCreateInfoKHR)

#endif
#ifdef VK_KHR_external_fence_win32
void marshal_VkImportFenceWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkImportFenceWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkImportFenceWin32HandleInfoKHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkImportFenceWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkExportFenceWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkExportFenceWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkExportFenceWin32HandleInfoKHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkExportFenceWin32HandleInfoKHR* forUnmarshaling);

void marshal_VkFenceGetWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkFenceGetWin32HandleInfoKHR* forMarshaling);

void unmarshal_VkFenceGetWin32HandleInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkFenceGetWin32HandleInfoKHR* forUnmarshaling);

#define OP_vkImportFenceWin32HandleKHR 20231
#define OP_vkGetFenceWin32HandleKHR 20232
#endif
#ifdef VK_KHR_external_fence_fd
void marshal_VkImportFenceFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkImportFenceFdInfoKHR* forMarshaling);

void unmarshal_VkImportFenceFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkImportFenceFdInfoKHR* forUnmarshaling);

void marshal_VkFenceGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkFenceGetFdInfoKHR* forMarshaling);

void unmarshal_VkFenceGetFdInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkFenceGetFdInfoKHR* forUnmarshaling);

#define OP_vkImportFenceFdKHR 20233
#define OP_vkGetFenceFdKHR 20234
#endif
#ifdef VK_KHR_performance_query
void marshal_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePerformanceQueryFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryPropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePerformanceQueryPropertiesKHR* forUnmarshaling);

void marshal_VkPerformanceCounterKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkPerformanceCounterKHR* forMarshaling);

void unmarshal_VkPerformanceCounterKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkPerformanceCounterKHR* forUnmarshaling);

void marshal_VkPerformanceCounterDescriptionKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPerformanceCounterDescriptionKHR* forMarshaling);

void unmarshal_VkPerformanceCounterDescriptionKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPerformanceCounterDescriptionKHR* forUnmarshaling);

void marshal_VkQueryPoolPerformanceCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkQueryPoolPerformanceCreateInfoKHR* forMarshaling);

void unmarshal_VkQueryPoolPerformanceCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkQueryPoolPerformanceCreateInfoKHR* forUnmarshaling);

void marshal_VkPerformanceCounterResultKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkPerformanceCounterResultKHR* forMarshaling);

void unmarshal_VkPerformanceCounterResultKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkPerformanceCounterResultKHR* forUnmarshaling);

void marshal_VkAcquireProfilingLockInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkAcquireProfilingLockInfoKHR* forMarshaling);

void unmarshal_VkAcquireProfilingLockInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkAcquireProfilingLockInfoKHR* forUnmarshaling);

void marshal_VkPerformanceQuerySubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkPerformanceQuerySubmitInfoKHR* forMarshaling);

void unmarshal_VkPerformanceQuerySubmitInfoKHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkPerformanceQuerySubmitInfoKHR* forUnmarshaling);

#define OP_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR 299033148
#define OP_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR 282029987
#define OP_vkAcquireProfilingLockKHR 238952296
#define OP_vkReleaseProfilingLockKHR 223904011
#endif
#ifdef VK_KHR_maintenance2
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDevicePointClippingProperties,
                      marshal_VkPhysicalDevicePointClippingPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDevicePointClippingProperties,
                      unmarshal_VkPhysicalDevicePointClippingPropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkRenderPassInputAttachmentAspectCreateInfo,
                      marshal_VkRenderPassInputAttachmentAspectCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkRenderPassInputAttachmentAspectCreateInfo,
                      unmarshal_VkRenderPassInputAttachmentAspectCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkInputAttachmentAspectReference,
                      marshal_VkInputAttachmentAspectReferenceKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkInputAttachmentAspectReference,
                      unmarshal_VkInputAttachmentAspectReferenceKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkImageViewUsageCreateInfo, marshal_VkImageViewUsageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageViewUsageCreateInfo, unmarshal_VkImageViewUsageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPipelineTessellationDomainOriginStateCreateInfo,
                      marshal_VkPipelineTessellationDomainOriginStateCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo,
                      unmarshal_VkPipelineTessellationDomainOriginStateCreateInfoKHR)

#endif
#ifdef VK_KHR_get_surface_capabilities2
void marshal_VkPhysicalDeviceSurfaceInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkPhysicalDeviceSurfaceInfo2KHR* forMarshaling);

void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkPhysicalDeviceSurfaceInfo2KHR* forUnmarshaling);

void marshal_VkSurfaceCapabilities2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkSurfaceCapabilities2KHR* forMarshaling);

void unmarshal_VkSurfaceCapabilities2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkSurfaceCapabilities2KHR* forUnmarshaling);

void marshal_VkSurfaceFormat2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSurfaceFormat2KHR* forMarshaling);

void unmarshal_VkSurfaceFormat2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSurfaceFormat2KHR* forUnmarshaling);

#define OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR 20235
#define OP_vkGetPhysicalDeviceSurfaceFormats2KHR 20236
#endif
#ifdef VK_KHR_variable_pointers
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceVariablePointersFeatures,
                      marshal_VkPhysicalDeviceVariablePointerFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceVariablePointersFeatures,
                      unmarshal_VkPhysicalDeviceVariablePointerFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceVariablePointersFeatures,
                      marshal_VkPhysicalDeviceVariablePointersFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceVariablePointersFeatures,
                      unmarshal_VkPhysicalDeviceVariablePointersFeaturesKHR)

#endif
#ifdef VK_KHR_get_display_properties2
void marshal_VkDisplayProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkDisplayProperties2KHR* forMarshaling);

void unmarshal_VkDisplayProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkDisplayProperties2KHR* forUnmarshaling);

void marshal_VkDisplayPlaneProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkDisplayPlaneProperties2KHR* forMarshaling);

void unmarshal_VkDisplayPlaneProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkDisplayPlaneProperties2KHR* forUnmarshaling);

void marshal_VkDisplayModeProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkDisplayModeProperties2KHR* forMarshaling);

void unmarshal_VkDisplayModeProperties2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkDisplayModeProperties2KHR* forUnmarshaling);

void marshal_VkDisplayPlaneInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkDisplayPlaneInfo2KHR* forMarshaling);

void unmarshal_VkDisplayPlaneInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkDisplayPlaneInfo2KHR* forUnmarshaling);

void marshal_VkDisplayPlaneCapabilities2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkDisplayPlaneCapabilities2KHR* forMarshaling);

void unmarshal_VkDisplayPlaneCapabilities2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkDisplayPlaneCapabilities2KHR* forUnmarshaling);

#define OP_vkGetPhysicalDeviceDisplayProperties2KHR 20237
#define OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR 20238
#define OP_vkGetDisplayModeProperties2KHR 20239
#define OP_vkGetDisplayPlaneCapabilities2KHR 20240
#endif
#ifdef VK_KHR_dedicated_allocation
DEFINE_ALIAS_FUNCTION(marshal_VkMemoryDedicatedRequirements,
                      marshal_VkMemoryDedicatedRequirementsKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkMemoryDedicatedRequirements,
                      unmarshal_VkMemoryDedicatedRequirementsKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkMemoryDedicatedAllocateInfo,
                      marshal_VkMemoryDedicatedAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkMemoryDedicatedAllocateInfo,
                      unmarshal_VkMemoryDedicatedAllocateInfoKHR)

#endif
#ifdef VK_KHR_storage_buffer_storage_class
#endif
#ifdef VK_KHR_relaxed_block_layout
#endif
#ifdef VK_KHR_get_memory_requirements2
DEFINE_ALIAS_FUNCTION(marshal_VkBufferMemoryRequirementsInfo2,
                      marshal_VkBufferMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBufferMemoryRequirementsInfo2,
                      unmarshal_VkBufferMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkImageMemoryRequirementsInfo2,
                      marshal_VkImageMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageMemoryRequirementsInfo2,
                      unmarshal_VkImageMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkImageSparseMemoryRequirementsInfo2,
                      marshal_VkImageSparseMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageSparseMemoryRequirementsInfo2,
                      unmarshal_VkImageSparseMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkMemoryRequirements2, marshal_VkMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkMemoryRequirements2, unmarshal_VkMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSparseImageMemoryRequirements2,
                      marshal_VkSparseImageMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSparseImageMemoryRequirements2,
                      unmarshal_VkSparseImageMemoryRequirements2KHR)

#define OP_vkGetImageMemoryRequirements2KHR 20241
#define OP_vkGetBufferMemoryRequirements2KHR 20242
#define OP_vkGetImageSparseMemoryRequirements2KHR 20243
#endif
#ifdef VK_KHR_image_format_list
DEFINE_ALIAS_FUNCTION(marshal_VkImageFormatListCreateInfo, marshal_VkImageFormatListCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageFormatListCreateInfo,
                      unmarshal_VkImageFormatListCreateInfoKHR)

#endif
#ifdef VK_KHR_sampler_ycbcr_conversion
DEFINE_ALIAS_FUNCTION(marshal_VkSamplerYcbcrConversionCreateInfo,
                      marshal_VkSamplerYcbcrConversionCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSamplerYcbcrConversionCreateInfo,
                      unmarshal_VkSamplerYcbcrConversionCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSamplerYcbcrConversionInfo, marshal_VkSamplerYcbcrConversionInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSamplerYcbcrConversionInfo,
                      unmarshal_VkSamplerYcbcrConversionInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkBindImagePlaneMemoryInfo, marshal_VkBindImagePlaneMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBindImagePlaneMemoryInfo, unmarshal_VkBindImagePlaneMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkImagePlaneMemoryRequirementsInfo,
                      marshal_VkImagePlaneMemoryRequirementsInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImagePlaneMemoryRequirementsInfo,
                      unmarshal_VkImagePlaneMemoryRequirementsInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures,
                      marshal_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures,
                      unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSamplerYcbcrConversionImageFormatProperties,
                      marshal_VkSamplerYcbcrConversionImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSamplerYcbcrConversionImageFormatProperties,
                      unmarshal_VkSamplerYcbcrConversionImageFormatPropertiesKHR)

#define OP_vkCreateSamplerYcbcrConversionKHR 20244
#define OP_vkDestroySamplerYcbcrConversionKHR 20245
#endif
#ifdef VK_KHR_bind_memory2
DEFINE_ALIAS_FUNCTION(marshal_VkBindBufferMemoryInfo, marshal_VkBindBufferMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBindBufferMemoryInfo, unmarshal_VkBindBufferMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkBindImageMemoryInfo, marshal_VkBindImageMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBindImageMemoryInfo, unmarshal_VkBindImageMemoryInfoKHR)

#define OP_vkBindBufferMemory2KHR 20246
#define OP_vkBindImageMemory2KHR 20247
#endif
#ifdef VK_KHR_portability_subset
void marshal_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePortabilitySubsetFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetPropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePortabilitySubsetPropertiesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_maintenance3
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceMaintenance3Properties,
                      marshal_VkPhysicalDeviceMaintenance3PropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceMaintenance3Properties,
                      unmarshal_VkPhysicalDeviceMaintenance3PropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorSetLayoutSupport, marshal_VkDescriptorSetLayoutSupportKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorSetLayoutSupport,
                      unmarshal_VkDescriptorSetLayoutSupportKHR)

#define OP_vkGetDescriptorSetLayoutSupportKHR 20248
#endif
#ifdef VK_KHR_draw_indirect_count
#define OP_vkCmdDrawIndirectCountKHR 20249
#define OP_vkCmdDrawIndexedIndirectCountKHR 20250
#endif
#ifdef VK_KHR_shader_subgroup_extended_types
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures,
                      marshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures,
                      unmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)

#endif
#ifdef VK_KHR_8bit_storage
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDevice8BitStorageFeatures,
                      marshal_VkPhysicalDevice8BitStorageFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDevice8BitStorageFeatures,
                      unmarshal_VkPhysicalDevice8BitStorageFeaturesKHR)

#endif
#ifdef VK_KHR_shader_atomic_int64
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceShaderAtomicInt64Features,
                      marshal_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceShaderAtomicInt64Features,
                      unmarshal_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)

#endif
#ifdef VK_KHR_shader_clock
void marshal_VkPhysicalDeviceShaderClockFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderClockFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderClockFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderClockFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_driver_properties
DEFINE_ALIAS_FUNCTION(marshal_VkConformanceVersion, marshal_VkConformanceVersionKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkConformanceVersion, unmarshal_VkConformanceVersionKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceDriverProperties,
                      marshal_VkPhysicalDeviceDriverPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceDriverProperties,
                      unmarshal_VkPhysicalDeviceDriverPropertiesKHR)

#endif
#ifdef VK_KHR_shader_float_controls
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceFloatControlsProperties,
                      marshal_VkPhysicalDeviceFloatControlsPropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceFloatControlsProperties,
                      unmarshal_VkPhysicalDeviceFloatControlsPropertiesKHR)

#endif
#ifdef VK_KHR_depth_stencil_resolve
DEFINE_ALIAS_FUNCTION(marshal_VkSubpassDescriptionDepthStencilResolve,
                      marshal_VkSubpassDescriptionDepthStencilResolveKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSubpassDescriptionDepthStencilResolve,
                      unmarshal_VkSubpassDescriptionDepthStencilResolveKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceDepthStencilResolveProperties,
                      marshal_VkPhysicalDeviceDepthStencilResolvePropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceDepthStencilResolveProperties,
                      unmarshal_VkPhysicalDeviceDepthStencilResolvePropertiesKHR)

#endif
#ifdef VK_KHR_swapchain_mutable_format
#endif
#ifdef VK_KHR_timeline_semaphore
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceTimelineSemaphoreFeatures,
                      marshal_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures,
                      unmarshal_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceTimelineSemaphoreProperties,
                      marshal_VkPhysicalDeviceTimelineSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceTimelineSemaphoreProperties,
                      unmarshal_VkPhysicalDeviceTimelineSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSemaphoreTypeCreateInfo, marshal_VkSemaphoreTypeCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSemaphoreTypeCreateInfo, unmarshal_VkSemaphoreTypeCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkTimelineSemaphoreSubmitInfo,
                      marshal_VkTimelineSemaphoreSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkTimelineSemaphoreSubmitInfo,
                      unmarshal_VkTimelineSemaphoreSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSemaphoreWaitInfo, marshal_VkSemaphoreWaitInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSemaphoreWaitInfo, unmarshal_VkSemaphoreWaitInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkSemaphoreSignalInfo, marshal_VkSemaphoreSignalInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSemaphoreSignalInfo, unmarshal_VkSemaphoreSignalInfoKHR)

#define OP_vkGetSemaphoreCounterValueKHR 229059496
#define OP_vkWaitSemaphoresKHR 263904357
#define OP_vkSignalSemaphoreKHR 269919108
#endif
#ifdef VK_KHR_vulkan_memory_model
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceVulkanMemoryModelFeatures,
                      marshal_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures,
                      unmarshal_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR)

#endif
#ifdef VK_KHR_shader_terminate_invocation
void marshal_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_fragment_shading_rate
void marshal_VkFragmentShadingRateAttachmentInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkFragmentShadingRateAttachmentInfoKHR* forMarshaling);

void unmarshal_VkFragmentShadingRateAttachmentInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkFragmentShadingRateAttachmentInfoKHR* forUnmarshaling);

void marshal_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineFragmentShadingRateStateCreateInfoKHR* forMarshaling);

void unmarshal_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineFragmentShadingRateStateCreateInfoKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShadingRateFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShadingRatePropertiesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentShadingRateKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShadingRateKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShadingRateKHR* forUnmarshaling);

#define OP_vkGetPhysicalDeviceFragmentShadingRatesKHR 272978593
#define OP_vkCmdSetFragmentShadingRateKHR 204060280
#endif
#ifdef VK_KHR_spirv_1_4
#endif
#ifdef VK_KHR_surface_protected_capabilities
void marshal_VkSurfaceProtectedCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSurfaceProtectedCapabilitiesKHR* forMarshaling);

void unmarshal_VkSurfaceProtectedCapabilitiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSurfaceProtectedCapabilitiesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_separate_depth_stencil_layouts
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures,
                      marshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures,
                      unmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkAttachmentReferenceStencilLayout,
                      marshal_VkAttachmentReferenceStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAttachmentReferenceStencilLayout,
                      unmarshal_VkAttachmentReferenceStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkAttachmentDescriptionStencilLayout,
                      marshal_VkAttachmentDescriptionStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAttachmentDescriptionStencilLayout,
                      unmarshal_VkAttachmentDescriptionStencilLayoutKHR)

#endif
#ifdef VK_KHR_present_wait
void marshal_VkPhysicalDevicePresentWaitFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePresentWaitFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePresentWaitFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePresentWaitFeaturesKHR* forUnmarshaling);

#define OP_vkWaitForPresentKHR 263215580
#endif
#ifdef VK_KHR_uniform_buffer_standard_layout
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures,
                      marshal_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures,
                      unmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)

#endif
#ifdef VK_KHR_buffer_device_address
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceBufferDeviceAddressFeatures,
                      marshal_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures,
                      unmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkBufferDeviceAddressInfo, marshal_VkBufferDeviceAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBufferDeviceAddressInfo, unmarshal_VkBufferDeviceAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkBufferOpaqueCaptureAddressCreateInfo,
                      marshal_VkBufferOpaqueCaptureAddressCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBufferOpaqueCaptureAddressCreateInfo,
                      unmarshal_VkBufferOpaqueCaptureAddressCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkMemoryOpaqueCaptureAddressAllocateInfo,
                      marshal_VkMemoryOpaqueCaptureAddressAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo,
                      unmarshal_VkMemoryOpaqueCaptureAddressAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(marshal_VkDeviceMemoryOpaqueCaptureAddressInfo,
                      marshal_VkDeviceMemoryOpaqueCaptureAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo,
                      unmarshal_VkDeviceMemoryOpaqueCaptureAddressInfoKHR)

#define OP_vkGetBufferDeviceAddressKHR 219261480
#define OP_vkGetBufferOpaqueCaptureAddressKHR 285631711
#define OP_vkGetDeviceMemoryOpaqueCaptureAddressKHR 294671624
#endif
#ifdef VK_KHR_deferred_host_operations
#define OP_vkCreateDeferredOperationKHR 274342644
#define OP_vkDestroyDeferredOperationKHR 215419514
#define OP_vkGetDeferredOperationMaxConcurrencyKHR 203387076
#define OP_vkGetDeferredOperationResultKHR 263822960
#define OP_vkDeferredOperationJoinKHR 218492930
#endif
#ifdef VK_KHR_pipeline_executable_properties
void marshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forUnmarshaling);

void marshal_VkPipelineInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkPipelineInfoKHR* forMarshaling);

void unmarshal_VkPipelineInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkPipelineInfoKHR* forUnmarshaling);

void marshal_VkPipelineExecutablePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineExecutablePropertiesKHR* forMarshaling);

void unmarshal_VkPipelineExecutablePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineExecutablePropertiesKHR* forUnmarshaling);

void marshal_VkPipelineExecutableInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkPipelineExecutableInfoKHR* forMarshaling);

void unmarshal_VkPipelineExecutableInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkPipelineExecutableInfoKHR* forUnmarshaling);

void marshal_VkPipelineExecutableStatisticValueKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineExecutableStatisticValueKHR* forMarshaling);

void unmarshal_VkPipelineExecutableStatisticValueKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineExecutableStatisticValueKHR* forUnmarshaling);

void marshal_VkPipelineExecutableStatisticKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineExecutableStatisticKHR* forMarshaling);

void unmarshal_VkPipelineExecutableStatisticKHR(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPipelineExecutableStatisticKHR* forUnmarshaling);

void marshal_VkPipelineExecutableInternalRepresentationKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineExecutableInternalRepresentationKHR* forMarshaling);

void unmarshal_VkPipelineExecutableInternalRepresentationKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineExecutableInternalRepresentationKHR* forUnmarshaling);

#define OP_vkGetPipelineExecutablePropertiesKHR 269458798
#define OP_vkGetPipelineExecutableStatisticsKHR 271191699
#define OP_vkGetPipelineExecutableInternalRepresentationsKHR 274148497
#endif
#ifdef VK_KHR_shader_integer_dot_product
void marshal_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_pipeline_library
void marshal_VkPipelineLibraryCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkPipelineLibraryCreateInfoKHR* forMarshaling);

void unmarshal_VkPipelineLibraryCreateInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkPipelineLibraryCreateInfoKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_shader_non_semantic_info
#endif
#ifdef VK_KHR_present_id
void marshal_VkPresentIdKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            const VkPresentIdKHR* forMarshaling);

void unmarshal_VkPresentIdKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              VkPresentIdKHR* forUnmarshaling);

void marshal_VkPhysicalDevicePresentIdFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePresentIdFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDevicePresentIdFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePresentIdFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_video_encode_queue
void marshal_VkVideoEncodeInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkVideoEncodeInfoKHR* forMarshaling);

void unmarshal_VkVideoEncodeInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkVideoEncodeInfoKHR* forUnmarshaling);

void marshal_VkVideoEncodeRateControlInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoEncodeRateControlInfoKHR* forMarshaling);

void unmarshal_VkVideoEncodeRateControlInfoKHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoEncodeRateControlInfoKHR* forUnmarshaling);

#define OP_vkCmdEncodeVideoKHR 295869356
#endif
#ifdef VK_KHR_synchronization2
void marshal_VkMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkMemoryBarrier2KHR* forMarshaling);

void unmarshal_VkMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkMemoryBarrier2KHR* forUnmarshaling);

void marshal_VkBufferMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkBufferMemoryBarrier2KHR* forMarshaling);

void unmarshal_VkBufferMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkBufferMemoryBarrier2KHR* forUnmarshaling);

void marshal_VkImageMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkImageMemoryBarrier2KHR* forMarshaling);

void unmarshal_VkImageMemoryBarrier2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkImageMemoryBarrier2KHR* forUnmarshaling);

void marshal_VkDependencyInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkDependencyInfoKHR* forMarshaling);

void unmarshal_VkDependencyInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkDependencyInfoKHR* forUnmarshaling);

void marshal_VkSemaphoreSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkSemaphoreSubmitInfoKHR* forMarshaling);

void unmarshal_VkSemaphoreSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkSemaphoreSubmitInfoKHR* forUnmarshaling);

void marshal_VkCommandBufferSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkCommandBufferSubmitInfoKHR* forMarshaling);

void unmarshal_VkCommandBufferSubmitInfoKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkCommandBufferSubmitInfoKHR* forUnmarshaling);

void marshal_VkSubmitInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkSubmitInfo2KHR* forMarshaling);

void unmarshal_VkSubmitInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkSubmitInfo2KHR* forUnmarshaling);

void marshal_VkPhysicalDeviceSynchronization2FeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSynchronization2FeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceSynchronization2FeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSynchronization2FeaturesKHR* forUnmarshaling);

#define OP_vkCmdSetEvent2KHR 270411360
#define OP_vkCmdResetEvent2KHR 283215906
#define OP_vkCmdWaitEvents2KHR 244967758
#define OP_vkCmdPipelineBarrier2KHR 201310066
#define OP_vkCmdWriteTimestamp2KHR 252552241
#define OP_vkQueueSubmit2KHR 293024240
#define OP_vkCmdWriteBufferMarker2AMD 224701394
void marshal_VkQueueFamilyCheckpointProperties2NV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkQueueFamilyCheckpointProperties2NV* forMarshaling);

void unmarshal_VkQueueFamilyCheckpointProperties2NV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkQueueFamilyCheckpointProperties2NV* forUnmarshaling);

void marshal_VkCheckpointData2NV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkCheckpointData2NV* forMarshaling);

void unmarshal_VkCheckpointData2NV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkCheckpointData2NV* forUnmarshaling);

#define OP_vkGetQueueCheckpointData2NV 292063036
#endif
#ifdef VK_KHR_shader_subgroup_uniform_control_flow
void marshal_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_zero_initialize_workgroup_memory
void marshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_workgroup_memory_explicit_layout
void marshal_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* forUnmarshaling);

#endif
#ifdef VK_KHR_copy_commands2
void marshal_VkBufferCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkBufferCopy2KHR* forMarshaling);

void unmarshal_VkBufferCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkBufferCopy2KHR* forUnmarshaling);

void marshal_VkCopyBufferInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkCopyBufferInfo2KHR* forMarshaling);

void unmarshal_VkCopyBufferInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkCopyBufferInfo2KHR* forUnmarshaling);

void marshal_VkImageCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                             const VkImageCopy2KHR* forMarshaling);

void unmarshal_VkImageCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               VkImageCopy2KHR* forUnmarshaling);

void marshal_VkCopyImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkCopyImageInfo2KHR* forMarshaling);

void unmarshal_VkCopyImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkCopyImageInfo2KHR* forUnmarshaling);

void marshal_VkBufferImageCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkBufferImageCopy2KHR* forMarshaling);

void unmarshal_VkBufferImageCopy2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkBufferImageCopy2KHR* forUnmarshaling);

void marshal_VkCopyBufferToImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkCopyBufferToImageInfo2KHR* forMarshaling);

void unmarshal_VkCopyBufferToImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkCopyBufferToImageInfo2KHR* forUnmarshaling);

void marshal_VkCopyImageToBufferInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkCopyImageToBufferInfo2KHR* forMarshaling);

void unmarshal_VkCopyImageToBufferInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkCopyImageToBufferInfo2KHR* forUnmarshaling);

void marshal_VkImageBlit2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                             const VkImageBlit2KHR* forMarshaling);

void unmarshal_VkImageBlit2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               VkImageBlit2KHR* forUnmarshaling);

void marshal_VkBlitImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkBlitImageInfo2KHR* forMarshaling);

void unmarshal_VkBlitImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkBlitImageInfo2KHR* forUnmarshaling);

void marshal_VkImageResolve2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkImageResolve2KHR* forMarshaling);

void unmarshal_VkImageResolve2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkImageResolve2KHR* forUnmarshaling);

void marshal_VkResolveImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkResolveImageInfo2KHR* forMarshaling);

void unmarshal_VkResolveImageInfo2KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkResolveImageInfo2KHR* forUnmarshaling);

#define OP_vkCmdCopyBuffer2KHR 247893766
#define OP_vkCmdCopyImage2KHR 227008250
#define OP_vkCmdCopyBufferToImage2KHR 248841963
#define OP_vkCmdCopyImageToBuffer2KHR 252249060
#define OP_vkCmdBlitImage2KHR 259838288
#define OP_vkCmdResolveImage2KHR 254857232
#endif
#ifdef VK_KHR_format_feature_flags2
void marshal_VkFormatProperties3KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkFormatProperties3KHR* forMarshaling);

void unmarshal_VkFormatProperties3KHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkFormatProperties3KHR* forUnmarshaling);

#endif
#ifdef VK_KHR_maintenance4
void marshal_VkPhysicalDeviceMaintenance4FeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMaintenance4FeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceMaintenance4FeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMaintenance4FeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceMaintenance4PropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMaintenance4PropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceMaintenance4PropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMaintenance4PropertiesKHR* forUnmarshaling);

void marshal_VkDeviceBufferMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceBufferMemoryRequirementsKHR* forMarshaling);

void unmarshal_VkDeviceBufferMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceBufferMemoryRequirementsKHR* forUnmarshaling);

void marshal_VkDeviceImageMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceImageMemoryRequirementsKHR* forMarshaling);

void unmarshal_VkDeviceImageMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceImageMemoryRequirementsKHR* forUnmarshaling);

#define OP_vkGetDeviceBufferMemoryRequirementsKHR 201613635
#define OP_vkGetDeviceImageMemoryRequirementsKHR 243155021
#define OP_vkGetDeviceImageSparseMemoryRequirementsKHR 275585477
#endif
#ifdef VK_ANDROID_native_buffer
void marshal_VkNativeBufferANDROID(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkNativeBufferANDROID* forMarshaling);

void unmarshal_VkNativeBufferANDROID(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkNativeBufferANDROID* forUnmarshaling);

#define OP_vkGetSwapchainGrallocUsageANDROID 20251
#define OP_vkAcquireImageANDROID 20252
#define OP_vkQueueSignalReleaseImageANDROID 20253
#endif
#ifdef VK_EXT_debug_report
void marshal_VkDebugReportCallbackCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDebugReportCallbackCreateInfoEXT* forMarshaling);

void unmarshal_VkDebugReportCallbackCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDebugReportCallbackCreateInfoEXT* forUnmarshaling);

#define OP_vkCreateDebugReportCallbackEXT 20254
#define OP_vkDestroyDebugReportCallbackEXT 20255
#define OP_vkDebugReportMessageEXT 20256
#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(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling);

void unmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    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(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkDebugMarkerObjectNameInfoEXT* forMarshaling);

void unmarshal_VkDebugMarkerObjectNameInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkDebugMarkerObjectNameInfoEXT* forUnmarshaling);

void marshal_VkDebugMarkerObjectTagInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDebugMarkerObjectTagInfoEXT* forMarshaling);

void unmarshal_VkDebugMarkerObjectTagInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkDebugMarkerObjectTagInfoEXT* forUnmarshaling);

void marshal_VkDebugMarkerMarkerInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkDebugMarkerMarkerInfoEXT* forMarshaling);

void unmarshal_VkDebugMarkerMarkerInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkDebugMarkerMarkerInfoEXT* forUnmarshaling);

#define OP_vkDebugMarkerSetObjectTagEXT 20257
#define OP_vkDebugMarkerSetObjectNameEXT 20258
#define OP_vkCmdDebugMarkerBeginEXT 20259
#define OP_vkCmdDebugMarkerEndEXT 20260
#define OP_vkCmdDebugMarkerInsertEXT 20261
#endif
#ifdef VK_AMD_gcn_shader
#endif
#ifdef VK_NV_dedicated_allocation
void marshal_VkDedicatedAllocationImageCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDedicatedAllocationImageCreateInfoNV* forMarshaling);

void unmarshal_VkDedicatedAllocationImageCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDedicatedAllocationImageCreateInfoNV* forUnmarshaling);

void marshal_VkDedicatedAllocationBufferCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling);

void unmarshal_VkDedicatedAllocationBufferCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDedicatedAllocationBufferCreateInfoNV* forUnmarshaling);

void marshal_VkDedicatedAllocationMemoryAllocateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling);

void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDedicatedAllocationMemoryAllocateInfoNV* forUnmarshaling);

#endif
#ifdef VK_EXT_transform_feedback
void marshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTransformFeedbackFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTransformFeedbackFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTransformFeedbackPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTransformFeedbackPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationStateStreamCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationStateStreamCreateInfoEXT* forUnmarshaling);

#define OP_vkCmdBindTransformFeedbackBuffersEXT 267779978
#define OP_vkCmdBeginTransformFeedbackEXT 294396901
#define OP_vkCmdEndTransformFeedbackEXT 272333731
#define OP_vkCmdBeginQueryIndexedEXT 275810601
#define OP_vkCmdEndQueryIndexedEXT 279821337
#define OP_vkCmdDrawIndirectByteCountEXT 285235943
#endif
#ifdef VK_NVX_binary_import
void marshal_VkCuModuleCreateInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkCuModuleCreateInfoNVX* forMarshaling);

void unmarshal_VkCuModuleCreateInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkCuModuleCreateInfoNVX* forUnmarshaling);

void marshal_VkCuFunctionCreateInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkCuFunctionCreateInfoNVX* forMarshaling);

void unmarshal_VkCuFunctionCreateInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkCuFunctionCreateInfoNVX* forUnmarshaling);

void marshal_VkCuLaunchInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                               const VkCuLaunchInfoNVX* forMarshaling);

void unmarshal_VkCuLaunchInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 VkCuLaunchInfoNVX* forUnmarshaling);

#define OP_vkCreateCuModuleNVX 227747396
#define OP_vkCreateCuFunctionNVX 207930440
#define OP_vkDestroyCuModuleNVX 273754594
#define OP_vkDestroyCuFunctionNVX 253295828
#define OP_vkCmdCuLaunchKernelNVX 219961351
#endif
#ifdef VK_NVX_image_view_handle
void marshal_VkImageViewHandleInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkImageViewHandleInfoNVX* forMarshaling);

void unmarshal_VkImageViewHandleInfoNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkImageViewHandleInfoNVX* forUnmarshaling);

void marshal_VkImageViewAddressPropertiesNVX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkImageViewAddressPropertiesNVX* forMarshaling);

void unmarshal_VkImageViewAddressPropertiesNVX(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkImageViewAddressPropertiesNVX* forUnmarshaling);

#define OP_vkGetImageViewHandleNVX 204379647
#define OP_vkGetImageViewAddressNVX 210668576
#endif
#ifdef VK_AMD_draw_indirect_count
#define OP_vkCmdDrawIndirectCountAMD 20262
#define OP_vkCmdDrawIndexedIndirectCountAMD 20263
#endif
#ifdef VK_AMD_negative_viewport_height
#endif
#ifdef VK_AMD_gpu_shader_half_float
#endif
#ifdef VK_AMD_shader_ballot
#endif
#ifdef VK_EXT_video_encode_h264
void marshal_VkVideoEncodeH264CapabilitiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264CapabilitiesEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264CapabilitiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoEncodeH264CapabilitiesEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264SessionCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH264SessionCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264SessionParametersAddInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH264SessionParametersAddInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264SessionParametersCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH264SessionParametersCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264DpbSlotInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoEncodeH264DpbSlotInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264DpbSlotInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoEncodeH264DpbSlotInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264NaluSliceEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkVideoEncodeH264NaluSliceEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264NaluSliceEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkVideoEncodeH264NaluSliceEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264VclFrameInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264VclFrameInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264VclFrameInfoEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoEncodeH264VclFrameInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH264EmitPictureParametersEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH264EmitPictureParametersEXT* forUnmarshaling);

void marshal_VkVideoEncodeH264ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoEncodeH264ProfileEXT* forMarshaling);

void unmarshal_VkVideoEncodeH264ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoEncodeH264ProfileEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_video_encode_h265
void marshal_VkVideoEncodeH265CapabilitiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265CapabilitiesEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265CapabilitiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoEncodeH265CapabilitiesEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265SessionCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH265SessionCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265SessionParametersAddInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH265SessionParametersAddInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265SessionParametersCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH265SessionParametersCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265DpbSlotInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoEncodeH265DpbSlotInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265DpbSlotInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoEncodeH265DpbSlotInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265ReferenceListsEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265ReferenceListsEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265ReferenceListsEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH265ReferenceListsEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265NaluSliceEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkVideoEncodeH265NaluSliceEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265NaluSliceEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkVideoEncodeH265NaluSliceEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265VclFrameInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265VclFrameInfoEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265VclFrameInfoEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoEncodeH265VclFrameInfoEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoEncodeH265EmitPictureParametersEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoEncodeH265EmitPictureParametersEXT* forUnmarshaling);

void marshal_VkVideoEncodeH265ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoEncodeH265ProfileEXT* forMarshaling);

void unmarshal_VkVideoEncodeH265ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoEncodeH265ProfileEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_video_decode_h264
void marshal_VkVideoDecodeH264ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoDecodeH264ProfileEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoDecodeH264ProfileEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264CapabilitiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH264CapabilitiesEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264CapabilitiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoDecodeH264CapabilitiesEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH264SessionCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH264SessionCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH264SessionParametersAddInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH264SessionParametersAddInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH264SessionParametersCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH264SessionParametersCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264PictureInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoDecodeH264PictureInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264PictureInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoDecodeH264PictureInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264MvcEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkVideoDecodeH264MvcEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264MvcEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkVideoDecodeH264MvcEXT* forUnmarshaling);

void marshal_VkVideoDecodeH264DpbSlotInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoDecodeH264DpbSlotInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH264DpbSlotInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoDecodeH264DpbSlotInfoEXT* forUnmarshaling);

#endif
#ifdef VK_AMD_texture_gather_bias_lod
void marshal_VkTextureLODGatherFormatPropertiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkTextureLODGatherFormatPropertiesAMD* forMarshaling);

void unmarshal_VkTextureLODGatherFormatPropertiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkTextureLODGatherFormatPropertiesAMD* forUnmarshaling);

#endif
#ifdef VK_AMD_shader_info
void marshal_VkShaderResourceUsageAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkShaderResourceUsageAMD* forMarshaling);

void unmarshal_VkShaderResourceUsageAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkShaderResourceUsageAMD* forUnmarshaling);

void marshal_VkShaderStatisticsInfoAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkShaderStatisticsInfoAMD* forMarshaling);

void unmarshal_VkShaderStatisticsInfoAMD(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkShaderStatisticsInfoAMD* forUnmarshaling);

#define OP_vkGetShaderInfoAMD 20264
#endif
#ifdef VK_AMD_shader_image_load_store_lod
#endif
#ifdef VK_GGP_stream_descriptor_surface
void marshal_VkStreamDescriptorSurfaceCreateInfoGGP(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkStreamDescriptorSurfaceCreateInfoGGP* forMarshaling);

void unmarshal_VkStreamDescriptorSurfaceCreateInfoGGP(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkStreamDescriptorSurfaceCreateInfoGGP* forUnmarshaling);

#define OP_vkCreateStreamDescriptorSurfaceGGP 241902685
#endif
#ifdef VK_NV_corner_sampled_image
void marshal_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCornerSampledImageFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCornerSampledImageFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_IMG_format_pvrtc
#endif
#ifdef VK_NV_external_memory_capabilities
void marshal_VkExternalImageFormatPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkExternalImageFormatPropertiesNV* forMarshaling);

void unmarshal_VkExternalImageFormatPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkExternalImageFormatPropertiesNV* forUnmarshaling);

#define OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV 20265
#endif
#ifdef VK_NV_external_memory
void marshal_VkExternalMemoryImageCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkExternalMemoryImageCreateInfoNV* forMarshaling);

void unmarshal_VkExternalMemoryImageCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkExternalMemoryImageCreateInfoNV* forUnmarshaling);

void marshal_VkExportMemoryAllocateInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkExportMemoryAllocateInfoNV* forMarshaling);

void unmarshal_VkExportMemoryAllocateInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkExportMemoryAllocateInfoNV* forUnmarshaling);

#endif
#ifdef VK_NV_external_memory_win32
void marshal_VkImportMemoryWin32HandleInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkImportMemoryWin32HandleInfoNV* forMarshaling);

void unmarshal_VkImportMemoryWin32HandleInfoNV(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkImportMemoryWin32HandleInfoNV* forUnmarshaling);

void marshal_VkExportMemoryWin32HandleInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkExportMemoryWin32HandleInfoNV* forMarshaling);

void unmarshal_VkExportMemoryWin32HandleInfoNV(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkExportMemoryWin32HandleInfoNV* forUnmarshaling);

#define OP_vkGetMemoryWin32HandleNV 20266
#endif
#ifdef VK_NV_win32_keyed_mutex
void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling);

void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkWin32KeyedMutexAcquireReleaseInfoNV* forUnmarshaling);

#endif
#ifdef VK_EXT_validation_flags
void marshal_VkValidationFlagsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkValidationFlagsEXT* forMarshaling);

void unmarshal_VkValidationFlagsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkValidationFlagsEXT* forUnmarshaling);

#endif
#ifdef VK_NN_vi_surface
void marshal_VkViSurfaceCreateInfoNN(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkViSurfaceCreateInfoNN* forMarshaling);

void unmarshal_VkViSurfaceCreateInfoNN(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkViSurfaceCreateInfoNN* forUnmarshaling);

#define OP_vkCreateViSurfaceNN 20267
#endif
#ifdef VK_EXT_shader_subgroup_ballot
#endif
#ifdef VK_EXT_shader_subgroup_vote
#endif
#ifdef VK_EXT_texture_compression_astc_hdr
void marshal_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_astc_decode_mode
void marshal_VkImageViewASTCDecodeModeEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkImageViewASTCDecodeModeEXT* forMarshaling);

void unmarshal_VkImageViewASTCDecodeModeEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkImageViewASTCDecodeModeEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceASTCDecodeFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceASTCDecodeFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_conditional_rendering
void marshal_VkConditionalRenderingBeginInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkConditionalRenderingBeginInfoEXT* forMarshaling);

void unmarshal_VkConditionalRenderingBeginInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkConditionalRenderingBeginInfoEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceConditionalRenderingFeaturesEXT* forUnmarshaling);

void marshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling);

void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCommandBufferInheritanceConditionalRenderingInfoEXT* forUnmarshaling);

#define OP_vkCmdBeginConditionalRenderingEXT 20268
#define OP_vkCmdEndConditionalRenderingEXT 20269
#endif
#ifdef VK_NV_clip_space_w_scaling
void marshal_VkViewportWScalingNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkViewportWScalingNV* forMarshaling);

void unmarshal_VkViewportWScalingNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkViewportWScalingNV* forUnmarshaling);

void marshal_VkPipelineViewportWScalingStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportWScalingStateCreateInfoNV* forUnmarshaling);

#define OP_vkCmdSetViewportWScalingNV 20279
#endif
#ifdef VK_EXT_direct_mode_display
#define OP_vkReleaseDisplayEXT 20280
#endif
#ifdef VK_EXT_acquire_xlib_display
#define OP_vkAcquireXlibDisplayEXT 20281
#define OP_vkGetRandROutputDisplayEXT 20282
#endif
#ifdef VK_EXT_display_surface_counter
void marshal_VkSurfaceCapabilities2EXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkSurfaceCapabilities2EXT* forMarshaling);

void unmarshal_VkSurfaceCapabilities2EXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkSurfaceCapabilities2EXT* forUnmarshaling);

#define OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT 20283
#endif
#ifdef VK_EXT_display_control
void marshal_VkDisplayPowerInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkDisplayPowerInfoEXT* forMarshaling);

void unmarshal_VkDisplayPowerInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkDisplayPowerInfoEXT* forUnmarshaling);

void marshal_VkDeviceEventInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkDeviceEventInfoEXT* forMarshaling);

void unmarshal_VkDeviceEventInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkDeviceEventInfoEXT* forUnmarshaling);

void marshal_VkDisplayEventInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkDisplayEventInfoEXT* forMarshaling);

void unmarshal_VkDisplayEventInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkDisplayEventInfoEXT* forUnmarshaling);

void marshal_VkSwapchainCounterCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkSwapchainCounterCreateInfoEXT* forMarshaling);

void unmarshal_VkSwapchainCounterCreateInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkSwapchainCounterCreateInfoEXT* forUnmarshaling);

#define OP_vkDisplayPowerControlEXT 20284
#define OP_vkRegisterDeviceEventEXT 20285
#define OP_vkRegisterDisplayEventEXT 20286
#define OP_vkGetSwapchainCounterEXT 20287
#endif
#ifdef VK_GOOGLE_display_timing
void marshal_VkRefreshCycleDurationGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkRefreshCycleDurationGOOGLE* forMarshaling);

void unmarshal_VkRefreshCycleDurationGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkRefreshCycleDurationGOOGLE* forUnmarshaling);

void marshal_VkPastPresentationTimingGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkPastPresentationTimingGOOGLE* forMarshaling);

void unmarshal_VkPastPresentationTimingGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkPastPresentationTimingGOOGLE* forUnmarshaling);

void marshal_VkPresentTimeGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkPresentTimeGOOGLE* forMarshaling);

void unmarshal_VkPresentTimeGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkPresentTimeGOOGLE* forUnmarshaling);

void marshal_VkPresentTimesInfoGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkPresentTimesInfoGOOGLE* forMarshaling);

void unmarshal_VkPresentTimesInfoGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkPresentTimesInfoGOOGLE* forUnmarshaling);

#define OP_vkGetRefreshCycleDurationGOOGLE 20288
#define OP_vkGetPastPresentationTimingGOOGLE 20289
#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(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling);

void unmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forUnmarshaling);

#endif
#ifdef VK_NV_viewport_swizzle
void marshal_VkViewportSwizzleNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkViewportSwizzleNV* forMarshaling);

void unmarshal_VkViewportSwizzleNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkViewportSwizzleNV* forUnmarshaling);

void marshal_VkPipelineViewportSwizzleStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportSwizzleStateCreateInfoNV* forUnmarshaling);

#endif
#ifdef VK_EXT_discard_rectangles
void marshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDiscardRectanglePropertiesEXT* forUnmarshaling);

void marshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineDiscardRectangleStateCreateInfoEXT* forUnmarshaling);

#define OP_vkCmdSetDiscardRectangleEXT 20290
#endif
#ifdef VK_EXT_conservative_rasterization
void marshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationConservativeStateCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_depth_clip_enable
void marshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDepthClipEnableFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDepthClipEnableFeaturesEXT* forUnmarshaling);

void marshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationDepthClipStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationDepthClipStateCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_swapchain_colorspace
#endif
#ifdef VK_EXT_hdr_metadata
void marshal_VkXYColorEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkXYColorEXT* forMarshaling);

void unmarshal_VkXYColorEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkXYColorEXT* forUnmarshaling);

void marshal_VkHdrMetadataEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkHdrMetadataEXT* forMarshaling);

void unmarshal_VkHdrMetadataEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkHdrMetadataEXT* forUnmarshaling);

#define OP_vkSetHdrMetadataEXT 20291
#endif
#ifdef VK_MVK_ios_surface
void marshal_VkIOSSurfaceCreateInfoMVK(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkIOSSurfaceCreateInfoMVK* forMarshaling);

void unmarshal_VkIOSSurfaceCreateInfoMVK(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkIOSSurfaceCreateInfoMVK* forUnmarshaling);

#define OP_vkCreateIOSSurfaceMVK 20292
#endif
#ifdef VK_MVK_macos_surface
void marshal_VkMacOSSurfaceCreateInfoMVK(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkMacOSSurfaceCreateInfoMVK* forMarshaling);

void unmarshal_VkMacOSSurfaceCreateInfoMVK(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkMacOSSurfaceCreateInfoMVK* forUnmarshaling);

#define OP_vkCreateMacOSSurfaceMVK 20293
#endif
#ifdef VK_MVK_moltenvk
#define OP_vkGetMTLDeviceMVK 20334
#define OP_vkSetMTLTextureMVK 20335
#define OP_vkGetMTLTextureMVK 20336
#define OP_vkGetMTLBufferMVK 20337
#define OP_vkUseIOSurfaceMVK 20338
#define OP_vkGetIOSurfaceMVK 20339
#endif
#ifdef VK_EXT_external_memory_dma_buf
#endif
#ifdef VK_EXT_queue_family_foreign
#endif
#ifdef VK_EXT_debug_utils
void marshal_VkDebugUtilsLabelEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkDebugUtilsLabelEXT* forMarshaling);

void unmarshal_VkDebugUtilsLabelEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkDebugUtilsLabelEXT* forUnmarshaling);

void marshal_VkDebugUtilsObjectNameInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDebugUtilsObjectNameInfoEXT* forMarshaling);

void unmarshal_VkDebugUtilsObjectNameInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkDebugUtilsObjectNameInfoEXT* forUnmarshaling);

void marshal_VkDebugUtilsMessengerCallbackDataEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling);

void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling);

void marshal_VkDebugUtilsMessengerCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling);

void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling);

void marshal_VkDebugUtilsObjectTagInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkDebugUtilsObjectTagInfoEXT* forMarshaling);

void unmarshal_VkDebugUtilsObjectTagInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkDebugUtilsObjectTagInfoEXT* forUnmarshaling);

#define OP_vkSetDebugUtilsObjectNameEXT 20294
#define OP_vkSetDebugUtilsObjectTagEXT 20295
#define OP_vkQueueBeginDebugUtilsLabelEXT 20296
#define OP_vkQueueEndDebugUtilsLabelEXT 20297
#define OP_vkQueueInsertDebugUtilsLabelEXT 20298
#define OP_vkCmdBeginDebugUtilsLabelEXT 20299
#define OP_vkCmdEndDebugUtilsLabelEXT 20300
#define OP_vkCmdInsertDebugUtilsLabelEXT 20301
#define OP_vkCreateDebugUtilsMessengerEXT 20302
#define OP_vkDestroyDebugUtilsMessengerEXT 20303
#define OP_vkSubmitDebugUtilsMessageEXT 20304
#endif
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
void marshal_VkAndroidHardwareBufferUsageANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAndroidHardwareBufferUsageANDROID* forMarshaling);

void unmarshal_VkAndroidHardwareBufferUsageANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAndroidHardwareBufferUsageANDROID* forUnmarshaling);

void marshal_VkAndroidHardwareBufferPropertiesANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling);

void unmarshal_VkAndroidHardwareBufferPropertiesANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAndroidHardwareBufferPropertiesANDROID* forUnmarshaling);

void marshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling);

void unmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAndroidHardwareBufferFormatPropertiesANDROID* forUnmarshaling);

void marshal_VkImportAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling);

void unmarshal_VkImportAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImportAndroidHardwareBufferInfoANDROID* forUnmarshaling);

void marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling);

void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMemoryGetAndroidHardwareBufferInfoANDROID* forUnmarshaling);

void marshal_VkExternalFormatANDROID(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkExternalFormatANDROID* forMarshaling);

void unmarshal_VkExternalFormatANDROID(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkExternalFormatANDROID* forUnmarshaling);

#define OP_vkGetAndroidHardwareBufferPropertiesANDROID 20305
#define OP_vkGetMemoryAndroidHardwareBufferANDROID 20306
void marshal_VkAndroidHardwareBufferFormatProperties2ANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAndroidHardwareBufferFormatProperties2ANDROID* forMarshaling);

void unmarshal_VkAndroidHardwareBufferFormatProperties2ANDROID(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAndroidHardwareBufferFormatProperties2ANDROID* forUnmarshaling);

#endif
#ifdef VK_EXT_sampler_filter_minmax
DEFINE_ALIAS_FUNCTION(marshal_VkSamplerReductionModeCreateInfo,
                      marshal_VkSamplerReductionModeCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkSamplerReductionModeCreateInfo,
                      unmarshal_VkSamplerReductionModeCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceSamplerFilterMinmaxProperties,
                      marshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties,
                      unmarshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT)

#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_inline_uniform_block
void marshal_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceInlineUniformBlockFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceInlineUniformBlockPropertiesEXT* forUnmarshaling);

void marshal_VkWriteDescriptorSetInlineUniformBlockEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkWriteDescriptorSetInlineUniformBlockEXT* forMarshaling);

void unmarshal_VkWriteDescriptorSetInlineUniformBlockEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkWriteDescriptorSetInlineUniformBlockEXT* forUnmarshaling);

void marshal_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* forMarshaling);

void unmarshal_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDescriptorPoolInlineUniformBlockCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_shader_stencil_export
#endif
#ifdef VK_EXT_sample_locations
void marshal_VkSampleLocationEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                 const VkSampleLocationEXT* forMarshaling);

void unmarshal_VkSampleLocationEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   VkSampleLocationEXT* forUnmarshaling);

void marshal_VkSampleLocationsInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkSampleLocationsInfoEXT* forMarshaling);

void unmarshal_VkSampleLocationsInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkSampleLocationsInfoEXT* forUnmarshaling);

void marshal_VkAttachmentSampleLocationsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkAttachmentSampleLocationsEXT* forMarshaling);

void unmarshal_VkAttachmentSampleLocationsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkAttachmentSampleLocationsEXT* forUnmarshaling);

void marshal_VkSubpassSampleLocationsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkSubpassSampleLocationsEXT* forMarshaling);

void unmarshal_VkSubpassSampleLocationsEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkSubpassSampleLocationsEXT* forUnmarshaling);

void marshal_VkRenderPassSampleLocationsBeginInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling);

void unmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderPassSampleLocationsBeginInfoEXT* forUnmarshaling);

void marshal_VkPipelineSampleLocationsStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineSampleLocationsStateCreateInfoEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSampleLocationsPropertiesEXT* forUnmarshaling);

void marshal_VkMultisamplePropertiesEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkMultisamplePropertiesEXT* forMarshaling);

void unmarshal_VkMultisamplePropertiesEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkMultisamplePropertiesEXT* forUnmarshaling);

#define OP_vkCmdSetSampleLocationsEXT 20307
#define OP_vkGetPhysicalDeviceMultisamplePropertiesEXT 20308
#endif
#ifdef VK_EXT_blend_operation_advanced
void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineColorBlendAdvancedStateCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_NV_fragment_coverage_to_color
void marshal_VkPipelineCoverageToColorStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineCoverageToColorStateCreateInfoNV* forUnmarshaling);

#endif
#ifdef VK_NV_framebuffer_mixed_samples
void marshal_VkPipelineCoverageModulationStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineCoverageModulationStateCreateInfoNV* forUnmarshaling);

#endif
#ifdef VK_NV_fill_rectangle
#endif
#ifdef VK_NV_shader_sm_builtins
void marshal_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_EXT_post_depth_coverage
#endif
#ifdef VK_EXT_image_drm_format_modifier
void marshal_VkDrmFormatModifierPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDrmFormatModifierPropertiesEXT* forMarshaling);

void unmarshal_VkDrmFormatModifierPropertiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkDrmFormatModifierPropertiesEXT* forUnmarshaling);

void marshal_VkDrmFormatModifierPropertiesListEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDrmFormatModifierPropertiesListEXT* forMarshaling);

void unmarshal_VkDrmFormatModifierPropertiesListEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDrmFormatModifierPropertiesListEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forUnmarshaling);

void marshal_VkImageDrmFormatModifierListCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImageDrmFormatModifierListCreateInfoEXT* forMarshaling);

void unmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImageDrmFormatModifierListCreateInfoEXT* forUnmarshaling);

void marshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImageDrmFormatModifierExplicitCreateInfoEXT* forMarshaling);

void unmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImageDrmFormatModifierExplicitCreateInfoEXT* forUnmarshaling);

void marshal_VkImageDrmFormatModifierPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImageDrmFormatModifierPropertiesEXT* forMarshaling);

void unmarshal_VkImageDrmFormatModifierPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImageDrmFormatModifierPropertiesEXT* forUnmarshaling);

#define OP_vkGetImageDrmFormatModifierPropertiesEXT 251301237
void marshal_VkDrmFormatModifierProperties2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDrmFormatModifierProperties2EXT* forMarshaling);

void unmarshal_VkDrmFormatModifierProperties2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDrmFormatModifierProperties2EXT* forUnmarshaling);

void marshal_VkDrmFormatModifierPropertiesList2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDrmFormatModifierPropertiesList2EXT* forMarshaling);

void unmarshal_VkDrmFormatModifierPropertiesList2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDrmFormatModifierPropertiesList2EXT* forUnmarshaling);

#endif
#ifdef VK_EXT_validation_cache
void marshal_VkValidationCacheCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkValidationCacheCreateInfoEXT* forMarshaling);

void unmarshal_VkValidationCacheCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkValidationCacheCreateInfoEXT* forUnmarshaling);

void marshal_VkShaderModuleValidationCacheCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling);

void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkShaderModuleValidationCacheCreateInfoEXT* forUnmarshaling);

#define OP_vkCreateValidationCacheEXT 20309
#define OP_vkDestroyValidationCacheEXT 20310
#define OP_vkMergeValidationCachesEXT 20311
#define OP_vkGetValidationCacheDataEXT 20312
#endif
#ifdef VK_EXT_descriptor_indexing
DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorSetLayoutBindingFlagsCreateInfo,
                      marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo,
                      unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceDescriptorIndexingFeatures,
                      marshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceDescriptorIndexingFeatures,
                      unmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceDescriptorIndexingProperties,
                      marshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceDescriptorIndexingProperties,
                      unmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorSetVariableDescriptorCountAllocateInfo,
                      marshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo,
                      unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkDescriptorSetVariableDescriptorCountLayoutSupport,
                      marshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport,
                      unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)

#endif
#ifdef VK_EXT_shader_viewport_index_layer
#endif
#ifdef VK_NV_shading_rate_image
void marshal_VkShadingRatePaletteNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkShadingRatePaletteNV* forMarshaling);

void unmarshal_VkShadingRatePaletteNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkShadingRatePaletteNV* forUnmarshaling);

void marshal_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportShadingRateImageStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportShadingRateImageStateCreateInfoNV* forUnmarshaling);

void marshal_VkPhysicalDeviceShadingRateImageFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImageFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceShadingRateImageFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShadingRateImageFeaturesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceShadingRateImagePropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImagePropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceShadingRateImagePropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShadingRateImagePropertiesNV* forUnmarshaling);

void marshal_VkCoarseSampleLocationNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkCoarseSampleLocationNV* forMarshaling);

void unmarshal_VkCoarseSampleLocationNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkCoarseSampleLocationNV* forUnmarshaling);

void marshal_VkCoarseSampleOrderCustomNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkCoarseSampleOrderCustomNV* forMarshaling);

void unmarshal_VkCoarseSampleOrderCustomNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkCoarseSampleOrderCustomNV* forUnmarshaling);

void marshal_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* forUnmarshaling);

#define OP_vkCmdBindShadingRateImageNV 238618340
#define OP_vkCmdSetViewportShadingRatePaletteNV 215295078
#define OP_vkCmdSetCoarseSampleOrderNV 236858637
#endif
#ifdef VK_NV_ray_tracing
void marshal_VkRayTracingShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoNV* forMarshaling);

void unmarshal_VkRayTracingShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRayTracingShaderGroupCreateInfoNV* forUnmarshaling);

void marshal_VkRayTracingPipelineCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoNV* forMarshaling);

void unmarshal_VkRayTracingPipelineCreateInfoNV(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkRayTracingPipelineCreateInfoNV* forUnmarshaling);

void marshal_VkGeometryTrianglesNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                   const VkGeometryTrianglesNV* forMarshaling);

void unmarshal_VkGeometryTrianglesNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     VkGeometryTrianglesNV* forUnmarshaling);

void marshal_VkGeometryAABBNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkGeometryAABBNV* forMarshaling);

void unmarshal_VkGeometryAABBNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkGeometryAABBNV* forUnmarshaling);

void marshal_VkGeometryDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                              const VkGeometryDataNV* forMarshaling);

void unmarshal_VkGeometryDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                VkGeometryDataNV* forUnmarshaling);

void marshal_VkGeometryNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                          const VkGeometryNV* forMarshaling);

void unmarshal_VkGeometryNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                            VkGeometryNV* forUnmarshaling);

void marshal_VkAccelerationStructureInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkAccelerationStructureInfoNV* forMarshaling);

void unmarshal_VkAccelerationStructureInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkAccelerationStructureInfoNV* forUnmarshaling);

void marshal_VkAccelerationStructureCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureCreateInfoNV* forMarshaling);

void unmarshal_VkAccelerationStructureCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureCreateInfoNV* forUnmarshaling);

void marshal_VkBindAccelerationStructureMemoryInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindAccelerationStructureMemoryInfoNV* forMarshaling);

void unmarshal_VkBindAccelerationStructureMemoryInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindAccelerationStructureMemoryInfoNV* forUnmarshaling);

void marshal_VkWriteDescriptorSetAccelerationStructureNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureNV* forMarshaling);

void unmarshal_VkWriteDescriptorSetAccelerationStructureNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkWriteDescriptorSetAccelerationStructureNV* forUnmarshaling);

void marshal_VkAccelerationStructureMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureMemoryRequirementsInfoNV* forMarshaling);

void unmarshal_VkAccelerationStructureMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureMemoryRequirementsInfoNV* forUnmarshaling);

void marshal_VkPhysicalDeviceRayTracingPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceRayTracingPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRayTracingPropertiesNV* forUnmarshaling);

void marshal_VkTransformMatrixKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkTransformMatrixKHR* forMarshaling);

void unmarshal_VkTransformMatrixKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkTransformMatrixKHR* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkTransformMatrixKHR, marshal_VkTransformMatrixNV)

DEFINE_ALIAS_FUNCTION(unmarshal_VkTransformMatrixKHR, unmarshal_VkTransformMatrixNV)

void marshal_VkAabbPositionsKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkAabbPositionsKHR* forMarshaling);

void unmarshal_VkAabbPositionsKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkAabbPositionsKHR* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkAabbPositionsKHR, marshal_VkAabbPositionsNV)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAabbPositionsKHR, unmarshal_VkAabbPositionsNV)

void marshal_VkAccelerationStructureInstanceKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureInstanceKHR* forMarshaling);

void unmarshal_VkAccelerationStructureInstanceKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureInstanceKHR* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkAccelerationStructureInstanceKHR,
                      marshal_VkAccelerationStructureInstanceNV)

DEFINE_ALIAS_FUNCTION(unmarshal_VkAccelerationStructureInstanceKHR,
                      unmarshal_VkAccelerationStructureInstanceNV)

#define OP_vkCreateAccelerationStructureNV 259713020
#define OP_vkDestroyAccelerationStructureNV 252775746
#define OP_vkGetAccelerationStructureMemoryRequirementsNV 220234370
#define OP_vkBindAccelerationStructureMemoryNV 202856743
#define OP_vkCmdBuildAccelerationStructureNV 269050897
#define OP_vkCmdCopyAccelerationStructureNV 211075498
#define OP_vkCmdTraceRaysNV 210219912
#define OP_vkCreateRayTracingPipelinesNV 203653638
#define OP_vkGetRayTracingShaderGroupHandlesKHR 271962641
#define OP_vkGetRayTracingShaderGroupHandlesNV 230045846
#define OP_vkGetAccelerationStructureHandleNV 269898134
#define OP_vkCmdWriteAccelerationStructuresPropertiesNV 207954431
#define OP_vkCompileDeferredNV 278731610
#endif
#ifdef VK_NV_representative_fragment_test
void marshal_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* forUnmarshaling);

void marshal_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRepresentativeFragmentTestStateCreateInfoNV* forUnmarshaling);

#endif
#ifdef VK_EXT_filter_cubic
void marshal_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceImageViewImageFormatInfoEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceImageViewImageFormatInfoEXT* forUnmarshaling);

void marshal_VkFilterCubicImageViewImageFormatPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkFilterCubicImageViewImageFormatPropertiesEXT* forMarshaling);

void unmarshal_VkFilterCubicImageViewImageFormatPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkFilterCubicImageViewImageFormatPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_QCOM_render_pass_shader_resolve
#endif
#ifdef VK_EXT_global_priority
void marshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling);

void unmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceQueueGlobalPriorityCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_external_memory_host
void marshal_VkImportMemoryHostPointerInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportMemoryHostPointerInfoEXT* forMarshaling);

void unmarshal_VkImportMemoryHostPointerInfoEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkImportMemoryHostPointerInfoEXT* forUnmarshaling);

void marshal_VkMemoryHostPointerPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryHostPointerPropertiesEXT* forMarshaling);

void unmarshal_VkMemoryHostPointerPropertiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkMemoryHostPointerPropertiesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling);

#define OP_vkGetMemoryHostPointerPropertiesEXT 20313
#endif
#ifdef VK_AMD_buffer_marker
#define OP_vkCmdWriteBufferMarkerAMD 20314
#endif
#ifdef VK_AMD_pipeline_compiler_control
void marshal_VkPipelineCompilerControlCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineCompilerControlCreateInfoAMD* forMarshaling);

void unmarshal_VkPipelineCompilerControlCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineCompilerControlCreateInfoAMD* forUnmarshaling);

#endif
#ifdef VK_EXT_calibrated_timestamps
void marshal_VkCalibratedTimestampInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkCalibratedTimestampInfoEXT* forMarshaling);

void unmarshal_VkCalibratedTimestampInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkCalibratedTimestampInfoEXT* forUnmarshaling);

#define OP_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT 295643221
#define OP_vkGetCalibratedTimestampsEXT 203583186
#endif
#ifdef VK_AMD_shader_core_properties
void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderCorePropertiesAMD* forUnmarshaling);

#endif
#ifdef VK_EXT_video_decode_h265
void marshal_VkVideoDecodeH265ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkVideoDecodeH265ProfileEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265ProfileEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkVideoDecodeH265ProfileEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265CapabilitiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH265CapabilitiesEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265CapabilitiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkVideoDecodeH265CapabilitiesEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH265SessionCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH265SessionCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH265SessionParametersAddInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH265SessionParametersAddInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVideoDecodeH265SessionParametersCreateInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVideoDecodeH265SessionParametersCreateInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265PictureInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoDecodeH265PictureInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265PictureInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoDecodeH265PictureInfoEXT* forUnmarshaling);

void marshal_VkVideoDecodeH265DpbSlotInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkVideoDecodeH265DpbSlotInfoEXT* forMarshaling);

void unmarshal_VkVideoDecodeH265DpbSlotInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkVideoDecodeH265DpbSlotInfoEXT* forUnmarshaling);

#endif
#ifdef VK_AMD_memory_overallocation_behavior
void marshal_VkDeviceMemoryOverallocationCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceMemoryOverallocationCreateInfoAMD* forMarshaling);

void unmarshal_VkDeviceMemoryOverallocationCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceMemoryOverallocationCreateInfoAMD* forUnmarshaling);

#endif
#ifdef VK_EXT_vertex_attribute_divisor
void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling);

void marshal_VkVertexInputBindingDivisorDescriptionEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling);

void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling);

void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_GGP_frame_token
void marshal_VkPresentFrameTokenGGP(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    const VkPresentFrameTokenGGP* forMarshaling);

void unmarshal_VkPresentFrameTokenGGP(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      VkPresentFrameTokenGGP* forUnmarshaling);

#endif
#ifdef VK_EXT_pipeline_creation_feedback
void marshal_VkPipelineCreationFeedbackEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkPipelineCreationFeedbackEXT* forMarshaling);

void unmarshal_VkPipelineCreationFeedbackEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkPipelineCreationFeedbackEXT* forUnmarshaling);

void marshal_VkPipelineCreationFeedbackCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineCreationFeedbackCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineCreationFeedbackCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineCreationFeedbackCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_NV_shader_subgroup_partitioned
#endif
#ifdef VK_NV_compute_shader_derivatives
void marshal_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_NV_mesh_shader
void marshal_VkPhysicalDeviceMeshShaderFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceMeshShaderFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMeshShaderFeaturesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceMeshShaderPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceMeshShaderPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMeshShaderPropertiesNV* forUnmarshaling);

void marshal_VkDrawMeshTasksIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDrawMeshTasksIndirectCommandNV* forMarshaling);

void unmarshal_VkDrawMeshTasksIndirectCommandNV(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkDrawMeshTasksIndirectCommandNV* forUnmarshaling);

#define OP_vkCmdDrawMeshTasksNV 207334931
#define OP_vkCmdDrawMeshTasksIndirectNV 274079208
#define OP_vkCmdDrawMeshTasksIndirectCountNV 223801967
#endif
#ifdef VK_NV_fragment_shader_barycentric
void marshal_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_NV_shader_image_footprint
void marshal_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderImageFootprintFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderImageFootprintFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_NV_scissor_exclusive
void marshal_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineViewportExclusiveScissorStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineViewportExclusiveScissorStateCreateInfoNV* forUnmarshaling);

void marshal_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExclusiveScissorFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExclusiveScissorFeaturesNV* forUnmarshaling);

#define OP_vkCmdSetExclusiveScissorNV 225408194
#endif
#ifdef VK_NV_device_diagnostic_checkpoints
void marshal_VkQueueFamilyCheckpointPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkQueueFamilyCheckpointPropertiesNV* forMarshaling);

void unmarshal_VkQueueFamilyCheckpointPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkQueueFamilyCheckpointPropertiesNV* forUnmarshaling);

void marshal_VkCheckpointDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkCheckpointDataNV* forMarshaling);

void unmarshal_VkCheckpointDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkCheckpointDataNV* forUnmarshaling);

#define OP_vkCmdSetCheckpointNV 20315
#define OP_vkGetQueueCheckpointDataNV 20316
#endif
#ifdef VK_INTEL_shader_integer_functions2
void marshal_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* forUnmarshaling);

#endif
#ifdef VK_INTEL_performance_query
void marshal_VkPerformanceValueDataINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkPerformanceValueDataINTEL* forMarshaling);

void unmarshal_VkPerformanceValueDataINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkPerformanceValueDataINTEL* forUnmarshaling);

void marshal_VkPerformanceValueINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkPerformanceValueINTEL* forMarshaling);

void unmarshal_VkPerformanceValueINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkPerformanceValueINTEL* forUnmarshaling);

void marshal_VkInitializePerformanceApiInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkInitializePerformanceApiInfoINTEL* forMarshaling);

void unmarshal_VkInitializePerformanceApiInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkInitializePerformanceApiInfoINTEL* forUnmarshaling);

void marshal_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkQueryPoolPerformanceQueryCreateInfoINTEL* forMarshaling);

void unmarshal_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkQueryPoolPerformanceQueryCreateInfoINTEL* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkQueryPoolPerformanceQueryCreateInfoINTEL,
                      marshal_VkQueryPoolCreateInfoINTEL)

DEFINE_ALIAS_FUNCTION(unmarshal_VkQueryPoolPerformanceQueryCreateInfoINTEL,
                      unmarshal_VkQueryPoolCreateInfoINTEL)

void marshal_VkPerformanceMarkerInfoINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkPerformanceMarkerInfoINTEL* forMarshaling);

void unmarshal_VkPerformanceMarkerInfoINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkPerformanceMarkerInfoINTEL* forUnmarshaling);

void marshal_VkPerformanceStreamMarkerInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPerformanceStreamMarkerInfoINTEL* forMarshaling);

void unmarshal_VkPerformanceStreamMarkerInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPerformanceStreamMarkerInfoINTEL* forUnmarshaling);

void marshal_VkPerformanceOverrideInfoINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkPerformanceOverrideInfoINTEL* forMarshaling);

void unmarshal_VkPerformanceOverrideInfoINTEL(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkPerformanceOverrideInfoINTEL* forUnmarshaling);

void marshal_VkPerformanceConfigurationAcquireInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPerformanceConfigurationAcquireInfoINTEL* forMarshaling);

void unmarshal_VkPerformanceConfigurationAcquireInfoINTEL(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPerformanceConfigurationAcquireInfoINTEL* forUnmarshaling);

#define OP_vkInitializePerformanceApiINTEL 203336121
#define OP_vkUninitializePerformanceApiINTEL 296137321
#define OP_vkCmdSetPerformanceMarkerINTEL 270016385
#define OP_vkCmdSetPerformanceStreamMarkerINTEL 261519634
#define OP_vkCmdSetPerformanceOverrideINTEL 251310287
#define OP_vkAcquirePerformanceConfigurationINTEL 245737492
#define OP_vkReleasePerformanceConfigurationINTEL 252877217
#define OP_vkQueueSetPerformanceConfigurationINTEL 294947726
#define OP_vkGetPerformanceParameterINTEL 213620482
#endif
#ifdef VK_EXT_pci_bus_info
void marshal_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePCIBusInfoPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePCIBusInfoPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_AMD_display_native_hdr
void marshal_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDisplayNativeHdrSurfaceCapabilitiesAMD* forMarshaling);

void unmarshal_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDisplayNativeHdrSurfaceCapabilitiesAMD* forUnmarshaling);

void marshal_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSwapchainDisplayNativeHdrCreateInfoAMD* forMarshaling);

void unmarshal_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSwapchainDisplayNativeHdrCreateInfoAMD* forUnmarshaling);

#define OP_vkSetLocalDimmingAMD 267533472
#endif
#ifdef VK_FUCHSIA_imagepipe_surface
void marshal_VkImagePipeSurfaceCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImagePipeSurfaceCreateInfoFUCHSIA* forMarshaling);

void unmarshal_VkImagePipeSurfaceCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImagePipeSurfaceCreateInfoFUCHSIA* forUnmarshaling);

#define OP_vkCreateImagePipeSurfaceFUCHSIA 261626137
#endif
#ifdef VK_EXT_metal_surface
void marshal_VkMetalSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         const VkMetalSurfaceCreateInfoEXT* forMarshaling);

void unmarshal_VkMetalSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           VkMetalSurfaceCreateInfoEXT* forUnmarshaling);

#define OP_vkCreateMetalSurfaceEXT 254915953
#endif
#ifdef VK_EXT_fragment_density_map
void marshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forUnmarshaling);

void marshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling);

void unmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderPassFragmentDensityMapCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
                      marshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures,
                      unmarshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)

#endif
#ifdef VK_GOOGLE_hlsl_functionality1
#endif
#ifdef VK_GOOGLE_decorate_string
#endif
#ifdef VK_EXT_subgroup_size_control
void marshal_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_AMD_shader_core_properties2
void marshal_VkPhysicalDeviceShaderCoreProperties2AMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderCoreProperties2AMD* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderCoreProperties2AMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderCoreProperties2AMD* forUnmarshaling);

#endif
#ifdef VK_AMD_device_coherent_memory
void marshal_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCoherentMemoryFeaturesAMD* forMarshaling);

void unmarshal_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCoherentMemoryFeaturesAMD* forUnmarshaling);

#endif
#ifdef VK_EXT_shader_image_atomic_int64
void marshal_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_memory_budget
void marshal_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMemoryBudgetPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMemoryBudgetPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_memory_priority
void marshal_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMemoryPriorityFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMemoryPriorityFeaturesEXT* forUnmarshaling);

void marshal_VkMemoryPriorityAllocateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkMemoryPriorityAllocateInfoEXT* forMarshaling);

void unmarshal_VkMemoryPriorityAllocateInfoEXT(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkMemoryPriorityAllocateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_NV_dedicated_allocation_image_aliasing
void marshal_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_EXT_buffer_device_address
void marshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* forUnmarshaling);

DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT,
                      marshal_VkPhysicalDeviceBufferAddressFeaturesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT,
                      unmarshal_VkPhysicalDeviceBufferAddressFeaturesEXT)

DEFINE_ALIAS_FUNCTION(marshal_VkBufferDeviceAddressInfo, marshal_VkBufferDeviceAddressInfoEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkBufferDeviceAddressInfo, unmarshal_VkBufferDeviceAddressInfoEXT)

void marshal_VkBufferDeviceAddressCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferDeviceAddressCreateInfoEXT* forMarshaling);

void unmarshal_VkBufferDeviceAddressCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferDeviceAddressCreateInfoEXT* forUnmarshaling);

#define OP_vkGetBufferDeviceAddressEXT 224361693
#endif
#ifdef VK_EXT_tooling_info
void marshal_VkPhysicalDeviceToolPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceToolPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceToolPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceToolPropertiesEXT* forUnmarshaling);

#define OP_vkGetPhysicalDeviceToolPropertiesEXT 282247593
#endif
#ifdef VK_EXT_separate_stencil_usage
DEFINE_ALIAS_FUNCTION(marshal_VkImageStencilUsageCreateInfo,
                      marshal_VkImageStencilUsageCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkImageStencilUsageCreateInfo,
                      unmarshal_VkImageStencilUsageCreateInfoEXT)

#endif
#ifdef VK_EXT_validation_features
void marshal_VkValidationFeaturesEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                     const VkValidationFeaturesEXT* forMarshaling);

void unmarshal_VkValidationFeaturesEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       VkValidationFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_NV_cooperative_matrix
void marshal_VkCooperativeMatrixPropertiesNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkCooperativeMatrixPropertiesNV* forMarshaling);

void unmarshal_VkCooperativeMatrixPropertiesNV(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkCooperativeMatrixPropertiesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCooperativeMatrixFeaturesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCooperativeMatrixPropertiesNV* forUnmarshaling);

#define OP_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV 287711429
#endif
#ifdef VK_NV_coverage_reduction_mode
void marshal_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCoverageReductionModeFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCoverageReductionModeFeaturesNV* forUnmarshaling);

void marshal_VkPipelineCoverageReductionStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineCoverageReductionStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineCoverageReductionStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineCoverageReductionStateCreateInfoNV* forUnmarshaling);

void marshal_VkFramebufferMixedSamplesCombinationNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkFramebufferMixedSamplesCombinationNV* forMarshaling);

void unmarshal_VkFramebufferMixedSamplesCombinationNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkFramebufferMixedSamplesCombinationNV* forUnmarshaling);

#define OP_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 292032159
#endif
#ifdef VK_EXT_fragment_shader_interlock
void marshal_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_ycbcr_image_arrays
void marshal_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_provoking_vertex
void marshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceProvokingVertexFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceProvokingVertexFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceProvokingVertexPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceProvokingVertexPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_full_screen_exclusive
void marshal_VkSurfaceFullScreenExclusiveInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveInfoEXT* forMarshaling);

void unmarshal_VkSurfaceFullScreenExclusiveInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSurfaceFullScreenExclusiveInfoEXT* forUnmarshaling);

void marshal_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSurfaceCapabilitiesFullScreenExclusiveEXT* forMarshaling);

void unmarshal_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSurfaceCapabilitiesFullScreenExclusiveEXT* forUnmarshaling);

#define OP_vkGetPhysicalDeviceSurfacePresentModes2EXT 268126279
#define OP_vkAcquireFullScreenExclusiveModeEXT 200946668
#define OP_vkReleaseFullScreenExclusiveModeEXT 257629142
void marshal_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveWin32InfoEXT* forMarshaling);

void unmarshal_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSurfaceFullScreenExclusiveWin32InfoEXT* forUnmarshaling);

#define OP_vkGetDeviceGroupSurfacePresentModes2EXT 206369543
#endif
#ifdef VK_EXT_headless_surface
void marshal_VkHeadlessSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkHeadlessSurfaceCreateInfoEXT* forMarshaling);

void unmarshal_VkHeadlessSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkHeadlessSurfaceCreateInfoEXT* forUnmarshaling);

#define OP_vkCreateHeadlessSurfaceEXT 298411290
#endif
#ifdef VK_EXT_line_rasterization
void marshal_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceLineRasterizationFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceLineRasterizationPropertiesEXT* forUnmarshaling);

void marshal_VkPipelineRasterizationLineStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineRasterizationLineStateCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineRasterizationLineStateCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineRasterizationLineStateCreateInfoEXT* forUnmarshaling);

#define OP_vkCmdSetLineStippleEXT 263855692
#endif
#ifdef VK_EXT_shader_atomic_float
void marshal_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_host_query_reset
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceHostQueryResetFeatures,
                      marshal_VkPhysicalDeviceHostQueryResetFeaturesEXT)

DEFINE_ALIAS_FUNCTION(unmarshal_VkPhysicalDeviceHostQueryResetFeatures,
                      unmarshal_VkPhysicalDeviceHostQueryResetFeaturesEXT)

#define OP_vkResetQueryPoolEXT 242995959
#endif
#ifdef VK_EXT_index_type_uint8
void marshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_extended_dynamic_state
void marshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forUnmarshaling);

#define OP_vkCmdSetCullModeEXT 266285895
#define OP_vkCmdSetFrontFaceEXT 212644406
#define OP_vkCmdSetPrimitiveTopologyEXT 260783979
#define OP_vkCmdSetViewportWithCountEXT 257105245
#define OP_vkCmdSetScissorWithCountEXT 204588120
#define OP_vkCmdBindVertexBuffers2EXT 243419921
#define OP_vkCmdSetDepthTestEnableEXT 233771166
#define OP_vkCmdSetDepthWriteEnableEXT 218663304
#define OP_vkCmdSetDepthCompareOpEXT 247761589
#define OP_vkCmdSetDepthBoundsTestEnableEXT 223213519
#define OP_vkCmdSetStencilTestEnableEXT 286438749
#define OP_vkCmdSetStencilOpEXT 277159578
#endif
#ifdef VK_EXT_shader_atomic_float2
void marshal_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_shader_demote_to_helper_invocation
void marshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_NV_device_generated_commands
void marshal_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* forUnmarshaling);

void marshal_VkGraphicsShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkGraphicsShaderGroupCreateInfoNV* forMarshaling);

void unmarshal_VkGraphicsShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkGraphicsShaderGroupCreateInfoNV* forUnmarshaling);

void marshal_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkGraphicsPipelineShaderGroupsCreateInfoNV* forMarshaling);

void unmarshal_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkGraphicsPipelineShaderGroupsCreateInfoNV* forUnmarshaling);

void marshal_VkBindShaderGroupIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindShaderGroupIndirectCommandNV* forMarshaling);

void unmarshal_VkBindShaderGroupIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindShaderGroupIndirectCommandNV* forUnmarshaling);

void marshal_VkBindIndexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindIndexBufferIndirectCommandNV* forMarshaling);

void unmarshal_VkBindIndexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindIndexBufferIndirectCommandNV* forUnmarshaling);

void marshal_VkBindVertexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBindVertexBufferIndirectCommandNV* forMarshaling);

void unmarshal_VkBindVertexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBindVertexBufferIndirectCommandNV* forUnmarshaling);

void marshal_VkSetStateFlagsIndirectCommandNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSetStateFlagsIndirectCommandNV* forMarshaling);

void unmarshal_VkSetStateFlagsIndirectCommandNV(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkSetStateFlagsIndirectCommandNV* forUnmarshaling);

void marshal_VkIndirectCommandsStreamNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        const VkIndirectCommandsStreamNV* forMarshaling);

void unmarshal_VkIndirectCommandsStreamNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          VkIndirectCommandsStreamNV* forUnmarshaling);

void marshal_VkIndirectCommandsLayoutTokenNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkIndirectCommandsLayoutTokenNV* forMarshaling);

void unmarshal_VkIndirectCommandsLayoutTokenNV(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkIndirectCommandsLayoutTokenNV* forUnmarshaling);

void marshal_VkIndirectCommandsLayoutCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkIndirectCommandsLayoutCreateInfoNV* forMarshaling);

void unmarshal_VkIndirectCommandsLayoutCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkIndirectCommandsLayoutCreateInfoNV* forUnmarshaling);

void marshal_VkGeneratedCommandsInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkGeneratedCommandsInfoNV* forMarshaling);

void unmarshal_VkGeneratedCommandsInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkGeneratedCommandsInfoNV* forUnmarshaling);

void marshal_VkGeneratedCommandsMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkGeneratedCommandsMemoryRequirementsInfoNV* forMarshaling);

void unmarshal_VkGeneratedCommandsMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkGeneratedCommandsMemoryRequirementsInfoNV* forUnmarshaling);

#define OP_vkGetGeneratedCommandsMemoryRequirementsNV 249047049
#define OP_vkCmdPreprocessGeneratedCommandsNV 297624330
#define OP_vkCmdExecuteGeneratedCommandsNV 234711184
#define OP_vkCmdBindPipelineShaderGroupNV 270362239
#define OP_vkCreateIndirectCommandsLayoutNV 285310710
#define OP_vkDestroyIndirectCommandsLayoutNV 292584135
#endif
#ifdef VK_NV_inherited_viewport_scissor
void marshal_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceInheritedViewportScissorFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceInheritedViewportScissorFeaturesNV* forUnmarshaling);

void marshal_VkCommandBufferInheritanceViewportScissorInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCommandBufferInheritanceViewportScissorInfoNV* forMarshaling);

void unmarshal_VkCommandBufferInheritanceViewportScissorInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCommandBufferInheritanceViewportScissorInfoNV* forUnmarshaling);

#endif
#ifdef VK_EXT_texel_buffer_alignment
void marshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_QCOM_render_pass_transform
void marshal_VkRenderPassTransformBeginInfoQCOM(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRenderPassTransformBeginInfoQCOM* forMarshaling);

void unmarshal_VkRenderPassTransformBeginInfoQCOM(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRenderPassTransformBeginInfoQCOM* forUnmarshaling);

void marshal_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCommandBufferInheritanceRenderPassTransformInfoQCOM* forMarshaling);

void unmarshal_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCommandBufferInheritanceRenderPassTransformInfoQCOM* forUnmarshaling);

#endif
#ifdef VK_EXT_device_memory_report
void marshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forUnmarshaling);

void marshal_VkDeviceMemoryReportCallbackDataEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceMemoryReportCallbackDataEXT* forMarshaling);

void unmarshal_VkDeviceMemoryReportCallbackDataEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceMemoryReportCallbackDataEXT* forUnmarshaling);

void marshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceDeviceMemoryReportCreateInfoEXT* forMarshaling);

void unmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceDeviceMemoryReportCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_acquire_drm_display
#define OP_vkAcquireDrmDisplayEXT 249820259
#define OP_vkGetDrmDisplayEXT 282532459
#endif
#ifdef VK_EXT_robustness2
void marshal_VkPhysicalDeviceRobustness2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRobustness2FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRobustness2FeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceRobustness2PropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRobustness2PropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRobustness2PropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_custom_border_color
void marshal_VkSamplerCustomBorderColorCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSamplerCustomBorderColorCreateInfoEXT* forMarshaling);

void unmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSamplerCustomBorderColorCreateInfoEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCustomBorderColorPropertiesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceCustomBorderColorFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_GOOGLE_user_type
#endif
#ifdef VK_EXT_private_data
void marshal_VkPhysicalDevicePrivateDataFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePrivateDataFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDevicePrivateDataFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePrivateDataFeaturesEXT* forUnmarshaling);

void marshal_VkDevicePrivateDataCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDevicePrivateDataCreateInfoEXT* forMarshaling);

void unmarshal_VkDevicePrivateDataCreateInfoEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkDevicePrivateDataCreateInfoEXT* forUnmarshaling);

void marshal_VkPrivateDataSlotCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkPrivateDataSlotCreateInfoEXT* forMarshaling);

void unmarshal_VkPrivateDataSlotCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkPrivateDataSlotCreateInfoEXT* forUnmarshaling);

#define OP_vkCreatePrivateDataSlotEXT 236374049
#define OP_vkDestroyPrivateDataSlotEXT 208891309
#define OP_vkSetPrivateDataEXT 225259406
#define OP_vkGetPrivateDataEXT 291399427
#endif
#ifdef VK_EXT_pipeline_creation_cache_control
void marshal_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_NV_device_diagnostics_config
void marshal_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceDiagnosticsConfigFeaturesNV* forUnmarshaling);

void marshal_VkDeviceDiagnosticsConfigCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkDeviceDiagnosticsConfigCreateInfoNV* forMarshaling);

void unmarshal_VkDeviceDiagnosticsConfigCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkDeviceDiagnosticsConfigCreateInfoNV* forUnmarshaling);

#endif
#ifdef VK_QCOM_render_pass_store_ops
#endif
#ifdef VK_NV_fragment_shading_rate_enums
void marshal_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* forUnmarshaling);

void marshal_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineFragmentShadingRateEnumStateCreateInfoNV* forMarshaling);

void unmarshal_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineFragmentShadingRateEnumStateCreateInfoNV* forUnmarshaling);

#define OP_vkCmdSetFragmentShadingRateEnumNV 264649847
#endif
#ifdef VK_NV_ray_tracing_motion_blur
void marshal_VkDeviceOrHostAddressConstKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkDeviceOrHostAddressConstKHR* forMarshaling);

void unmarshal_VkDeviceOrHostAddressConstKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkDeviceOrHostAddressConstKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryMotionTrianglesDataNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryMotionTrianglesDataNV* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryMotionTrianglesDataNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryMotionTrianglesDataNV* forUnmarshaling);

void marshal_VkAccelerationStructureMotionInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureMotionInfoNV* forMarshaling);

void unmarshal_VkAccelerationStructureMotionInfoNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureMotionInfoNV* forUnmarshaling);

void marshal_VkAccelerationStructureMatrixMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureMatrixMotionInstanceNV* forMarshaling);

void unmarshal_VkAccelerationStructureMatrixMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureMatrixMotionInstanceNV* forUnmarshaling);

void marshal_VkSRTDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                         const VkSRTDataNV* forMarshaling);

void unmarshal_VkSRTDataNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                           VkSRTDataNV* forUnmarshaling);

void marshal_VkAccelerationStructureSRTMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureSRTMotionInstanceNV* forMarshaling);

void unmarshal_VkAccelerationStructureSRTMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureSRTMotionInstanceNV* forUnmarshaling);

void marshal_VkAccelerationStructureMotionInstanceDataNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureMotionInstanceDataNV* forMarshaling);

void unmarshal_VkAccelerationStructureMotionInstanceDataNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureMotionInstanceDataNV* forUnmarshaling);

void marshal_VkAccelerationStructureMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureMotionInstanceNV* forMarshaling);

void unmarshal_VkAccelerationStructureMotionInstanceNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureMotionInstanceNV* forUnmarshaling);

void marshal_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* forUnmarshaling);

#endif
#ifdef VK_EXT_ycbcr_2plane_444_formats
void marshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_fragment_density_map2
void marshal_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_QCOM_rotated_copy_commands
void marshal_VkCopyCommandTransformInfoQCOM(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkCopyCommandTransformInfoQCOM* forMarshaling);

void unmarshal_VkCopyCommandTransformInfoQCOM(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkCopyCommandTransformInfoQCOM* forUnmarshaling);

#endif
#ifdef VK_EXT_image_robustness
void marshal_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceImageRobustnessFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceImageRobustnessFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_4444_formats
void marshal_VkPhysicalDevice4444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevice4444FormatsFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevice4444FormatsFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_rgba10x6_formats
void marshal_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_NV_acquire_winrt_display
#define OP_vkAcquireWinrtDisplayNV 274295059
#define OP_vkGetWinrtDisplayNV 294381219
#endif
#ifdef VK_EXT_directfb_surface
void marshal_VkDirectFBSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkDirectFBSurfaceCreateInfoEXT* forMarshaling);

void unmarshal_VkDirectFBSurfaceCreateInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkDirectFBSurfaceCreateInfoEXT* forUnmarshaling);

#define OP_vkCreateDirectFBSurfaceEXT 220792403
#define OP_vkGetPhysicalDeviceDirectFBPresentationSupportEXT 285441990
#endif
#ifdef VK_VALVE_mutable_descriptor_type
void marshal_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* forMarshaling);

void unmarshal_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* forUnmarshaling);

void marshal_VkMutableDescriptorTypeListVALVE(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMutableDescriptorTypeListVALVE* forMarshaling);

void unmarshal_VkMutableDescriptorTypeListVALVE(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkMutableDescriptorTypeListVALVE* forUnmarshaling);

void marshal_VkMutableDescriptorTypeCreateInfoVALVE(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMutableDescriptorTypeCreateInfoVALVE* forMarshaling);

void unmarshal_VkMutableDescriptorTypeCreateInfoVALVE(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMutableDescriptorTypeCreateInfoVALVE* forUnmarshaling);

#endif
#ifdef VK_EXT_vertex_input_dynamic_state
void marshal_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* forUnmarshaling);

void marshal_VkVertexInputBindingDescription2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVertexInputBindingDescription2EXT* forMarshaling);

void unmarshal_VkVertexInputBindingDescription2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVertexInputBindingDescription2EXT* forUnmarshaling);

void marshal_VkVertexInputAttributeDescription2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkVertexInputAttributeDescription2EXT* forMarshaling);

void unmarshal_VkVertexInputAttributeDescription2EXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkVertexInputAttributeDescription2EXT* forUnmarshaling);

#define OP_vkCmdSetVertexInputEXT 211522810
#endif
#ifdef VK_EXT_physical_device_drm
void marshal_VkPhysicalDeviceDrmPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceDrmPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceDrmPropertiesEXT(VulkanStreamGuest* vkStream,
                                                VkStructureType rootType,
                                                VkPhysicalDeviceDrmPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_primitive_topology_list_restart
void marshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forUnmarshaling);

#endif
#ifdef VK_FUCHSIA_external_memory
void marshal_VkImportMemoryZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportMemoryZirconHandleInfoFUCHSIA* forMarshaling);

void unmarshal_VkImportMemoryZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImportMemoryZirconHandleInfoFUCHSIA* forUnmarshaling);

void marshal_VkMemoryZirconHandlePropertiesFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryZirconHandlePropertiesFUCHSIA* forMarshaling);

void unmarshal_VkMemoryZirconHandlePropertiesFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMemoryZirconHandlePropertiesFUCHSIA* forUnmarshaling);

void marshal_VkMemoryGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkMemoryGetZirconHandleInfoFUCHSIA* forMarshaling);

void unmarshal_VkMemoryGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkMemoryGetZirconHandleInfoFUCHSIA* forUnmarshaling);

#define OP_vkGetMemoryZirconHandleFUCHSIA 215089868
#define OP_vkGetMemoryZirconHandlePropertiesFUCHSIA 213247019
#endif
#ifdef VK_FUCHSIA_external_semaphore
void marshal_VkImportSemaphoreZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportSemaphoreZirconHandleInfoFUCHSIA* forMarshaling);

void unmarshal_VkImportSemaphoreZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImportSemaphoreZirconHandleInfoFUCHSIA* forUnmarshaling);

void marshal_VkSemaphoreGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSemaphoreGetZirconHandleInfoFUCHSIA* forMarshaling);

void unmarshal_VkSemaphoreGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSemaphoreGetZirconHandleInfoFUCHSIA* forUnmarshaling);

#define OP_vkImportSemaphoreZirconHandleFUCHSIA 299314530
#define OP_vkGetSemaphoreZirconHandleFUCHSIA 248728905
#endif
#ifdef VK_FUCHSIA_buffer_collection
void marshal_VkBufferCollectionCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferCollectionCreateInfoFUCHSIA* forMarshaling);

void unmarshal_VkBufferCollectionCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferCollectionCreateInfoFUCHSIA* forUnmarshaling);

void marshal_VkImportMemoryBufferCollectionFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImportMemoryBufferCollectionFUCHSIA* forMarshaling);

void unmarshal_VkImportMemoryBufferCollectionFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImportMemoryBufferCollectionFUCHSIA* forUnmarshaling);

void marshal_VkBufferCollectionImageCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferCollectionImageCreateInfoFUCHSIA* forMarshaling);

void unmarshal_VkBufferCollectionImageCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferCollectionImageCreateInfoFUCHSIA* forUnmarshaling);

void marshal_VkBufferCollectionConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferCollectionConstraintsInfoFUCHSIA* forMarshaling);

void unmarshal_VkBufferCollectionConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferCollectionConstraintsInfoFUCHSIA* forUnmarshaling);

void marshal_VkBufferConstraintsInfoFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkBufferConstraintsInfoFUCHSIA* forMarshaling);

void unmarshal_VkBufferConstraintsInfoFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkBufferConstraintsInfoFUCHSIA* forUnmarshaling);

void marshal_VkBufferCollectionBufferCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferCollectionBufferCreateInfoFUCHSIA* forMarshaling);

void unmarshal_VkBufferCollectionBufferCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferCollectionBufferCreateInfoFUCHSIA* forUnmarshaling);

void marshal_VkSysmemColorSpaceFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkSysmemColorSpaceFUCHSIA* forMarshaling);

void unmarshal_VkSysmemColorSpaceFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkSysmemColorSpaceFUCHSIA* forUnmarshaling);

void marshal_VkBufferCollectionPropertiesFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkBufferCollectionPropertiesFUCHSIA* forMarshaling);

void unmarshal_VkBufferCollectionPropertiesFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkBufferCollectionPropertiesFUCHSIA* forUnmarshaling);

void marshal_VkImageFormatConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkImageFormatConstraintsInfoFUCHSIA* forMarshaling);

void unmarshal_VkImageFormatConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkImageFormatConstraintsInfoFUCHSIA* forUnmarshaling);

void marshal_VkImageConstraintsInfoFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkImageConstraintsInfoFUCHSIA* forMarshaling);

void unmarshal_VkImageConstraintsInfoFUCHSIA(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkImageConstraintsInfoFUCHSIA* forUnmarshaling);

#define OP_vkCreateBufferCollectionFUCHSIA 277502099
#define OP_vkSetBufferCollectionImageConstraintsFUCHSIA 274938613
#define OP_vkSetBufferCollectionBufferConstraintsFUCHSIA 212810472
#define OP_vkDestroyBufferCollectionFUCHSIA 224938328
#define OP_vkGetBufferCollectionPropertiesFUCHSIA 242149782
#endif
#ifdef VK_HUAWEI_subpass_shading
void marshal_VkSubpassShadingPipelineCreateInfoHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSubpassShadingPipelineCreateInfoHUAWEI* forMarshaling);

void unmarshal_VkSubpassShadingPipelineCreateInfoHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSubpassShadingPipelineCreateInfoHUAWEI* forUnmarshaling);

void marshal_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* forMarshaling);

void unmarshal_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* forUnmarshaling);

void marshal_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* forMarshaling);

void unmarshal_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* forUnmarshaling);

#define OP_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI 225288634
#define OP_vkCmdSubpassShadingHUAWEI 220327607
#endif
#ifdef VK_HUAWEI_invocation_mask
void marshal_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* forMarshaling);

void unmarshal_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* forUnmarshaling);

#define OP_vkCmdBindInvocationMaskHUAWEI 299305130
#endif
#ifdef VK_NV_external_memory_rdma
void marshal_VkMemoryGetRemoteAddressInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            const VkMemoryGetRemoteAddressInfoNV* forMarshaling);

void unmarshal_VkMemoryGetRemoteAddressInfoNV(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                              VkMemoryGetRemoteAddressInfoNV* forUnmarshaling);

void marshal_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* forMarshaling);

void unmarshal_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* forUnmarshaling);

#define OP_vkGetMemoryRemoteAddressNV 256917597
#endif
#ifdef VK_EXT_extended_dynamic_state2
void marshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forUnmarshaling);

#define OP_vkCmdSetPatchControlPointsEXT 208680354
#define OP_vkCmdSetRasterizerDiscardEnableEXT 245221405
#define OP_vkCmdSetDepthBiasEnableEXT 259472348
#define OP_vkCmdSetLogicOpEXT 267481927
#define OP_vkCmdSetPrimitiveRestartEnableEXT 299567883
#endif
#ifdef VK_QNX_screen_surface
void marshal_VkScreenSurfaceCreateInfoQNX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                          const VkScreenSurfaceCreateInfoQNX* forMarshaling);

void unmarshal_VkScreenSurfaceCreateInfoQNX(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                            VkScreenSurfaceCreateInfoQNX* forUnmarshaling);

#define OP_vkCreateScreenSurfaceQNX 224377168
#define OP_vkGetPhysicalDeviceScreenPresentationSupportQNX 258528902
#endif
#ifdef VK_EXT_color_write_enable
void marshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceColorWriteEnableFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceColorWriteEnableFeaturesEXT* forUnmarshaling);

void marshal_VkPipelineColorWriteCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPipelineColorWriteCreateInfoEXT* forMarshaling);

void unmarshal_VkPipelineColorWriteCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPipelineColorWriteCreateInfoEXT* forUnmarshaling);

#define OP_vkCmdSetColorWriteEnableEXT 202223297
#endif
#ifdef VK_GOOGLE_gfxstream
void marshal_VkImportColorBufferGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkImportColorBufferGOOGLE* forMarshaling);

void unmarshal_VkImportColorBufferGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkImportColorBufferGOOGLE* forUnmarshaling);

void marshal_VkImportBufferGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  const VkImportBufferGOOGLE* forMarshaling);

void unmarshal_VkImportBufferGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                    VkImportBufferGOOGLE* forUnmarshaling);

void marshal_VkCreateBlobGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkCreateBlobGOOGLE* forMarshaling);

void unmarshal_VkCreateBlobGOOGLE(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkCreateBlobGOOGLE* forUnmarshaling);

#define OP_vkMapMemoryIntoAddressSpaceGOOGLE 20317
#define OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE 20320
#define OP_vkBeginCommandBufferAsyncGOOGLE 20321
#define OP_vkEndCommandBufferAsyncGOOGLE 20322
#define OP_vkResetCommandBufferAsyncGOOGLE 20323
#define OP_vkCommandBufferHostSyncGOOGLE 20324
#define OP_vkCreateImageWithRequirementsGOOGLE 20325
#define OP_vkCreateBufferWithRequirementsGOOGLE 20326
#define OP_vkGetMemoryHostAddressInfoGOOGLE 20327
#define OP_vkFreeMemorySyncGOOGLE 20328
#define OP_vkQueueHostSyncGOOGLE 20329
#define OP_vkQueueSubmitAsyncGOOGLE 20330
#define OP_vkQueueWaitIdleAsyncGOOGLE 20331
#define OP_vkQueueBindSparseAsyncGOOGLE 20332
#define OP_vkGetLinearImageLayoutGOOGLE 20333
#define OP_vkGetLinearImageLayout2GOOGLE 282325414
#define OP_vkQueueFlushCommandsGOOGLE 20340
#define OP_vkQueueCommitDescriptorSetUpdatesGOOGLE 267932433
#define OP_vkCollectDescriptorPoolIdsGOOGLE 213659202
#define OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE 243985229
#define OP_vkQueueFlushCommandsFromAuxMemoryGOOGLE 290633483
#define OP_vkGetBlobGOOGLE 20341
#endif
#ifdef VK_EXT_global_priority_query
void marshal_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* forUnmarshaling);

void marshal_VkQueueFamilyGlobalPriorityPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkQueueFamilyGlobalPriorityPropertiesEXT* forMarshaling);

void unmarshal_VkQueueFamilyGlobalPriorityPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkQueueFamilyGlobalPriorityPropertiesEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_multi_draw
void marshal_VkPhysicalDeviceMultiDrawFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMultiDrawFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceMultiDrawFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMultiDrawFeaturesEXT* forUnmarshaling);

void marshal_VkPhysicalDeviceMultiDrawPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceMultiDrawPropertiesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceMultiDrawPropertiesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceMultiDrawPropertiesEXT* forUnmarshaling);

void marshal_VkMultiDrawInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                const VkMultiDrawInfoEXT* forMarshaling);

void unmarshal_VkMultiDrawInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                  VkMultiDrawInfoEXT* forUnmarshaling);

void marshal_VkMultiDrawIndexedInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                       const VkMultiDrawIndexedInfoEXT* forMarshaling);

void unmarshal_VkMultiDrawIndexedInfoEXT(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                         VkMultiDrawIndexedInfoEXT* forUnmarshaling);

#define OP_vkCmdDrawMultiEXT 263629455
#define OP_vkCmdDrawMultiIndexedEXT 284764463
#endif
#ifdef VK_EXT_load_store_op_none
#endif
#ifdef VK_EXT_border_color_swizzle
void marshal_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* forUnmarshaling);

void marshal_VkSamplerBorderColorComponentMappingCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkSamplerBorderColorComponentMappingCreateInfoEXT* forMarshaling);

void unmarshal_VkSamplerBorderColorComponentMappingCreateInfoEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkSamplerBorderColorComponentMappingCreateInfoEXT* forUnmarshaling);

#endif
#ifdef VK_EXT_pageable_device_local_memory
void marshal_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* forMarshaling);

void unmarshal_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* forUnmarshaling);

#define OP_vkSetDeviceMemoryPriorityEXT 223991870
#endif
#ifdef VK_KHR_acceleration_structure
void marshal_VkDeviceOrHostAddressKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                      const VkDeviceOrHostAddressKHR* forMarshaling);

void unmarshal_VkDeviceOrHostAddressKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                        VkDeviceOrHostAddressKHR* forUnmarshaling);

void marshal_VkAccelerationStructureBuildRangeInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureBuildRangeInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureBuildRangeInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureBuildRangeInfoKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryTrianglesDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryTrianglesDataKHR* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryTrianglesDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryTrianglesDataKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryAabbsDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryAabbsDataKHR* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryAabbsDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryAabbsDataKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryInstancesDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryInstancesDataKHR* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryInstancesDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryInstancesDataKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryDataKHR* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryDataKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryDataKHR* forUnmarshaling);

void marshal_VkAccelerationStructureGeometryKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureGeometryKHR* forMarshaling);

void unmarshal_VkAccelerationStructureGeometryKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureGeometryKHR* forUnmarshaling);

void marshal_VkAccelerationStructureBuildGeometryInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureBuildGeometryInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureBuildGeometryInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureBuildGeometryInfoKHR* forUnmarshaling);

void marshal_VkAccelerationStructureCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureCreateInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureCreateInfoKHR* forUnmarshaling);

void marshal_VkWriteDescriptorSetAccelerationStructureKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureKHR* forMarshaling);

void unmarshal_VkWriteDescriptorSetAccelerationStructureKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkWriteDescriptorSetAccelerationStructureKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructureFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceAccelerationStructureFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructurePropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceAccelerationStructurePropertiesKHR* forUnmarshaling);

void marshal_VkAccelerationStructureDeviceAddressInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureDeviceAddressInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureDeviceAddressInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureDeviceAddressInfoKHR* forUnmarshaling);

void marshal_VkAccelerationStructureVersionInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureVersionInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureVersionInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureVersionInfoKHR* forUnmarshaling);

void marshal_VkCopyAccelerationStructureToMemoryInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCopyAccelerationStructureToMemoryInfoKHR* forMarshaling);

void unmarshal_VkCopyAccelerationStructureToMemoryInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCopyAccelerationStructureToMemoryInfoKHR* forUnmarshaling);

void marshal_VkCopyMemoryToAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCopyMemoryToAccelerationStructureInfoKHR* forMarshaling);

void unmarshal_VkCopyMemoryToAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCopyMemoryToAccelerationStructureInfoKHR* forUnmarshaling);

void marshal_VkCopyAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkCopyAccelerationStructureInfoKHR* forMarshaling);

void unmarshal_VkCopyAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkCopyAccelerationStructureInfoKHR* forUnmarshaling);

void marshal_VkAccelerationStructureBuildSizesInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkAccelerationStructureBuildSizesInfoKHR* forMarshaling);

void unmarshal_VkAccelerationStructureBuildSizesInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkAccelerationStructureBuildSizesInfoKHR* forUnmarshaling);

#define OP_vkCreateAccelerationStructureKHR 259403971
#define OP_vkDestroyAccelerationStructureKHR 223971120
#define OP_vkCmdBuildAccelerationStructuresKHR 272943905
#define OP_vkCmdBuildAccelerationStructuresIndirectKHR 258066143
#define OP_vkBuildAccelerationStructuresKHR 241919567
#define OP_vkCopyAccelerationStructureKHR 241495016
#define OP_vkCopyAccelerationStructureToMemoryKHR 256139578
#define OP_vkCopyMemoryToAccelerationStructureKHR 261558680
#define OP_vkWriteAccelerationStructuresPropertiesKHR 289745796
#define OP_vkCmdCopyAccelerationStructureKHR 279460332
#define OP_vkCmdCopyAccelerationStructureToMemoryKHR 223539733
#define OP_vkCmdCopyMemoryToAccelerationStructureKHR 203733963
#define OP_vkGetAccelerationStructureDeviceAddressKHR 223466148
#define OP_vkCmdWriteAccelerationStructuresPropertiesKHR 271696183
#define OP_vkGetDeviceAccelerationStructureCompatibilityKHR 266386590
#define OP_vkGetAccelerationStructureBuildSizesKHR 219720024
#endif
#ifdef VK_KHR_ray_tracing_pipeline
void marshal_VkRayTracingShaderGroupCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoKHR* forMarshaling);

void unmarshal_VkRayTracingShaderGroupCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRayTracingShaderGroupCreateInfoKHR* forUnmarshaling);

void marshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRayTracingPipelineInterfaceCreateInfoKHR* forMarshaling);

void unmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRayTracingPipelineInterfaceCreateInfoKHR* forUnmarshaling);

void marshal_VkRayTracingPipelineCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoKHR* forMarshaling);

void unmarshal_VkRayTracingPipelineCreateInfoKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkRayTracingPipelineCreateInfoKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forUnmarshaling);

void marshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forUnmarshaling);

void marshal_VkStridedDeviceAddressRegionKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             const VkStridedDeviceAddressRegionKHR* forMarshaling);

void unmarshal_VkStridedDeviceAddressRegionKHR(VulkanStreamGuest* vkStream,
                                               VkStructureType rootType,
                                               VkStridedDeviceAddressRegionKHR* forUnmarshaling);

void marshal_VkTraceRaysIndirectCommandKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                           const VkTraceRaysIndirectCommandKHR* forMarshaling);

void unmarshal_VkTraceRaysIndirectCommandKHR(VulkanStreamGuest* vkStream, VkStructureType rootType,
                                             VkTraceRaysIndirectCommandKHR* forUnmarshaling);

#define OP_vkCmdTraceRaysKHR 213680716
#define OP_vkCreateRayTracingPipelinesKHR 247628685
#define OP_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR 221334934
#define OP_vkCmdTraceRaysIndirectKHR 211788517
#define OP_vkGetRayTracingShaderGroupStackSizeKHR 205271933
#define OP_vkCmdSetRayTracingPipelineStackSizeKHR 260219604
#endif
#ifdef VK_KHR_ray_query
void marshal_VkPhysicalDeviceRayQueryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    const VkPhysicalDeviceRayQueryFeaturesKHR* forMarshaling);

void unmarshal_VkPhysicalDeviceRayQueryFeaturesKHR(
    VulkanStreamGuest* vkStream, VkStructureType rootType,
    VkPhysicalDeviceRayQueryFeaturesKHR* forUnmarshaling);

#endif
const char* api_opcode_to_string(const uint32_t opcode);

#define OP_vkFirst_old 20000
#define OP_vkLast_old 30000
#define OP_vkFirst 200000000
#define OP_vkLast 300000000

}  // namespace vk
}  // namespace gfxstream
