// 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_deepcopy_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_private_defs.h"
#include "android/base/BumpPool.h"
using android::base::Allocator;
using android::base::BumpPool;
// 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 deepcopy_VkExtent2D(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExtent2D* from,
    VkExtent2D* to);

void deepcopy_VkExtent3D(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExtent3D* from,
    VkExtent3D* to);

void deepcopy_VkOffset2D(
    Allocator* alloc,
    VkStructureType rootType,
    const VkOffset2D* from,
    VkOffset2D* to);

void deepcopy_VkOffset3D(
    Allocator* alloc,
    VkStructureType rootType,
    const VkOffset3D* from,
    VkOffset3D* to);

void deepcopy_VkRect2D(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRect2D* from,
    VkRect2D* to);

void deepcopy_VkBaseInStructure(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBaseInStructure* from,
    VkBaseInStructure* to);

void deepcopy_VkBaseOutStructure(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBaseOutStructure* from,
    VkBaseOutStructure* to);

void deepcopy_VkBufferMemoryBarrier(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferMemoryBarrier* from,
    VkBufferMemoryBarrier* to);

void deepcopy_VkDispatchIndirectCommand(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDispatchIndirectCommand* from,
    VkDispatchIndirectCommand* to);

void deepcopy_VkDrawIndexedIndirectCommand(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDrawIndexedIndirectCommand* from,
    VkDrawIndexedIndirectCommand* to);

void deepcopy_VkDrawIndirectCommand(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDrawIndirectCommand* from,
    VkDrawIndirectCommand* to);

void deepcopy_VkImageSubresourceRange(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageSubresourceRange* from,
    VkImageSubresourceRange* to);

void deepcopy_VkImageMemoryBarrier(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageMemoryBarrier* from,
    VkImageMemoryBarrier* to);

void deepcopy_VkMemoryBarrier(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryBarrier* from,
    VkMemoryBarrier* to);

void deepcopy_VkAllocationCallbacks(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAllocationCallbacks* from,
    VkAllocationCallbacks* to);

void deepcopy_VkApplicationInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkApplicationInfo* from,
    VkApplicationInfo* to);

void deepcopy_VkFormatProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFormatProperties* from,
    VkFormatProperties* to);

void deepcopy_VkImageFormatProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageFormatProperties* from,
    VkImageFormatProperties* to);

void deepcopy_VkInstanceCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkInstanceCreateInfo* from,
    VkInstanceCreateInfo* to);

void deepcopy_VkMemoryHeap(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryHeap* from,
    VkMemoryHeap* to);

void deepcopy_VkMemoryType(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryType* from,
    VkMemoryType* to);

void deepcopy_VkPhysicalDeviceFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFeatures* from,
    VkPhysicalDeviceFeatures* to);

void deepcopy_VkPhysicalDeviceLimits(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceLimits* from,
    VkPhysicalDeviceLimits* to);

void deepcopy_VkPhysicalDeviceMemoryProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties* from,
    VkPhysicalDeviceMemoryProperties* to);

void deepcopy_VkPhysicalDeviceSparseProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSparseProperties* from,
    VkPhysicalDeviceSparseProperties* to);

void deepcopy_VkPhysicalDeviceProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceProperties* from,
    VkPhysicalDeviceProperties* to);

void deepcopy_VkQueueFamilyProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueueFamilyProperties* from,
    VkQueueFamilyProperties* to);

void deepcopy_VkDeviceQueueCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceQueueCreateInfo* from,
    VkDeviceQueueCreateInfo* to);

void deepcopy_VkDeviceCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceCreateInfo* from,
    VkDeviceCreateInfo* to);

void deepcopy_VkExtensionProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExtensionProperties* from,
    VkExtensionProperties* to);

void deepcopy_VkLayerProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkLayerProperties* from,
    VkLayerProperties* to);

void deepcopy_VkSubmitInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubmitInfo* from,
    VkSubmitInfo* to);

void deepcopy_VkMappedMemoryRange(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMappedMemoryRange* from,
    VkMappedMemoryRange* to);

void deepcopy_VkMemoryAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryAllocateInfo* from,
    VkMemoryAllocateInfo* to);

void deepcopy_VkMemoryRequirements(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryRequirements* from,
    VkMemoryRequirements* to);

void deepcopy_VkSparseMemoryBind(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseMemoryBind* from,
    VkSparseMemoryBind* to);

void deepcopy_VkSparseBufferMemoryBindInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseBufferMemoryBindInfo* from,
    VkSparseBufferMemoryBindInfo* to);

void deepcopy_VkSparseImageOpaqueMemoryBindInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageOpaqueMemoryBindInfo* from,
    VkSparseImageOpaqueMemoryBindInfo* to);

void deepcopy_VkImageSubresource(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageSubresource* from,
    VkImageSubresource* to);

void deepcopy_VkSparseImageMemoryBind(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageMemoryBind* from,
    VkSparseImageMemoryBind* to);

void deepcopy_VkSparseImageMemoryBindInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageMemoryBindInfo* from,
    VkSparseImageMemoryBindInfo* to);

void deepcopy_VkBindSparseInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindSparseInfo* from,
    VkBindSparseInfo* to);

void deepcopy_VkSparseImageFormatProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageFormatProperties* from,
    VkSparseImageFormatProperties* to);

void deepcopy_VkSparseImageMemoryRequirements(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageMemoryRequirements* from,
    VkSparseImageMemoryRequirements* to);

void deepcopy_VkFenceCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFenceCreateInfo* from,
    VkFenceCreateInfo* to);

void deepcopy_VkSemaphoreCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreCreateInfo* from,
    VkSemaphoreCreateInfo* to);

void deepcopy_VkEventCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkEventCreateInfo* from,
    VkEventCreateInfo* to);

void deepcopy_VkQueryPoolCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueryPoolCreateInfo* from,
    VkQueryPoolCreateInfo* to);

void deepcopy_VkBufferCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferCreateInfo* from,
    VkBufferCreateInfo* to);

void deepcopy_VkBufferViewCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferViewCreateInfo* from,
    VkBufferViewCreateInfo* to);

void deepcopy_VkImageCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageCreateInfo* from,
    VkImageCreateInfo* to);

void deepcopy_VkSubresourceLayout(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubresourceLayout* from,
    VkSubresourceLayout* to);

void deepcopy_VkComponentMapping(
    Allocator* alloc,
    VkStructureType rootType,
    const VkComponentMapping* from,
    VkComponentMapping* to);

void deepcopy_VkImageViewCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageViewCreateInfo* from,
    VkImageViewCreateInfo* to);

void deepcopy_VkShaderModuleCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkShaderModuleCreateInfo* from,
    VkShaderModuleCreateInfo* to);

void deepcopy_VkPipelineCacheCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCacheCreateInfo* from,
    VkPipelineCacheCreateInfo* to);

void deepcopy_VkSpecializationMapEntry(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSpecializationMapEntry* from,
    VkSpecializationMapEntry* to);

void deepcopy_VkSpecializationInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSpecializationInfo* from,
    VkSpecializationInfo* to);

void deepcopy_VkPipelineShaderStageCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineShaderStageCreateInfo* from,
    VkPipelineShaderStageCreateInfo* to);

void deepcopy_VkComputePipelineCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkComputePipelineCreateInfo* from,
    VkComputePipelineCreateInfo* to);

void deepcopy_VkVertexInputBindingDescription(
    Allocator* alloc,
    VkStructureType rootType,
    const VkVertexInputBindingDescription* from,
    VkVertexInputBindingDescription* to);

void deepcopy_VkVertexInputAttributeDescription(
    Allocator* alloc,
    VkStructureType rootType,
    const VkVertexInputAttributeDescription* from,
    VkVertexInputAttributeDescription* to);

void deepcopy_VkPipelineVertexInputStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineVertexInputStateCreateInfo* from,
    VkPipelineVertexInputStateCreateInfo* to);

void deepcopy_VkPipelineInputAssemblyStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineInputAssemblyStateCreateInfo* from,
    VkPipelineInputAssemblyStateCreateInfo* to);

void deepcopy_VkPipelineTessellationStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineTessellationStateCreateInfo* from,
    VkPipelineTessellationStateCreateInfo* to);

void deepcopy_VkViewport(
    Allocator* alloc,
    VkStructureType rootType,
    const VkViewport* from,
    VkViewport* to);

void deepcopy_VkPipelineViewportStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportStateCreateInfo* from,
    VkPipelineViewportStateCreateInfo* to);

void deepcopy_VkPipelineRasterizationStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationStateCreateInfo* from,
    VkPipelineRasterizationStateCreateInfo* to);

void deepcopy_VkPipelineMultisampleStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineMultisampleStateCreateInfo* from,
    VkPipelineMultisampleStateCreateInfo* to);

void deepcopy_VkStencilOpState(
    Allocator* alloc,
    VkStructureType rootType,
    const VkStencilOpState* from,
    VkStencilOpState* to);

void deepcopy_VkPipelineDepthStencilStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineDepthStencilStateCreateInfo* from,
    VkPipelineDepthStencilStateCreateInfo* to);

void deepcopy_VkPipelineColorBlendAttachmentState(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineColorBlendAttachmentState* from,
    VkPipelineColorBlendAttachmentState* to);

void deepcopy_VkPipelineColorBlendStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineColorBlendStateCreateInfo* from,
    VkPipelineColorBlendStateCreateInfo* to);

void deepcopy_VkPipelineDynamicStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineDynamicStateCreateInfo* from,
    VkPipelineDynamicStateCreateInfo* to);

void deepcopy_VkGraphicsPipelineCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGraphicsPipelineCreateInfo* from,
    VkGraphicsPipelineCreateInfo* to);

void deepcopy_VkPushConstantRange(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPushConstantRange* from,
    VkPushConstantRange* to);

void deepcopy_VkPipelineLayoutCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineLayoutCreateInfo* from,
    VkPipelineLayoutCreateInfo* to);

void deepcopy_VkSamplerCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerCreateInfo* from,
    VkSamplerCreateInfo* to);

void deepcopy_VkCopyDescriptorSet(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyDescriptorSet* from,
    VkCopyDescriptorSet* to);

void deepcopy_VkDescriptorBufferInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorBufferInfo* from,
    VkDescriptorBufferInfo* to);

void deepcopy_VkDescriptorImageInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorImageInfo* from,
    VkDescriptorImageInfo* to);

void deepcopy_VkDescriptorPoolSize(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorPoolSize* from,
    VkDescriptorPoolSize* to);

void deepcopy_VkDescriptorPoolCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorPoolCreateInfo* from,
    VkDescriptorPoolCreateInfo* to);

void deepcopy_VkDescriptorSetAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetAllocateInfo* from,
    VkDescriptorSetAllocateInfo* to);

void deepcopy_VkDescriptorSetLayoutBinding(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetLayoutBinding* from,
    VkDescriptorSetLayoutBinding* to);

void deepcopy_VkDescriptorSetLayoutCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetLayoutCreateInfo* from,
    VkDescriptorSetLayoutCreateInfo* to);

void deepcopy_VkWriteDescriptorSet(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWriteDescriptorSet* from,
    VkWriteDescriptorSet* to);

void deepcopy_VkAttachmentDescription(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentDescription* from,
    VkAttachmentDescription* to);

void deepcopy_VkAttachmentReference(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentReference* from,
    VkAttachmentReference* to);

void deepcopy_VkFramebufferCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFramebufferCreateInfo* from,
    VkFramebufferCreateInfo* to);

void deepcopy_VkSubpassDescription(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassDescription* from,
    VkSubpassDescription* to);

void deepcopy_VkSubpassDependency(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassDependency* from,
    VkSubpassDependency* to);

void deepcopy_VkRenderPassCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassCreateInfo* from,
    VkRenderPassCreateInfo* to);

void deepcopy_VkCommandPoolCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandPoolCreateInfo* from,
    VkCommandPoolCreateInfo* to);

void deepcopy_VkCommandBufferAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandBufferAllocateInfo* from,
    VkCommandBufferAllocateInfo* to);

void deepcopy_VkCommandBufferInheritanceInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandBufferInheritanceInfo* from,
    VkCommandBufferInheritanceInfo* to);

void deepcopy_VkCommandBufferBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandBufferBeginInfo* from,
    VkCommandBufferBeginInfo* to);

void deepcopy_VkBufferCopy(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferCopy* from,
    VkBufferCopy* to);

void deepcopy_VkImageSubresourceLayers(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageSubresourceLayers* from,
    VkImageSubresourceLayers* to);

void deepcopy_VkBufferImageCopy(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferImageCopy* from,
    VkBufferImageCopy* to);

void deepcopy_VkClearColorValue(
    Allocator* alloc,
    VkStructureType rootType,
    const VkClearColorValue* from,
    VkClearColorValue* to);

void deepcopy_VkClearDepthStencilValue(
    Allocator* alloc,
    VkStructureType rootType,
    const VkClearDepthStencilValue* from,
    VkClearDepthStencilValue* to);

