// 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_reserved_marshaling_guest
// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
// Please do not modify directly;
// re-run android/scripts/generate-vulkan-sources.sh,
// or directly from Python by defining:
// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
// CEREAL_OUTPUT_DIR: Where to put the generated sources.
// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR

#pragma once

#include <vulkan/vulkan.h>


#include "vk_platform_compat.h"

#include "goldfish_vk_marshaling_guest.h"
#include "goldfish_vk_private_defs.h"
#include "VulkanStreamGuest.h"

// Stuff we are not going to use but if included,
// will cause compile errors. These are Android Vulkan
// required extensions, but the approach will be to
// implement them completely on the guest side.
#undef VK_KHR_android_surface
#undef VK_ANDROID_external_memory_android_hardware_buffer


namespace goldfish_vk {

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

void reservedmarshal_VkExtent3D(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExtent3D* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkOffset2D(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkOffset2D* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkOffset3D(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkOffset3D* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRect2D(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRect2D* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBaseInStructure(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBaseInStructure* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBaseOutStructure(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBaseOutStructure* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferMemoryBarrier(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferMemoryBarrier* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDispatchIndirectCommand(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDispatchIndirectCommand* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrawIndexedIndirectCommand(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrawIndexedIndirectCommand* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrawIndirectCommand(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrawIndirectCommand* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageSubresourceRange(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageSubresourceRange* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageMemoryBarrier(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageMemoryBarrier* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryBarrier(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryBarrier* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineCacheHeaderVersionOne(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCacheHeaderVersionOne* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAllocationCallbacks(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAllocationCallbacks* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkApplicationInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkApplicationInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFormatProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFormatProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageFormatProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageFormatProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkInstanceCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkInstanceCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryHeap(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryHeap* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryType(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryType* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceLimits(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceLimits* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMemoryProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSparseProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSparseProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueueFamilyProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueueFamilyProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceQueueCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceQueueCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExtensionProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExtensionProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkLayerProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkLayerProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubmitInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubmitInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMappedMemoryRange(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMappedMemoryRange* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryRequirements(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryRequirements* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseMemoryBind(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseMemoryBind* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseBufferMemoryBindInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseBufferMemoryBindInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageOpaqueMemoryBindInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageOpaqueMemoryBindInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageSubresource(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageSubresource* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageMemoryBind(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageMemoryBind* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageMemoryBindInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageMemoryBindInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindSparseInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindSparseInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageFormatProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageFormatProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageMemoryRequirements(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageMemoryRequirements* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFenceCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFenceCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkEventCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkEventCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueryPoolCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueryPoolCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferViewCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferViewCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubresourceLayout(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubresourceLayout* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkComponentMapping(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkComponentMapping* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageViewCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageViewCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkShaderModuleCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkShaderModuleCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineCacheCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCacheCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSpecializationMapEntry(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSpecializationMapEntry* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSpecializationInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSpecializationInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineShaderStageCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineShaderStageCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkComputePipelineCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkComputePipelineCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVertexInputBindingDescription(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVertexInputBindingDescription* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVertexInputAttributeDescription(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVertexInputAttributeDescription* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineVertexInputStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineVertexInputStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineInputAssemblyStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineInputAssemblyStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineTessellationStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineTessellationStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkViewport(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkViewport* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineViewportStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineMultisampleStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineMultisampleStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkStencilOpState(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkStencilOpState* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineDepthStencilStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineDepthStencilStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineColorBlendAttachmentState(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineColorBlendAttachmentState* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineColorBlendStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineColorBlendStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineDynamicStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineDynamicStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGraphicsPipelineCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGraphicsPipelineCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPushConstantRange(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPushConstantRange* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineLayoutCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineLayoutCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyDescriptorSet(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyDescriptorSet* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorBufferInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorBufferInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorImageInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorImageInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorPoolSize(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorPoolSize* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorPoolCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorPoolCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetLayoutBinding(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetLayoutBinding* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetLayoutCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetLayoutCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkWriteDescriptorSet(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWriteDescriptorSet* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentDescription(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentDescription* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentReference(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentReference* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFramebufferCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFramebufferCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassDescription(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassDescription* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassDependency(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassDependency* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandPoolCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandPoolCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferInheritanceInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferInheritanceInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferBeginInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCopy(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCopy* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageSubresourceLayers(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageSubresourceLayers* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferImageCopy(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferImageCopy* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkClearColorValue(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkClearColorValue* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkClearDepthStencilValue(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkClearDepthStencilValue* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkClearValue(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkClearValue* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkClearAttachment(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkClearAttachment* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkClearRect(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkClearRect* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageBlit(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageBlit* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageCopy(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageCopy* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageResolve(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageResolve* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassBeginInfo* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_VERSION_1_1
void reservedmarshal_VkPhysicalDeviceSubgroupProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindBufferMemoryInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindBufferMemoryInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindImageMemoryInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindImageMemoryInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDevice16BitStorageFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevice16BitStorageFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryDedicatedRequirements(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryDedicatedRequirements* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryDedicatedAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryDedicatedAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryAllocateFlagsInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryAllocateFlagsInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupRenderPassBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupRenderPassBeginInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupCommandBufferBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupCommandBufferBeginInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupSubmitInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupSubmitInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupBindSparseInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupBindSparseInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindBufferMemoryDeviceGroupInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindBufferMemoryDeviceGroupInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindImageMemoryDeviceGroupInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindImageMemoryDeviceGroupInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceGroupProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceGroupProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupDeviceCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupDeviceCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferMemoryRequirementsInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferMemoryRequirementsInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageMemoryRequirementsInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageMemoryRequirementsInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageSparseMemoryRequirementsInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageSparseMemoryRequirementsInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryRequirements2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryRequirements2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageMemoryRequirements2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageMemoryRequirements2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFeatures2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFeatures2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFormatProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFormatProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageFormatProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageFormatProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceImageFormatInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceImageFormatInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueueFamilyProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueueFamilyProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMemoryProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSparseImageFormatProperties2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSparseImageFormatProperties2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDevicePointClippingProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePointClippingProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkInputAttachmentAspectReference(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkInputAttachmentAspectReference* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageViewUsageCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageViewUsageCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassMultiviewCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassMultiviewCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMultiviewFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMultiviewProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVariablePointersFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVariablePointersFeatures* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceVariablePointersFeatures, reservedmarshal_VkPhysicalDeviceVariablePointerFeatures)

void reservedmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceProtectedMemoryProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceQueueInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceQueueInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkProtectedSubmitInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkProtectedSubmitInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerYcbcrConversionCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerYcbcrConversionInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindImagePlaneMemoryInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindImagePlaneMemoryInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImagePlaneMemoryRequirementsInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImagePlaneMemoryRequirementsInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerYcbcrConversionImageFormatProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorUpdateTemplateEntry(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorUpdateTemplateEntry* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorUpdateTemplateCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorUpdateTemplateCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalMemoryProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalMemoryProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalImageFormatInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalImageFormatProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalImageFormatProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalBufferInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalBufferInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalBufferProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalBufferProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceIDProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceIDProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalMemoryImageCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalMemoryImageCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalMemoryBufferCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalMemoryBufferCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExportMemoryAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportMemoryAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalFenceInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalFenceInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalFenceProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalFenceProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExportFenceCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportFenceCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExportSemaphoreCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportSemaphoreCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalSemaphoreProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalSemaphoreProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMaintenance3Properties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMaintenance3Properties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetLayoutSupport(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetLayoutSupport* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderDrawParametersFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderDrawParametersFeatures* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceShaderDrawParametersFeatures, reservedmarshal_VkPhysicalDeviceShaderDrawParameterFeatures)

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

void reservedmarshal_VkPhysicalDeviceVulkan11Properties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan11Properties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVulkan12Features(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Features* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkConformanceVersion(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkConformanceVersion* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVulkan12Properties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Properties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageFormatListCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageFormatListCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentDescription2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentDescription2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentReference2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentReference2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassDescription2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassDescription2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassDependency2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassDependency2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassCreateInfo2(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassCreateInfo2* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassBeginInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassEndInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassEndInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDevice8BitStorageFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevice8BitStorageFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDriverProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDriverProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderAtomicInt64Features(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicInt64Features* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderFloat16Int8Features(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderFloat16Int8Features* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFloatControlsProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFloatControlsProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetLayoutBindingFlagsCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDescriptorIndexingFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDescriptorIndexingProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountLayoutSupport* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassDescriptionDepthStencilResolve(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassDescriptionDepthStencilResolve* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDepthStencilResolveProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDepthStencilResolveProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceScalarBlockLayoutFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageStencilUsageCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageStencilUsageCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerReductionModeCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerReductionModeCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSamplerFilterMinmaxProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkanMemoryModelFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceImagelessFramebufferFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceImagelessFramebufferFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFramebufferAttachmentImageInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFramebufferAttachmentImageInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFramebufferAttachmentsCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFramebufferAttachmentsCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassAttachmentBeginInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassAttachmentBeginInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentReferenceStencilLayout(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentReferenceStencilLayout* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentDescriptionStencilLayout(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentDescriptionStencilLayout* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceHostQueryResetFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceHostQueryResetFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceTimelineSemaphoreProperties(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreProperties* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreTypeCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreTypeCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkTimelineSemaphoreSubmitInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkTimelineSemaphoreSubmitInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreWaitInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreWaitInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreSignalInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreSignalInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeatures* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferDeviceAddressInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferDeviceAddressInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferOpaqueCaptureAddressCreateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferOpaqueCaptureAddressCreateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryOpaqueCaptureAddressAllocateInfo* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceMemoryOpaqueCaptureAddressInfo* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_surface
void reservedmarshal_VkSurfaceCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSurfaceFormatKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceFormatKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_swapchain
void reservedmarshal_VkSwapchainCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSwapchainCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPresentInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageSwapchainCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageSwapchainCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindImageMemorySwapchainInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindImageMemorySwapchainInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAcquireNextImageInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAcquireNextImageInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupPresentCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupPresentInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupPresentInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_display
void reservedmarshal_VkDisplayModeParametersKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayModeParametersKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayModeCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayModeCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayModePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayModePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayPlaneCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPlaneCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayPlanePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPlanePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplaySurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplaySurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_display_swapchain
void reservedmarshal_VkDisplayPresentInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPresentInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_xlib_surface
void reservedmarshal_VkXlibSurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkXlibSurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_xcb_surface
void reservedmarshal_VkXcbSurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkXcbSurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_wayland_surface
void reservedmarshal_VkWaylandSurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWaylandSurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_android_surface
void reservedmarshal_VkAndroidSurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAndroidSurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_win32_surface
void reservedmarshal_VkWin32SurfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWin32SurfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
#endif
#ifdef VK_KHR_video_queue
void reservedmarshal_VkVideoQueueFamilyProperties2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoQueueFamilyProperties2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoProfileKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoProfileKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoProfilesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoProfilesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVideoFormatInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVideoFormatInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoFormatPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoFormatPropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoPictureResourceKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoPictureResourceKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoReferenceSlotKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoReferenceSlotKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoGetMemoryPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoGetMemoryPropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoBindMemoryKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoBindMemoryKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoSessionCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoSessionCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoSessionParametersCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoSessionParametersCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoSessionParametersUpdateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoSessionParametersUpdateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoBeginCodingInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoBeginCodingInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEndCodingInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEndCodingInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoCodingControlInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoCodingControlInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_video_decode_queue
void reservedmarshal_VkVideoDecodeInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_dynamic_rendering
void reservedmarshal_VkRenderingAttachmentInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderingAttachmentInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderingInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderingInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRenderingCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRenderingCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDynamicRenderingFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferInheritanceRenderingInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferInheritanceRenderingInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderingFragmentShadingRateAttachmentInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderingFragmentShadingRateAttachmentInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderingFragmentDensityMapAttachmentInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderingFragmentDensityMapAttachmentInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentSampleCountInfoAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentSampleCountInfoAMD* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAttachmentSampleCountInfoAMD, reservedmarshal_VkAttachmentSampleCountInfoNV)

void reservedmarshal_VkMultiviewPerViewAttributesInfoNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMultiviewPerViewAttributesInfoNVX* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_multiview
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkRenderPassMultiviewCreateInfo, reservedmarshal_VkRenderPassMultiviewCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceMultiviewFeatures, reservedmarshal_VkPhysicalDeviceMultiviewFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceMultiviewProperties, reservedmarshal_VkPhysicalDeviceMultiviewPropertiesKHR)

#endif
#ifdef VK_KHR_get_physical_device_properties2
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceFeatures2, reservedmarshal_VkPhysicalDeviceFeatures2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceProperties2, reservedmarshal_VkPhysicalDeviceProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkFormatProperties2, reservedmarshal_VkFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageFormatProperties2, reservedmarshal_VkImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceImageFormatInfo2, reservedmarshal_VkPhysicalDeviceImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkQueueFamilyProperties2, reservedmarshal_VkQueueFamilyProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceMemoryProperties2, reservedmarshal_VkPhysicalDeviceMemoryProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSparseImageFormatProperties2, reservedmarshal_VkSparseImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceSparseImageFormatInfo2, reservedmarshal_VkPhysicalDeviceSparseImageFormatInfo2KHR)

#endif
#ifdef VK_KHR_device_group
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkMemoryAllocateFlagsInfo, reservedmarshal_VkMemoryAllocateFlagsInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceGroupRenderPassBeginInfo, reservedmarshal_VkDeviceGroupRenderPassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceGroupCommandBufferBeginInfo, reservedmarshal_VkDeviceGroupCommandBufferBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceGroupSubmitInfo, reservedmarshal_VkDeviceGroupSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceGroupBindSparseInfo, reservedmarshal_VkDeviceGroupBindSparseInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBindBufferMemoryDeviceGroupInfo, reservedmarshal_VkBindBufferMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBindImageMemoryDeviceGroupInfo, reservedmarshal_VkBindImageMemoryDeviceGroupInfoKHR)

#endif
#ifdef VK_KHR_shader_draw_parameters
#endif
#ifdef VK_KHR_maintenance1
#endif
#ifdef VK_KHR_device_group_creation
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceGroupProperties, reservedmarshal_VkPhysicalDeviceGroupPropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceGroupDeviceCreateInfo, reservedmarshal_VkDeviceGroupDeviceCreateInfoKHR)

#endif
#ifdef VK_KHR_external_memory_capabilities
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalMemoryProperties, reservedmarshal_VkExternalMemoryPropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceExternalImageFormatInfo, reservedmarshal_VkPhysicalDeviceExternalImageFormatInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalImageFormatProperties, reservedmarshal_VkExternalImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceExternalBufferInfo, reservedmarshal_VkPhysicalDeviceExternalBufferInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalBufferProperties, reservedmarshal_VkExternalBufferPropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceIDProperties, reservedmarshal_VkPhysicalDeviceIDPropertiesKHR)

#endif
#ifdef VK_KHR_external_memory
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalMemoryImageCreateInfo, reservedmarshal_VkExternalMemoryImageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalMemoryBufferCreateInfo, reservedmarshal_VkExternalMemoryBufferCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExportMemoryAllocateInfo, reservedmarshal_VkExportMemoryAllocateInfoKHR)

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

void reservedmarshal_VkExportMemoryWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportMemoryWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryWin32HandlePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryWin32HandlePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryGetWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryGetWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_external_memory_fd
void reservedmarshal_VkImportMemoryFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportMemoryFdInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryFdPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryFdPropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryGetFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryGetFdInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_win32_keyed_mutex
void reservedmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_external_semaphore_capabilities
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceExternalSemaphoreInfo, reservedmarshal_VkPhysicalDeviceExternalSemaphoreInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalSemaphoreProperties, reservedmarshal_VkExternalSemaphorePropertiesKHR)

#endif
#ifdef VK_KHR_external_semaphore
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExportSemaphoreCreateInfo, reservedmarshal_VkExportSemaphoreCreateInfoKHR)

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

void reservedmarshal_VkExportSemaphoreWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkD3D12FenceSubmitInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkD3D12FenceSubmitInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreGetWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_external_semaphore_fd
void reservedmarshal_VkImportSemaphoreFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportSemaphoreFdInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreGetFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreGetFdInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_push_descriptor
void reservedmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_shader_float16_int8
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceShaderFloat16Int8Features, reservedmarshal_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceShaderFloat16Int8Features, reservedmarshal_VkPhysicalDeviceFloat16Int8FeaturesKHR)

#endif
#ifdef VK_KHR_16bit_storage
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDevice16BitStorageFeatures, reservedmarshal_VkPhysicalDevice16BitStorageFeaturesKHR)

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

void reservedmarshal_VkPresentRegionKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentRegionKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPresentRegionsKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentRegionsKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_descriptor_update_template
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorUpdateTemplateEntry, reservedmarshal_VkDescriptorUpdateTemplateEntryKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorUpdateTemplateCreateInfo, reservedmarshal_VkDescriptorUpdateTemplateCreateInfoKHR)

#endif
#ifdef VK_KHR_imageless_framebuffer
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceImagelessFramebufferFeatures, reservedmarshal_VkPhysicalDeviceImagelessFramebufferFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkFramebufferAttachmentsCreateInfo, reservedmarshal_VkFramebufferAttachmentsCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkFramebufferAttachmentImageInfo, reservedmarshal_VkFramebufferAttachmentImageInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkRenderPassAttachmentBeginInfo, reservedmarshal_VkRenderPassAttachmentBeginInfoKHR)

#endif
#ifdef VK_KHR_create_renderpass2
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkRenderPassCreateInfo2, reservedmarshal_VkRenderPassCreateInfo2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAttachmentDescription2, reservedmarshal_VkAttachmentDescription2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAttachmentReference2, reservedmarshal_VkAttachmentReference2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSubpassDescription2, reservedmarshal_VkSubpassDescription2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSubpassDependency2, reservedmarshal_VkSubpassDependency2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSubpassBeginInfo, reservedmarshal_VkSubpassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSubpassEndInfo, reservedmarshal_VkSubpassEndInfoKHR)

#endif
#ifdef VK_KHR_shared_presentable_image
void reservedmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_external_fence_capabilities
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceExternalFenceInfo, reservedmarshal_VkPhysicalDeviceExternalFenceInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExternalFenceProperties, reservedmarshal_VkExternalFencePropertiesKHR)

#endif
#ifdef VK_KHR_external_fence
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkExportFenceCreateInfo, reservedmarshal_VkExportFenceCreateInfoKHR)

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

void reservedmarshal_VkExportFenceWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportFenceWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFenceGetWin32HandleInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFenceGetWin32HandleInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_external_fence_fd
void reservedmarshal_VkImportFenceFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportFenceFdInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFenceGetFdInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFenceGetFdInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_performance_query
void reservedmarshal_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryPropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceCounterKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceCounterKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceCounterDescriptionKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceCounterDescriptionKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueryPoolPerformanceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueryPoolPerformanceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceCounterResultKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceCounterResultKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAcquireProfilingLockInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAcquireProfilingLockInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceQuerySubmitInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceQuerySubmitInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_maintenance2
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDevicePointClippingProperties, reservedmarshal_VkPhysicalDevicePointClippingPropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkRenderPassInputAttachmentAspectCreateInfo, reservedmarshal_VkRenderPassInputAttachmentAspectCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkInputAttachmentAspectReference, reservedmarshal_VkInputAttachmentAspectReferenceKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageViewUsageCreateInfo, reservedmarshal_VkImageViewUsageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPipelineTessellationDomainOriginStateCreateInfo, reservedmarshal_VkPipelineTessellationDomainOriginStateCreateInfoKHR)

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

void reservedmarshal_VkSurfaceCapabilities2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceCapabilities2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSurfaceFormat2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceFormat2KHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_variable_pointers
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceVariablePointersFeatures, reservedmarshal_VkPhysicalDeviceVariablePointerFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceVariablePointersFeatures, reservedmarshal_VkPhysicalDeviceVariablePointersFeaturesKHR)

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

void reservedmarshal_VkDisplayPlaneProperties2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPlaneProperties2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayModeProperties2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayModeProperties2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayPlaneInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPlaneInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayPlaneCapabilities2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPlaneCapabilities2KHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_dedicated_allocation
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkMemoryDedicatedRequirements, reservedmarshal_VkMemoryDedicatedRequirementsKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkMemoryDedicatedAllocateInfo, reservedmarshal_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(reservedmarshal_VkBufferMemoryRequirementsInfo2, reservedmarshal_VkBufferMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageMemoryRequirementsInfo2, reservedmarshal_VkImageMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageSparseMemoryRequirementsInfo2, reservedmarshal_VkImageSparseMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkMemoryRequirements2, reservedmarshal_VkMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSparseImageMemoryRequirements2, reservedmarshal_VkSparseImageMemoryRequirements2KHR)

#endif
#ifdef VK_KHR_image_format_list
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageFormatListCreateInfo, reservedmarshal_VkImageFormatListCreateInfoKHR)

#endif
#ifdef VK_KHR_sampler_ycbcr_conversion
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSamplerYcbcrConversionCreateInfo, reservedmarshal_VkSamplerYcbcrConversionCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSamplerYcbcrConversionInfo, reservedmarshal_VkSamplerYcbcrConversionInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBindImagePlaneMemoryInfo, reservedmarshal_VkBindImagePlaneMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImagePlaneMemoryRequirementsInfo, reservedmarshal_VkImagePlaneMemoryRequirementsInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures, reservedmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSamplerYcbcrConversionImageFormatProperties, reservedmarshal_VkSamplerYcbcrConversionImageFormatPropertiesKHR)

#endif
#ifdef VK_KHR_bind_memory2
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBindBufferMemoryInfo, reservedmarshal_VkBindBufferMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBindImageMemoryInfo, reservedmarshal_VkBindImageMemoryInfoKHR)

#endif
#ifdef VK_KHR_portability_subset
void reservedmarshal_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetPropertiesKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_maintenance3
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceMaintenance3Properties, reservedmarshal_VkPhysicalDeviceMaintenance3PropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorSetLayoutSupport, reservedmarshal_VkDescriptorSetLayoutSupportKHR)

#endif
#ifdef VK_KHR_draw_indirect_count
#endif
#ifdef VK_KHR_shader_subgroup_extended_types
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, reservedmarshal_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)

#endif
#ifdef VK_KHR_8bit_storage
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDevice8BitStorageFeatures, reservedmarshal_VkPhysicalDevice8BitStorageFeaturesKHR)

#endif
#ifdef VK_KHR_shader_atomic_int64
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceShaderAtomicInt64Features, reservedmarshal_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)

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

#endif
#ifdef VK_KHR_driver_properties
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkConformanceVersion, reservedmarshal_VkConformanceVersionKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceDriverProperties, reservedmarshal_VkPhysicalDeviceDriverPropertiesKHR)

#endif
#ifdef VK_KHR_shader_float_controls
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceFloatControlsProperties, reservedmarshal_VkPhysicalDeviceFloatControlsPropertiesKHR)

#endif
#ifdef VK_KHR_depth_stencil_resolve
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSubpassDescriptionDepthStencilResolve, reservedmarshal_VkSubpassDescriptionDepthStencilResolveKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceDepthStencilResolveProperties, reservedmarshal_VkPhysicalDeviceDepthStencilResolvePropertiesKHR)

#endif
#ifdef VK_KHR_swapchain_mutable_format
#endif
#ifdef VK_KHR_timeline_semaphore
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceTimelineSemaphoreFeatures, reservedmarshal_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceTimelineSemaphoreProperties, reservedmarshal_VkPhysicalDeviceTimelineSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSemaphoreTypeCreateInfo, reservedmarshal_VkSemaphoreTypeCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkTimelineSemaphoreSubmitInfo, reservedmarshal_VkTimelineSemaphoreSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSemaphoreWaitInfo, reservedmarshal_VkSemaphoreWaitInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSemaphoreSignalInfo, reservedmarshal_VkSemaphoreSignalInfoKHR)

#endif
#ifdef VK_KHR_vulkan_memory_model
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceVulkanMemoryModelFeatures, reservedmarshal_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR)

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

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

void reservedmarshal_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineFragmentShadingRateStateCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentShadingRateKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_spirv_1_4
#endif
#ifdef VK_KHR_surface_protected_capabilities
void reservedmarshal_VkSurfaceProtectedCapabilitiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceProtectedCapabilitiesKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_separate_depth_stencil_layouts
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, reservedmarshal_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAttachmentReferenceStencilLayout, reservedmarshal_VkAttachmentReferenceStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAttachmentDescriptionStencilLayout, reservedmarshal_VkAttachmentDescriptionStencilLayoutKHR)

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

#endif
#ifdef VK_KHR_uniform_buffer_standard_layout
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeatures, reservedmarshal_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)

#endif
#ifdef VK_KHR_buffer_device_address
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceBufferDeviceAddressFeatures, reservedmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBufferDeviceAddressInfo, reservedmarshal_VkBufferDeviceAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBufferOpaqueCaptureAddressCreateInfo, reservedmarshal_VkBufferOpaqueCaptureAddressCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkMemoryOpaqueCaptureAddressAllocateInfo, reservedmarshal_VkMemoryOpaqueCaptureAddressAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDeviceMemoryOpaqueCaptureAddressInfo, reservedmarshal_VkDeviceMemoryOpaqueCaptureAddressInfoKHR)

#endif
#ifdef VK_KHR_deferred_host_operations
#endif
#ifdef VK_KHR_pipeline_executable_properties
void reservedmarshal_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineExecutablePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineExecutablePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineExecutableInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineExecutableInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineExecutableStatisticValueKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineExecutableStatisticValueKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineExecutableStatisticKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineExecutableStatisticKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineExecutableInternalRepresentationKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineExecutableInternalRepresentationKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_shader_integer_dot_product
void reservedmarshal_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* forMarshaling,
    uint8_t** ptr);

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

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

void reservedmarshal_VkPhysicalDevicePresentIdFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePresentIdFeaturesKHR* forMarshaling,
    uint8_t** ptr);

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

void reservedmarshal_VkVideoEncodeRateControlInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeRateControlInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_synchronization2
void reservedmarshal_VkMemoryBarrier2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryBarrier2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferMemoryBarrier2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferMemoryBarrier2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageMemoryBarrier2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageMemoryBarrier2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDependencyInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDependencyInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreSubmitInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreSubmitInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferSubmitInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferSubmitInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubmitInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubmitInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSynchronization2FeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSynchronization2FeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueueFamilyCheckpointProperties2NV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueueFamilyCheckpointProperties2NV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCheckpointData2NV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCheckpointData2NV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_shader_subgroup_uniform_control_flow
void reservedmarshal_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* forMarshaling,
    uint8_t** ptr);

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

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

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

void reservedmarshal_VkCopyBufferInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyBufferInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageCopy2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageCopy2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyImageInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyImageInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferImageCopy2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferImageCopy2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyBufferToImageInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyBufferToImageInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyImageToBufferInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyImageToBufferInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageBlit2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageBlit2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBlitImageInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBlitImageInfo2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageResolve2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageResolve2KHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkResolveImageInfo2KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkResolveImageInfo2KHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_format_feature_flags2
void reservedmarshal_VkFormatProperties3KHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFormatProperties3KHR* forMarshaling,
    uint8_t** ptr);

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

void reservedmarshal_VkPhysicalDeviceMaintenance4PropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMaintenance4PropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceBufferMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceBufferMemoryRequirementsKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceImageMemoryRequirementsKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceImageMemoryRequirementsKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_ANDROID_native_buffer
void reservedmarshal_VkNativeBufferANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkNativeBufferANDROID* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_debug_report
void reservedmarshal_VkDebugReportCallbackCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugReportCallbackCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#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 reservedmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_shader_trinary_minmax
#endif
#ifdef VK_AMD_shader_explicit_vertex_parameter
#endif
#ifdef VK_EXT_debug_marker
void reservedmarshal_VkDebugMarkerObjectNameInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugMarkerObjectNameInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugMarkerObjectTagInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugMarkerObjectTagInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugMarkerMarkerInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugMarkerMarkerInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_gcn_shader
#endif
#ifdef VK_NV_dedicated_allocation
void reservedmarshal_VkDedicatedAllocationImageCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDedicatedAllocationImageCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDedicatedAllocationBufferCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling,
    uint8_t** ptr);

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

void reservedmarshal_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTransformFeedbackPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationStateStreamCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationStateStreamCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NVX_binary_import
void reservedmarshal_VkCuModuleCreateInfoNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCuModuleCreateInfoNVX* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCuFunctionCreateInfoNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCuFunctionCreateInfoNVX* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCuLaunchInfoNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCuLaunchInfoNVX* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NVX_image_view_handle
void reservedmarshal_VkImageViewHandleInfoNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageViewHandleInfoNVX* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageViewAddressPropertiesNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageViewAddressPropertiesNVX* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_draw_indirect_count
#endif
#ifdef VK_AMD_negative_viewport_height
#endif
#ifdef VK_AMD_gpu_shader_half_float
#endif
#ifdef VK_AMD_shader_ballot
#endif
#ifdef VK_EXT_video_encode_h264
void reservedmarshal_VkVideoEncodeH264CapabilitiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264CapabilitiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264SessionCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264SessionParametersAddInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264SessionParametersCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264DpbSlotInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264DpbSlotInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264NaluSliceEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264NaluSliceEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264VclFrameInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264VclFrameInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264EmitPictureParametersEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH264ProfileEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH264ProfileEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_video_encode_h265
void reservedmarshal_VkVideoEncodeH265CapabilitiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265CapabilitiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265SessionCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265SessionParametersAddInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265SessionParametersCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265DpbSlotInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265DpbSlotInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265ReferenceListsEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265ReferenceListsEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265NaluSliceEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265NaluSliceEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265VclFrameInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265VclFrameInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265EmitPictureParametersEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265EmitPictureParametersEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoEncodeH265ProfileEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoEncodeH265ProfileEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_video_decode_h264
void reservedmarshal_VkVideoDecodeH264ProfileEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264ProfileEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264CapabilitiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264CapabilitiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264SessionCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264SessionParametersAddInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264SessionParametersCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264PictureInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264PictureInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264MvcEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264MvcEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH264DpbSlotInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH264DpbSlotInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_texture_gather_bias_lod
void reservedmarshal_VkTextureLODGatherFormatPropertiesAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkTextureLODGatherFormatPropertiesAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_shader_info
void reservedmarshal_VkShaderResourceUsageAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkShaderResourceUsageAMD* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkShaderStatisticsInfoAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkShaderStatisticsInfoAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_shader_image_load_store_lod
#endif
#ifdef VK_GGP_stream_descriptor_surface
void reservedmarshal_VkStreamDescriptorSurfaceCreateInfoGGP(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkStreamDescriptorSurfaceCreateInfoGGP* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_corner_sampled_image
void reservedmarshal_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCornerSampledImageFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_IMG_format_pvrtc
#endif
#ifdef VK_NV_external_memory_capabilities
void reservedmarshal_VkExternalImageFormatPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalImageFormatPropertiesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_external_memory
void reservedmarshal_VkExternalMemoryImageCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalMemoryImageCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExportMemoryAllocateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportMemoryAllocateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_external_memory_win32
void reservedmarshal_VkImportMemoryWin32HandleInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportMemoryWin32HandleInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExportMemoryWin32HandleInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExportMemoryWin32HandleInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_win32_keyed_mutex
void reservedmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_validation_flags
void reservedmarshal_VkValidationFlagsEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkValidationFlagsEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NN_vi_surface
void reservedmarshal_VkViSurfaceCreateInfoNN(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkViSurfaceCreateInfoNN* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_subgroup_ballot
#endif
#ifdef VK_EXT_shader_subgroup_vote
#endif
#ifdef VK_EXT_texture_compression_astc_hdr
void reservedmarshal_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_astc_decode_mode
void reservedmarshal_VkImageViewASTCDecodeModeEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageViewASTCDecodeModeEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceASTCDecodeFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_conditional_rendering
void reservedmarshal_VkConditionalRenderingBeginInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkConditionalRenderingBeginInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_clip_space_w_scaling
void reservedmarshal_VkViewportWScalingNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkViewportWScalingNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_direct_mode_display
#endif
#ifdef VK_EXT_acquire_xlib_display
#endif
#ifdef VK_EXT_display_surface_counter
void reservedmarshal_VkSurfaceCapabilities2EXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceCapabilities2EXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_display_control
void reservedmarshal_VkDisplayPowerInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayPowerInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceEventInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceEventInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDisplayEventInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayEventInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSwapchainCounterCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSwapchainCounterCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_GOOGLE_display_timing
void reservedmarshal_VkRefreshCycleDurationGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRefreshCycleDurationGOOGLE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPastPresentationTimingGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPastPresentationTimingGOOGLE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPresentTimeGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentTimeGOOGLE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPresentTimesInfoGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentTimesInfoGOOGLE* forMarshaling,
    uint8_t** ptr);

#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 reservedmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_viewport_swizzle
void reservedmarshal_VkViewportSwizzleNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkViewportSwizzleNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_discard_rectangles
void reservedmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_conservative_rasterization
void reservedmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_depth_clip_enable
void reservedmarshal_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDepthClipEnableFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationDepthClipStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_swapchain_colorspace
#endif
#ifdef VK_EXT_hdr_metadata
void reservedmarshal_VkXYColorEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkXYColorEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkHdrMetadataEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkHdrMetadataEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_MVK_ios_surface
void reservedmarshal_VkIOSSurfaceCreateInfoMVK(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkIOSSurfaceCreateInfoMVK* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_MVK_macos_surface
void reservedmarshal_VkMacOSSurfaceCreateInfoMVK(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMacOSSurfaceCreateInfoMVK* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_MVK_moltenvk
#endif
#ifdef VK_EXT_external_memory_dma_buf
#endif
#ifdef VK_EXT_queue_family_foreign
#endif
#ifdef VK_EXT_debug_utils
void reservedmarshal_VkDebugUtilsLabelEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugUtilsLabelEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugUtilsObjectNameInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugUtilsObjectNameInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugUtilsMessengerCallbackDataEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugUtilsMessengerCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDebugUtilsObjectTagInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDebugUtilsObjectTagInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
void reservedmarshal_VkAndroidHardwareBufferUsageANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAndroidHardwareBufferUsageANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAndroidHardwareBufferPropertiesANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImportAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkExternalFormatANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkExternalFormatANDROID* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAndroidHardwareBufferFormatProperties2ANDROID(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAndroidHardwareBufferFormatProperties2ANDROID* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_sampler_filter_minmax
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkSamplerReductionModeCreateInfo, reservedmarshal_VkSamplerReductionModeCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceSamplerFilterMinmaxProperties, reservedmarshal_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 reservedmarshal_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkWriteDescriptorSetInlineUniformBlockEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWriteDescriptorSetInlineUniformBlockEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_stencil_export
#endif
#ifdef VK_EXT_sample_locations
void reservedmarshal_VkSampleLocationEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSampleLocationEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSampleLocationsInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSampleLocationsInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAttachmentSampleLocationsEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAttachmentSampleLocationsEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSubpassSampleLocationsEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassSampleLocationsEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMultisamplePropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMultisamplePropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_blend_operation_advanced
void reservedmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_fragment_coverage_to_color
void reservedmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_framebuffer_mixed_samples
void reservedmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_fill_rectangle
#endif
#ifdef VK_NV_shader_sm_builtins
void reservedmarshal_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_post_depth_coverage
#endif
#ifdef VK_EXT_image_drm_format_modifier
void reservedmarshal_VkDrmFormatModifierPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrmFormatModifierPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrmFormatModifierPropertiesListEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrmFormatModifierPropertiesListEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageDrmFormatModifierListCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageDrmFormatModifierListCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageDrmFormatModifierExplicitCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageDrmFormatModifierPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageDrmFormatModifierPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrmFormatModifierProperties2EXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrmFormatModifierProperties2EXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrmFormatModifierPropertiesList2EXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrmFormatModifierPropertiesList2EXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_validation_cache
void reservedmarshal_VkValidationCacheCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkValidationCacheCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_descriptor_indexing
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfo, reservedmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceDescriptorIndexingFeatures, reservedmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceDescriptorIndexingProperties, reservedmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfo, reservedmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupport, reservedmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)

#endif
#ifdef VK_EXT_shader_viewport_index_layer
#endif
#ifdef VK_NV_shading_rate_image
void reservedmarshal_VkShadingRatePaletteNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkShadingRatePaletteNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportShadingRateImageStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShadingRateImageFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImageFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceShadingRateImagePropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImagePropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCoarseSampleLocationNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCoarseSampleLocationNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCoarseSampleOrderCustomNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCoarseSampleOrderCustomNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_ray_tracing
void reservedmarshal_VkRayTracingShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRayTracingPipelineCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeometryTrianglesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeometryTrianglesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeometryAABBNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeometryAABBNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeometryDataNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeometryDataNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeometryNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeometryNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindAccelerationStructureMemoryInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindAccelerationStructureMemoryInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkWriteDescriptorSetAccelerationStructureNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureMemoryRequirementsInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceRayTracingPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkTransformMatrixKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkTransformMatrixKHR* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkTransformMatrixKHR, reservedmarshal_VkTransformMatrixNV)

void reservedmarshal_VkAabbPositionsKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAabbPositionsKHR* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAabbPositionsKHR, reservedmarshal_VkAabbPositionsNV)

void reservedmarshal_VkAccelerationStructureInstanceKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureInstanceKHR* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkAccelerationStructureInstanceKHR, reservedmarshal_VkAccelerationStructureInstanceNV)

#endif
#ifdef VK_NV_representative_fragment_test
void reservedmarshal_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_filter_cubic
void reservedmarshal_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceImageViewImageFormatInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFilterCubicImageViewImageFormatPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFilterCubicImageViewImageFormatPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_QCOM_render_pass_shader_resolve
#endif
#ifdef VK_EXT_global_priority
void reservedmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_external_memory_host
void reservedmarshal_VkImportMemoryHostPointerInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportMemoryHostPointerInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryHostPointerPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryHostPointerPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_buffer_marker
#endif
#ifdef VK_AMD_pipeline_compiler_control
void reservedmarshal_VkPipelineCompilerControlCreateInfoAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCompilerControlCreateInfoAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_calibrated_timestamps
void reservedmarshal_VkCalibratedTimestampInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCalibratedTimestampInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_shader_core_properties
void reservedmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_video_decode_h265
void reservedmarshal_VkVideoDecodeH265ProfileEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265ProfileEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265CapabilitiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265CapabilitiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265SessionCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265SessionCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265SessionParametersAddInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265SessionParametersAddInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265SessionParametersCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265SessionParametersCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265PictureInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265PictureInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVideoDecodeH265DpbSlotInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVideoDecodeH265DpbSlotInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_memory_overallocation_behavior
void reservedmarshal_VkDeviceMemoryOverallocationCreateInfoAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceMemoryOverallocationCreateInfoAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_vertex_attribute_divisor
void reservedmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVertexInputBindingDivisorDescriptionEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_GGP_frame_token
void reservedmarshal_VkPresentFrameTokenGGP(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPresentFrameTokenGGP* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_pipeline_creation_feedback
void reservedmarshal_VkPipelineCreationFeedbackEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCreationFeedbackEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineCreationFeedbackCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCreationFeedbackCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_shader_subgroup_partitioned
#endif
#ifdef VK_NV_compute_shader_derivatives
void reservedmarshal_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_mesh_shader
void reservedmarshal_VkPhysicalDeviceMeshShaderFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMeshShaderPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDrawMeshTasksIndirectCommandNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDrawMeshTasksIndirectCommandNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_fragment_shader_barycentric
void reservedmarshal_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_shader_image_footprint
void reservedmarshal_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderImageFootprintFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_scissor_exclusive
void reservedmarshal_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineViewportExclusiveScissorStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExclusiveScissorFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_device_diagnostic_checkpoints
void reservedmarshal_VkQueueFamilyCheckpointPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueueFamilyCheckpointPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCheckpointDataNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCheckpointDataNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_INTEL_shader_integer_functions2
void reservedmarshal_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_INTEL_performance_query
void reservedmarshal_VkPerformanceValueDataINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceValueDataINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceValueINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceValueINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkInitializePerformanceApiInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkInitializePerformanceApiInfoINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueryPoolPerformanceQueryCreateInfoINTEL* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkQueryPoolPerformanceQueryCreateInfoINTEL, reservedmarshal_VkQueryPoolCreateInfoINTEL)

void reservedmarshal_VkPerformanceMarkerInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceMarkerInfoINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceStreamMarkerInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceStreamMarkerInfoINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceOverrideInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceOverrideInfoINTEL* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPerformanceConfigurationAcquireInfoINTEL(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPerformanceConfigurationAcquireInfoINTEL* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_pci_bus_info
void reservedmarshal_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePCIBusInfoPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_display_native_hdr
void reservedmarshal_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDisplayNativeHdrSurfaceCapabilitiesAMD* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSwapchainDisplayNativeHdrCreateInfoAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_FUCHSIA_imagepipe_surface
void reservedmarshal_VkImagePipeSurfaceCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImagePipeSurfaceCreateInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_metal_surface
void reservedmarshal_VkMetalSurfaceCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMetalSurfaceCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_fragment_density_map
void reservedmarshal_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRenderPassFragmentDensityMapCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassFragmentDensityMapCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceScalarBlockLayoutFeatures, reservedmarshal_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)

#endif
#ifdef VK_GOOGLE_hlsl_functionality1
#endif
#ifdef VK_GOOGLE_decorate_string
#endif
#ifdef VK_EXT_subgroup_size_control
void reservedmarshal_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_shader_core_properties2
void reservedmarshal_VkPhysicalDeviceShaderCoreProperties2AMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderCoreProperties2AMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_AMD_device_coherent_memory
void reservedmarshal_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCoherentMemoryFeaturesAMD* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_image_atomic_int64
void reservedmarshal_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_memory_budget
void reservedmarshal_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryBudgetPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_memory_priority
void reservedmarshal_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryPriorityFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryPriorityAllocateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryPriorityAllocateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_dedicated_allocation_image_aliasing
void reservedmarshal_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_buffer_device_address
void reservedmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* forMarshaling,
    uint8_t** ptr);

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, reservedmarshal_VkPhysicalDeviceBufferAddressFeaturesEXT)

DEFINE_ALIAS_FUNCTION(reservedmarshal_VkBufferDeviceAddressInfo, reservedmarshal_VkBufferDeviceAddressInfoEXT)

void reservedmarshal_VkBufferDeviceAddressCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferDeviceAddressCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_tooling_info
void reservedmarshal_VkPhysicalDeviceToolPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceToolPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_separate_stencil_usage
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkImageStencilUsageCreateInfo, reservedmarshal_VkImageStencilUsageCreateInfoEXT)

#endif
#ifdef VK_EXT_validation_features
void reservedmarshal_VkValidationFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkValidationFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_cooperative_matrix
void reservedmarshal_VkCooperativeMatrixPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCooperativeMatrixPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixPropertiesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_coverage_reduction_mode
void reservedmarshal_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCoverageReductionModeFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineCoverageReductionStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineCoverageReductionStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkFramebufferMixedSamplesCombinationNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkFramebufferMixedSamplesCombinationNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_fragment_shader_interlock
void reservedmarshal_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_ycbcr_image_arrays
void reservedmarshal_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_provoking_vertex
void reservedmarshal_VkPhysicalDeviceProvokingVertexFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProvokingVertexFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceProvokingVertexPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceProvokingVertexPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_full_screen_exclusive
void reservedmarshal_VkSurfaceFullScreenExclusiveInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceCapabilitiesFullScreenExclusiveEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveWin32InfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_headless_surface
void reservedmarshal_VkHeadlessSurfaceCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkHeadlessSurfaceCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_line_rasterization
void reservedmarshal_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineRasterizationLineStateCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineRasterizationLineStateCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_atomic_float
void reservedmarshal_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_host_query_reset
DEFINE_ALIAS_FUNCTION(reservedmarshal_VkPhysicalDeviceHostQueryResetFeatures, reservedmarshal_VkPhysicalDeviceHostQueryResetFeaturesEXT)

#endif
#ifdef VK_EXT_index_type_uint8
void reservedmarshal_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_extended_dynamic_state
void reservedmarshal_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_atomic_float2
void reservedmarshal_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_shader_demote_to_helper_invocation
void reservedmarshal_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_device_generated_commands
void reservedmarshal_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGraphicsShaderGroupCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGraphicsShaderGroupCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGraphicsPipelineShaderGroupsCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindShaderGroupIndirectCommandNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindShaderGroupIndirectCommandNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindIndexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindIndexBufferIndirectCommandNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBindVertexBufferIndirectCommandNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBindVertexBufferIndirectCommandNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSetStateFlagsIndirectCommandNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSetStateFlagsIndirectCommandNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkIndirectCommandsStreamNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkIndirectCommandsStreamNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkIndirectCommandsLayoutTokenNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkIndirectCommandsLayoutTokenNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkIndirectCommandsLayoutCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkIndirectCommandsLayoutCreateInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeneratedCommandsInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeneratedCommandsInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkGeneratedCommandsMemoryRequirementsInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkGeneratedCommandsMemoryRequirementsInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_inherited_viewport_scissor
void reservedmarshal_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceInheritedViewportScissorFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferInheritanceViewportScissorInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferInheritanceViewportScissorInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_texel_buffer_alignment
void reservedmarshal_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_QCOM_render_pass_transform
void reservedmarshal_VkRenderPassTransformBeginInfoQCOM(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRenderPassTransformBeginInfoQCOM* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCommandBufferInheritanceRenderPassTransformInfoQCOM* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_device_memory_report
void reservedmarshal_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceMemoryReportCallbackDataEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceMemoryReportCallbackDataEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceDeviceMemoryReportCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceDeviceMemoryReportCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_acquire_drm_display
#endif
#ifdef VK_EXT_robustness2
void reservedmarshal_VkPhysicalDeviceRobustness2FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRobustness2FeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceRobustness2PropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRobustness2PropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_custom_border_color
void reservedmarshal_VkSamplerCustomBorderColorCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerCustomBorderColorCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_GOOGLE_user_type
#endif
#ifdef VK_EXT_private_data
void reservedmarshal_VkPhysicalDevicePrivateDataFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePrivateDataFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDevicePrivateDataCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDevicePrivateDataCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPrivateDataSlotCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPrivateDataSlotCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_pipeline_creation_cache_control
void reservedmarshal_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_device_diagnostics_config
void reservedmarshal_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkDeviceDiagnosticsConfigCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceDiagnosticsConfigCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_QCOM_render_pass_store_ops
#endif
#ifdef VK_NV_fragment_shading_rate_enums
void reservedmarshal_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineFragmentShadingRateEnumStateCreateInfoNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_ray_tracing_motion_blur
void reservedmarshal_VkDeviceOrHostAddressConstKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceOrHostAddressConstKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryMotionTrianglesDataNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryMotionTrianglesDataNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureMotionInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureMotionInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureMatrixMotionInstanceNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureMatrixMotionInstanceNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSRTDataNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSRTDataNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureSRTMotionInstanceNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureSRTMotionInstanceNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureMotionInstanceDataNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureMotionInstanceDataNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureMotionInstanceNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureMotionInstanceNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_ycbcr_2plane_444_formats
void reservedmarshal_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_fragment_density_map2
void reservedmarshal_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_QCOM_rotated_copy_commands
void reservedmarshal_VkCopyCommandTransformInfoQCOM(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyCommandTransformInfoQCOM* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_image_robustness
void reservedmarshal_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceImageRobustnessFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_4444_formats
void reservedmarshal_VkPhysicalDevice4444FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevice4444FormatsFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_rgba10x6_formats
void reservedmarshal_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_acquire_winrt_display
#endif
#ifdef VK_EXT_directfb_surface
void reservedmarshal_VkDirectFBSurfaceCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDirectFBSurfaceCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_VALVE_mutable_descriptor_type
void reservedmarshal_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMutableDescriptorTypeListVALVE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMutableDescriptorTypeListVALVE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMutableDescriptorTypeCreateInfoVALVE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMutableDescriptorTypeCreateInfoVALVE* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_vertex_input_dynamic_state
void reservedmarshal_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVertexInputBindingDescription2EXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVertexInputBindingDescription2EXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkVertexInputAttributeDescription2EXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkVertexInputAttributeDescription2EXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_physical_device_drm
void reservedmarshal_VkPhysicalDeviceDrmPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceDrmPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_primitive_topology_list_restart
void reservedmarshal_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_FUCHSIA_external_memory
void reservedmarshal_VkImportMemoryZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportMemoryZirconHandleInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryZirconHandlePropertiesFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryZirconHandlePropertiesFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMemoryGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryGetZirconHandleInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_FUCHSIA_external_semaphore
void reservedmarshal_VkImportSemaphoreZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportSemaphoreZirconHandleInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSemaphoreGetZirconHandleInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSemaphoreGetZirconHandleInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_FUCHSIA_buffer_collection
void reservedmarshal_VkBufferCollectionCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCollectionCreateInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImportMemoryBufferCollectionFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportMemoryBufferCollectionFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCollectionImageCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCollectionImageCreateInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCollectionConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCollectionConstraintsInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferConstraintsInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCollectionBufferCreateInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCollectionBufferCreateInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSysmemColorSpaceFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSysmemColorSpaceFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkBufferCollectionPropertiesFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkBufferCollectionPropertiesFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageFormatConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageFormatConstraintsInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImageConstraintsInfoFUCHSIA(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImageConstraintsInfoFUCHSIA* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_HUAWEI_subpass_shading
void reservedmarshal_VkSubpassShadingPipelineCreateInfoHUAWEI(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSubpassShadingPipelineCreateInfoHUAWEI* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_HUAWEI_invocation_mask
void reservedmarshal_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_NV_external_memory_rdma
void reservedmarshal_VkMemoryGetRemoteAddressInfoNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMemoryGetRemoteAddressInfoNV* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_extended_dynamic_state2
void reservedmarshal_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_QNX_screen_surface
void reservedmarshal_VkScreenSurfaceCreateInfoQNX(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkScreenSurfaceCreateInfoQNX* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_color_write_enable
void reservedmarshal_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceColorWriteEnableFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPipelineColorWriteCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPipelineColorWriteCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_GOOGLE_gfxstream
void reservedmarshal_VkImportColorBufferGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportColorBufferGOOGLE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImportBufferGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportBufferGOOGLE* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkImportPhysicalAddressGOOGLE(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkImportPhysicalAddressGOOGLE* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_global_priority_query
void reservedmarshal_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkQueueFamilyGlobalPriorityPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkQueueFamilyGlobalPriorityPropertiesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_multi_draw
void reservedmarshal_VkPhysicalDeviceMultiDrawFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiDrawFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceMultiDrawPropertiesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiDrawPropertiesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMultiDrawInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMultiDrawInfoEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkMultiDrawIndexedInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkMultiDrawIndexedInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_load_store_op_none
#endif
#ifdef VK_EXT_border_color_swizzle
void reservedmarshal_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkSamplerBorderColorComponentMappingCreateInfoEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkSamplerBorderColorComponentMappingCreateInfoEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_EXT_pageable_device_local_memory
void reservedmarshal_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_acceleration_structure
void reservedmarshal_VkDeviceOrHostAddressKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkDeviceOrHostAddressKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureBuildRangeInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureBuildRangeInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryTrianglesDataKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryTrianglesDataKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryAabbsDataKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryAabbsDataKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryInstancesDataKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryInstancesDataKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryDataKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryDataKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureGeometryKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureBuildGeometryInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureBuildGeometryInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkWriteDescriptorSetAccelerationStructureKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructureFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructurePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureDeviceAddressInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureDeviceAddressInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureVersionInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureVersionInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyAccelerationStructureToMemoryInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyAccelerationStructureToMemoryInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyMemoryToAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyMemoryToAccelerationStructureInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkCopyAccelerationStructureInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkCopyAccelerationStructureInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkAccelerationStructureBuildSizesInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkAccelerationStructureBuildSizesInfoKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_ray_tracing_pipeline
void reservedmarshal_VkRayTracingShaderGroupCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRayTracingPipelineInterfaceCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRayTracingPipelineInterfaceCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkRayTracingPipelineCreateInfoKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkStridedDeviceAddressRegionKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkStridedDeviceAddressRegionKHR* forMarshaling,
    uint8_t** ptr);

void reservedmarshal_VkTraceRaysIndirectCommandKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkTraceRaysIndirectCommandKHR* forMarshaling,
    uint8_t** ptr);

#endif
#ifdef VK_KHR_ray_query
void reservedmarshal_VkPhysicalDeviceRayQueryFeaturesKHR(
    VulkanStreamGuest* vkStream,
    VkStructureType rootType,
    const VkPhysicalDeviceRayQueryFeaturesKHR* forMarshaling,
    uint8_t** ptr);

#endif

} // namespace goldfish_vk