void deepcopy_VkClearValue(
    Allocator* alloc,
    VkStructureType rootType,
    const VkClearValue* from,
    VkClearValue* to);

void deepcopy_VkClearAttachment(
    Allocator* alloc,
    VkStructureType rootType,
    const VkClearAttachment* from,
    VkClearAttachment* to);

void deepcopy_VkClearRect(
    Allocator* alloc,
    VkStructureType rootType,
    const VkClearRect* from,
    VkClearRect* to);

void deepcopy_VkImageBlit(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageBlit* from,
    VkImageBlit* to);

void deepcopy_VkImageCopy(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageCopy* from,
    VkImageCopy* to);

void deepcopy_VkImageResolve(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageResolve* from,
    VkImageResolve* to);

void deepcopy_VkRenderPassBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassBeginInfo* from,
    VkRenderPassBeginInfo* to);

#endif
#ifdef VK_VERSION_1_1
void deepcopy_VkPhysicalDeviceSubgroupProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupProperties* from,
    VkPhysicalDeviceSubgroupProperties* to);

void deepcopy_VkBindBufferMemoryInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindBufferMemoryInfo* from,
    VkBindBufferMemoryInfo* to);

void deepcopy_VkBindImageMemoryInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindImageMemoryInfo* from,
    VkBindImageMemoryInfo* to);

void deepcopy_VkPhysicalDevice16BitStorageFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevice16BitStorageFeatures* from,
    VkPhysicalDevice16BitStorageFeatures* to);

void deepcopy_VkMemoryDedicatedRequirements(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryDedicatedRequirements* from,
    VkMemoryDedicatedRequirements* to);

void deepcopy_VkMemoryDedicatedAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryDedicatedAllocateInfo* from,
    VkMemoryDedicatedAllocateInfo* to);

void deepcopy_VkMemoryAllocateFlagsInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryAllocateFlagsInfo* from,
    VkMemoryAllocateFlagsInfo* to);

void deepcopy_VkDeviceGroupRenderPassBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupRenderPassBeginInfo* from,
    VkDeviceGroupRenderPassBeginInfo* to);

void deepcopy_VkDeviceGroupCommandBufferBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupCommandBufferBeginInfo* from,
    VkDeviceGroupCommandBufferBeginInfo* to);

void deepcopy_VkDeviceGroupSubmitInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupSubmitInfo* from,
    VkDeviceGroupSubmitInfo* to);

void deepcopy_VkDeviceGroupBindSparseInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupBindSparseInfo* from,
    VkDeviceGroupBindSparseInfo* to);

void deepcopy_VkBindBufferMemoryDeviceGroupInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindBufferMemoryDeviceGroupInfo* from,
    VkBindBufferMemoryDeviceGroupInfo* to);

void deepcopy_VkBindImageMemoryDeviceGroupInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindImageMemoryDeviceGroupInfo* from,
    VkBindImageMemoryDeviceGroupInfo* to);

void deepcopy_VkPhysicalDeviceGroupProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceGroupProperties* from,
    VkPhysicalDeviceGroupProperties* to);

void deepcopy_VkDeviceGroupDeviceCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupDeviceCreateInfo* from,
    VkDeviceGroupDeviceCreateInfo* to);

void deepcopy_VkBufferMemoryRequirementsInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferMemoryRequirementsInfo2* from,
    VkBufferMemoryRequirementsInfo2* to);

void deepcopy_VkImageMemoryRequirementsInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageMemoryRequirementsInfo2* from,
    VkImageMemoryRequirementsInfo2* to);

void deepcopy_VkImageSparseMemoryRequirementsInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageSparseMemoryRequirementsInfo2* from,
    VkImageSparseMemoryRequirementsInfo2* to);

void deepcopy_VkMemoryRequirements2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryRequirements2* from,
    VkMemoryRequirements2* to);

void deepcopy_VkSparseImageMemoryRequirements2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageMemoryRequirements2* from,
    VkSparseImageMemoryRequirements2* to);

void deepcopy_VkPhysicalDeviceFeatures2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFeatures2* from,
    VkPhysicalDeviceFeatures2* to);

void deepcopy_VkPhysicalDeviceProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceProperties2* from,
    VkPhysicalDeviceProperties2* to);

void deepcopy_VkFormatProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFormatProperties2* from,
    VkFormatProperties2* to);

void deepcopy_VkImageFormatProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageFormatProperties2* from,
    VkImageFormatProperties2* to);

void deepcopy_VkPhysicalDeviceImageFormatInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceImageFormatInfo2* from,
    VkPhysicalDeviceImageFormatInfo2* to);

void deepcopy_VkQueueFamilyProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueueFamilyProperties2* from,
    VkQueueFamilyProperties2* to);

void deepcopy_VkPhysicalDeviceMemoryProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryProperties2* from,
    VkPhysicalDeviceMemoryProperties2* to);

void deepcopy_VkSparseImageFormatProperties2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSparseImageFormatProperties2* from,
    VkSparseImageFormatProperties2* to);

void deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSparseImageFormatInfo2* from,
    VkPhysicalDeviceSparseImageFormatInfo2* to);

void deepcopy_VkPhysicalDevicePointClippingProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePointClippingProperties* from,
    VkPhysicalDevicePointClippingProperties* to);

void deepcopy_VkInputAttachmentAspectReference(
    Allocator* alloc,
    VkStructureType rootType,
    const VkInputAttachmentAspectReference* from,
    VkInputAttachmentAspectReference* to);

void deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassInputAttachmentAspectCreateInfo* from,
    VkRenderPassInputAttachmentAspectCreateInfo* to);

void deepcopy_VkImageViewUsageCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageViewUsageCreateInfo* from,
    VkImageViewUsageCreateInfo* to);

void deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineTessellationDomainOriginStateCreateInfo* from,
    VkPipelineTessellationDomainOriginStateCreateInfo* to);

void deepcopy_VkRenderPassMultiviewCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassMultiviewCreateInfo* from,
    VkRenderPassMultiviewCreateInfo* to);

void deepcopy_VkPhysicalDeviceMultiviewFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewFeatures* from,
    VkPhysicalDeviceMultiviewFeatures* to);

void deepcopy_VkPhysicalDeviceMultiviewProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewProperties* from,
    VkPhysicalDeviceMultiviewProperties* to);

void deepcopy_VkPhysicalDeviceVariablePointersFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVariablePointersFeatures* from,
    VkPhysicalDeviceVariablePointersFeatures* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceVariablePointersFeatures, deepcopy_VkPhysicalDeviceVariablePointerFeatures);

void deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryFeatures* from,
    VkPhysicalDeviceProtectedMemoryFeatures* to);

void deepcopy_VkPhysicalDeviceProtectedMemoryProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceProtectedMemoryProperties* from,
    VkPhysicalDeviceProtectedMemoryProperties* to);

void deepcopy_VkDeviceQueueInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceQueueInfo2* from,
    VkDeviceQueueInfo2* to);

void deepcopy_VkProtectedSubmitInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkProtectedSubmitInfo* from,
    VkProtectedSubmitInfo* to);

void deepcopy_VkSamplerYcbcrConversionCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionCreateInfo* from,
    VkSamplerYcbcrConversionCreateInfo* to);

void deepcopy_VkSamplerYcbcrConversionInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionInfo* from,
    VkSamplerYcbcrConversionInfo* to);

void deepcopy_VkBindImagePlaneMemoryInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindImagePlaneMemoryInfo* from,
    VkBindImagePlaneMemoryInfo* to);

void deepcopy_VkImagePlaneMemoryRequirementsInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImagePlaneMemoryRequirementsInfo* from,
    VkImagePlaneMemoryRequirementsInfo* to);

void deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSamplerYcbcrConversionFeatures* from,
    VkPhysicalDeviceSamplerYcbcrConversionFeatures* to);

void deepcopy_VkSamplerYcbcrConversionImageFormatProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerYcbcrConversionImageFormatProperties* from,
    VkSamplerYcbcrConversionImageFormatProperties* to);

void deepcopy_VkDescriptorUpdateTemplateEntry(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorUpdateTemplateEntry* from,
    VkDescriptorUpdateTemplateEntry* to);

void deepcopy_VkDescriptorUpdateTemplateCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorUpdateTemplateCreateInfo* from,
    VkDescriptorUpdateTemplateCreateInfo* to);

void deepcopy_VkExternalMemoryProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalMemoryProperties* from,
    VkExternalMemoryProperties* to);

void deepcopy_VkPhysicalDeviceExternalImageFormatInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalImageFormatInfo* from,
    VkPhysicalDeviceExternalImageFormatInfo* to);

void deepcopy_VkExternalImageFormatProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalImageFormatProperties* from,
    VkExternalImageFormatProperties* to);

void deepcopy_VkPhysicalDeviceExternalBufferInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalBufferInfo* from,
    VkPhysicalDeviceExternalBufferInfo* to);

void deepcopy_VkExternalBufferProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalBufferProperties* from,
    VkExternalBufferProperties* to);

void deepcopy_VkPhysicalDeviceIDProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceIDProperties* from,
    VkPhysicalDeviceIDProperties* to);

void deepcopy_VkExternalMemoryImageCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalMemoryImageCreateInfo* from,
    VkExternalMemoryImageCreateInfo* to);

void deepcopy_VkExternalMemoryBufferCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalMemoryBufferCreateInfo* from,
    VkExternalMemoryBufferCreateInfo* to);

void deepcopy_VkExportMemoryAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportMemoryAllocateInfo* from,
    VkExportMemoryAllocateInfo* to);

void deepcopy_VkPhysicalDeviceExternalFenceInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalFenceInfo* from,
    VkPhysicalDeviceExternalFenceInfo* to);

void deepcopy_VkExternalFenceProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalFenceProperties* from,
    VkExternalFenceProperties* to);

void deepcopy_VkExportFenceCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportFenceCreateInfo* from,
    VkExportFenceCreateInfo* to);

void deepcopy_VkExportSemaphoreCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportSemaphoreCreateInfo* from,
    VkExportSemaphoreCreateInfo* to);

void deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalSemaphoreInfo* from,
    VkPhysicalDeviceExternalSemaphoreInfo* to);

void deepcopy_VkExternalSemaphoreProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalSemaphoreProperties* from,
    VkExternalSemaphoreProperties* to);

void deepcopy_VkPhysicalDeviceMaintenance3Properties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMaintenance3Properties* from,
    VkPhysicalDeviceMaintenance3Properties* to);

void deepcopy_VkDescriptorSetLayoutSupport(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetLayoutSupport* from,
    VkDescriptorSetLayoutSupport* to);

void deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderDrawParametersFeatures* from,
    VkPhysicalDeviceShaderDrawParametersFeatures* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceShaderDrawParametersFeatures, deepcopy_VkPhysicalDeviceShaderDrawParameterFeatures);

#endif
#ifdef VK_VERSION_1_2
void deepcopy_VkPhysicalDeviceVulkan11Features(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan11Features* from,
    VkPhysicalDeviceVulkan11Features* to);

void deepcopy_VkPhysicalDeviceVulkan11Properties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan11Properties* from,
    VkPhysicalDeviceVulkan11Properties* to);

void deepcopy_VkPhysicalDeviceVulkan12Features(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Features* from,
    VkPhysicalDeviceVulkan12Features* to);

void deepcopy_VkConformanceVersion(
    Allocator* alloc,
    VkStructureType rootType,
    const VkConformanceVersion* from,
    VkConformanceVersion* to);

void deepcopy_VkPhysicalDeviceVulkan12Properties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkan12Properties* from,
    VkPhysicalDeviceVulkan12Properties* to);

void deepcopy_VkImageFormatListCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageFormatListCreateInfo* from,
    VkImageFormatListCreateInfo* to);

void deepcopy_VkAttachmentDescription2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentDescription2* from,
    VkAttachmentDescription2* to);

void deepcopy_VkAttachmentReference2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentReference2* from,
    VkAttachmentReference2* to);

void deepcopy_VkSubpassDescription2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassDescription2* from,
    VkSubpassDescription2* to);

void deepcopy_VkSubpassDependency2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassDependency2* from,
    VkSubpassDependency2* to);

void deepcopy_VkRenderPassCreateInfo2(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassCreateInfo2* from,
    VkRenderPassCreateInfo2* to);

void deepcopy_VkSubpassBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassBeginInfo* from,
    VkSubpassBeginInfo* to);

void deepcopy_VkSubpassEndInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassEndInfo* from,
    VkSubpassEndInfo* to);

void deepcopy_VkPhysicalDevice8BitStorageFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevice8BitStorageFeatures* from,
    VkPhysicalDevice8BitStorageFeatures* to);

void deepcopy_VkPhysicalDeviceDriverProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDriverProperties* from,
    VkPhysicalDeviceDriverProperties* to);

void deepcopy_VkPhysicalDeviceShaderAtomicInt64Features(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicInt64Features* from,
    VkPhysicalDeviceShaderAtomicInt64Features* to);

void deepcopy_VkPhysicalDeviceShaderFloat16Int8Features(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderFloat16Int8Features* from,
    VkPhysicalDeviceShaderFloat16Int8Features* to);

void deepcopy_VkPhysicalDeviceFloatControlsProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFloatControlsProperties* from,
    VkPhysicalDeviceFloatControlsProperties* to);

void deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetLayoutBindingFlagsCreateInfo* from,
    VkDescriptorSetLayoutBindingFlagsCreateInfo* to);

void deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingFeatures* from,
    VkPhysicalDeviceDescriptorIndexingFeatures* to);

void deepcopy_VkPhysicalDeviceDescriptorIndexingProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDescriptorIndexingProperties* from,
    VkPhysicalDeviceDescriptorIndexingProperties* to);

void deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountAllocateInfo* from,
    VkDescriptorSetVariableDescriptorCountAllocateInfo* to);

void deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorSetVariableDescriptorCountLayoutSupport* from,
    VkDescriptorSetVariableDescriptorCountLayoutSupport* to);

void deepcopy_VkSubpassDescriptionDepthStencilResolve(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassDescriptionDepthStencilResolve* from,
    VkSubpassDescriptionDepthStencilResolve* to);

void deepcopy_VkPhysicalDeviceDepthStencilResolveProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDepthStencilResolveProperties* from,
    VkPhysicalDeviceDepthStencilResolveProperties* to);

void deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceScalarBlockLayoutFeatures* from,
    VkPhysicalDeviceScalarBlockLayoutFeatures* to);

void deepcopy_VkImageStencilUsageCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageStencilUsageCreateInfo* from,
    VkImageStencilUsageCreateInfo* to);

void deepcopy_VkSamplerReductionModeCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerReductionModeCreateInfo* from,
    VkSamplerReductionModeCreateInfo* to);

void deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSamplerFilterMinmaxProperties* from,
    VkPhysicalDeviceSamplerFilterMinmaxProperties* to);

void deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVulkanMemoryModelFeatures* from,
    VkPhysicalDeviceVulkanMemoryModelFeatures* to);

void deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceImagelessFramebufferFeatures* from,
    VkPhysicalDeviceImagelessFramebufferFeatures* to);

void deepcopy_VkFramebufferAttachmentImageInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFramebufferAttachmentImageInfo* from,
    VkFramebufferAttachmentImageInfo* to);

void deepcopy_VkFramebufferAttachmentsCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFramebufferAttachmentsCreateInfo* from,
    VkFramebufferAttachmentsCreateInfo* to);

void deepcopy_VkRenderPassAttachmentBeginInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassAttachmentBeginInfo* from,
    VkRenderPassAttachmentBeginInfo* to);

void deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* from,
    VkPhysicalDeviceUniformBufferStandardLayoutFeatures* to);

void deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* from,
    VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* to);

void deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* from,
    VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* to);

void deepcopy_VkAttachmentReferenceStencilLayout(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentReferenceStencilLayout* from,
    VkAttachmentReferenceStencilLayout* to);

void deepcopy_VkAttachmentDescriptionStencilLayout(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentDescriptionStencilLayout* from,
    VkAttachmentDescriptionStencilLayout* to);

void deepcopy_VkPhysicalDeviceHostQueryResetFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceHostQueryResetFeatures* from,
    VkPhysicalDeviceHostQueryResetFeatures* to);

void deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreFeatures* from,
    VkPhysicalDeviceTimelineSemaphoreFeatures* to);

void deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTimelineSemaphoreProperties* from,
    VkPhysicalDeviceTimelineSemaphoreProperties* to);

void deepcopy_VkSemaphoreTypeCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreTypeCreateInfo* from,
    VkSemaphoreTypeCreateInfo* to);

void deepcopy_VkTimelineSemaphoreSubmitInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkTimelineSemaphoreSubmitInfo* from,
    VkTimelineSemaphoreSubmitInfo* to);

void deepcopy_VkSemaphoreWaitInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreWaitInfo* from,
    VkSemaphoreWaitInfo* to);

void deepcopy_VkSemaphoreSignalInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreSignalInfo* from,
    VkSemaphoreSignalInfo* to);

void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeatures* from,
    VkPhysicalDeviceBufferDeviceAddressFeatures* to);

void deepcopy_VkBufferDeviceAddressInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferDeviceAddressInfo* from,
    VkBufferDeviceAddressInfo* to);

void deepcopy_VkBufferOpaqueCaptureAddressCreateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferOpaqueCaptureAddressCreateInfo* from,
    VkBufferOpaqueCaptureAddressCreateInfo* to);

void deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryOpaqueCaptureAddressAllocateInfo* from,
    VkMemoryOpaqueCaptureAddressAllocateInfo* to);

void deepcopy_VkDeviceMemoryOpaqueCaptureAddressInfo(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceMemoryOpaqueCaptureAddressInfo* from,
    VkDeviceMemoryOpaqueCaptureAddressInfo* to);

#endif
#ifdef VK_KHR_surface
void deepcopy_VkSurfaceCapabilitiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceCapabilitiesKHR* from,
    VkSurfaceCapabilitiesKHR* to);

void deepcopy_VkSurfaceFormatKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceFormatKHR* from,
    VkSurfaceFormatKHR* to);

#endif
#ifdef VK_KHR_swapchain
void deepcopy_VkSwapchainCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSwapchainCreateInfoKHR* from,
    VkSwapchainCreateInfoKHR* to);

void deepcopy_VkPresentInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentInfoKHR* from,
    VkPresentInfoKHR* to);

void deepcopy_VkImageSwapchainCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageSwapchainCreateInfoKHR* from,
    VkImageSwapchainCreateInfoKHR* to);

void deepcopy_VkBindImageMemorySwapchainInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindImageMemorySwapchainInfoKHR* from,
    VkBindImageMemorySwapchainInfoKHR* to);

void deepcopy_VkAcquireNextImageInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAcquireNextImageInfoKHR* from,
    VkAcquireNextImageInfoKHR* to);

void deepcopy_VkDeviceGroupPresentCapabilitiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupPresentCapabilitiesKHR* from,
    VkDeviceGroupPresentCapabilitiesKHR* to);

void deepcopy_VkDeviceGroupPresentInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupPresentInfoKHR* from,
    VkDeviceGroupPresentInfoKHR* to);

void deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceGroupSwapchainCreateInfoKHR* from,
    VkDeviceGroupSwapchainCreateInfoKHR* to);

#endif
#ifdef VK_KHR_display
void deepcopy_VkDisplayModeParametersKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayModeParametersKHR* from,
    VkDisplayModeParametersKHR* to);

void deepcopy_VkDisplayModeCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayModeCreateInfoKHR* from,
    VkDisplayModeCreateInfoKHR* to);

void deepcopy_VkDisplayModePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayModePropertiesKHR* from,
    VkDisplayModePropertiesKHR* to);

void deepcopy_VkDisplayPlaneCapabilitiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPlaneCapabilitiesKHR* from,
    VkDisplayPlaneCapabilitiesKHR* to);

void deepcopy_VkDisplayPlanePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPlanePropertiesKHR* from,
    VkDisplayPlanePropertiesKHR* to);

void deepcopy_VkDisplayPropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPropertiesKHR* from,
    VkDisplayPropertiesKHR* to);

void deepcopy_VkDisplaySurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplaySurfaceCreateInfoKHR* from,
    VkDisplaySurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_display_swapchain
void deepcopy_VkDisplayPresentInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPresentInfoKHR* from,
    VkDisplayPresentInfoKHR* to);

#endif
#ifdef VK_KHR_xlib_surface
void deepcopy_VkXlibSurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkXlibSurfaceCreateInfoKHR* from,
    VkXlibSurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_xcb_surface
void deepcopy_VkXcbSurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkXcbSurfaceCreateInfoKHR* from,
    VkXcbSurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_wayland_surface
void deepcopy_VkWaylandSurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWaylandSurfaceCreateInfoKHR* from,
    VkWaylandSurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_android_surface
void deepcopy_VkAndroidSurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAndroidSurfaceCreateInfoKHR* from,
    VkAndroidSurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_win32_surface
void deepcopy_VkWin32SurfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWin32SurfaceCreateInfoKHR* from,
    VkWin32SurfaceCreateInfoKHR* to);

#endif
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
#endif
#ifdef VK_KHR_multiview
DEFINE_ALIAS_FUNCTION(deepcopy_VkRenderPassMultiviewCreateInfo, deepcopy_VkRenderPassMultiviewCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceMultiviewFeatures, deepcopy_VkPhysicalDeviceMultiviewFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceMultiviewProperties, deepcopy_VkPhysicalDeviceMultiviewPropertiesKHR);

#endif
#ifdef VK_KHR_get_physical_device_properties2
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceFeatures2, deepcopy_VkPhysicalDeviceFeatures2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceProperties2, deepcopy_VkPhysicalDeviceProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkFormatProperties2, deepcopy_VkFormatProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkImageFormatProperties2, deepcopy_VkImageFormatProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceImageFormatInfo2, deepcopy_VkPhysicalDeviceImageFormatInfo2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkQueueFamilyProperties2, deepcopy_VkQueueFamilyProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceMemoryProperties2, deepcopy_VkPhysicalDeviceMemoryProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSparseImageFormatProperties2, deepcopy_VkSparseImageFormatProperties2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceSparseImageFormatInfo2, deepcopy_VkPhysicalDeviceSparseImageFormatInfo2KHR);

#endif
#ifdef VK_KHR_device_group
DEFINE_ALIAS_FUNCTION(deepcopy_VkMemoryAllocateFlagsInfo, deepcopy_VkMemoryAllocateFlagsInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceGroupRenderPassBeginInfo, deepcopy_VkDeviceGroupRenderPassBeginInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceGroupCommandBufferBeginInfo, deepcopy_VkDeviceGroupCommandBufferBeginInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceGroupSubmitInfo, deepcopy_VkDeviceGroupSubmitInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceGroupBindSparseInfo, deepcopy_VkDeviceGroupBindSparseInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBindBufferMemoryDeviceGroupInfo, deepcopy_VkBindBufferMemoryDeviceGroupInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBindImageMemoryDeviceGroupInfo, deepcopy_VkBindImageMemoryDeviceGroupInfoKHR);

#endif
#ifdef VK_KHR_shader_draw_parameters
#endif
#ifdef VK_KHR_maintenance1
#endif
#ifdef VK_KHR_device_group_creation
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceGroupProperties, deepcopy_VkPhysicalDeviceGroupPropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceGroupDeviceCreateInfo, deepcopy_VkDeviceGroupDeviceCreateInfoKHR);

#endif
#ifdef VK_KHR_external_memory_capabilities
DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalMemoryProperties, deepcopy_VkExternalMemoryPropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceExternalImageFormatInfo, deepcopy_VkPhysicalDeviceExternalImageFormatInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalImageFormatProperties, deepcopy_VkExternalImageFormatPropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceExternalBufferInfo, deepcopy_VkPhysicalDeviceExternalBufferInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalBufferProperties, deepcopy_VkExternalBufferPropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceIDProperties, deepcopy_VkPhysicalDeviceIDPropertiesKHR);

#endif
#ifdef VK_KHR_external_memory
DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalMemoryImageCreateInfo, deepcopy_VkExternalMemoryImageCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalMemoryBufferCreateInfo, deepcopy_VkExternalMemoryBufferCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExportMemoryAllocateInfo, deepcopy_VkExportMemoryAllocateInfoKHR);

#endif
#ifdef VK_KHR_external_memory_win32
void deepcopy_VkImportMemoryWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportMemoryWin32HandleInfoKHR* from,
    VkImportMemoryWin32HandleInfoKHR* to);

void deepcopy_VkExportMemoryWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportMemoryWin32HandleInfoKHR* from,
    VkExportMemoryWin32HandleInfoKHR* to);

void deepcopy_VkMemoryWin32HandlePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryWin32HandlePropertiesKHR* from,
    VkMemoryWin32HandlePropertiesKHR* to);

void deepcopy_VkMemoryGetWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryGetWin32HandleInfoKHR* from,
    VkMemoryGetWin32HandleInfoKHR* to);

#endif
#ifdef VK_KHR_external_memory_fd
void deepcopy_VkImportMemoryFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportMemoryFdInfoKHR* from,
    VkImportMemoryFdInfoKHR* to);

void deepcopy_VkMemoryFdPropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryFdPropertiesKHR* from,
    VkMemoryFdPropertiesKHR* to);

void deepcopy_VkMemoryGetFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryGetFdInfoKHR* from,
    VkMemoryGetFdInfoKHR* to);

#endif
#ifdef VK_KHR_win32_keyed_mutex
void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoKHR* from,
    VkWin32KeyedMutexAcquireReleaseInfoKHR* to);

#endif
#ifdef VK_KHR_external_semaphore_capabilities
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceExternalSemaphoreInfo, deepcopy_VkPhysicalDeviceExternalSemaphoreInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalSemaphoreProperties, deepcopy_VkExternalSemaphorePropertiesKHR);

#endif
#ifdef VK_KHR_external_semaphore
DEFINE_ALIAS_FUNCTION(deepcopy_VkExportSemaphoreCreateInfo, deepcopy_VkExportSemaphoreCreateInfoKHR);

#endif
#ifdef VK_KHR_external_semaphore_win32
void deepcopy_VkImportSemaphoreWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportSemaphoreWin32HandleInfoKHR* from,
    VkImportSemaphoreWin32HandleInfoKHR* to);

void deepcopy_VkExportSemaphoreWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportSemaphoreWin32HandleInfoKHR* from,
    VkExportSemaphoreWin32HandleInfoKHR* to);

void deepcopy_VkD3D12FenceSubmitInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkD3D12FenceSubmitInfoKHR* from,
    VkD3D12FenceSubmitInfoKHR* to);

void deepcopy_VkSemaphoreGetWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreGetWin32HandleInfoKHR* from,
    VkSemaphoreGetWin32HandleInfoKHR* to);

#endif
#ifdef VK_KHR_external_semaphore_fd
void deepcopy_VkImportSemaphoreFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportSemaphoreFdInfoKHR* from,
    VkImportSemaphoreFdInfoKHR* to);

void deepcopy_VkSemaphoreGetFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSemaphoreGetFdInfoKHR* from,
    VkSemaphoreGetFdInfoKHR* to);

#endif
#ifdef VK_KHR_push_descriptor
void deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePushDescriptorPropertiesKHR* from,
    VkPhysicalDevicePushDescriptorPropertiesKHR* to);

#endif
#ifdef VK_KHR_shader_float16_int8
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceShaderFloat16Int8Features, deepcopy_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceShaderFloat16Int8Features, deepcopy_VkPhysicalDeviceFloat16Int8FeaturesKHR);

#endif
#ifdef VK_KHR_16bit_storage
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDevice16BitStorageFeatures, deepcopy_VkPhysicalDevice16BitStorageFeaturesKHR);

#endif
#ifdef VK_KHR_incremental_present
void deepcopy_VkRectLayerKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRectLayerKHR* from,
    VkRectLayerKHR* to);

void deepcopy_VkPresentRegionKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentRegionKHR* from,
    VkPresentRegionKHR* to);

void deepcopy_VkPresentRegionsKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentRegionsKHR* from,
    VkPresentRegionsKHR* to);

#endif
#ifdef VK_KHR_descriptor_update_template
DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorUpdateTemplateEntry, deepcopy_VkDescriptorUpdateTemplateEntryKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorUpdateTemplateCreateInfo, deepcopy_VkDescriptorUpdateTemplateCreateInfoKHR);

#endif
#ifdef VK_KHR_imageless_framebuffer
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceImagelessFramebufferFeatures, deepcopy_VkPhysicalDeviceImagelessFramebufferFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkFramebufferAttachmentsCreateInfo, deepcopy_VkFramebufferAttachmentsCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkFramebufferAttachmentImageInfo, deepcopy_VkFramebufferAttachmentImageInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkRenderPassAttachmentBeginInfo, deepcopy_VkRenderPassAttachmentBeginInfoKHR);

#endif
#ifdef VK_KHR_create_renderpass2
DEFINE_ALIAS_FUNCTION(deepcopy_VkRenderPassCreateInfo2, deepcopy_VkRenderPassCreateInfo2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAttachmentDescription2, deepcopy_VkAttachmentDescription2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAttachmentReference2, deepcopy_VkAttachmentReference2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSubpassDescription2, deepcopy_VkSubpassDescription2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSubpassDependency2, deepcopy_VkSubpassDependency2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSubpassBeginInfo, deepcopy_VkSubpassBeginInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSubpassEndInfo, deepcopy_VkSubpassEndInfoKHR);

#endif
#ifdef VK_KHR_shared_presentable_image
void deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSharedPresentSurfaceCapabilitiesKHR* from,
    VkSharedPresentSurfaceCapabilitiesKHR* to);

#endif
#ifdef VK_KHR_external_fence_capabilities
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceExternalFenceInfo, deepcopy_VkPhysicalDeviceExternalFenceInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkExternalFenceProperties, deepcopy_VkExternalFencePropertiesKHR);

#endif
#ifdef VK_KHR_external_fence
DEFINE_ALIAS_FUNCTION(deepcopy_VkExportFenceCreateInfo, deepcopy_VkExportFenceCreateInfoKHR);

#endif
#ifdef VK_KHR_external_fence_win32
void deepcopy_VkImportFenceWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportFenceWin32HandleInfoKHR* from,
    VkImportFenceWin32HandleInfoKHR* to);

void deepcopy_VkExportFenceWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportFenceWin32HandleInfoKHR* from,
    VkExportFenceWin32HandleInfoKHR* to);

void deepcopy_VkFenceGetWin32HandleInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFenceGetWin32HandleInfoKHR* from,
    VkFenceGetWin32HandleInfoKHR* to);

#endif
#ifdef VK_KHR_external_fence_fd
void deepcopy_VkImportFenceFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportFenceFdInfoKHR* from,
    VkImportFenceFdInfoKHR* to);

void deepcopy_VkFenceGetFdInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFenceGetFdInfoKHR* from,
    VkFenceGetFdInfoKHR* to);

#endif
#ifdef VK_KHR_performance_query
void deepcopy_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryFeaturesKHR* from,
    VkPhysicalDevicePerformanceQueryFeaturesKHR* to);

void deepcopy_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePerformanceQueryPropertiesKHR* from,
    VkPhysicalDevicePerformanceQueryPropertiesKHR* to);

void deepcopy_VkPerformanceCounterKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceCounterKHR* from,
    VkPerformanceCounterKHR* to);

void deepcopy_VkPerformanceCounterDescriptionKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceCounterDescriptionKHR* from,
    VkPerformanceCounterDescriptionKHR* to);

void deepcopy_VkQueryPoolPerformanceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueryPoolPerformanceCreateInfoKHR* from,
    VkQueryPoolPerformanceCreateInfoKHR* to);

void deepcopy_VkPerformanceCounterResultKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceCounterResultKHR* from,
    VkPerformanceCounterResultKHR* to);

void deepcopy_VkAcquireProfilingLockInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAcquireProfilingLockInfoKHR* from,
    VkAcquireProfilingLockInfoKHR* to);

void deepcopy_VkPerformanceQuerySubmitInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceQuerySubmitInfoKHR* from,
    VkPerformanceQuerySubmitInfoKHR* to);

#endif
#ifdef VK_KHR_maintenance2
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDevicePointClippingProperties, deepcopy_VkPhysicalDevicePointClippingPropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkRenderPassInputAttachmentAspectCreateInfo, deepcopy_VkRenderPassInputAttachmentAspectCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkInputAttachmentAspectReference, deepcopy_VkInputAttachmentAspectReferenceKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkImageViewUsageCreateInfo, deepcopy_VkImageViewUsageCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo, deepcopy_VkPipelineTessellationDomainOriginStateCreateInfoKHR);

#endif
#ifdef VK_KHR_get_surface_capabilities2
void deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSurfaceInfo2KHR* from,
    VkPhysicalDeviceSurfaceInfo2KHR* to);

void deepcopy_VkSurfaceCapabilities2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceCapabilities2KHR* from,
    VkSurfaceCapabilities2KHR* to);

void deepcopy_VkSurfaceFormat2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceFormat2KHR* from,
    VkSurfaceFormat2KHR* to);

#endif
#ifdef VK_KHR_variable_pointers
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceVariablePointersFeatures, deepcopy_VkPhysicalDeviceVariablePointerFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceVariablePointersFeatures, deepcopy_VkPhysicalDeviceVariablePointersFeaturesKHR);

#endif
#ifdef VK_KHR_get_display_properties2
void deepcopy_VkDisplayProperties2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayProperties2KHR* from,
    VkDisplayProperties2KHR* to);

void deepcopy_VkDisplayPlaneProperties2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPlaneProperties2KHR* from,
    VkDisplayPlaneProperties2KHR* to);

void deepcopy_VkDisplayModeProperties2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayModeProperties2KHR* from,
    VkDisplayModeProperties2KHR* to);

void deepcopy_VkDisplayPlaneInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPlaneInfo2KHR* from,
    VkDisplayPlaneInfo2KHR* to);

void deepcopy_VkDisplayPlaneCapabilities2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPlaneCapabilities2KHR* from,
    VkDisplayPlaneCapabilities2KHR* to);

#endif
#ifdef VK_KHR_dedicated_allocation
DEFINE_ALIAS_FUNCTION(deepcopy_VkMemoryDedicatedRequirements, deepcopy_VkMemoryDedicatedRequirementsKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkMemoryDedicatedAllocateInfo, deepcopy_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(deepcopy_VkBufferMemoryRequirementsInfo2, deepcopy_VkBufferMemoryRequirementsInfo2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkImageMemoryRequirementsInfo2, deepcopy_VkImageMemoryRequirementsInfo2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkImageSparseMemoryRequirementsInfo2, deepcopy_VkImageSparseMemoryRequirementsInfo2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkMemoryRequirements2, deepcopy_VkMemoryRequirements2KHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSparseImageMemoryRequirements2, deepcopy_VkSparseImageMemoryRequirements2KHR);

#endif
#ifdef VK_KHR_image_format_list
DEFINE_ALIAS_FUNCTION(deepcopy_VkImageFormatListCreateInfo, deepcopy_VkImageFormatListCreateInfoKHR);

#endif
#ifdef VK_KHR_sampler_ycbcr_conversion
DEFINE_ALIAS_FUNCTION(deepcopy_VkSamplerYcbcrConversionCreateInfo, deepcopy_VkSamplerYcbcrConversionCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSamplerYcbcrConversionInfo, deepcopy_VkSamplerYcbcrConversionInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBindImagePlaneMemoryInfo, deepcopy_VkBindImagePlaneMemoryInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkImagePlaneMemoryRequirementsInfo, deepcopy_VkImagePlaneMemoryRequirementsInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures, deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSamplerYcbcrConversionImageFormatProperties, deepcopy_VkSamplerYcbcrConversionImageFormatPropertiesKHR);

#endif
#ifdef VK_KHR_bind_memory2
DEFINE_ALIAS_FUNCTION(deepcopy_VkBindBufferMemoryInfo, deepcopy_VkBindBufferMemoryInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBindImageMemoryInfo, deepcopy_VkBindImageMemoryInfoKHR);

#endif
#ifdef VK_KHR_portability_subset
void deepcopy_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetFeaturesKHR* from,
    VkPhysicalDevicePortabilitySubsetFeaturesKHR* to);

void deepcopy_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePortabilitySubsetPropertiesKHR* from,
    VkPhysicalDevicePortabilitySubsetPropertiesKHR* to);

#endif
#ifdef VK_KHR_maintenance3
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceMaintenance3Properties, deepcopy_VkPhysicalDeviceMaintenance3PropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorSetLayoutSupport, deepcopy_VkDescriptorSetLayoutSupportKHR);

#endif
#ifdef VK_KHR_draw_indirect_count
#endif
#ifdef VK_KHR_shader_subgroup_extended_types
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, deepcopy_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR);

#endif
#ifdef VK_KHR_8bit_storage
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDevice8BitStorageFeatures, deepcopy_VkPhysicalDevice8BitStorageFeaturesKHR);

#endif
#ifdef VK_KHR_shader_atomic_int64
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceShaderAtomicInt64Features, deepcopy_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR);

#endif
#ifdef VK_KHR_shader_clock
void deepcopy_VkPhysicalDeviceShaderClockFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderClockFeaturesKHR* from,
    VkPhysicalDeviceShaderClockFeaturesKHR* to);

#endif
#ifdef VK_KHR_driver_properties
DEFINE_ALIAS_FUNCTION(deepcopy_VkConformanceVersion, deepcopy_VkConformanceVersionKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceDriverProperties, deepcopy_VkPhysicalDeviceDriverPropertiesKHR);

#endif
#ifdef VK_KHR_shader_float_controls
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceFloatControlsProperties, deepcopy_VkPhysicalDeviceFloatControlsPropertiesKHR);

#endif
#ifdef VK_KHR_depth_stencil_resolve
DEFINE_ALIAS_FUNCTION(deepcopy_VkSubpassDescriptionDepthStencilResolve, deepcopy_VkSubpassDescriptionDepthStencilResolveKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceDepthStencilResolveProperties, deepcopy_VkPhysicalDeviceDepthStencilResolvePropertiesKHR);

#endif
#ifdef VK_KHR_swapchain_mutable_format
#endif
#ifdef VK_KHR_timeline_semaphore
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceTimelineSemaphoreFeatures, deepcopy_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceTimelineSemaphoreProperties, deepcopy_VkPhysicalDeviceTimelineSemaphorePropertiesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSemaphoreTypeCreateInfo, deepcopy_VkSemaphoreTypeCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkTimelineSemaphoreSubmitInfo, deepcopy_VkTimelineSemaphoreSubmitInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSemaphoreWaitInfo, deepcopy_VkSemaphoreWaitInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkSemaphoreSignalInfo, deepcopy_VkSemaphoreSignalInfoKHR);

#endif
#ifdef VK_KHR_vulkan_memory_model
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceVulkanMemoryModelFeatures, deepcopy_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR);

#endif
#ifdef VK_KHR_shader_terminate_invocation
void deepcopy_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* from,
    VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* to);

#endif
#ifdef VK_KHR_fragment_shading_rate
void deepcopy_VkFragmentShadingRateAttachmentInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFragmentShadingRateAttachmentInfoKHR* from,
    VkFragmentShadingRateAttachmentInfoKHR* to);

void deepcopy_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineFragmentShadingRateStateCreateInfoKHR* from,
    VkPipelineFragmentShadingRateStateCreateInfoKHR* to);

void deepcopy_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* from,
    VkPhysicalDeviceFragmentShadingRateFeaturesKHR* to);

void deepcopy_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* from,
    VkPhysicalDeviceFragmentShadingRatePropertiesKHR* to);

void deepcopy_VkPhysicalDeviceFragmentShadingRateKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateKHR* from,
    VkPhysicalDeviceFragmentShadingRateKHR* to);

#endif
#ifdef VK_KHR_spirv_1_4
#endif
#ifdef VK_KHR_surface_protected_capabilities
void deepcopy_VkSurfaceProtectedCapabilitiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceProtectedCapabilitiesKHR* from,
    VkSurfaceProtectedCapabilitiesKHR* to);

#endif
#ifdef VK_KHR_separate_depth_stencil_layouts
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, deepcopy_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAttachmentReferenceStencilLayout, deepcopy_VkAttachmentReferenceStencilLayoutKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAttachmentDescriptionStencilLayout, deepcopy_VkAttachmentDescriptionStencilLayoutKHR);

#endif
#ifdef VK_KHR_uniform_buffer_standard_layout
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeatures, deepcopy_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR);

#endif
#ifdef VK_KHR_buffer_device_address
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceBufferDeviceAddressFeatures, deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBufferDeviceAddressInfo, deepcopy_VkBufferDeviceAddressInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBufferOpaqueCaptureAddressCreateInfo, deepcopy_VkBufferOpaqueCaptureAddressCreateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfo, deepcopy_VkMemoryOpaqueCaptureAddressAllocateInfoKHR);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDeviceMemoryOpaqueCaptureAddressInfo, deepcopy_VkDeviceMemoryOpaqueCaptureAddressInfoKHR);

#endif
#ifdef VK_KHR_deferred_host_operations
#endif
#ifdef VK_KHR_pipeline_executable_properties
void deepcopy_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* from,
    VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* to);

void deepcopy_VkPipelineInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineInfoKHR* from,
    VkPipelineInfoKHR* to);

void deepcopy_VkPipelineExecutablePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineExecutablePropertiesKHR* from,
    VkPipelineExecutablePropertiesKHR* to);

void deepcopy_VkPipelineExecutableInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineExecutableInfoKHR* from,
    VkPipelineExecutableInfoKHR* to);

void deepcopy_VkPipelineExecutableStatisticValueKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineExecutableStatisticValueKHR* from,
    VkPipelineExecutableStatisticValueKHR* to);

void deepcopy_VkPipelineExecutableStatisticKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineExecutableStatisticKHR* from,
    VkPipelineExecutableStatisticKHR* to);

void deepcopy_VkPipelineExecutableInternalRepresentationKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineExecutableInternalRepresentationKHR* from,
    VkPipelineExecutableInternalRepresentationKHR* to);

#endif
#ifdef VK_KHR_pipeline_library
void deepcopy_VkPipelineLibraryCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineLibraryCreateInfoKHR* from,
    VkPipelineLibraryCreateInfoKHR* to);

#endif
#ifdef VK_KHR_shader_non_semantic_info
#endif
#ifdef VK_KHR_copy_commands2
void deepcopy_VkBufferCopy2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferCopy2KHR* from,
    VkBufferCopy2KHR* to);

void deepcopy_VkCopyBufferInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyBufferInfo2KHR* from,
    VkCopyBufferInfo2KHR* to);

void deepcopy_VkImageCopy2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageCopy2KHR* from,
    VkImageCopy2KHR* to);

void deepcopy_VkCopyImageInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyImageInfo2KHR* from,
    VkCopyImageInfo2KHR* to);

void deepcopy_VkBufferImageCopy2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferImageCopy2KHR* from,
    VkBufferImageCopy2KHR* to);

void deepcopy_VkCopyBufferToImageInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyBufferToImageInfo2KHR* from,
    VkCopyBufferToImageInfo2KHR* to);

void deepcopy_VkCopyImageToBufferInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyImageToBufferInfo2KHR* from,
    VkCopyImageToBufferInfo2KHR* to);

void deepcopy_VkImageBlit2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageBlit2KHR* from,
    VkImageBlit2KHR* to);

void deepcopy_VkBlitImageInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBlitImageInfo2KHR* from,
    VkBlitImageInfo2KHR* to);

void deepcopy_VkImageResolve2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageResolve2KHR* from,
    VkImageResolve2KHR* to);

void deepcopy_VkResolveImageInfo2KHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkResolveImageInfo2KHR* from,
    VkResolveImageInfo2KHR* to);

#endif
#ifdef VK_ANDROID_native_buffer
void deepcopy_VkNativeBufferANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkNativeBufferANDROID* from,
    VkNativeBufferANDROID* to);

#endif
#ifdef VK_EXT_debug_report
void deepcopy_VkDebugReportCallbackCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugReportCallbackCreateInfoEXT* from,
    VkDebugReportCallbackCreateInfoEXT* to);

#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 deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationStateRasterizationOrderAMD* from,
    VkPipelineRasterizationStateRasterizationOrderAMD* to);

#endif
#ifdef VK_AMD_shader_trinary_minmax
#endif
#ifdef VK_AMD_shader_explicit_vertex_parameter
#endif
#ifdef VK_EXT_debug_marker
void deepcopy_VkDebugMarkerObjectNameInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugMarkerObjectNameInfoEXT* from,
    VkDebugMarkerObjectNameInfoEXT* to);

void deepcopy_VkDebugMarkerObjectTagInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugMarkerObjectTagInfoEXT* from,
    VkDebugMarkerObjectTagInfoEXT* to);

void deepcopy_VkDebugMarkerMarkerInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugMarkerMarkerInfoEXT* from,
    VkDebugMarkerMarkerInfoEXT* to);

#endif
#ifdef VK_AMD_gcn_shader
#endif
#ifdef VK_NV_dedicated_allocation
void deepcopy_VkDedicatedAllocationImageCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDedicatedAllocationImageCreateInfoNV* from,
    VkDedicatedAllocationImageCreateInfoNV* to);

void deepcopy_VkDedicatedAllocationBufferCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDedicatedAllocationBufferCreateInfoNV* from,
    VkDedicatedAllocationBufferCreateInfoNV* to);

void deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDedicatedAllocationMemoryAllocateInfoNV* from,
    VkDedicatedAllocationMemoryAllocateInfoNV* to);

#endif
#ifdef VK_EXT_transform_feedback
void deepcopy_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTransformFeedbackFeaturesEXT* from,
    VkPhysicalDeviceTransformFeedbackFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTransformFeedbackPropertiesEXT* from,
    VkPhysicalDeviceTransformFeedbackPropertiesEXT* to);

void deepcopy_VkPipelineRasterizationStateStreamCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationStateStreamCreateInfoEXT* from,
    VkPipelineRasterizationStateStreamCreateInfoEXT* to);

#endif
#ifdef VK_NVX_image_view_handle
void deepcopy_VkImageViewHandleInfoNVX(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageViewHandleInfoNVX* from,
    VkImageViewHandleInfoNVX* to);

void deepcopy_VkImageViewAddressPropertiesNVX(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageViewAddressPropertiesNVX* from,
    VkImageViewAddressPropertiesNVX* to);

#endif
#ifdef VK_AMD_draw_indirect_count
#endif
#ifdef VK_AMD_negative_viewport_height
#endif
#ifdef VK_AMD_gpu_shader_half_float
#endif
#ifdef VK_AMD_shader_ballot
#endif
#ifdef VK_AMD_texture_gather_bias_lod
void deepcopy_VkTextureLODGatherFormatPropertiesAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkTextureLODGatherFormatPropertiesAMD* from,
    VkTextureLODGatherFormatPropertiesAMD* to);

#endif
#ifdef VK_AMD_shader_info
void deepcopy_VkShaderResourceUsageAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkShaderResourceUsageAMD* from,
    VkShaderResourceUsageAMD* to);

void deepcopy_VkShaderStatisticsInfoAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkShaderStatisticsInfoAMD* from,
    VkShaderStatisticsInfoAMD* to);

#endif
#ifdef VK_AMD_shader_image_load_store_lod
#endif
#ifdef VK_GGP_stream_descriptor_surface
void deepcopy_VkStreamDescriptorSurfaceCreateInfoGGP(
    Allocator* alloc,
    VkStructureType rootType,
    const VkStreamDescriptorSurfaceCreateInfoGGP* from,
    VkStreamDescriptorSurfaceCreateInfoGGP* to);

#endif
#ifdef VK_NV_corner_sampled_image
void deepcopy_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCornerSampledImageFeaturesNV* from,
    VkPhysicalDeviceCornerSampledImageFeaturesNV* to);

#endif
#ifdef VK_IMG_format_pvrtc
#endif
#ifdef VK_NV_external_memory_capabilities
void deepcopy_VkExternalImageFormatPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalImageFormatPropertiesNV* from,
    VkExternalImageFormatPropertiesNV* to);

#endif
#ifdef VK_NV_external_memory
void deepcopy_VkExternalMemoryImageCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalMemoryImageCreateInfoNV* from,
    VkExternalMemoryImageCreateInfoNV* to);

void deepcopy_VkExportMemoryAllocateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportMemoryAllocateInfoNV* from,
    VkExportMemoryAllocateInfoNV* to);

#endif
#ifdef VK_NV_external_memory_win32
void deepcopy_VkImportMemoryWin32HandleInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportMemoryWin32HandleInfoNV* from,
    VkImportMemoryWin32HandleInfoNV* to);

void deepcopy_VkExportMemoryWin32HandleInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExportMemoryWin32HandleInfoNV* from,
    VkExportMemoryWin32HandleInfoNV* to);

#endif
#ifdef VK_NV_win32_keyed_mutex
void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWin32KeyedMutexAcquireReleaseInfoNV* from,
    VkWin32KeyedMutexAcquireReleaseInfoNV* to);

#endif
#ifdef VK_EXT_validation_flags
void deepcopy_VkValidationFlagsEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkValidationFlagsEXT* from,
    VkValidationFlagsEXT* to);

#endif
#ifdef VK_NN_vi_surface
void deepcopy_VkViSurfaceCreateInfoNN(
    Allocator* alloc,
    VkStructureType rootType,
    const VkViSurfaceCreateInfoNN* from,
    VkViSurfaceCreateInfoNN* to);

#endif
#ifdef VK_EXT_shader_subgroup_ballot
#endif
#ifdef VK_EXT_shader_subgroup_vote
#endif
#ifdef VK_EXT_texture_compression_astc_hdr
void deepcopy_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* from,
    VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* to);

#endif
#ifdef VK_EXT_astc_decode_mode
void deepcopy_VkImageViewASTCDecodeModeEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageViewASTCDecodeModeEXT* from,
    VkImageViewASTCDecodeModeEXT* to);

void deepcopy_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceASTCDecodeFeaturesEXT* from,
    VkPhysicalDeviceASTCDecodeFeaturesEXT* to);

#endif
#ifdef VK_EXT_conditional_rendering
void deepcopy_VkConditionalRenderingBeginInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkConditionalRenderingBeginInfoEXT* from,
    VkConditionalRenderingBeginInfoEXT* to);

void deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceConditionalRenderingFeaturesEXT* from,
    VkPhysicalDeviceConditionalRenderingFeaturesEXT* to);

void deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandBufferInheritanceConditionalRenderingInfoEXT* from,
    VkCommandBufferInheritanceConditionalRenderingInfoEXT* to);

#endif
#ifdef VK_NV_clip_space_w_scaling
void deepcopy_VkViewportWScalingNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkViewportWScalingNV* from,
    VkViewportWScalingNV* to);

void deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportWScalingStateCreateInfoNV* from,
    VkPipelineViewportWScalingStateCreateInfoNV* to);

#endif
#ifdef VK_EXT_direct_mode_display
#endif
#ifdef VK_EXT_acquire_xlib_display
#endif
#ifdef VK_EXT_display_surface_counter
void deepcopy_VkSurfaceCapabilities2EXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceCapabilities2EXT* from,
    VkSurfaceCapabilities2EXT* to);

#endif
#ifdef VK_EXT_display_control
void deepcopy_VkDisplayPowerInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayPowerInfoEXT* from,
    VkDisplayPowerInfoEXT* to);

void deepcopy_VkDeviceEventInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceEventInfoEXT* from,
    VkDeviceEventInfoEXT* to);

void deepcopy_VkDisplayEventInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayEventInfoEXT* from,
    VkDisplayEventInfoEXT* to);

void deepcopy_VkSwapchainCounterCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSwapchainCounterCreateInfoEXT* from,
    VkSwapchainCounterCreateInfoEXT* to);

#endif
#ifdef VK_GOOGLE_display_timing
void deepcopy_VkRefreshCycleDurationGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRefreshCycleDurationGOOGLE* from,
    VkRefreshCycleDurationGOOGLE* to);

void deepcopy_VkPastPresentationTimingGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPastPresentationTimingGOOGLE* from,
    VkPastPresentationTimingGOOGLE* to);

void deepcopy_VkPresentTimeGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentTimeGOOGLE* from,
    VkPresentTimeGOOGLE* to);

void deepcopy_VkPresentTimesInfoGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentTimesInfoGOOGLE* from,
    VkPresentTimesInfoGOOGLE* to);

#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 deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* from,
    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* to);

#endif
#ifdef VK_NV_viewport_swizzle
void deepcopy_VkViewportSwizzleNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkViewportSwizzleNV* from,
    VkViewportSwizzleNV* to);

void deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportSwizzleStateCreateInfoNV* from,
    VkPipelineViewportSwizzleStateCreateInfoNV* to);

#endif
#ifdef VK_EXT_discard_rectangles
void deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDiscardRectanglePropertiesEXT* from,
    VkPhysicalDeviceDiscardRectanglePropertiesEXT* to);

void deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineDiscardRectangleStateCreateInfoEXT* from,
    VkPipelineDiscardRectangleStateCreateInfoEXT* to);

#endif
#ifdef VK_EXT_conservative_rasterization
void deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* from,
    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* to);

void deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationConservativeStateCreateInfoEXT* from,
    VkPipelineRasterizationConservativeStateCreateInfoEXT* to);

#endif
#ifdef VK_EXT_depth_clip_enable
void deepcopy_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDepthClipEnableFeaturesEXT* from,
    VkPhysicalDeviceDepthClipEnableFeaturesEXT* to);

void deepcopy_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationDepthClipStateCreateInfoEXT* from,
    VkPipelineRasterizationDepthClipStateCreateInfoEXT* to);

#endif
#ifdef VK_EXT_swapchain_colorspace
#endif
#ifdef VK_EXT_hdr_metadata
void deepcopy_VkXYColorEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkXYColorEXT* from,
    VkXYColorEXT* to);

void deepcopy_VkHdrMetadataEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkHdrMetadataEXT* from,
    VkHdrMetadataEXT* to);

#endif
#ifdef VK_MVK_ios_surface
void deepcopy_VkIOSSurfaceCreateInfoMVK(
    Allocator* alloc,
    VkStructureType rootType,
    const VkIOSSurfaceCreateInfoMVK* from,
    VkIOSSurfaceCreateInfoMVK* to);

#endif
#ifdef VK_MVK_macos_surface
void deepcopy_VkMacOSSurfaceCreateInfoMVK(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMacOSSurfaceCreateInfoMVK* from,
    VkMacOSSurfaceCreateInfoMVK* to);

#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 deepcopy_VkDebugUtilsLabelEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugUtilsLabelEXT* from,
    VkDebugUtilsLabelEXT* to);

void deepcopy_VkDebugUtilsObjectNameInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugUtilsObjectNameInfoEXT* from,
    VkDebugUtilsObjectNameInfoEXT* to);

void deepcopy_VkDebugUtilsMessengerCallbackDataEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugUtilsMessengerCallbackDataEXT* from,
    VkDebugUtilsMessengerCallbackDataEXT* to);

void deepcopy_VkDebugUtilsMessengerCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugUtilsMessengerCreateInfoEXT* from,
    VkDebugUtilsMessengerCreateInfoEXT* to);

void deepcopy_VkDebugUtilsObjectTagInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDebugUtilsObjectTagInfoEXT* from,
    VkDebugUtilsObjectTagInfoEXT* to);

#endif
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
void deepcopy_VkAndroidHardwareBufferUsageANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAndroidHardwareBufferUsageANDROID* from,
    VkAndroidHardwareBufferUsageANDROID* to);

void deepcopy_VkAndroidHardwareBufferPropertiesANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAndroidHardwareBufferPropertiesANDROID* from,
    VkAndroidHardwareBufferPropertiesANDROID* to);

void deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAndroidHardwareBufferFormatPropertiesANDROID* from,
    VkAndroidHardwareBufferFormatPropertiesANDROID* to);

void deepcopy_VkImportAndroidHardwareBufferInfoANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportAndroidHardwareBufferInfoANDROID* from,
    VkImportAndroidHardwareBufferInfoANDROID* to);

void deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryGetAndroidHardwareBufferInfoANDROID* from,
    VkMemoryGetAndroidHardwareBufferInfoANDROID* to);

void deepcopy_VkExternalFormatANDROID(
    Allocator* alloc,
    VkStructureType rootType,
    const VkExternalFormatANDROID* from,
    VkExternalFormatANDROID* to);

#endif
#ifdef VK_EXT_sampler_filter_minmax
DEFINE_ALIAS_FUNCTION(deepcopy_VkSamplerReductionModeCreateInfo, deepcopy_VkSamplerReductionModeCreateInfoEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceSamplerFilterMinmaxProperties, deepcopy_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 deepcopy_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* from,
    VkPhysicalDeviceInlineUniformBlockFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* from,
    VkPhysicalDeviceInlineUniformBlockPropertiesEXT* to);

void deepcopy_VkWriteDescriptorSetInlineUniformBlockEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWriteDescriptorSetInlineUniformBlockEXT* from,
    VkWriteDescriptorSetInlineUniformBlockEXT* to);

void deepcopy_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* from,
    VkDescriptorPoolInlineUniformBlockCreateInfoEXT* to);

#endif
#ifdef VK_EXT_shader_stencil_export
#endif
#ifdef VK_EXT_sample_locations
void deepcopy_VkSampleLocationEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSampleLocationEXT* from,
    VkSampleLocationEXT* to);

void deepcopy_VkSampleLocationsInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSampleLocationsInfoEXT* from,
    VkSampleLocationsInfoEXT* to);

void deepcopy_VkAttachmentSampleLocationsEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAttachmentSampleLocationsEXT* from,
    VkAttachmentSampleLocationsEXT* to);

void deepcopy_VkSubpassSampleLocationsEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSubpassSampleLocationsEXT* from,
    VkSubpassSampleLocationsEXT* to);

void deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassSampleLocationsBeginInfoEXT* from,
    VkRenderPassSampleLocationsBeginInfoEXT* to);

void deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineSampleLocationsStateCreateInfoEXT* from,
    VkPipelineSampleLocationsStateCreateInfoEXT* to);

void deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSampleLocationsPropertiesEXT* from,
    VkPhysicalDeviceSampleLocationsPropertiesEXT* to);

void deepcopy_VkMultisamplePropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMultisamplePropertiesEXT* from,
    VkMultisamplePropertiesEXT* to);

#endif
#ifdef VK_EXT_blend_operation_advanced
void deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* from,
    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* from,
    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* to);

void deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineColorBlendAdvancedStateCreateInfoEXT* from,
    VkPipelineColorBlendAdvancedStateCreateInfoEXT* to);

#endif
#ifdef VK_NV_fragment_coverage_to_color
void deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCoverageToColorStateCreateInfoNV* from,
    VkPipelineCoverageToColorStateCreateInfoNV* to);

#endif
#ifdef VK_NV_framebuffer_mixed_samples
void deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCoverageModulationStateCreateInfoNV* from,
    VkPipelineCoverageModulationStateCreateInfoNV* to);

#endif
#ifdef VK_NV_fill_rectangle
#endif
#ifdef VK_NV_shader_sm_builtins
void deepcopy_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* from,
    VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* to);

void deepcopy_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* from,
    VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* to);

#endif
#ifdef VK_EXT_post_depth_coverage
#endif
#ifdef VK_EXT_image_drm_format_modifier
void deepcopy_VkDrmFormatModifierPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDrmFormatModifierPropertiesEXT* from,
    VkDrmFormatModifierPropertiesEXT* to);

void deepcopy_VkDrmFormatModifierPropertiesListEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDrmFormatModifierPropertiesListEXT* from,
    VkDrmFormatModifierPropertiesListEXT* to);

void deepcopy_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* from,
    VkPhysicalDeviceImageDrmFormatModifierInfoEXT* to);

void deepcopy_VkImageDrmFormatModifierListCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageDrmFormatModifierListCreateInfoEXT* from,
    VkImageDrmFormatModifierListCreateInfoEXT* to);

void deepcopy_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageDrmFormatModifierExplicitCreateInfoEXT* from,
    VkImageDrmFormatModifierExplicitCreateInfoEXT* to);

void deepcopy_VkImageDrmFormatModifierPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImageDrmFormatModifierPropertiesEXT* from,
    VkImageDrmFormatModifierPropertiesEXT* to);

#endif
#ifdef VK_EXT_validation_cache
void deepcopy_VkValidationCacheCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkValidationCacheCreateInfoEXT* from,
    VkValidationCacheCreateInfoEXT* to);

void deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkShaderModuleValidationCacheCreateInfoEXT* from,
    VkShaderModuleValidationCacheCreateInfoEXT* to);

#endif
#ifdef VK_EXT_descriptor_indexing
DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfo, deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceDescriptorIndexingFeatures, deepcopy_VkPhysicalDeviceDescriptorIndexingFeaturesEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceDescriptorIndexingProperties, deepcopy_VkPhysicalDeviceDescriptorIndexingPropertiesEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfo, deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupport, deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT);

#endif
#ifdef VK_EXT_shader_viewport_index_layer
#endif
#ifdef VK_NV_shading_rate_image
void deepcopy_VkShadingRatePaletteNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkShadingRatePaletteNV* from,
    VkShadingRatePaletteNV* to);

void deepcopy_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportShadingRateImageStateCreateInfoNV* from,
    VkPipelineViewportShadingRateImageStateCreateInfoNV* to);

void deepcopy_VkPhysicalDeviceShadingRateImageFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImageFeaturesNV* from,
    VkPhysicalDeviceShadingRateImageFeaturesNV* to);

void deepcopy_VkPhysicalDeviceShadingRateImagePropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShadingRateImagePropertiesNV* from,
    VkPhysicalDeviceShadingRateImagePropertiesNV* to);

void deepcopy_VkCoarseSampleLocationNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCoarseSampleLocationNV* from,
    VkCoarseSampleLocationNV* to);

void deepcopy_VkCoarseSampleOrderCustomNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCoarseSampleOrderCustomNV* from,
    VkCoarseSampleOrderCustomNV* to);

void deepcopy_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* from,
    VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* to);

#endif
#ifdef VK_NV_ray_tracing
void deepcopy_VkRayTracingShaderGroupCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoNV* from,
    VkRayTracingShaderGroupCreateInfoNV* to);

void deepcopy_VkRayTracingPipelineCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoNV* from,
    VkRayTracingPipelineCreateInfoNV* to);

void deepcopy_VkGeometryTrianglesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeometryTrianglesNV* from,
    VkGeometryTrianglesNV* to);

void deepcopy_VkGeometryAABBNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeometryAABBNV* from,
    VkGeometryAABBNV* to);

void deepcopy_VkGeometryDataNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeometryDataNV* from,
    VkGeometryDataNV* to);

void deepcopy_VkGeometryNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeometryNV* from,
    VkGeometryNV* to);

void deepcopy_VkAccelerationStructureInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureInfoNV* from,
    VkAccelerationStructureInfoNV* to);

void deepcopy_VkAccelerationStructureCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureCreateInfoNV* from,
    VkAccelerationStructureCreateInfoNV* to);

void deepcopy_VkBindAccelerationStructureMemoryInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindAccelerationStructureMemoryInfoNV* from,
    VkBindAccelerationStructureMemoryInfoNV* to);

void deepcopy_VkWriteDescriptorSetAccelerationStructureNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureNV* from,
    VkWriteDescriptorSetAccelerationStructureNV* to);

void deepcopy_VkAccelerationStructureMemoryRequirementsInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureMemoryRequirementsInfoNV* from,
    VkAccelerationStructureMemoryRequirementsInfoNV* to);

void deepcopy_VkPhysicalDeviceRayTracingPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPropertiesNV* from,
    VkPhysicalDeviceRayTracingPropertiesNV* to);

void deepcopy_VkTransformMatrixKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkTransformMatrixKHR* from,
    VkTransformMatrixKHR* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkTransformMatrixKHR, deepcopy_VkTransformMatrixNV);

void deepcopy_VkAabbPositionsKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAabbPositionsKHR* from,
    VkAabbPositionsKHR* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAabbPositionsKHR, deepcopy_VkAabbPositionsNV);

void deepcopy_VkAccelerationStructureInstanceKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureInstanceKHR* from,
    VkAccelerationStructureInstanceKHR* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkAccelerationStructureInstanceKHR, deepcopy_VkAccelerationStructureInstanceNV);

#endif
#ifdef VK_NV_representative_fragment_test
void deepcopy_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* from,
    VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* to);

void deepcopy_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* from,
    VkPipelineRepresentativeFragmentTestStateCreateInfoNV* to);

#endif
#ifdef VK_EXT_filter_cubic
void deepcopy_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceImageViewImageFormatInfoEXT* from,
    VkPhysicalDeviceImageViewImageFormatInfoEXT* to);

void deepcopy_VkFilterCubicImageViewImageFormatPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFilterCubicImageViewImageFormatPropertiesEXT* from,
    VkFilterCubicImageViewImageFormatPropertiesEXT* to);

#endif
#ifdef VK_QCOM_render_pass_shader_resolve
#endif
#ifdef VK_EXT_global_priority
void deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceQueueGlobalPriorityCreateInfoEXT* from,
    VkDeviceQueueGlobalPriorityCreateInfoEXT* to);

#endif
#ifdef VK_EXT_external_memory_host
void deepcopy_VkImportMemoryHostPointerInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportMemoryHostPointerInfoEXT* from,
    VkImportMemoryHostPointerInfoEXT* to);

void deepcopy_VkMemoryHostPointerPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryHostPointerPropertiesEXT* from,
    VkMemoryHostPointerPropertiesEXT* to);

void deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* from,
    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* to);

#endif
#ifdef VK_AMD_buffer_marker
#endif
#ifdef VK_AMD_pipeline_compiler_control
void deepcopy_VkPipelineCompilerControlCreateInfoAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCompilerControlCreateInfoAMD* from,
    VkPipelineCompilerControlCreateInfoAMD* to);

#endif
#ifdef VK_EXT_calibrated_timestamps
void deepcopy_VkCalibratedTimestampInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCalibratedTimestampInfoEXT* from,
    VkCalibratedTimestampInfoEXT* to);

#endif
#ifdef VK_AMD_shader_core_properties
void deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderCorePropertiesAMD* from,
    VkPhysicalDeviceShaderCorePropertiesAMD* to);

#endif
#ifdef VK_AMD_memory_overallocation_behavior
void deepcopy_VkDeviceMemoryOverallocationCreateInfoAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceMemoryOverallocationCreateInfoAMD* from,
    VkDeviceMemoryOverallocationCreateInfoAMD* to);

#endif
#ifdef VK_EXT_vertex_attribute_divisor
void deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* from,
    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* to);

void deepcopy_VkVertexInputBindingDivisorDescriptionEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkVertexInputBindingDivisorDescriptionEXT* from,
    VkVertexInputBindingDivisorDescriptionEXT* to);

void deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineVertexInputDivisorStateCreateInfoEXT* from,
    VkPipelineVertexInputDivisorStateCreateInfoEXT* to);

void deepcopy_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* from,
    VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* to);

#endif
#ifdef VK_GGP_frame_token
void deepcopy_VkPresentFrameTokenGGP(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPresentFrameTokenGGP* from,
    VkPresentFrameTokenGGP* to);

#endif
#ifdef VK_EXT_pipeline_creation_feedback
void deepcopy_VkPipelineCreationFeedbackEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCreationFeedbackEXT* from,
    VkPipelineCreationFeedbackEXT* to);

void deepcopy_VkPipelineCreationFeedbackCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCreationFeedbackCreateInfoEXT* from,
    VkPipelineCreationFeedbackCreateInfoEXT* to);

#endif
#ifdef VK_NV_shader_subgroup_partitioned
#endif
#ifdef VK_NV_compute_shader_derivatives
void deepcopy_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* from,
    VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* to);

#endif
#ifdef VK_NV_mesh_shader
void deepcopy_VkPhysicalDeviceMeshShaderFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderFeaturesNV* from,
    VkPhysicalDeviceMeshShaderFeaturesNV* to);

void deepcopy_VkPhysicalDeviceMeshShaderPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMeshShaderPropertiesNV* from,
    VkPhysicalDeviceMeshShaderPropertiesNV* to);

void deepcopy_VkDrawMeshTasksIndirectCommandNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDrawMeshTasksIndirectCommandNV* from,
    VkDrawMeshTasksIndirectCommandNV* to);

#endif
#ifdef VK_NV_fragment_shader_barycentric
void deepcopy_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* from,
    VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* to);

#endif
#ifdef VK_NV_shader_image_footprint
void deepcopy_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderImageFootprintFeaturesNV* from,
    VkPhysicalDeviceShaderImageFootprintFeaturesNV* to);

#endif
#ifdef VK_NV_scissor_exclusive
void deepcopy_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineViewportExclusiveScissorStateCreateInfoNV* from,
    VkPipelineViewportExclusiveScissorStateCreateInfoNV* to);

void deepcopy_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExclusiveScissorFeaturesNV* from,
    VkPhysicalDeviceExclusiveScissorFeaturesNV* to);

#endif
#ifdef VK_NV_device_diagnostic_checkpoints
void deepcopy_VkQueueFamilyCheckpointPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueueFamilyCheckpointPropertiesNV* from,
    VkQueueFamilyCheckpointPropertiesNV* to);

void deepcopy_VkCheckpointDataNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCheckpointDataNV* from,
    VkCheckpointDataNV* to);

#endif
#ifdef VK_INTEL_shader_integer_functions2
void deepcopy_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* from,
    VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* to);

#endif
#ifdef VK_INTEL_performance_query
void deepcopy_VkPerformanceValueDataINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceValueDataINTEL* from,
    VkPerformanceValueDataINTEL* to);

void deepcopy_VkPerformanceValueINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceValueINTEL* from,
    VkPerformanceValueINTEL* to);

void deepcopy_VkInitializePerformanceApiInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkInitializePerformanceApiInfoINTEL* from,
    VkInitializePerformanceApiInfoINTEL* to);

void deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkQueryPoolPerformanceQueryCreateInfoINTEL* from,
    VkQueryPoolPerformanceQueryCreateInfoINTEL* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkQueryPoolPerformanceQueryCreateInfoINTEL, deepcopy_VkQueryPoolCreateInfoINTEL);

void deepcopy_VkPerformanceMarkerInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceMarkerInfoINTEL* from,
    VkPerformanceMarkerInfoINTEL* to);

void deepcopy_VkPerformanceStreamMarkerInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceStreamMarkerInfoINTEL* from,
    VkPerformanceStreamMarkerInfoINTEL* to);

void deepcopy_VkPerformanceOverrideInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceOverrideInfoINTEL* from,
    VkPerformanceOverrideInfoINTEL* to);

void deepcopy_VkPerformanceConfigurationAcquireInfoINTEL(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPerformanceConfigurationAcquireInfoINTEL* from,
    VkPerformanceConfigurationAcquireInfoINTEL* to);

#endif
#ifdef VK_EXT_pci_bus_info
void deepcopy_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePCIBusInfoPropertiesEXT* from,
    VkPhysicalDevicePCIBusInfoPropertiesEXT* to);

#endif
#ifdef VK_AMD_display_native_hdr
void deepcopy_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDisplayNativeHdrSurfaceCapabilitiesAMD* from,
    VkDisplayNativeHdrSurfaceCapabilitiesAMD* to);

void deepcopy_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSwapchainDisplayNativeHdrCreateInfoAMD* from,
    VkSwapchainDisplayNativeHdrCreateInfoAMD* to);

#endif
#ifdef VK_FUCHSIA_imagepipe_surface
void deepcopy_VkImagePipeSurfaceCreateInfoFUCHSIA(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImagePipeSurfaceCreateInfoFUCHSIA* from,
    VkImagePipeSurfaceCreateInfoFUCHSIA* to);

#endif
#ifdef VK_EXT_metal_surface
void deepcopy_VkMetalSurfaceCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMetalSurfaceCreateInfoEXT* from,
    VkMetalSurfaceCreateInfoEXT* to);

#endif
#ifdef VK_EXT_fragment_density_map
void deepcopy_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* from,
    VkPhysicalDeviceFragmentDensityMapFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* from,
    VkPhysicalDeviceFragmentDensityMapPropertiesEXT* to);

void deepcopy_VkRenderPassFragmentDensityMapCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassFragmentDensityMapCreateInfoEXT* from,
    VkRenderPassFragmentDensityMapCreateInfoEXT* to);

#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceScalarBlockLayoutFeatures, deepcopy_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT);

#endif
#ifdef VK_GOOGLE_hlsl_functionality1
#endif
#ifdef VK_GOOGLE_decorate_string
#endif
#ifdef VK_EXT_subgroup_size_control
void deepcopy_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* from,
    VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* from,
    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* to);

void deepcopy_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* from,
    VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* to);

#endif
#ifdef VK_AMD_shader_core_properties2
void deepcopy_VkPhysicalDeviceShaderCoreProperties2AMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderCoreProperties2AMD* from,
    VkPhysicalDeviceShaderCoreProperties2AMD* to);

#endif
#ifdef VK_AMD_device_coherent_memory
void deepcopy_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCoherentMemoryFeaturesAMD* from,
    VkPhysicalDeviceCoherentMemoryFeaturesAMD* to);

#endif
#ifdef VK_EXT_shader_image_atomic_int64
void deepcopy_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* from,
    VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* to);

#endif
#ifdef VK_EXT_memory_budget
void deepcopy_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryBudgetPropertiesEXT* from,
    VkPhysicalDeviceMemoryBudgetPropertiesEXT* to);

#endif
#ifdef VK_EXT_memory_priority
void deepcopy_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceMemoryPriorityFeaturesEXT* from,
    VkPhysicalDeviceMemoryPriorityFeaturesEXT* to);

void deepcopy_VkMemoryPriorityAllocateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkMemoryPriorityAllocateInfoEXT* from,
    VkMemoryPriorityAllocateInfoEXT* to);

#endif
#ifdef VK_NV_dedicated_allocation_image_aliasing
void deepcopy_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* from,
    VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* to);

#endif
#ifdef VK_EXT_buffer_device_address
void deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* from,
    VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* to);

DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, deepcopy_VkPhysicalDeviceBufferAddressFeaturesEXT);

DEFINE_ALIAS_FUNCTION(deepcopy_VkBufferDeviceAddressInfo, deepcopy_VkBufferDeviceAddressInfoEXT);

void deepcopy_VkBufferDeviceAddressCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBufferDeviceAddressCreateInfoEXT* from,
    VkBufferDeviceAddressCreateInfoEXT* to);

#endif
#ifdef VK_EXT_tooling_info
void deepcopy_VkPhysicalDeviceToolPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceToolPropertiesEXT* from,
    VkPhysicalDeviceToolPropertiesEXT* to);

#endif
#ifdef VK_EXT_separate_stencil_usage
DEFINE_ALIAS_FUNCTION(deepcopy_VkImageStencilUsageCreateInfo, deepcopy_VkImageStencilUsageCreateInfoEXT);

#endif
#ifdef VK_EXT_validation_features
void deepcopy_VkValidationFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkValidationFeaturesEXT* from,
    VkValidationFeaturesEXT* to);

#endif
#ifdef VK_NV_cooperative_matrix
void deepcopy_VkCooperativeMatrixPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCooperativeMatrixPropertiesNV* from,
    VkCooperativeMatrixPropertiesNV* to);

void deepcopy_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixFeaturesNV* from,
    VkPhysicalDeviceCooperativeMatrixFeaturesNV* to);

void deepcopy_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCooperativeMatrixPropertiesNV* from,
    VkPhysicalDeviceCooperativeMatrixPropertiesNV* to);

#endif
#ifdef VK_NV_coverage_reduction_mode
void deepcopy_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCoverageReductionModeFeaturesNV* from,
    VkPhysicalDeviceCoverageReductionModeFeaturesNV* to);

void deepcopy_VkPipelineCoverageReductionStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineCoverageReductionStateCreateInfoNV* from,
    VkPipelineCoverageReductionStateCreateInfoNV* to);

void deepcopy_VkFramebufferMixedSamplesCombinationNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkFramebufferMixedSamplesCombinationNV* from,
    VkFramebufferMixedSamplesCombinationNV* to);

#endif
#ifdef VK_EXT_fragment_shader_interlock
void deepcopy_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* from,
    VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* to);

#endif
#ifdef VK_EXT_ycbcr_image_arrays
void deepcopy_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* from,
    VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* to);

#endif
#ifdef VK_EXT_full_screen_exclusive
void deepcopy_VkSurfaceFullScreenExclusiveInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveInfoEXT* from,
    VkSurfaceFullScreenExclusiveInfoEXT* to);

void deepcopy_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceCapabilitiesFullScreenExclusiveEXT* from,
    VkSurfaceCapabilitiesFullScreenExclusiveEXT* to);

void deepcopy_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSurfaceFullScreenExclusiveWin32InfoEXT* from,
    VkSurfaceFullScreenExclusiveWin32InfoEXT* to);

#endif
#ifdef VK_EXT_headless_surface
void deepcopy_VkHeadlessSurfaceCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkHeadlessSurfaceCreateInfoEXT* from,
    VkHeadlessSurfaceCreateInfoEXT* to);

#endif
#ifdef VK_EXT_line_rasterization
void deepcopy_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationFeaturesEXT* from,
    VkPhysicalDeviceLineRasterizationFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceLineRasterizationPropertiesEXT* from,
    VkPhysicalDeviceLineRasterizationPropertiesEXT* to);

void deepcopy_VkPipelineRasterizationLineStateCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineRasterizationLineStateCreateInfoEXT* from,
    VkPipelineRasterizationLineStateCreateInfoEXT* to);

#endif
#ifdef VK_EXT_shader_atomic_float
void deepcopy_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* from,
    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* to);

#endif
#ifdef VK_EXT_host_query_reset
DEFINE_ALIAS_FUNCTION(deepcopy_VkPhysicalDeviceHostQueryResetFeatures, deepcopy_VkPhysicalDeviceHostQueryResetFeaturesEXT);

#endif
#ifdef VK_EXT_index_type_uint8
void deepcopy_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceIndexTypeUint8FeaturesEXT* from,
    VkPhysicalDeviceIndexTypeUint8FeaturesEXT* to);

#endif
#ifdef VK_EXT_extended_dynamic_state
void deepcopy_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* from,
    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* to);

#endif
#ifdef VK_EXT_shader_demote_to_helper_invocation
void deepcopy_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* from,
    VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* to);

#endif
#ifdef VK_NV_device_generated_commands
void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* from,
    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* to);

void deepcopy_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* from,
    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* to);

void deepcopy_VkGraphicsShaderGroupCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGraphicsShaderGroupCreateInfoNV* from,
    VkGraphicsShaderGroupCreateInfoNV* to);

void deepcopy_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGraphicsPipelineShaderGroupsCreateInfoNV* from,
    VkGraphicsPipelineShaderGroupsCreateInfoNV* to);

void deepcopy_VkBindShaderGroupIndirectCommandNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindShaderGroupIndirectCommandNV* from,
    VkBindShaderGroupIndirectCommandNV* to);

void deepcopy_VkBindIndexBufferIndirectCommandNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindIndexBufferIndirectCommandNV* from,
    VkBindIndexBufferIndirectCommandNV* to);

void deepcopy_VkBindVertexBufferIndirectCommandNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkBindVertexBufferIndirectCommandNV* from,
    VkBindVertexBufferIndirectCommandNV* to);

void deepcopy_VkSetStateFlagsIndirectCommandNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSetStateFlagsIndirectCommandNV* from,
    VkSetStateFlagsIndirectCommandNV* to);

void deepcopy_VkIndirectCommandsStreamNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkIndirectCommandsStreamNV* from,
    VkIndirectCommandsStreamNV* to);

void deepcopy_VkIndirectCommandsLayoutTokenNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkIndirectCommandsLayoutTokenNV* from,
    VkIndirectCommandsLayoutTokenNV* to);

void deepcopy_VkIndirectCommandsLayoutCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkIndirectCommandsLayoutCreateInfoNV* from,
    VkIndirectCommandsLayoutCreateInfoNV* to);

void deepcopy_VkGeneratedCommandsInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeneratedCommandsInfoNV* from,
    VkGeneratedCommandsInfoNV* to);

void deepcopy_VkGeneratedCommandsMemoryRequirementsInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkGeneratedCommandsMemoryRequirementsInfoNV* from,
    VkGeneratedCommandsMemoryRequirementsInfoNV* to);

#endif
#ifdef VK_EXT_texel_buffer_alignment
void deepcopy_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* from,
    VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* to);

void deepcopy_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* from,
    VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* to);

#endif
#ifdef VK_QCOM_render_pass_transform
void deepcopy_VkRenderPassTransformBeginInfoQCOM(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRenderPassTransformBeginInfoQCOM* from,
    VkRenderPassTransformBeginInfoQCOM* to);

void deepcopy_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCommandBufferInheritanceRenderPassTransformInfoQCOM* from,
    VkCommandBufferInheritanceRenderPassTransformInfoQCOM* to);

#endif
#ifdef VK_EXT_device_memory_report
void deepcopy_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* from,
    VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* to);

void deepcopy_VkDeviceMemoryReportCallbackDataEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceMemoryReportCallbackDataEXT* from,
    VkDeviceMemoryReportCallbackDataEXT* to);

void deepcopy_VkDeviceDeviceMemoryReportCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceDeviceMemoryReportCreateInfoEXT* from,
    VkDeviceDeviceMemoryReportCreateInfoEXT* to);

#endif
#ifdef VK_EXT_robustness2
void deepcopy_VkPhysicalDeviceRobustness2FeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRobustness2FeaturesEXT* from,
    VkPhysicalDeviceRobustness2FeaturesEXT* to);

void deepcopy_VkPhysicalDeviceRobustness2PropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRobustness2PropertiesEXT* from,
    VkPhysicalDeviceRobustness2PropertiesEXT* to);

#endif
#ifdef VK_EXT_custom_border_color
void deepcopy_VkSamplerCustomBorderColorCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkSamplerCustomBorderColorCreateInfoEXT* from,
    VkSamplerCustomBorderColorCreateInfoEXT* to);

void deepcopy_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorPropertiesEXT* from,
    VkPhysicalDeviceCustomBorderColorPropertiesEXT* to);

void deepcopy_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceCustomBorderColorFeaturesEXT* from,
    VkPhysicalDeviceCustomBorderColorFeaturesEXT* to);

#endif
#ifdef VK_GOOGLE_user_type
#endif
#ifdef VK_EXT_private_data
void deepcopy_VkPhysicalDevicePrivateDataFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePrivateDataFeaturesEXT* from,
    VkPhysicalDevicePrivateDataFeaturesEXT* to);

void deepcopy_VkDevicePrivateDataCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDevicePrivateDataCreateInfoEXT* from,
    VkDevicePrivateDataCreateInfoEXT* to);

void deepcopy_VkPrivateDataSlotCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPrivateDataSlotCreateInfoEXT* from,
    VkPrivateDataSlotCreateInfoEXT* to);

#endif
#ifdef VK_EXT_pipeline_creation_cache_control
void deepcopy_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* from,
    VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* to);

#endif
#ifdef VK_NV_device_diagnostics_config
void deepcopy_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceDiagnosticsConfigFeaturesNV* from,
    VkPhysicalDeviceDiagnosticsConfigFeaturesNV* to);

void deepcopy_VkDeviceDiagnosticsConfigCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceDiagnosticsConfigCreateInfoNV* from,
    VkDeviceDiagnosticsConfigCreateInfoNV* to);

#endif
#ifdef VK_QCOM_render_pass_store_ops
#endif
#ifdef VK_NV_fragment_shading_rate_enums
void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* from,
    VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* to);

void deepcopy_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* from,
    VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* to);

void deepcopy_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPipelineFragmentShadingRateEnumStateCreateInfoNV* from,
    VkPipelineFragmentShadingRateEnumStateCreateInfoNV* to);

#endif
#ifdef VK_EXT_fragment_density_map2
void deepcopy_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* from,
    VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* to);

void deepcopy_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* from,
    VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* to);

#endif
#ifdef VK_QCOM_rotated_copy_commands
void deepcopy_VkCopyCommandTransformInfoQCOM(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyCommandTransformInfoQCOM* from,
    VkCopyCommandTransformInfoQCOM* to);

#endif
#ifdef VK_EXT_image_robustness
void deepcopy_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceImageRobustnessFeaturesEXT* from,
    VkPhysicalDeviceImageRobustnessFeaturesEXT* to);

#endif
#ifdef VK_EXT_4444_formats
void deepcopy_VkPhysicalDevice4444FormatsFeaturesEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDevice4444FormatsFeaturesEXT* from,
    VkPhysicalDevice4444FormatsFeaturesEXT* to);

#endif
#ifdef VK_EXT_directfb_surface
void deepcopy_VkDirectFBSurfaceCreateInfoEXT(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDirectFBSurfaceCreateInfoEXT* from,
    VkDirectFBSurfaceCreateInfoEXT* to);

#endif
#ifdef VK_GOOGLE_gfxstream
void deepcopy_VkImportColorBufferGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportColorBufferGOOGLE* from,
    VkImportColorBufferGOOGLE* to);

void deepcopy_VkImportBufferGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportBufferGOOGLE* from,
    VkImportBufferGOOGLE* to);

void deepcopy_VkImportPhysicalAddressGOOGLE(
    Allocator* alloc,
    VkStructureType rootType,
    const VkImportPhysicalAddressGOOGLE* from,
    VkImportPhysicalAddressGOOGLE* to);

#endif
#ifdef VK_KHR_acceleration_structure
void deepcopy_VkDeviceOrHostAddressKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceOrHostAddressKHR* from,
    VkDeviceOrHostAddressKHR* to);

void deepcopy_VkDeviceOrHostAddressConstKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkDeviceOrHostAddressConstKHR* from,
    VkDeviceOrHostAddressConstKHR* to);

void deepcopy_VkAccelerationStructureBuildRangeInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureBuildRangeInfoKHR* from,
    VkAccelerationStructureBuildRangeInfoKHR* to);

void deepcopy_VkAccelerationStructureGeometryTrianglesDataKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryTrianglesDataKHR* from,
    VkAccelerationStructureGeometryTrianglesDataKHR* to);

void deepcopy_VkAccelerationStructureGeometryAabbsDataKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryAabbsDataKHR* from,
    VkAccelerationStructureGeometryAabbsDataKHR* to);

void deepcopy_VkAccelerationStructureGeometryInstancesDataKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryInstancesDataKHR* from,
    VkAccelerationStructureGeometryInstancesDataKHR* to);

void deepcopy_VkAccelerationStructureGeometryDataKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryDataKHR* from,
    VkAccelerationStructureGeometryDataKHR* to);

void deepcopy_VkAccelerationStructureGeometryKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureGeometryKHR* from,
    VkAccelerationStructureGeometryKHR* to);

void deepcopy_VkAccelerationStructureBuildGeometryInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureBuildGeometryInfoKHR* from,
    VkAccelerationStructureBuildGeometryInfoKHR* to);

void deepcopy_VkAccelerationStructureCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureCreateInfoKHR* from,
    VkAccelerationStructureCreateInfoKHR* to);

void deepcopy_VkWriteDescriptorSetAccelerationStructureKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkWriteDescriptorSetAccelerationStructureKHR* from,
    VkWriteDescriptorSetAccelerationStructureKHR* to);

void deepcopy_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructureFeaturesKHR* from,
    VkPhysicalDeviceAccelerationStructureFeaturesKHR* to);

void deepcopy_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceAccelerationStructurePropertiesKHR* from,
    VkPhysicalDeviceAccelerationStructurePropertiesKHR* to);

void deepcopy_VkAccelerationStructureDeviceAddressInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureDeviceAddressInfoKHR* from,
    VkAccelerationStructureDeviceAddressInfoKHR* to);

void deepcopy_VkAccelerationStructureVersionInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureVersionInfoKHR* from,
    VkAccelerationStructureVersionInfoKHR* to);

void deepcopy_VkCopyAccelerationStructureToMemoryInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyAccelerationStructureToMemoryInfoKHR* from,
    VkCopyAccelerationStructureToMemoryInfoKHR* to);

void deepcopy_VkCopyMemoryToAccelerationStructureInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyMemoryToAccelerationStructureInfoKHR* from,
    VkCopyMemoryToAccelerationStructureInfoKHR* to);

void deepcopy_VkCopyAccelerationStructureInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkCopyAccelerationStructureInfoKHR* from,
    VkCopyAccelerationStructureInfoKHR* to);

void deepcopy_VkAccelerationStructureBuildSizesInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkAccelerationStructureBuildSizesInfoKHR* from,
    VkAccelerationStructureBuildSizesInfoKHR* to);

#endif
#ifdef VK_KHR_ray_tracing_pipeline
void deepcopy_VkRayTracingShaderGroupCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRayTracingShaderGroupCreateInfoKHR* from,
    VkRayTracingShaderGroupCreateInfoKHR* to);

void deepcopy_VkRayTracingPipelineInterfaceCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRayTracingPipelineInterfaceCreateInfoKHR* from,
    VkRayTracingPipelineInterfaceCreateInfoKHR* to);

void deepcopy_VkRayTracingPipelineCreateInfoKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkRayTracingPipelineCreateInfoKHR* from,
    VkRayTracingPipelineCreateInfoKHR* to);

void deepcopy_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* from,
    VkPhysicalDeviceRayTracingPipelineFeaturesKHR* to);

void deepcopy_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* from,
    VkPhysicalDeviceRayTracingPipelinePropertiesKHR* to);

void deepcopy_VkStridedDeviceAddressRegionKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkStridedDeviceAddressRegionKHR* from,
    VkStridedDeviceAddressRegionKHR* to);

void deepcopy_VkTraceRaysIndirectCommandKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkTraceRaysIndirectCommandKHR* from,
    VkTraceRaysIndirectCommandKHR* to);

#endif
#ifdef VK_KHR_ray_query
void deepcopy_VkPhysicalDeviceRayQueryFeaturesKHR(
    Allocator* alloc,
    VkStructureType rootType,
    const VkPhysicalDeviceRayQueryFeaturesKHR* from,
    VkPhysicalDeviceRayQueryFeaturesKHR* to);

#endif

} // namespace goldfish_vk
