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

#include "goldfish_vk_extension_structs.h"
#include "goldfish_vk_private_defs.h"
#include "vk_android_native_buffer.h"
#include "vulkan_gfxstream.h"

namespace gfxstream {
namespace vk {

class VkDecoderGlobalState;
#define LIST_TRIVIAL_TRANSFORMED_TYPES(f)      \
    f(VkPhysicalDeviceExternalImageFormatInfo) \
    f(VkPhysicalDeviceExternalBufferInfo)      \
    f(VkExternalMemoryImageCreateInfo)         \
    f(VkExternalMemoryBufferCreateInfo)        \
    f(VkExportMemoryAllocateInfo)              \
    f(VkExternalImageFormatProperties)         \
    f(VkExternalBufferProperties)

#define LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f) \
    f(VkExternalMemoryProperties)             \
    f(VkImageCreateInfo)

#define LIST_TRANSFORMED_TYPES(f)     \
    LIST_TRIVIAL_TRANSFORMED_TYPES(f) \
    LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f)

#ifdef VK_VERSION_1_0
void transform_tohost_VkExtent2D(VkDecoderGlobalState* resourceTracker, VkExtent2D* toTransform);

void transform_fromhost_VkExtent2D(VkDecoderGlobalState* resourceTracker, VkExtent2D* toTransform);

void transform_tohost_VkExtent3D(VkDecoderGlobalState* resourceTracker, VkExtent3D* toTransform);

void transform_fromhost_VkExtent3D(VkDecoderGlobalState* resourceTracker, VkExtent3D* toTransform);

void transform_tohost_VkOffset2D(VkDecoderGlobalState* resourceTracker, VkOffset2D* toTransform);

void transform_fromhost_VkOffset2D(VkDecoderGlobalState* resourceTracker, VkOffset2D* toTransform);

void transform_tohost_VkOffset3D(VkDecoderGlobalState* resourceTracker, VkOffset3D* toTransform);

void transform_fromhost_VkOffset3D(VkDecoderGlobalState* resourceTracker, VkOffset3D* toTransform);

void transform_tohost_VkRect2D(VkDecoderGlobalState* resourceTracker, VkRect2D* toTransform);

void transform_fromhost_VkRect2D(VkDecoderGlobalState* resourceTracker, VkRect2D* toTransform);

void transform_tohost_VkBaseInStructure(VkDecoderGlobalState* resourceTracker,
                                        VkBaseInStructure* toTransform);

void transform_fromhost_VkBaseInStructure(VkDecoderGlobalState* resourceTracker,
                                          VkBaseInStructure* toTransform);

void transform_tohost_VkBaseOutStructure(VkDecoderGlobalState* resourceTracker,
                                         VkBaseOutStructure* toTransform);

void transform_fromhost_VkBaseOutStructure(VkDecoderGlobalState* resourceTracker,
                                           VkBaseOutStructure* toTransform);

void transform_tohost_VkBufferMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                            VkBufferMemoryBarrier* toTransform);

void transform_fromhost_VkBufferMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                              VkBufferMemoryBarrier* toTransform);

void transform_tohost_VkDispatchIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                                VkDispatchIndirectCommand* toTransform);

void transform_fromhost_VkDispatchIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                                  VkDispatchIndirectCommand* toTransform);

void transform_tohost_VkDrawIndexedIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                                   VkDrawIndexedIndirectCommand* toTransform);

void transform_fromhost_VkDrawIndexedIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                                     VkDrawIndexedIndirectCommand* toTransform);

void transform_tohost_VkDrawIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                            VkDrawIndirectCommand* toTransform);

void transform_fromhost_VkDrawIndirectCommand(VkDecoderGlobalState* resourceTracker,
                                              VkDrawIndirectCommand* toTransform);

void transform_tohost_VkImageSubresourceRange(VkDecoderGlobalState* resourceTracker,
                                              VkImageSubresourceRange* toTransform);

void transform_fromhost_VkImageSubresourceRange(VkDecoderGlobalState* resourceTracker,
                                                VkImageSubresourceRange* toTransform);

void transform_tohost_VkImageMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                           VkImageMemoryBarrier* toTransform);

void transform_fromhost_VkImageMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                             VkImageMemoryBarrier* toTransform);

void transform_tohost_VkMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                      VkMemoryBarrier* toTransform);

void transform_fromhost_VkMemoryBarrier(VkDecoderGlobalState* resourceTracker,
                                        VkMemoryBarrier* toTransform);

void transform_tohost_VkPipelineCacheHeaderVersionOne(VkDecoderGlobalState* resourceTracker,
                                                      VkPipelineCacheHeaderVersionOne* toTransform);

void transform_fromhost_VkPipelineCacheHeaderVersionOne(
    VkDecoderGlobalState* resourceTracker, VkPipelineCacheHeaderVersionOne* toTransform);

void transform_tohost_VkAllocationCallbacks(VkDecoderGlobalState* resourceTracker,
                                            VkAllocationCallbacks* toTransform);

void transform_fromhost_VkAllocationCallbacks(VkDecoderGlobalState* resourceTracker,
                                              VkAllocationCallbacks* toTransform);

void transform_tohost_VkApplicationInfo(VkDecoderGlobalState* resourceTracker,
                                        VkApplicationInfo* toTransform);

void transform_fromhost_VkApplicationInfo(VkDecoderGlobalState* resourceTracker,
                                          VkApplicationInfo* toTransform);

void transform_tohost_VkFormatProperties(VkDecoderGlobalState* resourceTracker,
                                         VkFormatProperties* toTransform);

void transform_fromhost_VkFormatProperties(VkDecoderGlobalState* resourceTracker,
                                           VkFormatProperties* toTransform);

void transform_tohost_VkImageFormatProperties(VkDecoderGlobalState* resourceTracker,
                                              VkImageFormatProperties* toTransform);

void transform_fromhost_VkImageFormatProperties(VkDecoderGlobalState* resourceTracker,
                                                VkImageFormatProperties* toTransform);

void transform_tohost_VkInstanceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                           VkInstanceCreateInfo* toTransform);

void transform_fromhost_VkInstanceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                             VkInstanceCreateInfo* toTransform);

void transform_tohost_VkMemoryHeap(VkDecoderGlobalState* resourceTracker,
                                   VkMemoryHeap* toTransform);

void transform_fromhost_VkMemoryHeap(VkDecoderGlobalState* resourceTracker,
                                     VkMemoryHeap* toTransform);

void transform_tohost_VkMemoryType(VkDecoderGlobalState* resourceTracker,
                                   VkMemoryType* toTransform);

void transform_fromhost_VkMemoryType(VkDecoderGlobalState* resourceTracker,
                                     VkMemoryType* toTransform);

void transform_tohost_VkPhysicalDeviceFeatures(VkDecoderGlobalState* resourceTracker,
                                               VkPhysicalDeviceFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceFeatures(VkDecoderGlobalState* resourceTracker,
                                                 VkPhysicalDeviceFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceLimits(VkDecoderGlobalState* resourceTracker,
                                             VkPhysicalDeviceLimits* toTransform);

void transform_fromhost_VkPhysicalDeviceLimits(VkDecoderGlobalState* resourceTracker,
                                               VkPhysicalDeviceLimits* toTransform);

void transform_tohost_VkPhysicalDeviceMemoryProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceMemoryProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryProperties* toTransform);

void transform_tohost_VkPhysicalDeviceSparseProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSparseProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceSparseProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSparseProperties* toTransform);

void transform_tohost_VkPhysicalDeviceProperties(VkDecoderGlobalState* resourceTracker,
                                                 VkPhysicalDeviceProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceProperties(VkDecoderGlobalState* resourceTracker,
                                                   VkPhysicalDeviceProperties* toTransform);

void transform_tohost_VkQueueFamilyProperties(VkDecoderGlobalState* resourceTracker,
                                              VkQueueFamilyProperties* toTransform);

void transform_fromhost_VkQueueFamilyProperties(VkDecoderGlobalState* resourceTracker,
                                                VkQueueFamilyProperties* toTransform);

void transform_tohost_VkDeviceQueueCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkDeviceQueueCreateInfo* toTransform);

void transform_fromhost_VkDeviceQueueCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkDeviceQueueCreateInfo* toTransform);

void transform_tohost_VkDeviceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                         VkDeviceCreateInfo* toTransform);

void transform_fromhost_VkDeviceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                           VkDeviceCreateInfo* toTransform);

void transform_tohost_VkExtensionProperties(VkDecoderGlobalState* resourceTracker,
                                            VkExtensionProperties* toTransform);

void transform_fromhost_VkExtensionProperties(VkDecoderGlobalState* resourceTracker,
                                              VkExtensionProperties* toTransform);

void transform_tohost_VkLayerProperties(VkDecoderGlobalState* resourceTracker,
                                        VkLayerProperties* toTransform);

void transform_fromhost_VkLayerProperties(VkDecoderGlobalState* resourceTracker,
                                          VkLayerProperties* toTransform);

void transform_tohost_VkSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                   VkSubmitInfo* toTransform);

void transform_fromhost_VkSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                     VkSubmitInfo* toTransform);

void transform_tohost_VkMappedMemoryRange(VkDecoderGlobalState* resourceTracker,
                                          VkMappedMemoryRange* toTransform);

void transform_fromhost_VkMappedMemoryRange(VkDecoderGlobalState* resourceTracker,
                                            VkMappedMemoryRange* toTransform);

void transform_tohost_VkMemoryAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                           VkMemoryAllocateInfo* toTransform);

void transform_fromhost_VkMemoryAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                             VkMemoryAllocateInfo* toTransform);

void transform_tohost_VkMemoryRequirements(VkDecoderGlobalState* resourceTracker,
                                           VkMemoryRequirements* toTransform);

void transform_fromhost_VkMemoryRequirements(VkDecoderGlobalState* resourceTracker,
                                             VkMemoryRequirements* toTransform);

void transform_tohost_VkSparseMemoryBind(VkDecoderGlobalState* resourceTracker,
                                         VkSparseMemoryBind* toTransform);

void transform_fromhost_VkSparseMemoryBind(VkDecoderGlobalState* resourceTracker,
                                           VkSparseMemoryBind* toTransform);

void transform_tohost_VkSparseBufferMemoryBindInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkSparseBufferMemoryBindInfo* toTransform);

void transform_fromhost_VkSparseBufferMemoryBindInfo(VkDecoderGlobalState* resourceTracker,
                                                     VkSparseBufferMemoryBindInfo* toTransform);

void transform_tohost_VkSparseImageOpaqueMemoryBindInfo(
    VkDecoderGlobalState* resourceTracker, VkSparseImageOpaqueMemoryBindInfo* toTransform);

void transform_fromhost_VkSparseImageOpaqueMemoryBindInfo(
    VkDecoderGlobalState* resourceTracker, VkSparseImageOpaqueMemoryBindInfo* toTransform);

void transform_tohost_VkImageSubresource(VkDecoderGlobalState* resourceTracker,
                                         VkImageSubresource* toTransform);

void transform_fromhost_VkImageSubresource(VkDecoderGlobalState* resourceTracker,
                                           VkImageSubresource* toTransform);

void transform_tohost_VkSparseImageMemoryBind(VkDecoderGlobalState* resourceTracker,
                                              VkSparseImageMemoryBind* toTransform);

void transform_fromhost_VkSparseImageMemoryBind(VkDecoderGlobalState* resourceTracker,
                                                VkSparseImageMemoryBind* toTransform);

void transform_tohost_VkSparseImageMemoryBindInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkSparseImageMemoryBindInfo* toTransform);

void transform_fromhost_VkSparseImageMemoryBindInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkSparseImageMemoryBindInfo* toTransform);

void transform_tohost_VkBindSparseInfo(VkDecoderGlobalState* resourceTracker,
                                       VkBindSparseInfo* toTransform);

void transform_fromhost_VkBindSparseInfo(VkDecoderGlobalState* resourceTracker,
                                         VkBindSparseInfo* toTransform);

void transform_tohost_VkSparseImageFormatProperties(VkDecoderGlobalState* resourceTracker,
                                                    VkSparseImageFormatProperties* toTransform);

void transform_fromhost_VkSparseImageFormatProperties(VkDecoderGlobalState* resourceTracker,
                                                      VkSparseImageFormatProperties* toTransform);

void transform_tohost_VkSparseImageMemoryRequirements(VkDecoderGlobalState* resourceTracker,
                                                      VkSparseImageMemoryRequirements* toTransform);

void transform_fromhost_VkSparseImageMemoryRequirements(
    VkDecoderGlobalState* resourceTracker, VkSparseImageMemoryRequirements* toTransform);

void transform_tohost_VkFenceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                        VkFenceCreateInfo* toTransform);

void transform_fromhost_VkFenceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                          VkFenceCreateInfo* toTransform);

void transform_tohost_VkSemaphoreCreateInfo(VkDecoderGlobalState* resourceTracker,
                                            VkSemaphoreCreateInfo* toTransform);

void transform_fromhost_VkSemaphoreCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkSemaphoreCreateInfo* toTransform);

void transform_tohost_VkEventCreateInfo(VkDecoderGlobalState* resourceTracker,
                                        VkEventCreateInfo* toTransform);

void transform_fromhost_VkEventCreateInfo(VkDecoderGlobalState* resourceTracker,
                                          VkEventCreateInfo* toTransform);

void transform_tohost_VkQueryPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                            VkQueryPoolCreateInfo* toTransform);

void transform_fromhost_VkQueryPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkQueryPoolCreateInfo* toTransform);

void transform_tohost_VkBufferCreateInfo(VkDecoderGlobalState* resourceTracker,
                                         VkBufferCreateInfo* toTransform);

void transform_fromhost_VkBufferCreateInfo(VkDecoderGlobalState* resourceTracker,
                                           VkBufferCreateInfo* toTransform);

void transform_tohost_VkBufferViewCreateInfo(VkDecoderGlobalState* resourceTracker,
                                             VkBufferViewCreateInfo* toTransform);

void transform_fromhost_VkBufferViewCreateInfo(VkDecoderGlobalState* resourceTracker,
                                               VkBufferViewCreateInfo* toTransform);

void transform_tohost_VkImageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                        VkImageCreateInfo* toTransform);

void transform_fromhost_VkImageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                          VkImageCreateInfo* toTransform);

void transform_tohost_VkSubresourceLayout(VkDecoderGlobalState* resourceTracker,
                                          VkSubresourceLayout* toTransform);

void transform_fromhost_VkSubresourceLayout(VkDecoderGlobalState* resourceTracker,
                                            VkSubresourceLayout* toTransform);

void transform_tohost_VkComponentMapping(VkDecoderGlobalState* resourceTracker,
                                         VkComponentMapping* toTransform);

void transform_fromhost_VkComponentMapping(VkDecoderGlobalState* resourceTracker,
                                           VkComponentMapping* toTransform);

void transform_tohost_VkImageViewCreateInfo(VkDecoderGlobalState* resourceTracker,
                                            VkImageViewCreateInfo* toTransform);

void transform_fromhost_VkImageViewCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkImageViewCreateInfo* toTransform);

void transform_tohost_VkShaderModuleCreateInfo(VkDecoderGlobalState* resourceTracker,
                                               VkShaderModuleCreateInfo* toTransform);

void transform_fromhost_VkShaderModuleCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkShaderModuleCreateInfo* toTransform);

void transform_tohost_VkPipelineCacheCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkPipelineCacheCreateInfo* toTransform);

void transform_fromhost_VkPipelineCacheCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkPipelineCacheCreateInfo* toTransform);

void transform_tohost_VkSpecializationMapEntry(VkDecoderGlobalState* resourceTracker,
                                               VkSpecializationMapEntry* toTransform);

void transform_fromhost_VkSpecializationMapEntry(VkDecoderGlobalState* resourceTracker,
                                                 VkSpecializationMapEntry* toTransform);

void transform_tohost_VkSpecializationInfo(VkDecoderGlobalState* resourceTracker,
                                           VkSpecializationInfo* toTransform);

void transform_fromhost_VkSpecializationInfo(VkDecoderGlobalState* resourceTracker,
                                             VkSpecializationInfo* toTransform);

void transform_tohost_VkPipelineShaderStageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkPipelineShaderStageCreateInfo* toTransform);

void transform_fromhost_VkPipelineShaderStageCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineShaderStageCreateInfo* toTransform);

void transform_tohost_VkComputePipelineCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkComputePipelineCreateInfo* toTransform);

void transform_fromhost_VkComputePipelineCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkComputePipelineCreateInfo* toTransform);

void transform_tohost_VkVertexInputBindingDescription(VkDecoderGlobalState* resourceTracker,
                                                      VkVertexInputBindingDescription* toTransform);

void transform_fromhost_VkVertexInputBindingDescription(
    VkDecoderGlobalState* resourceTracker, VkVertexInputBindingDescription* toTransform);

void transform_tohost_VkVertexInputAttributeDescription(
    VkDecoderGlobalState* resourceTracker, VkVertexInputAttributeDescription* toTransform);

void transform_fromhost_VkVertexInputAttributeDescription(
    VkDecoderGlobalState* resourceTracker, VkVertexInputAttributeDescription* toTransform);

void transform_tohost_VkPipelineVertexInputStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineVertexInputStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineVertexInputStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineVertexInputStateCreateInfo* toTransform);

void transform_tohost_VkPipelineInputAssemblyStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineInputAssemblyStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineInputAssemblyStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineInputAssemblyStateCreateInfo* toTransform);

void transform_tohost_VkPipelineTessellationStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineTessellationStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineTessellationStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineTessellationStateCreateInfo* toTransform);

void transform_tohost_VkViewport(VkDecoderGlobalState* resourceTracker, VkViewport* toTransform);

void transform_fromhost_VkViewport(VkDecoderGlobalState* resourceTracker, VkViewport* toTransform);

void transform_tohost_VkPipelineViewportStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineViewportStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineViewportStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineViewportStateCreateInfo* toTransform);

void transform_tohost_VkPipelineRasterizationStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineRasterizationStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineRasterizationStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineRasterizationStateCreateInfo* toTransform);

void transform_tohost_VkPipelineMultisampleStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineMultisampleStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineMultisampleStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineMultisampleStateCreateInfo* toTransform);

void transform_tohost_VkStencilOpState(VkDecoderGlobalState* resourceTracker,
                                       VkStencilOpState* toTransform);

void transform_fromhost_VkStencilOpState(VkDecoderGlobalState* resourceTracker,
                                         VkStencilOpState* toTransform);

void transform_tohost_VkPipelineDepthStencilStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineDepthStencilStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineDepthStencilStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineDepthStencilStateCreateInfo* toTransform);

void transform_tohost_VkPipelineColorBlendAttachmentState(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorBlendAttachmentState* toTransform);

void transform_fromhost_VkPipelineColorBlendAttachmentState(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorBlendAttachmentState* toTransform);

void transform_tohost_VkPipelineColorBlendStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorBlendStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineColorBlendStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorBlendStateCreateInfo* toTransform);

void transform_tohost_VkPipelineDynamicStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineDynamicStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineDynamicStateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkPipelineDynamicStateCreateInfo* toTransform);

void transform_tohost_VkGraphicsPipelineCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkGraphicsPipelineCreateInfo* toTransform);

void transform_fromhost_VkGraphicsPipelineCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                     VkGraphicsPipelineCreateInfo* toTransform);

void transform_tohost_VkPushConstantRange(VkDecoderGlobalState* resourceTracker,
                                          VkPushConstantRange* toTransform);

void transform_fromhost_VkPushConstantRange(VkDecoderGlobalState* resourceTracker,
                                            VkPushConstantRange* toTransform);

void transform_tohost_VkPipelineLayoutCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkPipelineLayoutCreateInfo* toTransform);

void transform_fromhost_VkPipelineLayoutCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkPipelineLayoutCreateInfo* toTransform);

void transform_tohost_VkSamplerCreateInfo(VkDecoderGlobalState* resourceTracker,
                                          VkSamplerCreateInfo* toTransform);

void transform_fromhost_VkSamplerCreateInfo(VkDecoderGlobalState* resourceTracker,
                                            VkSamplerCreateInfo* toTransform);

void transform_tohost_VkCopyDescriptorSet(VkDecoderGlobalState* resourceTracker,
                                          VkCopyDescriptorSet* toTransform);

void transform_fromhost_VkCopyDescriptorSet(VkDecoderGlobalState* resourceTracker,
                                            VkCopyDescriptorSet* toTransform);

void transform_tohost_VkDescriptorBufferInfo(VkDecoderGlobalState* resourceTracker,
                                             VkDescriptorBufferInfo* toTransform);

void transform_fromhost_VkDescriptorBufferInfo(VkDecoderGlobalState* resourceTracker,
                                               VkDescriptorBufferInfo* toTransform);

void transform_tohost_VkDescriptorImageInfo(VkDecoderGlobalState* resourceTracker,
                                            VkDescriptorImageInfo* toTransform);

void transform_fromhost_VkDescriptorImageInfo(VkDecoderGlobalState* resourceTracker,
                                              VkDescriptorImageInfo* toTransform);

void transform_tohost_VkDescriptorPoolSize(VkDecoderGlobalState* resourceTracker,
                                           VkDescriptorPoolSize* toTransform);

void transform_fromhost_VkDescriptorPoolSize(VkDecoderGlobalState* resourceTracker,
                                             VkDescriptorPoolSize* toTransform);

void transform_tohost_VkDescriptorPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkDescriptorPoolCreateInfo* toTransform);

void transform_fromhost_VkDescriptorPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkDescriptorPoolCreateInfo* toTransform);

void transform_tohost_VkDescriptorSetAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkDescriptorSetAllocateInfo* toTransform);

void transform_fromhost_VkDescriptorSetAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkDescriptorSetAllocateInfo* toTransform);

void transform_tohost_VkDescriptorSetLayoutBinding(VkDecoderGlobalState* resourceTracker,
                                                   VkDescriptorSetLayoutBinding* toTransform);

void transform_fromhost_VkDescriptorSetLayoutBinding(VkDecoderGlobalState* resourceTracker,
                                                     VkDescriptorSetLayoutBinding* toTransform);

void transform_tohost_VkDescriptorSetLayoutCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkDescriptorSetLayoutCreateInfo* toTransform);

void transform_fromhost_VkDescriptorSetLayoutCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkDescriptorSetLayoutCreateInfo* toTransform);

void transform_tohost_VkWriteDescriptorSet(VkDecoderGlobalState* resourceTracker,
                                           VkWriteDescriptorSet* toTransform);

void transform_fromhost_VkWriteDescriptorSet(VkDecoderGlobalState* resourceTracker,
                                             VkWriteDescriptorSet* toTransform);

void transform_tohost_VkAttachmentDescription(VkDecoderGlobalState* resourceTracker,
                                              VkAttachmentDescription* toTransform);

void transform_fromhost_VkAttachmentDescription(VkDecoderGlobalState* resourceTracker,
                                                VkAttachmentDescription* toTransform);

void transform_tohost_VkAttachmentReference(VkDecoderGlobalState* resourceTracker,
                                            VkAttachmentReference* toTransform);

void transform_fromhost_VkAttachmentReference(VkDecoderGlobalState* resourceTracker,
                                              VkAttachmentReference* toTransform);

void transform_tohost_VkFramebufferCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkFramebufferCreateInfo* toTransform);

void transform_fromhost_VkFramebufferCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkFramebufferCreateInfo* toTransform);

void transform_tohost_VkSubpassDescription(VkDecoderGlobalState* resourceTracker,
                                           VkSubpassDescription* toTransform);

void transform_fromhost_VkSubpassDescription(VkDecoderGlobalState* resourceTracker,
                                             VkSubpassDescription* toTransform);

void transform_tohost_VkSubpassDependency(VkDecoderGlobalState* resourceTracker,
                                          VkSubpassDependency* toTransform);

void transform_fromhost_VkSubpassDependency(VkDecoderGlobalState* resourceTracker,
                                            VkSubpassDependency* toTransform);

void transform_tohost_VkRenderPassCreateInfo(VkDecoderGlobalState* resourceTracker,
                                             VkRenderPassCreateInfo* toTransform);

void transform_fromhost_VkRenderPassCreateInfo(VkDecoderGlobalState* resourceTracker,
                                               VkRenderPassCreateInfo* toTransform);

void transform_tohost_VkCommandPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkCommandPoolCreateInfo* toTransform);

void transform_fromhost_VkCommandPoolCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkCommandPoolCreateInfo* toTransform);

void transform_tohost_VkCommandBufferAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkCommandBufferAllocateInfo* toTransform);

void transform_fromhost_VkCommandBufferAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkCommandBufferAllocateInfo* toTransform);

void transform_tohost_VkCommandBufferInheritanceInfo(VkDecoderGlobalState* resourceTracker,
                                                     VkCommandBufferInheritanceInfo* toTransform);

void transform_fromhost_VkCommandBufferInheritanceInfo(VkDecoderGlobalState* resourceTracker,
                                                       VkCommandBufferInheritanceInfo* toTransform);

void transform_tohost_VkCommandBufferBeginInfo(VkDecoderGlobalState* resourceTracker,
                                               VkCommandBufferBeginInfo* toTransform);

void transform_fromhost_VkCommandBufferBeginInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkCommandBufferBeginInfo* toTransform);

void transform_tohost_VkBufferCopy(VkDecoderGlobalState* resourceTracker,
                                   VkBufferCopy* toTransform);

void transform_fromhost_VkBufferCopy(VkDecoderGlobalState* resourceTracker,
                                     VkBufferCopy* toTransform);

void transform_tohost_VkImageSubresourceLayers(VkDecoderGlobalState* resourceTracker,
                                               VkImageSubresourceLayers* toTransform);

void transform_fromhost_VkImageSubresourceLayers(VkDecoderGlobalState* resourceTracker,
                                                 VkImageSubresourceLayers* toTransform);

void transform_tohost_VkBufferImageCopy(VkDecoderGlobalState* resourceTracker,
                                        VkBufferImageCopy* toTransform);

void transform_fromhost_VkBufferImageCopy(VkDecoderGlobalState* resourceTracker,
                                          VkBufferImageCopy* toTransform);

void transform_tohost_VkClearColorValue(VkDecoderGlobalState* resourceTracker,
                                        VkClearColorValue* toTransform);

void transform_fromhost_VkClearColorValue(VkDecoderGlobalState* resourceTracker,
                                          VkClearColorValue* toTransform);

void transform_tohost_VkClearDepthStencilValue(VkDecoderGlobalState* resourceTracker,
                                               VkClearDepthStencilValue* toTransform);

void transform_fromhost_VkClearDepthStencilValue(VkDecoderGlobalState* resourceTracker,
                                                 VkClearDepthStencilValue* toTransform);

void transform_tohost_VkClearValue(VkDecoderGlobalState* resourceTracker,
                                   VkClearValue* toTransform);

void transform_fromhost_VkClearValue(VkDecoderGlobalState* resourceTracker,
                                     VkClearValue* toTransform);

void transform_tohost_VkClearAttachment(VkDecoderGlobalState* resourceTracker,
                                        VkClearAttachment* toTransform);

void transform_fromhost_VkClearAttachment(VkDecoderGlobalState* resourceTracker,
                                          VkClearAttachment* toTransform);

void transform_tohost_VkClearRect(VkDecoderGlobalState* resourceTracker, VkClearRect* toTransform);

void transform_fromhost_VkClearRect(VkDecoderGlobalState* resourceTracker,
                                    VkClearRect* toTransform);

void transform_tohost_VkImageBlit(VkDecoderGlobalState* resourceTracker, VkImageBlit* toTransform);

void transform_fromhost_VkImageBlit(VkDecoderGlobalState* resourceTracker,
                                    VkImageBlit* toTransform);

void transform_tohost_VkImageCopy(VkDecoderGlobalState* resourceTracker, VkImageCopy* toTransform);

void transform_fromhost_VkImageCopy(VkDecoderGlobalState* resourceTracker,
                                    VkImageCopy* toTransform);

void transform_tohost_VkImageResolve(VkDecoderGlobalState* resourceTracker,
                                     VkImageResolve* toTransform);

void transform_fromhost_VkImageResolve(VkDecoderGlobalState* resourceTracker,
                                       VkImageResolve* toTransform);

void transform_tohost_VkRenderPassBeginInfo(VkDecoderGlobalState* resourceTracker,
                                            VkRenderPassBeginInfo* toTransform);

void transform_fromhost_VkRenderPassBeginInfo(VkDecoderGlobalState* resourceTracker,
                                              VkRenderPassBeginInfo* toTransform);

#endif
#ifdef VK_VERSION_1_1
void transform_tohost_VkPhysicalDeviceSubgroupProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSubgroupProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceSubgroupProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSubgroupProperties* toTransform);

void transform_tohost_VkBindBufferMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                             VkBindBufferMemoryInfo* toTransform);

void transform_fromhost_VkBindBufferMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                               VkBindBufferMemoryInfo* toTransform);

void transform_tohost_VkBindImageMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                            VkBindImageMemoryInfo* toTransform);

void transform_fromhost_VkBindImageMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                              VkBindImageMemoryInfo* toTransform);

void transform_tohost_VkPhysicalDevice16BitStorageFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice16BitStorageFeatures* toTransform);

void transform_fromhost_VkPhysicalDevice16BitStorageFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice16BitStorageFeatures* toTransform);

void transform_tohost_VkMemoryDedicatedRequirements(VkDecoderGlobalState* resourceTracker,
                                                    VkMemoryDedicatedRequirements* toTransform);

void transform_fromhost_VkMemoryDedicatedRequirements(VkDecoderGlobalState* resourceTracker,
                                                      VkMemoryDedicatedRequirements* toTransform);

void transform_tohost_VkMemoryDedicatedAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkMemoryDedicatedAllocateInfo* toTransform);

void transform_fromhost_VkMemoryDedicatedAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkMemoryDedicatedAllocateInfo* toTransform);

void transform_tohost_VkMemoryAllocateFlagsInfo(VkDecoderGlobalState* resourceTracker,
                                                VkMemoryAllocateFlagsInfo* toTransform);

void transform_fromhost_VkMemoryAllocateFlagsInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkMemoryAllocateFlagsInfo* toTransform);

void transform_tohost_VkDeviceGroupRenderPassBeginInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupRenderPassBeginInfo* toTransform);

void transform_fromhost_VkDeviceGroupRenderPassBeginInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupRenderPassBeginInfo* toTransform);

void transform_tohost_VkDeviceGroupCommandBufferBeginInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupCommandBufferBeginInfo* toTransform);

void transform_fromhost_VkDeviceGroupCommandBufferBeginInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupCommandBufferBeginInfo* toTransform);

void transform_tohost_VkDeviceGroupSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                              VkDeviceGroupSubmitInfo* toTransform);

void transform_fromhost_VkDeviceGroupSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                                VkDeviceGroupSubmitInfo* toTransform);

void transform_tohost_VkDeviceGroupBindSparseInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkDeviceGroupBindSparseInfo* toTransform);

void transform_fromhost_VkDeviceGroupBindSparseInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkDeviceGroupBindSparseInfo* toTransform);

void transform_tohost_VkBindBufferMemoryDeviceGroupInfo(
    VkDecoderGlobalState* resourceTracker, VkBindBufferMemoryDeviceGroupInfo* toTransform);

void transform_fromhost_VkBindBufferMemoryDeviceGroupInfo(
    VkDecoderGlobalState* resourceTracker, VkBindBufferMemoryDeviceGroupInfo* toTransform);

void transform_tohost_VkBindImageMemoryDeviceGroupInfo(
    VkDecoderGlobalState* resourceTracker, VkBindImageMemoryDeviceGroupInfo* toTransform);

void transform_fromhost_VkBindImageMemoryDeviceGroupInfo(
    VkDecoderGlobalState* resourceTracker, VkBindImageMemoryDeviceGroupInfo* toTransform);

void transform_tohost_VkPhysicalDeviceGroupProperties(VkDecoderGlobalState* resourceTracker,
                                                      VkPhysicalDeviceGroupProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceGroupProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceGroupProperties* toTransform);

void transform_tohost_VkDeviceGroupDeviceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkDeviceGroupDeviceCreateInfo* toTransform);

void transform_fromhost_VkDeviceGroupDeviceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkDeviceGroupDeviceCreateInfo* toTransform);

void transform_tohost_VkBufferMemoryRequirementsInfo2(VkDecoderGlobalState* resourceTracker,
                                                      VkBufferMemoryRequirementsInfo2* toTransform);

void transform_fromhost_VkBufferMemoryRequirementsInfo2(
    VkDecoderGlobalState* resourceTracker, VkBufferMemoryRequirementsInfo2* toTransform);

void transform_tohost_VkImageMemoryRequirementsInfo2(VkDecoderGlobalState* resourceTracker,
                                                     VkImageMemoryRequirementsInfo2* toTransform);

void transform_fromhost_VkImageMemoryRequirementsInfo2(VkDecoderGlobalState* resourceTracker,
                                                       VkImageMemoryRequirementsInfo2* toTransform);

void transform_tohost_VkImageSparseMemoryRequirementsInfo2(
    VkDecoderGlobalState* resourceTracker, VkImageSparseMemoryRequirementsInfo2* toTransform);

void transform_fromhost_VkImageSparseMemoryRequirementsInfo2(
    VkDecoderGlobalState* resourceTracker, VkImageSparseMemoryRequirementsInfo2* toTransform);

void transform_tohost_VkMemoryRequirements2(VkDecoderGlobalState* resourceTracker,
                                            VkMemoryRequirements2* toTransform);

void transform_fromhost_VkMemoryRequirements2(VkDecoderGlobalState* resourceTracker,
                                              VkMemoryRequirements2* toTransform);

void transform_tohost_VkSparseImageMemoryRequirements2(
    VkDecoderGlobalState* resourceTracker, VkSparseImageMemoryRequirements2* toTransform);

void transform_fromhost_VkSparseImageMemoryRequirements2(
    VkDecoderGlobalState* resourceTracker, VkSparseImageMemoryRequirements2* toTransform);

void transform_tohost_VkPhysicalDeviceFeatures2(VkDecoderGlobalState* resourceTracker,
                                                VkPhysicalDeviceFeatures2* toTransform);

void transform_fromhost_VkPhysicalDeviceFeatures2(VkDecoderGlobalState* resourceTracker,
                                                  VkPhysicalDeviceFeatures2* toTransform);

void transform_tohost_VkPhysicalDeviceProperties2(VkDecoderGlobalState* resourceTracker,
                                                  VkPhysicalDeviceProperties2* toTransform);

void transform_fromhost_VkPhysicalDeviceProperties2(VkDecoderGlobalState* resourceTracker,
                                                    VkPhysicalDeviceProperties2* toTransform);

void transform_tohost_VkFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                          VkFormatProperties2* toTransform);

void transform_fromhost_VkFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                            VkFormatProperties2* toTransform);

void transform_tohost_VkImageFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                               VkImageFormatProperties2* toTransform);

void transform_fromhost_VkImageFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                                 VkImageFormatProperties2* toTransform);

void transform_tohost_VkPhysicalDeviceImageFormatInfo2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceImageFormatInfo2* toTransform);

void transform_fromhost_VkPhysicalDeviceImageFormatInfo2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceImageFormatInfo2* toTransform);

void transform_tohost_VkQueueFamilyProperties2(VkDecoderGlobalState* resourceTracker,
                                               VkQueueFamilyProperties2* toTransform);

void transform_fromhost_VkQueueFamilyProperties2(VkDecoderGlobalState* resourceTracker,
                                                 VkQueueFamilyProperties2* toTransform);

void transform_tohost_VkPhysicalDeviceMemoryProperties2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryProperties2* toTransform);

void transform_fromhost_VkPhysicalDeviceMemoryProperties2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryProperties2* toTransform);

void transform_tohost_VkSparseImageFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                                     VkSparseImageFormatProperties2* toTransform);

void transform_fromhost_VkSparseImageFormatProperties2(VkDecoderGlobalState* resourceTracker,
                                                       VkSparseImageFormatProperties2* toTransform);

void transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSparseImageFormatInfo2* toTransform);

void transform_fromhost_VkPhysicalDeviceSparseImageFormatInfo2(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSparseImageFormatInfo2* toTransform);

void transform_tohost_VkPhysicalDevicePointClippingProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePointClippingProperties* toTransform);

void transform_fromhost_VkPhysicalDevicePointClippingProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePointClippingProperties* toTransform);

void transform_tohost_VkInputAttachmentAspectReference(
    VkDecoderGlobalState* resourceTracker, VkInputAttachmentAspectReference* toTransform);

void transform_fromhost_VkInputAttachmentAspectReference(
    VkDecoderGlobalState* resourceTracker, VkInputAttachmentAspectReference* toTransform);

void transform_tohost_VkRenderPassInputAttachmentAspectCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkRenderPassInputAttachmentAspectCreateInfo* toTransform);

void transform_fromhost_VkRenderPassInputAttachmentAspectCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkRenderPassInputAttachmentAspectCreateInfo* toTransform);

void transform_tohost_VkImageViewUsageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkImageViewUsageCreateInfo* toTransform);

void transform_fromhost_VkImageViewUsageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkImageViewUsageCreateInfo* toTransform);

void transform_tohost_VkPipelineTessellationDomainOriginStateCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineTessellationDomainOriginStateCreateInfo* toTransform);

void transform_fromhost_VkPipelineTessellationDomainOriginStateCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineTessellationDomainOriginStateCreateInfo* toTransform);

void transform_tohost_VkRenderPassMultiviewCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkRenderPassMultiviewCreateInfo* toTransform);

void transform_fromhost_VkRenderPassMultiviewCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkRenderPassMultiviewCreateInfo* toTransform);

void transform_tohost_VkPhysicalDeviceMultiviewFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiviewFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceMultiviewFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiviewFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceMultiviewProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiviewProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceMultiviewProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiviewProperties* toTransform);

void transform_tohost_VkPhysicalDeviceVariablePointersFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVariablePointersFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceVariablePointersFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVariablePointersFeatures* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_tohost_VkPhysicalDeviceVariablePointerFeatures)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_fromhost_VkPhysicalDeviceVariablePointerFeatures)

void transform_tohost_VkPhysicalDeviceProtectedMemoryFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProtectedMemoryFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceProtectedMemoryFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProtectedMemoryFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceProtectedMemoryProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProtectedMemoryProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceProtectedMemoryProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProtectedMemoryProperties* toTransform);

void transform_tohost_VkDeviceQueueInfo2(VkDecoderGlobalState* resourceTracker,
                                         VkDeviceQueueInfo2* toTransform);

void transform_fromhost_VkDeviceQueueInfo2(VkDecoderGlobalState* resourceTracker,
                                           VkDeviceQueueInfo2* toTransform);

void transform_tohost_VkProtectedSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                            VkProtectedSubmitInfo* toTransform);

void transform_fromhost_VkProtectedSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                              VkProtectedSubmitInfo* toTransform);

void transform_tohost_VkSamplerYcbcrConversionCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkSamplerYcbcrConversionCreateInfo* toTransform);

void transform_fromhost_VkSamplerYcbcrConversionCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkSamplerYcbcrConversionCreateInfo* toTransform);

void transform_tohost_VkSamplerYcbcrConversionInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkSamplerYcbcrConversionInfo* toTransform);

void transform_fromhost_VkSamplerYcbcrConversionInfo(VkDecoderGlobalState* resourceTracker,
                                                     VkSamplerYcbcrConversionInfo* toTransform);

void transform_tohost_VkBindImagePlaneMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkBindImagePlaneMemoryInfo* toTransform);

void transform_fromhost_VkBindImagePlaneMemoryInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkBindImagePlaneMemoryInfo* toTransform);

void transform_tohost_VkImagePlaneMemoryRequirementsInfo(
    VkDecoderGlobalState* resourceTracker, VkImagePlaneMemoryRequirementsInfo* toTransform);

void transform_fromhost_VkImagePlaneMemoryRequirementsInfo(
    VkDecoderGlobalState* resourceTracker, VkImagePlaneMemoryRequirementsInfo* toTransform);

void transform_tohost_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSamplerYcbcrConversionFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSamplerYcbcrConversionFeatures* toTransform);

void transform_tohost_VkSamplerYcbcrConversionImageFormatProperties(
    VkDecoderGlobalState* resourceTracker,
    VkSamplerYcbcrConversionImageFormatProperties* toTransform);

void transform_fromhost_VkSamplerYcbcrConversionImageFormatProperties(
    VkDecoderGlobalState* resourceTracker,
    VkSamplerYcbcrConversionImageFormatProperties* toTransform);

void transform_tohost_VkDescriptorUpdateTemplateEntry(VkDecoderGlobalState* resourceTracker,
                                                      VkDescriptorUpdateTemplateEntry* toTransform);

void transform_fromhost_VkDescriptorUpdateTemplateEntry(
    VkDecoderGlobalState* resourceTracker, VkDescriptorUpdateTemplateEntry* toTransform);

void transform_tohost_VkDescriptorUpdateTemplateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkDescriptorUpdateTemplateCreateInfo* toTransform);

void transform_fromhost_VkDescriptorUpdateTemplateCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkDescriptorUpdateTemplateCreateInfo* toTransform);

void transform_tohost_VkExternalMemoryProperties(VkDecoderGlobalState* resourceTracker,
                                                 VkExternalMemoryProperties* toTransform);

void transform_fromhost_VkExternalMemoryProperties(VkDecoderGlobalState* resourceTracker,
                                                   VkExternalMemoryProperties* toTransform);

void transform_tohost_VkPhysicalDeviceExternalImageFormatInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalImageFormatInfo* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalImageFormatInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalImageFormatInfo* toTransform);

void transform_tohost_VkExternalImageFormatProperties(VkDecoderGlobalState* resourceTracker,
                                                      VkExternalImageFormatProperties* toTransform);

void transform_fromhost_VkExternalImageFormatProperties(
    VkDecoderGlobalState* resourceTracker, VkExternalImageFormatProperties* toTransform);

void transform_tohost_VkPhysicalDeviceExternalBufferInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalBufferInfo* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalBufferInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalBufferInfo* toTransform);

void transform_tohost_VkExternalBufferProperties(VkDecoderGlobalState* resourceTracker,
                                                 VkExternalBufferProperties* toTransform);

void transform_fromhost_VkExternalBufferProperties(VkDecoderGlobalState* resourceTracker,
                                                   VkExternalBufferProperties* toTransform);

void transform_tohost_VkPhysicalDeviceIDProperties(VkDecoderGlobalState* resourceTracker,
                                                   VkPhysicalDeviceIDProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceIDProperties(VkDecoderGlobalState* resourceTracker,
                                                     VkPhysicalDeviceIDProperties* toTransform);

void transform_tohost_VkExternalMemoryImageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkExternalMemoryImageCreateInfo* toTransform);

void transform_fromhost_VkExternalMemoryImageCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkExternalMemoryImageCreateInfo* toTransform);

void transform_tohost_VkExternalMemoryBufferCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkExternalMemoryBufferCreateInfo* toTransform);

void transform_fromhost_VkExternalMemoryBufferCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkExternalMemoryBufferCreateInfo* toTransform);

void transform_tohost_VkExportMemoryAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                 VkExportMemoryAllocateInfo* toTransform);

void transform_fromhost_VkExportMemoryAllocateInfo(VkDecoderGlobalState* resourceTracker,
                                                   VkExportMemoryAllocateInfo* toTransform);

void transform_tohost_VkPhysicalDeviceExternalFenceInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalFenceInfo* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalFenceInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalFenceInfo* toTransform);

void transform_tohost_VkExternalFenceProperties(VkDecoderGlobalState* resourceTracker,
                                                VkExternalFenceProperties* toTransform);

void transform_fromhost_VkExternalFenceProperties(VkDecoderGlobalState* resourceTracker,
                                                  VkExternalFenceProperties* toTransform);

void transform_tohost_VkExportFenceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                              VkExportFenceCreateInfo* toTransform);

void transform_fromhost_VkExportFenceCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkExportFenceCreateInfo* toTransform);

void transform_tohost_VkExportSemaphoreCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkExportSemaphoreCreateInfo* toTransform);

void transform_fromhost_VkExportSemaphoreCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkExportSemaphoreCreateInfo* toTransform);

void transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalSemaphoreInfo* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalSemaphoreInfo(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExternalSemaphoreInfo* toTransform);

void transform_tohost_VkExternalSemaphoreProperties(VkDecoderGlobalState* resourceTracker,
                                                    VkExternalSemaphoreProperties* toTransform);

void transform_fromhost_VkExternalSemaphoreProperties(VkDecoderGlobalState* resourceTracker,
                                                      VkExternalSemaphoreProperties* toTransform);

void transform_tohost_VkPhysicalDeviceMaintenance3Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance3Properties* toTransform);

void transform_fromhost_VkPhysicalDeviceMaintenance3Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance3Properties* toTransform);

void transform_tohost_VkDescriptorSetLayoutSupport(VkDecoderGlobalState* resourceTracker,
                                                   VkDescriptorSetLayoutSupport* toTransform);

void transform_fromhost_VkDescriptorSetLayoutSupport(VkDecoderGlobalState* resourceTracker,
                                                     VkDescriptorSetLayoutSupport* toTransform);

void transform_tohost_VkPhysicalDeviceShaderDrawParametersFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderDrawParametersFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderDrawParametersFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderDrawParametersFeatures* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceShaderDrawParametersFeatures,
                      transform_tohost_VkPhysicalDeviceShaderDrawParameterFeatures)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceShaderDrawParametersFeatures,
                      transform_fromhost_VkPhysicalDeviceShaderDrawParameterFeatures)

#endif
#ifdef VK_VERSION_1_2
void transform_tohost_VkPhysicalDeviceVulkan11Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan11Features* toTransform);

void transform_fromhost_VkPhysicalDeviceVulkan11Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan11Features* toTransform);

void transform_tohost_VkPhysicalDeviceVulkan11Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan11Properties* toTransform);

void transform_fromhost_VkPhysicalDeviceVulkan11Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan11Properties* toTransform);

void transform_tohost_VkPhysicalDeviceVulkan12Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan12Features* toTransform);

void transform_fromhost_VkPhysicalDeviceVulkan12Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan12Features* toTransform);

void transform_tohost_VkConformanceVersion(VkDecoderGlobalState* resourceTracker,
                                           VkConformanceVersion* toTransform);

void transform_fromhost_VkConformanceVersion(VkDecoderGlobalState* resourceTracker,
                                             VkConformanceVersion* toTransform);

void transform_tohost_VkPhysicalDeviceVulkan12Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan12Properties* toTransform);

void transform_fromhost_VkPhysicalDeviceVulkan12Properties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkan12Properties* toTransform);

void transform_tohost_VkImageFormatListCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkImageFormatListCreateInfo* toTransform);

void transform_fromhost_VkImageFormatListCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkImageFormatListCreateInfo* toTransform);

void transform_tohost_VkAttachmentDescription2(VkDecoderGlobalState* resourceTracker,
                                               VkAttachmentDescription2* toTransform);

void transform_fromhost_VkAttachmentDescription2(VkDecoderGlobalState* resourceTracker,
                                                 VkAttachmentDescription2* toTransform);

void transform_tohost_VkAttachmentReference2(VkDecoderGlobalState* resourceTracker,
                                             VkAttachmentReference2* toTransform);

void transform_fromhost_VkAttachmentReference2(VkDecoderGlobalState* resourceTracker,
                                               VkAttachmentReference2* toTransform);

void transform_tohost_VkSubpassDescription2(VkDecoderGlobalState* resourceTracker,
                                            VkSubpassDescription2* toTransform);

void transform_fromhost_VkSubpassDescription2(VkDecoderGlobalState* resourceTracker,
                                              VkSubpassDescription2* toTransform);

void transform_tohost_VkSubpassDependency2(VkDecoderGlobalState* resourceTracker,
                                           VkSubpassDependency2* toTransform);

void transform_fromhost_VkSubpassDependency2(VkDecoderGlobalState* resourceTracker,
                                             VkSubpassDependency2* toTransform);

void transform_tohost_VkRenderPassCreateInfo2(VkDecoderGlobalState* resourceTracker,
                                              VkRenderPassCreateInfo2* toTransform);

void transform_fromhost_VkRenderPassCreateInfo2(VkDecoderGlobalState* resourceTracker,
                                                VkRenderPassCreateInfo2* toTransform);

void transform_tohost_VkSubpassBeginInfo(VkDecoderGlobalState* resourceTracker,
                                         VkSubpassBeginInfo* toTransform);

void transform_fromhost_VkSubpassBeginInfo(VkDecoderGlobalState* resourceTracker,
                                           VkSubpassBeginInfo* toTransform);

void transform_tohost_VkSubpassEndInfo(VkDecoderGlobalState* resourceTracker,
                                       VkSubpassEndInfo* toTransform);

void transform_fromhost_VkSubpassEndInfo(VkDecoderGlobalState* resourceTracker,
                                         VkSubpassEndInfo* toTransform);

void transform_tohost_VkPhysicalDevice8BitStorageFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice8BitStorageFeatures* toTransform);

void transform_fromhost_VkPhysicalDevice8BitStorageFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice8BitStorageFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceDriverProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDriverProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceDriverProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDriverProperties* toTransform);

void transform_tohost_VkPhysicalDeviceShaderAtomicInt64Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderAtomicInt64Features* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderAtomicInt64Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderAtomicInt64Features* toTransform);

void transform_tohost_VkPhysicalDeviceShaderFloat16Int8Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderFloat16Int8Features* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderFloat16Int8Features(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderFloat16Int8Features* toTransform);

void transform_tohost_VkPhysicalDeviceFloatControlsProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceFloatControlsProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceFloatControlsProperties(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceFloatControlsProperties* toTransform);

void transform_tohost_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetLayoutBindingFlagsCreateInfo* toTransform);

void transform_fromhost_VkDescriptorSetLayoutBindingFlagsCreateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetLayoutBindingFlagsCreateInfo* toTransform);

void transform_tohost_VkPhysicalDeviceDescriptorIndexingFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDescriptorIndexingFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceDescriptorIndexingFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDescriptorIndexingFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceDescriptorIndexingProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDescriptorIndexingProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceDescriptorIndexingProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDescriptorIndexingProperties* toTransform);

void transform_tohost_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetVariableDescriptorCountAllocateInfo* toTransform);

void transform_fromhost_VkDescriptorSetVariableDescriptorCountAllocateInfo(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetVariableDescriptorCountAllocateInfo* toTransform);

void transform_tohost_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetVariableDescriptorCountLayoutSupport* toTransform);

void transform_fromhost_VkDescriptorSetVariableDescriptorCountLayoutSupport(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorSetVariableDescriptorCountLayoutSupport* toTransform);

void transform_tohost_VkSubpassDescriptionDepthStencilResolve(
    VkDecoderGlobalState* resourceTracker, VkSubpassDescriptionDepthStencilResolve* toTransform);

void transform_fromhost_VkSubpassDescriptionDepthStencilResolve(
    VkDecoderGlobalState* resourceTracker, VkSubpassDescriptionDepthStencilResolve* toTransform);

void transform_tohost_VkPhysicalDeviceDepthStencilResolveProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDepthStencilResolveProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceDepthStencilResolveProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDepthStencilResolveProperties* toTransform);

void transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceScalarBlockLayoutFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceScalarBlockLayoutFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceScalarBlockLayoutFeatures* toTransform);

void transform_tohost_VkImageStencilUsageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkImageStencilUsageCreateInfo* toTransform);

void transform_fromhost_VkImageStencilUsageCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkImageStencilUsageCreateInfo* toTransform);

void transform_tohost_VkSamplerReductionModeCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkSamplerReductionModeCreateInfo* toTransform);

void transform_fromhost_VkSamplerReductionModeCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkSamplerReductionModeCreateInfo* toTransform);

void transform_tohost_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSamplerFilterMinmaxProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceSamplerFilterMinmaxProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSamplerFilterMinmaxProperties* toTransform);

void transform_tohost_VkPhysicalDeviceVulkanMemoryModelFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkanMemoryModelFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceVulkanMemoryModelFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVulkanMemoryModelFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceImagelessFramebufferFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImagelessFramebufferFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceImagelessFramebufferFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImagelessFramebufferFeatures* toTransform);

void transform_tohost_VkFramebufferAttachmentImageInfo(
    VkDecoderGlobalState* resourceTracker, VkFramebufferAttachmentImageInfo* toTransform);

void transform_fromhost_VkFramebufferAttachmentImageInfo(
    VkDecoderGlobalState* resourceTracker, VkFramebufferAttachmentImageInfo* toTransform);

void transform_tohost_VkFramebufferAttachmentsCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkFramebufferAttachmentsCreateInfo* toTransform);

void transform_fromhost_VkFramebufferAttachmentsCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkFramebufferAttachmentsCreateInfo* toTransform);

void transform_tohost_VkRenderPassAttachmentBeginInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkRenderPassAttachmentBeginInfo* toTransform);

void transform_fromhost_VkRenderPassAttachmentBeginInfo(
    VkDecoderGlobalState* resourceTracker, VkRenderPassAttachmentBeginInfo* toTransform);

void transform_tohost_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceUniformBufferStandardLayoutFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceUniformBufferStandardLayoutFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceUniformBufferStandardLayoutFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* toTransform);

void transform_tohost_VkAttachmentReferenceStencilLayout(
    VkDecoderGlobalState* resourceTracker, VkAttachmentReferenceStencilLayout* toTransform);

void transform_fromhost_VkAttachmentReferenceStencilLayout(
    VkDecoderGlobalState* resourceTracker, VkAttachmentReferenceStencilLayout* toTransform);

void transform_tohost_VkAttachmentDescriptionStencilLayout(
    VkDecoderGlobalState* resourceTracker, VkAttachmentDescriptionStencilLayout* toTransform);

void transform_fromhost_VkAttachmentDescriptionStencilLayout(
    VkDecoderGlobalState* resourceTracker, VkAttachmentDescriptionStencilLayout* toTransform);

void transform_tohost_VkPhysicalDeviceHostQueryResetFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceHostQueryResetFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceHostQueryResetFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceHostQueryResetFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceTimelineSemaphoreFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceTimelineSemaphoreFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceTimelineSemaphoreFeatures(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceTimelineSemaphoreFeatures* toTransform);

void transform_tohost_VkPhysicalDeviceTimelineSemaphoreProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTimelineSemaphoreProperties* toTransform);

void transform_fromhost_VkPhysicalDeviceTimelineSemaphoreProperties(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTimelineSemaphoreProperties* toTransform);

void transform_tohost_VkSemaphoreTypeCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                VkSemaphoreTypeCreateInfo* toTransform);

void transform_fromhost_VkSemaphoreTypeCreateInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkSemaphoreTypeCreateInfo* toTransform);

void transform_tohost_VkTimelineSemaphoreSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                                    VkTimelineSemaphoreSubmitInfo* toTransform);

void transform_fromhost_VkTimelineSemaphoreSubmitInfo(VkDecoderGlobalState* resourceTracker,
                                                      VkTimelineSemaphoreSubmitInfo* toTransform);

void transform_tohost_VkSemaphoreWaitInfo(VkDecoderGlobalState* resourceTracker,
                                          VkSemaphoreWaitInfo* toTransform);

void transform_fromhost_VkSemaphoreWaitInfo(VkDecoderGlobalState* resourceTracker,
                                            VkSemaphoreWaitInfo* toTransform);

void transform_tohost_VkSemaphoreSignalInfo(VkDecoderGlobalState* resourceTracker,
                                            VkSemaphoreSignalInfo* toTransform);

void transform_fromhost_VkSemaphoreSignalInfo(VkDecoderGlobalState* resourceTracker,
                                              VkSemaphoreSignalInfo* toTransform);

void transform_tohost_VkPhysicalDeviceBufferDeviceAddressFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBufferDeviceAddressFeatures* toTransform);

void transform_fromhost_VkPhysicalDeviceBufferDeviceAddressFeatures(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBufferDeviceAddressFeatures* toTransform);

void transform_tohost_VkBufferDeviceAddressInfo(VkDecoderGlobalState* resourceTracker,
                                                VkBufferDeviceAddressInfo* toTransform);

void transform_fromhost_VkBufferDeviceAddressInfo(VkDecoderGlobalState* resourceTracker,
                                                  VkBufferDeviceAddressInfo* toTransform);

void transform_tohost_VkBufferOpaqueCaptureAddressCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkBufferOpaqueCaptureAddressCreateInfo* toTransform);

void transform_fromhost_VkBufferOpaqueCaptureAddressCreateInfo(
    VkDecoderGlobalState* resourceTracker, VkBufferOpaqueCaptureAddressCreateInfo* toTransform);

void transform_tohost_VkMemoryOpaqueCaptureAddressAllocateInfo(
    VkDecoderGlobalState* resourceTracker, VkMemoryOpaqueCaptureAddressAllocateInfo* toTransform);

void transform_fromhost_VkMemoryOpaqueCaptureAddressAllocateInfo(
    VkDecoderGlobalState* resourceTracker, VkMemoryOpaqueCaptureAddressAllocateInfo* toTransform);

void transform_tohost_VkDeviceMemoryOpaqueCaptureAddressInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryOpaqueCaptureAddressInfo* toTransform);

void transform_fromhost_VkDeviceMemoryOpaqueCaptureAddressInfo(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryOpaqueCaptureAddressInfo* toTransform);

#endif
#ifdef VK_KHR_surface
void transform_tohost_VkSurfaceCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                               VkSurfaceCapabilitiesKHR* toTransform);

void transform_fromhost_VkSurfaceCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkSurfaceCapabilitiesKHR* toTransform);

void transform_tohost_VkSurfaceFormatKHR(VkDecoderGlobalState* resourceTracker,
                                         VkSurfaceFormatKHR* toTransform);

void transform_fromhost_VkSurfaceFormatKHR(VkDecoderGlobalState* resourceTracker,
                                           VkSurfaceFormatKHR* toTransform);

#endif
#ifdef VK_KHR_swapchain
void transform_tohost_VkSwapchainCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                               VkSwapchainCreateInfoKHR* toTransform);

void transform_fromhost_VkSwapchainCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkSwapchainCreateInfoKHR* toTransform);

void transform_tohost_VkPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                       VkPresentInfoKHR* toTransform);

void transform_fromhost_VkPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                         VkPresentInfoKHR* toTransform);

void transform_tohost_VkImageSwapchainCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkImageSwapchainCreateInfoKHR* toTransform);

void transform_fromhost_VkImageSwapchainCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkImageSwapchainCreateInfoKHR* toTransform);

void transform_tohost_VkBindImageMemorySwapchainInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkBindImageMemorySwapchainInfoKHR* toTransform);

void transform_fromhost_VkBindImageMemorySwapchainInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkBindImageMemorySwapchainInfoKHR* toTransform);

void transform_tohost_VkAcquireNextImageInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkAcquireNextImageInfoKHR* toTransform);

void transform_fromhost_VkAcquireNextImageInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkAcquireNextImageInfoKHR* toTransform);

void transform_tohost_VkDeviceGroupPresentCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupPresentCapabilitiesKHR* toTransform);

void transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupPresentCapabilitiesKHR* toTransform);

void transform_tohost_VkDeviceGroupPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkDeviceGroupPresentInfoKHR* toTransform);

void transform_fromhost_VkDeviceGroupPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDeviceGroupPresentInfoKHR* toTransform);

void transform_tohost_VkDeviceGroupSwapchainCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupSwapchainCreateInfoKHR* toTransform);

void transform_fromhost_VkDeviceGroupSwapchainCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceGroupSwapchainCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_display
void transform_tohost_VkDisplayModeParametersKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkDisplayModeParametersKHR* toTransform);

void transform_fromhost_VkDisplayModeParametersKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkDisplayModeParametersKHR* toTransform);

void transform_tohost_VkDisplayModeCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkDisplayModeCreateInfoKHR* toTransform);

void transform_fromhost_VkDisplayModeCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkDisplayModeCreateInfoKHR* toTransform);

void transform_tohost_VkDisplayModePropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkDisplayModePropertiesKHR* toTransform);

void transform_fromhost_VkDisplayModePropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkDisplayModePropertiesKHR* toTransform);

void transform_tohost_VkDisplayPlaneCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDisplayPlaneCapabilitiesKHR* toTransform);

void transform_fromhost_VkDisplayPlaneCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkDisplayPlaneCapabilitiesKHR* toTransform);

void transform_tohost_VkDisplayPlanePropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkDisplayPlanePropertiesKHR* toTransform);

void transform_fromhost_VkDisplayPlanePropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDisplayPlanePropertiesKHR* toTransform);

void transform_tohost_VkDisplayPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                             VkDisplayPropertiesKHR* toTransform);

void transform_fromhost_VkDisplayPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                               VkDisplayPropertiesKHR* toTransform);

void transform_tohost_VkDisplaySurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDisplaySurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkDisplaySurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkDisplaySurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_display_swapchain
void transform_tohost_VkDisplayPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                              VkDisplayPresentInfoKHR* toTransform);

void transform_fromhost_VkDisplayPresentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkDisplayPresentInfoKHR* toTransform);

#endif
#ifdef VK_KHR_xlib_surface
void transform_tohost_VkXlibSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkXlibSurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkXlibSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkXlibSurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_xcb_surface
void transform_tohost_VkXcbSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkXcbSurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkXcbSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkXcbSurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_wayland_surface
void transform_tohost_VkWaylandSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkWaylandSurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkWaylandSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkWaylandSurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_android_surface
void transform_tohost_VkAndroidSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkAndroidSurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkAndroidSurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkAndroidSurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_win32_surface
void transform_tohost_VkWin32SurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkWin32SurfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkWin32SurfaceCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkWin32SurfaceCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
#endif
#ifdef VK_KHR_video_queue
void transform_tohost_VkVideoQueueFamilyProperties2KHR(
    VkDecoderGlobalState* resourceTracker, VkVideoQueueFamilyProperties2KHR* toTransform);

void transform_fromhost_VkVideoQueueFamilyProperties2KHR(
    VkDecoderGlobalState* resourceTracker, VkVideoQueueFamilyProperties2KHR* toTransform);

void transform_tohost_VkVideoProfileKHR(VkDecoderGlobalState* resourceTracker,
                                        VkVideoProfileKHR* toTransform);

void transform_fromhost_VkVideoProfileKHR(VkDecoderGlobalState* resourceTracker,
                                          VkVideoProfileKHR* toTransform);

void transform_tohost_VkVideoProfilesKHR(VkDecoderGlobalState* resourceTracker,
                                         VkVideoProfilesKHR* toTransform);

void transform_fromhost_VkVideoProfilesKHR(VkDecoderGlobalState* resourceTracker,
                                           VkVideoProfilesKHR* toTransform);

void transform_tohost_VkVideoCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                             VkVideoCapabilitiesKHR* toTransform);

void transform_fromhost_VkVideoCapabilitiesKHR(VkDecoderGlobalState* resourceTracker,
                                               VkVideoCapabilitiesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceVideoFormatInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVideoFormatInfoKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceVideoFormatInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceVideoFormatInfoKHR* toTransform);

void transform_tohost_VkVideoFormatPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkVideoFormatPropertiesKHR* toTransform);

void transform_fromhost_VkVideoFormatPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkVideoFormatPropertiesKHR* toTransform);

void transform_tohost_VkVideoPictureResourceKHR(VkDecoderGlobalState* resourceTracker,
                                                VkVideoPictureResourceKHR* toTransform);

void transform_fromhost_VkVideoPictureResourceKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoPictureResourceKHR* toTransform);

void transform_tohost_VkVideoReferenceSlotKHR(VkDecoderGlobalState* resourceTracker,
                                              VkVideoReferenceSlotKHR* toTransform);

void transform_fromhost_VkVideoReferenceSlotKHR(VkDecoderGlobalState* resourceTracker,
                                                VkVideoReferenceSlotKHR* toTransform);

void transform_tohost_VkVideoGetMemoryPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoGetMemoryPropertiesKHR* toTransform);

void transform_fromhost_VkVideoGetMemoryPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoGetMemoryPropertiesKHR* toTransform);

void transform_tohost_VkVideoBindMemoryKHR(VkDecoderGlobalState* resourceTracker,
                                           VkVideoBindMemoryKHR* toTransform);

void transform_fromhost_VkVideoBindMemoryKHR(VkDecoderGlobalState* resourceTracker,
                                             VkVideoBindMemoryKHR* toTransform);

void transform_tohost_VkVideoSessionCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoSessionCreateInfoKHR* toTransform);

void transform_fromhost_VkVideoSessionCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoSessionCreateInfoKHR* toTransform);

void transform_tohost_VkVideoSessionParametersCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkVideoSessionParametersCreateInfoKHR* toTransform);

void transform_fromhost_VkVideoSessionParametersCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkVideoSessionParametersCreateInfoKHR* toTransform);

void transform_tohost_VkVideoSessionParametersUpdateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkVideoSessionParametersUpdateInfoKHR* toTransform);

void transform_fromhost_VkVideoSessionParametersUpdateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkVideoSessionParametersUpdateInfoKHR* toTransform);

void transform_tohost_VkVideoBeginCodingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkVideoBeginCodingInfoKHR* toTransform);

void transform_fromhost_VkVideoBeginCodingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoBeginCodingInfoKHR* toTransform);

void transform_tohost_VkVideoEndCodingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                              VkVideoEndCodingInfoKHR* toTransform);

void transform_fromhost_VkVideoEndCodingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkVideoEndCodingInfoKHR* toTransform);

void transform_tohost_VkVideoCodingControlInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoCodingControlInfoKHR* toTransform);

void transform_fromhost_VkVideoCodingControlInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoCodingControlInfoKHR* toTransform);

#endif
#ifdef VK_KHR_video_decode_queue
void transform_tohost_VkVideoDecodeInfoKHR(VkDecoderGlobalState* resourceTracker,
                                           VkVideoDecodeInfoKHR* toTransform);

void transform_fromhost_VkVideoDecodeInfoKHR(VkDecoderGlobalState* resourceTracker,
                                             VkVideoDecodeInfoKHR* toTransform);

#endif
#ifdef VK_KHR_dynamic_rendering
void transform_tohost_VkRenderingAttachmentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkRenderingAttachmentInfoKHR* toTransform);

void transform_fromhost_VkRenderingAttachmentInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                     VkRenderingAttachmentInfoKHR* toTransform);

void transform_tohost_VkRenderingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                         VkRenderingInfoKHR* toTransform);

void transform_fromhost_VkRenderingInfoKHR(VkDecoderGlobalState* resourceTracker,
                                           VkRenderingInfoKHR* toTransform);

void transform_tohost_VkPipelineRenderingCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineRenderingCreateInfoKHR* toTransform);

void transform_fromhost_VkPipelineRenderingCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineRenderingCreateInfoKHR* toTransform);

void transform_tohost_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDynamicRenderingFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceDynamicRenderingFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDynamicRenderingFeaturesKHR* toTransform);

void transform_tohost_VkCommandBufferInheritanceRenderingInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCommandBufferInheritanceRenderingInfoKHR* toTransform);

void transform_fromhost_VkCommandBufferInheritanceRenderingInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCommandBufferInheritanceRenderingInfoKHR* toTransform);

void transform_tohost_VkRenderingFragmentShadingRateAttachmentInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkRenderingFragmentShadingRateAttachmentInfoKHR* toTransform);

void transform_fromhost_VkRenderingFragmentShadingRateAttachmentInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkRenderingFragmentShadingRateAttachmentInfoKHR* toTransform);

void transform_tohost_VkRenderingFragmentDensityMapAttachmentInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkRenderingFragmentDensityMapAttachmentInfoEXT* toTransform);

void transform_fromhost_VkRenderingFragmentDensityMapAttachmentInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkRenderingFragmentDensityMapAttachmentInfoEXT* toTransform);

void transform_tohost_VkAttachmentSampleCountInfoAMD(VkDecoderGlobalState* resourceTracker,
                                                     VkAttachmentSampleCountInfoAMD* toTransform);

void transform_fromhost_VkAttachmentSampleCountInfoAMD(VkDecoderGlobalState* resourceTracker,
                                                       VkAttachmentSampleCountInfoAMD* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAttachmentSampleCountInfoAMD,
                      transform_tohost_VkAttachmentSampleCountInfoNV)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAttachmentSampleCountInfoAMD,
                      transform_fromhost_VkAttachmentSampleCountInfoNV)

void transform_tohost_VkMultiviewPerViewAttributesInfoNVX(
    VkDecoderGlobalState* resourceTracker, VkMultiviewPerViewAttributesInfoNVX* toTransform);

void transform_fromhost_VkMultiviewPerViewAttributesInfoNVX(
    VkDecoderGlobalState* resourceTracker, VkMultiviewPerViewAttributesInfoNVX* toTransform);

#endif
#ifdef VK_KHR_multiview
DEFINE_ALIAS_FUNCTION(transform_tohost_VkRenderPassMultiviewCreateInfo,
                      transform_tohost_VkRenderPassMultiviewCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkRenderPassMultiviewCreateInfo,
                      transform_fromhost_VkRenderPassMultiviewCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceMultiviewFeatures,
                      transform_tohost_VkPhysicalDeviceMultiviewFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceMultiviewFeatures,
                      transform_fromhost_VkPhysicalDeviceMultiviewFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceMultiviewProperties,
                      transform_tohost_VkPhysicalDeviceMultiviewPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceMultiviewProperties,
                      transform_fromhost_VkPhysicalDeviceMultiviewPropertiesKHR)

#endif
#ifdef VK_KHR_get_physical_device_properties2
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceFeatures2,
                      transform_tohost_VkPhysicalDeviceFeatures2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceFeatures2,
                      transform_fromhost_VkPhysicalDeviceFeatures2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceProperties2,
                      transform_tohost_VkPhysicalDeviceProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceProperties2,
                      transform_fromhost_VkPhysicalDeviceProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkFormatProperties2, transform_tohost_VkFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkFormatProperties2,
                      transform_fromhost_VkFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageFormatProperties2,
                      transform_tohost_VkImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageFormatProperties2,
                      transform_fromhost_VkImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceImageFormatInfo2,
                      transform_tohost_VkPhysicalDeviceImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceImageFormatInfo2,
                      transform_fromhost_VkPhysicalDeviceImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkQueueFamilyProperties2,
                      transform_tohost_VkQueueFamilyProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkQueueFamilyProperties2,
                      transform_fromhost_VkQueueFamilyProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceMemoryProperties2,
                      transform_tohost_VkPhysicalDeviceMemoryProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceMemoryProperties2,
                      transform_fromhost_VkPhysicalDeviceMemoryProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSparseImageFormatProperties2,
                      transform_tohost_VkSparseImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSparseImageFormatProperties2,
                      transform_fromhost_VkSparseImageFormatProperties2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2,
                      transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceSparseImageFormatInfo2,
                      transform_fromhost_VkPhysicalDeviceSparseImageFormatInfo2KHR)

#endif
#ifdef VK_KHR_device_group
DEFINE_ALIAS_FUNCTION(transform_tohost_VkMemoryAllocateFlagsInfo,
                      transform_tohost_VkMemoryAllocateFlagsInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkMemoryAllocateFlagsInfo,
                      transform_fromhost_VkMemoryAllocateFlagsInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceGroupRenderPassBeginInfo,
                      transform_tohost_VkDeviceGroupRenderPassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceGroupRenderPassBeginInfo,
                      transform_fromhost_VkDeviceGroupRenderPassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceGroupCommandBufferBeginInfo,
                      transform_tohost_VkDeviceGroupCommandBufferBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceGroupCommandBufferBeginInfo,
                      transform_fromhost_VkDeviceGroupCommandBufferBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceGroupSubmitInfo,
                      transform_tohost_VkDeviceGroupSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceGroupSubmitInfo,
                      transform_fromhost_VkDeviceGroupSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceGroupBindSparseInfo,
                      transform_tohost_VkDeviceGroupBindSparseInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceGroupBindSparseInfo,
                      transform_fromhost_VkDeviceGroupBindSparseInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBindBufferMemoryDeviceGroupInfo,
                      transform_tohost_VkBindBufferMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBindBufferMemoryDeviceGroupInfo,
                      transform_fromhost_VkBindBufferMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBindImageMemoryDeviceGroupInfo,
                      transform_tohost_VkBindImageMemoryDeviceGroupInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBindImageMemoryDeviceGroupInfo,
                      transform_fromhost_VkBindImageMemoryDeviceGroupInfoKHR)

#endif
#ifdef VK_KHR_shader_draw_parameters
#endif
#ifdef VK_KHR_maintenance1
#endif
#ifdef VK_KHR_device_group_creation
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceGroupProperties,
                      transform_tohost_VkPhysicalDeviceGroupPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceGroupProperties,
                      transform_fromhost_VkPhysicalDeviceGroupPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceGroupDeviceCreateInfo,
                      transform_tohost_VkDeviceGroupDeviceCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceGroupDeviceCreateInfo,
                      transform_fromhost_VkDeviceGroupDeviceCreateInfoKHR)

#endif
#ifdef VK_KHR_external_memory_capabilities
DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalMemoryProperties,
                      transform_tohost_VkExternalMemoryPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalMemoryProperties,
                      transform_fromhost_VkExternalMemoryPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceExternalImageFormatInfo,
                      transform_tohost_VkPhysicalDeviceExternalImageFormatInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceExternalImageFormatInfo,
                      transform_fromhost_VkPhysicalDeviceExternalImageFormatInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalImageFormatProperties,
                      transform_tohost_VkExternalImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalImageFormatProperties,
                      transform_fromhost_VkExternalImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceExternalBufferInfo,
                      transform_tohost_VkPhysicalDeviceExternalBufferInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceExternalBufferInfo,
                      transform_fromhost_VkPhysicalDeviceExternalBufferInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalBufferProperties,
                      transform_tohost_VkExternalBufferPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalBufferProperties,
                      transform_fromhost_VkExternalBufferPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceIDProperties,
                      transform_tohost_VkPhysicalDeviceIDPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceIDProperties,
                      transform_fromhost_VkPhysicalDeviceIDPropertiesKHR)

#endif
#ifdef VK_KHR_external_memory
DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalMemoryImageCreateInfo,
                      transform_tohost_VkExternalMemoryImageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalMemoryImageCreateInfo,
                      transform_fromhost_VkExternalMemoryImageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalMemoryBufferCreateInfo,
                      transform_tohost_VkExternalMemoryBufferCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalMemoryBufferCreateInfo,
                      transform_fromhost_VkExternalMemoryBufferCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExportMemoryAllocateInfo,
                      transform_tohost_VkExportMemoryAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExportMemoryAllocateInfo,
                      transform_fromhost_VkExportMemoryAllocateInfoKHR)

#endif
#ifdef VK_KHR_external_memory_win32
void transform_tohost_VkImportMemoryWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkImportMemoryWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryWin32HandleInfoKHR* toTransform);

void transform_tohost_VkExportMemoryWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkExportMemoryWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkExportMemoryWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkExportMemoryWin32HandleInfoKHR* toTransform);

void transform_tohost_VkMemoryWin32HandlePropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkMemoryWin32HandlePropertiesKHR* toTransform);

void transform_fromhost_VkMemoryWin32HandlePropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkMemoryWin32HandlePropertiesKHR* toTransform);

void transform_tohost_VkMemoryGetWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkMemoryGetWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkMemoryGetWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkMemoryGetWin32HandleInfoKHR* toTransform);

#endif
#ifdef VK_KHR_external_memory_fd
void transform_tohost_VkImportMemoryFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                              VkImportMemoryFdInfoKHR* toTransform);

void transform_fromhost_VkImportMemoryFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkImportMemoryFdInfoKHR* toTransform);

void transform_tohost_VkMemoryFdPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                              VkMemoryFdPropertiesKHR* toTransform);

void transform_fromhost_VkMemoryFdPropertiesKHR(VkDecoderGlobalState* resourceTracker,
                                                VkMemoryFdPropertiesKHR* toTransform);

void transform_tohost_VkMemoryGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                           VkMemoryGetFdInfoKHR* toTransform);

void transform_fromhost_VkMemoryGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                             VkMemoryGetFdInfoKHR* toTransform);

#endif
#ifdef VK_KHR_win32_keyed_mutex
void transform_tohost_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkWin32KeyedMutexAcquireReleaseInfoKHR* toTransform);

void transform_fromhost_VkWin32KeyedMutexAcquireReleaseInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkWin32KeyedMutexAcquireReleaseInfoKHR* toTransform);

#endif
#ifdef VK_KHR_external_semaphore_capabilities
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo,
                      transform_tohost_VkPhysicalDeviceExternalSemaphoreInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceExternalSemaphoreInfo,
                      transform_fromhost_VkPhysicalDeviceExternalSemaphoreInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalSemaphoreProperties,
                      transform_tohost_VkExternalSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalSemaphoreProperties,
                      transform_fromhost_VkExternalSemaphorePropertiesKHR)

#endif
#ifdef VK_KHR_external_semaphore
DEFINE_ALIAS_FUNCTION(transform_tohost_VkExportSemaphoreCreateInfo,
                      transform_tohost_VkExportSemaphoreCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExportSemaphoreCreateInfo,
                      transform_fromhost_VkExportSemaphoreCreateInfoKHR)

#endif
#ifdef VK_KHR_external_semaphore_win32
void transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkImportSemaphoreWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkImportSemaphoreWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkImportSemaphoreWin32HandleInfoKHR* toTransform);

void transform_tohost_VkExportSemaphoreWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkExportSemaphoreWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkExportSemaphoreWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkExportSemaphoreWin32HandleInfoKHR* toTransform);

void transform_tohost_VkD3D12FenceSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkD3D12FenceSubmitInfoKHR* toTransform);

void transform_fromhost_VkD3D12FenceSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkD3D12FenceSubmitInfoKHR* toTransform);

void transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkSemaphoreGetWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkSemaphoreGetWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkSemaphoreGetWin32HandleInfoKHR* toTransform);

#endif
#ifdef VK_KHR_external_semaphore_fd
void transform_tohost_VkImportSemaphoreFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkImportSemaphoreFdInfoKHR* toTransform);

void transform_fromhost_VkImportSemaphoreFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkImportSemaphoreFdInfoKHR* toTransform);

void transform_tohost_VkSemaphoreGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                              VkSemaphoreGetFdInfoKHR* toTransform);

void transform_fromhost_VkSemaphoreGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                VkSemaphoreGetFdInfoKHR* toTransform);

#endif
#ifdef VK_KHR_push_descriptor
void transform_tohost_VkPhysicalDevicePushDescriptorPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePushDescriptorPropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePushDescriptorPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePushDescriptorPropertiesKHR* toTransform);

#endif
#ifdef VK_KHR_shader_float16_int8
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceShaderFloat16Int8Features,
                      transform_tohost_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceShaderFloat16Int8Features,
                      transform_fromhost_VkPhysicalDeviceShaderFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceShaderFloat16Int8Features,
                      transform_tohost_VkPhysicalDeviceFloat16Int8FeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceShaderFloat16Int8Features,
                      transform_fromhost_VkPhysicalDeviceFloat16Int8FeaturesKHR)

#endif
#ifdef VK_KHR_16bit_storage
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDevice16BitStorageFeatures,
                      transform_tohost_VkPhysicalDevice16BitStorageFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDevice16BitStorageFeatures,
                      transform_fromhost_VkPhysicalDevice16BitStorageFeaturesKHR)

#endif
#ifdef VK_KHR_incremental_present
void transform_tohost_VkRectLayerKHR(VkDecoderGlobalState* resourceTracker,
                                     VkRectLayerKHR* toTransform);

void transform_fromhost_VkRectLayerKHR(VkDecoderGlobalState* resourceTracker,
                                       VkRectLayerKHR* toTransform);

void transform_tohost_VkPresentRegionKHR(VkDecoderGlobalState* resourceTracker,
                                         VkPresentRegionKHR* toTransform);

void transform_fromhost_VkPresentRegionKHR(VkDecoderGlobalState* resourceTracker,
                                           VkPresentRegionKHR* toTransform);

void transform_tohost_VkPresentRegionsKHR(VkDecoderGlobalState* resourceTracker,
                                          VkPresentRegionsKHR* toTransform);

void transform_fromhost_VkPresentRegionsKHR(VkDecoderGlobalState* resourceTracker,
                                            VkPresentRegionsKHR* toTransform);

#endif
#ifdef VK_KHR_descriptor_update_template
DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorUpdateTemplateEntry,
                      transform_tohost_VkDescriptorUpdateTemplateEntryKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorUpdateTemplateEntry,
                      transform_fromhost_VkDescriptorUpdateTemplateEntryKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorUpdateTemplateCreateInfo,
                      transform_tohost_VkDescriptorUpdateTemplateCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorUpdateTemplateCreateInfo,
                      transform_fromhost_VkDescriptorUpdateTemplateCreateInfoKHR)

#endif
#ifdef VK_KHR_imageless_framebuffer
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceImagelessFramebufferFeatures,
                      transform_tohost_VkPhysicalDeviceImagelessFramebufferFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceImagelessFramebufferFeatures,
                      transform_fromhost_VkPhysicalDeviceImagelessFramebufferFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkFramebufferAttachmentsCreateInfo,
                      transform_tohost_VkFramebufferAttachmentsCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkFramebufferAttachmentsCreateInfo,
                      transform_fromhost_VkFramebufferAttachmentsCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkFramebufferAttachmentImageInfo,
                      transform_tohost_VkFramebufferAttachmentImageInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkFramebufferAttachmentImageInfo,
                      transform_fromhost_VkFramebufferAttachmentImageInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkRenderPassAttachmentBeginInfo,
                      transform_tohost_VkRenderPassAttachmentBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkRenderPassAttachmentBeginInfo,
                      transform_fromhost_VkRenderPassAttachmentBeginInfoKHR)

#endif
#ifdef VK_KHR_create_renderpass2
DEFINE_ALIAS_FUNCTION(transform_tohost_VkRenderPassCreateInfo2,
                      transform_tohost_VkRenderPassCreateInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkRenderPassCreateInfo2,
                      transform_fromhost_VkRenderPassCreateInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAttachmentDescription2,
                      transform_tohost_VkAttachmentDescription2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAttachmentDescription2,
                      transform_fromhost_VkAttachmentDescription2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAttachmentReference2,
                      transform_tohost_VkAttachmentReference2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAttachmentReference2,
                      transform_fromhost_VkAttachmentReference2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSubpassDescription2,
                      transform_tohost_VkSubpassDescription2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSubpassDescription2,
                      transform_fromhost_VkSubpassDescription2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSubpassDependency2,
                      transform_tohost_VkSubpassDependency2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSubpassDependency2,
                      transform_fromhost_VkSubpassDependency2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSubpassBeginInfo, transform_tohost_VkSubpassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSubpassBeginInfo,
                      transform_fromhost_VkSubpassBeginInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSubpassEndInfo, transform_tohost_VkSubpassEndInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSubpassEndInfo, transform_fromhost_VkSubpassEndInfoKHR)

#endif
#ifdef VK_KHR_shared_presentable_image
void transform_tohost_VkSharedPresentSurfaceCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkSharedPresentSurfaceCapabilitiesKHR* toTransform);

void transform_fromhost_VkSharedPresentSurfaceCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkSharedPresentSurfaceCapabilitiesKHR* toTransform);

#endif
#ifdef VK_KHR_external_fence_capabilities
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceExternalFenceInfo,
                      transform_tohost_VkPhysicalDeviceExternalFenceInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceExternalFenceInfo,
                      transform_fromhost_VkPhysicalDeviceExternalFenceInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkExternalFenceProperties,
                      transform_tohost_VkExternalFencePropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExternalFenceProperties,
                      transform_fromhost_VkExternalFencePropertiesKHR)

#endif
#ifdef VK_KHR_external_fence
DEFINE_ALIAS_FUNCTION(transform_tohost_VkExportFenceCreateInfo,
                      transform_tohost_VkExportFenceCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkExportFenceCreateInfo,
                      transform_fromhost_VkExportFenceCreateInfoKHR)

#endif
#ifdef VK_KHR_external_fence_win32
void transform_tohost_VkImportFenceWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkImportFenceWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkImportFenceWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkImportFenceWin32HandleInfoKHR* toTransform);

void transform_tohost_VkExportFenceWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkExportFenceWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkExportFenceWin32HandleInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkExportFenceWin32HandleInfoKHR* toTransform);

void transform_tohost_VkFenceGetWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkFenceGetWin32HandleInfoKHR* toTransform);

void transform_fromhost_VkFenceGetWin32HandleInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                     VkFenceGetWin32HandleInfoKHR* toTransform);

#endif
#ifdef VK_KHR_external_fence_fd
void transform_tohost_VkImportFenceFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                             VkImportFenceFdInfoKHR* toTransform);

void transform_fromhost_VkImportFenceFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                               VkImportFenceFdInfoKHR* toTransform);

void transform_tohost_VkFenceGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                          VkFenceGetFdInfoKHR* toTransform);

void transform_fromhost_VkFenceGetFdInfoKHR(VkDecoderGlobalState* resourceTracker,
                                            VkFenceGetFdInfoKHR* toTransform);

#endif
#ifdef VK_KHR_performance_query
void transform_tohost_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePerformanceQueryFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePerformanceQueryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePerformanceQueryFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePerformanceQueryPropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePerformanceQueryPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePerformanceQueryPropertiesKHR* toTransform);

void transform_tohost_VkPerformanceCounterKHR(VkDecoderGlobalState* resourceTracker,
                                              VkPerformanceCounterKHR* toTransform);

void transform_fromhost_VkPerformanceCounterKHR(VkDecoderGlobalState* resourceTracker,
                                                VkPerformanceCounterKHR* toTransform);

void transform_tohost_VkPerformanceCounterDescriptionKHR(
    VkDecoderGlobalState* resourceTracker, VkPerformanceCounterDescriptionKHR* toTransform);

void transform_fromhost_VkPerformanceCounterDescriptionKHR(
    VkDecoderGlobalState* resourceTracker, VkPerformanceCounterDescriptionKHR* toTransform);

void transform_tohost_VkQueryPoolPerformanceCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkQueryPoolPerformanceCreateInfoKHR* toTransform);

void transform_fromhost_VkQueryPoolPerformanceCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkQueryPoolPerformanceCreateInfoKHR* toTransform);

void transform_tohost_VkPerformanceCounterResultKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkPerformanceCounterResultKHR* toTransform);

void transform_fromhost_VkPerformanceCounterResultKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkPerformanceCounterResultKHR* toTransform);

void transform_tohost_VkAcquireProfilingLockInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkAcquireProfilingLockInfoKHR* toTransform);

void transform_fromhost_VkAcquireProfilingLockInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkAcquireProfilingLockInfoKHR* toTransform);

void transform_tohost_VkPerformanceQuerySubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkPerformanceQuerySubmitInfoKHR* toTransform);

void transform_fromhost_VkPerformanceQuerySubmitInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkPerformanceQuerySubmitInfoKHR* toTransform);

#endif
#ifdef VK_KHR_maintenance2
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDevicePointClippingProperties,
                      transform_tohost_VkPhysicalDevicePointClippingPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDevicePointClippingProperties,
                      transform_fromhost_VkPhysicalDevicePointClippingPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkRenderPassInputAttachmentAspectCreateInfo,
                      transform_tohost_VkRenderPassInputAttachmentAspectCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkRenderPassInputAttachmentAspectCreateInfo,
                      transform_fromhost_VkRenderPassInputAttachmentAspectCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkInputAttachmentAspectReference,
                      transform_tohost_VkInputAttachmentAspectReferenceKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkInputAttachmentAspectReference,
                      transform_fromhost_VkInputAttachmentAspectReferenceKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageViewUsageCreateInfo,
                      transform_tohost_VkImageViewUsageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageViewUsageCreateInfo,
                      transform_fromhost_VkImageViewUsageCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPipelineTessellationDomainOriginStateCreateInfo,
                      transform_tohost_VkPipelineTessellationDomainOriginStateCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPipelineTessellationDomainOriginStateCreateInfo,
                      transform_fromhost_VkPipelineTessellationDomainOriginStateCreateInfoKHR)

#endif
#ifdef VK_KHR_get_surface_capabilities2
void transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                                      VkPhysicalDeviceSurfaceInfo2KHR* toTransform);

void transform_fromhost_VkPhysicalDeviceSurfaceInfo2KHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceSurfaceInfo2KHR* toTransform);

void transform_tohost_VkSurfaceCapabilities2KHR(VkDecoderGlobalState* resourceTracker,
                                                VkSurfaceCapabilities2KHR* toTransform);

void transform_fromhost_VkSurfaceCapabilities2KHR(VkDecoderGlobalState* resourceTracker,
                                                  VkSurfaceCapabilities2KHR* toTransform);

void transform_tohost_VkSurfaceFormat2KHR(VkDecoderGlobalState* resourceTracker,
                                          VkSurfaceFormat2KHR* toTransform);

void transform_fromhost_VkSurfaceFormat2KHR(VkDecoderGlobalState* resourceTracker,
                                            VkSurfaceFormat2KHR* toTransform);

#endif
#ifdef VK_KHR_variable_pointers
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_tohost_VkPhysicalDeviceVariablePointerFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_fromhost_VkPhysicalDeviceVariablePointerFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_tohost_VkPhysicalDeviceVariablePointersFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceVariablePointersFeatures,
                      transform_fromhost_VkPhysicalDeviceVariablePointersFeaturesKHR)

#endif
#ifdef VK_KHR_get_display_properties2
void transform_tohost_VkDisplayProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                              VkDisplayProperties2KHR* toTransform);

void transform_fromhost_VkDisplayProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                                VkDisplayProperties2KHR* toTransform);

void transform_tohost_VkDisplayPlaneProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                                   VkDisplayPlaneProperties2KHR* toTransform);

void transform_fromhost_VkDisplayPlaneProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                                     VkDisplayPlaneProperties2KHR* toTransform);

void transform_tohost_VkDisplayModeProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                                  VkDisplayModeProperties2KHR* toTransform);

void transform_fromhost_VkDisplayModeProperties2KHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDisplayModeProperties2KHR* toTransform);

void transform_tohost_VkDisplayPlaneInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                             VkDisplayPlaneInfo2KHR* toTransform);

void transform_fromhost_VkDisplayPlaneInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                               VkDisplayPlaneInfo2KHR* toTransform);

void transform_tohost_VkDisplayPlaneCapabilities2KHR(VkDecoderGlobalState* resourceTracker,
                                                     VkDisplayPlaneCapabilities2KHR* toTransform);

void transform_fromhost_VkDisplayPlaneCapabilities2KHR(VkDecoderGlobalState* resourceTracker,
                                                       VkDisplayPlaneCapabilities2KHR* toTransform);

#endif
#ifdef VK_KHR_dedicated_allocation
DEFINE_ALIAS_FUNCTION(transform_tohost_VkMemoryDedicatedRequirements,
                      transform_tohost_VkMemoryDedicatedRequirementsKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkMemoryDedicatedRequirements,
                      transform_fromhost_VkMemoryDedicatedRequirementsKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkMemoryDedicatedAllocateInfo,
                      transform_tohost_VkMemoryDedicatedAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkMemoryDedicatedAllocateInfo,
                      transform_fromhost_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(transform_tohost_VkBufferMemoryRequirementsInfo2,
                      transform_tohost_VkBufferMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBufferMemoryRequirementsInfo2,
                      transform_fromhost_VkBufferMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageMemoryRequirementsInfo2,
                      transform_tohost_VkImageMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageMemoryRequirementsInfo2,
                      transform_fromhost_VkImageMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageSparseMemoryRequirementsInfo2,
                      transform_tohost_VkImageSparseMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageSparseMemoryRequirementsInfo2,
                      transform_fromhost_VkImageSparseMemoryRequirementsInfo2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkMemoryRequirements2,
                      transform_tohost_VkMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkMemoryRequirements2,
                      transform_fromhost_VkMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSparseImageMemoryRequirements2,
                      transform_tohost_VkSparseImageMemoryRequirements2KHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSparseImageMemoryRequirements2,
                      transform_fromhost_VkSparseImageMemoryRequirements2KHR)

#endif
#ifdef VK_KHR_image_format_list
DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageFormatListCreateInfo,
                      transform_tohost_VkImageFormatListCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageFormatListCreateInfo,
                      transform_fromhost_VkImageFormatListCreateInfoKHR)

#endif
#ifdef VK_KHR_sampler_ycbcr_conversion
DEFINE_ALIAS_FUNCTION(transform_tohost_VkSamplerYcbcrConversionCreateInfo,
                      transform_tohost_VkSamplerYcbcrConversionCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSamplerYcbcrConversionCreateInfo,
                      transform_fromhost_VkSamplerYcbcrConversionCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSamplerYcbcrConversionInfo,
                      transform_tohost_VkSamplerYcbcrConversionInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSamplerYcbcrConversionInfo,
                      transform_fromhost_VkSamplerYcbcrConversionInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBindImagePlaneMemoryInfo,
                      transform_tohost_VkBindImagePlaneMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBindImagePlaneMemoryInfo,
                      transform_fromhost_VkBindImagePlaneMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkImagePlaneMemoryRequirementsInfo,
                      transform_tohost_VkImagePlaneMemoryRequirementsInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImagePlaneMemoryRequirementsInfo,
                      transform_fromhost_VkImagePlaneMemoryRequirementsInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceSamplerYcbcrConversionFeatures,
                      transform_tohost_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceSamplerYcbcrConversionFeatures,
                      transform_fromhost_VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSamplerYcbcrConversionImageFormatProperties,
                      transform_tohost_VkSamplerYcbcrConversionImageFormatPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSamplerYcbcrConversionImageFormatProperties,
                      transform_fromhost_VkSamplerYcbcrConversionImageFormatPropertiesKHR)

#endif
#ifdef VK_KHR_bind_memory2
DEFINE_ALIAS_FUNCTION(transform_tohost_VkBindBufferMemoryInfo,
                      transform_tohost_VkBindBufferMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBindBufferMemoryInfo,
                      transform_fromhost_VkBindBufferMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBindImageMemoryInfo,
                      transform_tohost_VkBindImageMemoryInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBindImageMemoryInfo,
                      transform_fromhost_VkBindImageMemoryInfoKHR)

#endif
#ifdef VK_KHR_portability_subset
void transform_tohost_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePortabilitySubsetFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePortabilitySubsetFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePortabilitySubsetFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePortabilitySubsetPropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePortabilitySubsetPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePortabilitySubsetPropertiesKHR* toTransform);

#endif
#ifdef VK_KHR_maintenance3
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceMaintenance3Properties,
                      transform_tohost_VkPhysicalDeviceMaintenance3PropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceMaintenance3Properties,
                      transform_fromhost_VkPhysicalDeviceMaintenance3PropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorSetLayoutSupport,
                      transform_tohost_VkDescriptorSetLayoutSupportKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorSetLayoutSupport,
                      transform_fromhost_VkDescriptorSetLayoutSupportKHR)

#endif
#ifdef VK_KHR_draw_indirect_count
#endif
#ifdef VK_KHR_shader_subgroup_extended_types
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures,
                      transform_tohost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures,
                      transform_fromhost_VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR)

#endif
#ifdef VK_KHR_8bit_storage
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDevice8BitStorageFeatures,
                      transform_tohost_VkPhysicalDevice8BitStorageFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDevice8BitStorageFeatures,
                      transform_fromhost_VkPhysicalDevice8BitStorageFeaturesKHR)

#endif
#ifdef VK_KHR_shader_atomic_int64
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceShaderAtomicInt64Features,
                      transform_tohost_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceShaderAtomicInt64Features,
                      transform_fromhost_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR)

#endif
#ifdef VK_KHR_shader_clock
void transform_tohost_VkPhysicalDeviceShaderClockFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderClockFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderClockFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderClockFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_driver_properties
DEFINE_ALIAS_FUNCTION(transform_tohost_VkConformanceVersion,
                      transform_tohost_VkConformanceVersionKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkConformanceVersion,
                      transform_fromhost_VkConformanceVersionKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceDriverProperties,
                      transform_tohost_VkPhysicalDeviceDriverPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceDriverProperties,
                      transform_fromhost_VkPhysicalDeviceDriverPropertiesKHR)

#endif
#ifdef VK_KHR_shader_float_controls
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceFloatControlsProperties,
                      transform_tohost_VkPhysicalDeviceFloatControlsPropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceFloatControlsProperties,
                      transform_fromhost_VkPhysicalDeviceFloatControlsPropertiesKHR)

#endif
#ifdef VK_KHR_depth_stencil_resolve
DEFINE_ALIAS_FUNCTION(transform_tohost_VkSubpassDescriptionDepthStencilResolve,
                      transform_tohost_VkSubpassDescriptionDepthStencilResolveKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSubpassDescriptionDepthStencilResolve,
                      transform_fromhost_VkSubpassDescriptionDepthStencilResolveKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceDepthStencilResolveProperties,
                      transform_tohost_VkPhysicalDeviceDepthStencilResolvePropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceDepthStencilResolveProperties,
                      transform_fromhost_VkPhysicalDeviceDepthStencilResolvePropertiesKHR)

#endif
#ifdef VK_KHR_swapchain_mutable_format
#endif
#ifdef VK_KHR_timeline_semaphore
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceTimelineSemaphoreFeatures,
                      transform_tohost_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceTimelineSemaphoreFeatures,
                      transform_fromhost_VkPhysicalDeviceTimelineSemaphoreFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceTimelineSemaphoreProperties,
                      transform_tohost_VkPhysicalDeviceTimelineSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceTimelineSemaphoreProperties,
                      transform_fromhost_VkPhysicalDeviceTimelineSemaphorePropertiesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSemaphoreTypeCreateInfo,
                      transform_tohost_VkSemaphoreTypeCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSemaphoreTypeCreateInfo,
                      transform_fromhost_VkSemaphoreTypeCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkTimelineSemaphoreSubmitInfo,
                      transform_tohost_VkTimelineSemaphoreSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkTimelineSemaphoreSubmitInfo,
                      transform_fromhost_VkTimelineSemaphoreSubmitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSemaphoreWaitInfo, transform_tohost_VkSemaphoreWaitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSemaphoreWaitInfo,
                      transform_fromhost_VkSemaphoreWaitInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkSemaphoreSignalInfo,
                      transform_tohost_VkSemaphoreSignalInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSemaphoreSignalInfo,
                      transform_fromhost_VkSemaphoreSignalInfoKHR)

#endif
#ifdef VK_KHR_vulkan_memory_model
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceVulkanMemoryModelFeatures,
                      transform_tohost_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceVulkanMemoryModelFeatures,
                      transform_fromhost_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR)

#endif
#ifdef VK_KHR_shader_terminate_invocation
void transform_tohost_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_fragment_shading_rate
void transform_tohost_VkFragmentShadingRateAttachmentInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkFragmentShadingRateAttachmentInfoKHR* toTransform);

void transform_fromhost_VkFragmentShadingRateAttachmentInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkFragmentShadingRateAttachmentInfoKHR* toTransform);

void transform_tohost_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineFragmentShadingRateStateCreateInfoKHR* toTransform);

void transform_fromhost_VkPipelineFragmentShadingRateStateCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineFragmentShadingRateStateCreateInfoKHR* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShadingRateFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRatePropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShadingRatePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRatePropertiesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentShadingRateKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceFragmentShadingRateKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShadingRateKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceFragmentShadingRateKHR* toTransform);

#endif
#ifdef VK_KHR_spirv_1_4
#endif
#ifdef VK_KHR_surface_protected_capabilities
void transform_tohost_VkSurfaceProtectedCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkSurfaceProtectedCapabilitiesKHR* toTransform);

void transform_fromhost_VkSurfaceProtectedCapabilitiesKHR(
    VkDecoderGlobalState* resourceTracker, VkSurfaceProtectedCapabilitiesKHR* toTransform);

#endif
#ifdef VK_KHR_separate_depth_stencil_layouts
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures,
                      transform_tohost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures,
                      transform_fromhost_VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAttachmentReferenceStencilLayout,
                      transform_tohost_VkAttachmentReferenceStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAttachmentReferenceStencilLayout,
                      transform_fromhost_VkAttachmentReferenceStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAttachmentDescriptionStencilLayout,
                      transform_tohost_VkAttachmentDescriptionStencilLayoutKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAttachmentDescriptionStencilLayout,
                      transform_fromhost_VkAttachmentDescriptionStencilLayoutKHR)

#endif
#ifdef VK_KHR_present_wait
void transform_tohost_VkPhysicalDevicePresentWaitFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePresentWaitFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePresentWaitFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePresentWaitFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_uniform_buffer_standard_layout
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceUniformBufferStandardLayoutFeatures,
                      transform_tohost_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceUniformBufferStandardLayoutFeatures,
                      transform_fromhost_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR)

#endif
#ifdef VK_KHR_buffer_device_address
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceBufferDeviceAddressFeatures,
                      transform_tohost_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceBufferDeviceAddressFeatures,
                      transform_fromhost_VkPhysicalDeviceBufferDeviceAddressFeaturesKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBufferDeviceAddressInfo,
                      transform_tohost_VkBufferDeviceAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBufferDeviceAddressInfo,
                      transform_fromhost_VkBufferDeviceAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBufferOpaqueCaptureAddressCreateInfo,
                      transform_tohost_VkBufferOpaqueCaptureAddressCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBufferOpaqueCaptureAddressCreateInfo,
                      transform_fromhost_VkBufferOpaqueCaptureAddressCreateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkMemoryOpaqueCaptureAddressAllocateInfo,
                      transform_tohost_VkMemoryOpaqueCaptureAddressAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkMemoryOpaqueCaptureAddressAllocateInfo,
                      transform_fromhost_VkMemoryOpaqueCaptureAddressAllocateInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDeviceMemoryOpaqueCaptureAddressInfo,
                      transform_tohost_VkDeviceMemoryOpaqueCaptureAddressInfoKHR)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDeviceMemoryOpaqueCaptureAddressInfo,
                      transform_fromhost_VkDeviceMemoryOpaqueCaptureAddressInfoKHR)

#endif
#ifdef VK_KHR_deferred_host_operations
#endif
#ifdef VK_KHR_pipeline_executable_properties
void transform_tohost_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* toTransform);

void transform_tohost_VkPipelineInfoKHR(VkDecoderGlobalState* resourceTracker,
                                        VkPipelineInfoKHR* toTransform);

void transform_fromhost_VkPipelineInfoKHR(VkDecoderGlobalState* resourceTracker,
                                          VkPipelineInfoKHR* toTransform);

void transform_tohost_VkPipelineExecutablePropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutablePropertiesKHR* toTransform);

void transform_fromhost_VkPipelineExecutablePropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutablePropertiesKHR* toTransform);

void transform_tohost_VkPipelineExecutableInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                  VkPipelineExecutableInfoKHR* toTransform);

void transform_fromhost_VkPipelineExecutableInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkPipelineExecutableInfoKHR* toTransform);

void transform_tohost_VkPipelineExecutableStatisticValueKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutableStatisticValueKHR* toTransform);

void transform_fromhost_VkPipelineExecutableStatisticValueKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutableStatisticValueKHR* toTransform);

void transform_tohost_VkPipelineExecutableStatisticKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutableStatisticKHR* toTransform);

void transform_fromhost_VkPipelineExecutableStatisticKHR(
    VkDecoderGlobalState* resourceTracker, VkPipelineExecutableStatisticKHR* toTransform);

void transform_tohost_VkPipelineExecutableInternalRepresentationKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineExecutableInternalRepresentationKHR* toTransform);

void transform_fromhost_VkPipelineExecutableInternalRepresentationKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineExecutableInternalRepresentationKHR* toTransform);

#endif
#ifdef VK_KHR_shader_integer_dot_product
void transform_tohost_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR* toTransform);

#endif
#ifdef VK_KHR_pipeline_library
void transform_tohost_VkPipelineLibraryCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                     VkPipelineLibraryCreateInfoKHR* toTransform);

void transform_fromhost_VkPipelineLibraryCreateInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                       VkPipelineLibraryCreateInfoKHR* toTransform);

#endif
#ifdef VK_KHR_shader_non_semantic_info
#endif
#ifdef VK_KHR_present_id
void transform_tohost_VkPresentIdKHR(VkDecoderGlobalState* resourceTracker,
                                     VkPresentIdKHR* toTransform);

void transform_fromhost_VkPresentIdKHR(VkDecoderGlobalState* resourceTracker,
                                       VkPresentIdKHR* toTransform);

void transform_tohost_VkPhysicalDevicePresentIdFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePresentIdFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDevicePresentIdFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePresentIdFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_video_encode_queue
void transform_tohost_VkVideoEncodeInfoKHR(VkDecoderGlobalState* resourceTracker,
                                           VkVideoEncodeInfoKHR* toTransform);

void transform_fromhost_VkVideoEncodeInfoKHR(VkDecoderGlobalState* resourceTracker,
                                             VkVideoEncodeInfoKHR* toTransform);

void transform_tohost_VkVideoEncodeRateControlInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoEncodeRateControlInfoKHR* toTransform);

void transform_fromhost_VkVideoEncodeRateControlInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeRateControlInfoKHR* toTransform);

#endif
#ifdef VK_KHR_synchronization2
void transform_tohost_VkMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                          VkMemoryBarrier2KHR* toTransform);

void transform_fromhost_VkMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                            VkMemoryBarrier2KHR* toTransform);

void transform_tohost_VkBufferMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                                VkBufferMemoryBarrier2KHR* toTransform);

void transform_fromhost_VkBufferMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                                  VkBufferMemoryBarrier2KHR* toTransform);

void transform_tohost_VkImageMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                               VkImageMemoryBarrier2KHR* toTransform);

void transform_fromhost_VkImageMemoryBarrier2KHR(VkDecoderGlobalState* resourceTracker,
                                                 VkImageMemoryBarrier2KHR* toTransform);

void transform_tohost_VkDependencyInfoKHR(VkDecoderGlobalState* resourceTracker,
                                          VkDependencyInfoKHR* toTransform);

void transform_fromhost_VkDependencyInfoKHR(VkDecoderGlobalState* resourceTracker,
                                            VkDependencyInfoKHR* toTransform);

void transform_tohost_VkSemaphoreSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                               VkSemaphoreSubmitInfoKHR* toTransform);

void transform_fromhost_VkSemaphoreSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkSemaphoreSubmitInfoKHR* toTransform);

void transform_tohost_VkCommandBufferSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                   VkCommandBufferSubmitInfoKHR* toTransform);

void transform_fromhost_VkCommandBufferSubmitInfoKHR(VkDecoderGlobalState* resourceTracker,
                                                     VkCommandBufferSubmitInfoKHR* toTransform);

void transform_tohost_VkSubmitInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                       VkSubmitInfo2KHR* toTransform);

void transform_fromhost_VkSubmitInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                         VkSubmitInfo2KHR* toTransform);

void transform_tohost_VkPhysicalDeviceSynchronization2FeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSynchronization2FeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceSynchronization2FeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSynchronization2FeaturesKHR* toTransform);

void transform_tohost_VkQueueFamilyCheckpointProperties2NV(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyCheckpointProperties2NV* toTransform);

void transform_fromhost_VkQueueFamilyCheckpointProperties2NV(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyCheckpointProperties2NV* toTransform);

void transform_tohost_VkCheckpointData2NV(VkDecoderGlobalState* resourceTracker,
                                          VkCheckpointData2NV* toTransform);

void transform_fromhost_VkCheckpointData2NV(VkDecoderGlobalState* resourceTracker,
                                            VkCheckpointData2NV* toTransform);

#endif
#ifdef VK_KHR_shader_subgroup_uniform_control_flow
void transform_tohost_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_zero_initialize_workgroup_memory
void transform_tohost_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_workgroup_memory_explicit_layout
void transform_tohost_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* toTransform);

#endif
#ifdef VK_KHR_copy_commands2
void transform_tohost_VkBufferCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                       VkBufferCopy2KHR* toTransform);

void transform_fromhost_VkBufferCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                         VkBufferCopy2KHR* toTransform);

void transform_tohost_VkCopyBufferInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                           VkCopyBufferInfo2KHR* toTransform);

void transform_fromhost_VkCopyBufferInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                             VkCopyBufferInfo2KHR* toTransform);

void transform_tohost_VkImageCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                      VkImageCopy2KHR* toTransform);

void transform_fromhost_VkImageCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                        VkImageCopy2KHR* toTransform);

void transform_tohost_VkCopyImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                          VkCopyImageInfo2KHR* toTransform);

void transform_fromhost_VkCopyImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                            VkCopyImageInfo2KHR* toTransform);

void transform_tohost_VkBufferImageCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                            VkBufferImageCopy2KHR* toTransform);

void transform_fromhost_VkBufferImageCopy2KHR(VkDecoderGlobalState* resourceTracker,
                                              VkBufferImageCopy2KHR* toTransform);

void transform_tohost_VkCopyBufferToImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                                  VkCopyBufferToImageInfo2KHR* toTransform);

void transform_fromhost_VkCopyBufferToImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                                    VkCopyBufferToImageInfo2KHR* toTransform);

void transform_tohost_VkCopyImageToBufferInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                                  VkCopyImageToBufferInfo2KHR* toTransform);

void transform_fromhost_VkCopyImageToBufferInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                                    VkCopyImageToBufferInfo2KHR* toTransform);

void transform_tohost_VkImageBlit2KHR(VkDecoderGlobalState* resourceTracker,
                                      VkImageBlit2KHR* toTransform);

void transform_fromhost_VkImageBlit2KHR(VkDecoderGlobalState* resourceTracker,
                                        VkImageBlit2KHR* toTransform);

void transform_tohost_VkBlitImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                          VkBlitImageInfo2KHR* toTransform);

void transform_fromhost_VkBlitImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                            VkBlitImageInfo2KHR* toTransform);

void transform_tohost_VkImageResolve2KHR(VkDecoderGlobalState* resourceTracker,
                                         VkImageResolve2KHR* toTransform);

void transform_fromhost_VkImageResolve2KHR(VkDecoderGlobalState* resourceTracker,
                                           VkImageResolve2KHR* toTransform);

void transform_tohost_VkResolveImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                             VkResolveImageInfo2KHR* toTransform);

void transform_fromhost_VkResolveImageInfo2KHR(VkDecoderGlobalState* resourceTracker,
                                               VkResolveImageInfo2KHR* toTransform);

#endif
#ifdef VK_KHR_format_feature_flags2
void transform_tohost_VkFormatProperties3KHR(VkDecoderGlobalState* resourceTracker,
                                             VkFormatProperties3KHR* toTransform);

void transform_fromhost_VkFormatProperties3KHR(VkDecoderGlobalState* resourceTracker,
                                               VkFormatProperties3KHR* toTransform);

#endif
#ifdef VK_KHR_maintenance4
void transform_tohost_VkPhysicalDeviceMaintenance4FeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance4FeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceMaintenance4FeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance4FeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceMaintenance4PropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance4PropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceMaintenance4PropertiesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMaintenance4PropertiesKHR* toTransform);

void transform_tohost_VkDeviceBufferMemoryRequirementsKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceBufferMemoryRequirementsKHR* toTransform);

void transform_fromhost_VkDeviceBufferMemoryRequirementsKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceBufferMemoryRequirementsKHR* toTransform);

void transform_tohost_VkDeviceImageMemoryRequirementsKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceImageMemoryRequirementsKHR* toTransform);

void transform_fromhost_VkDeviceImageMemoryRequirementsKHR(
    VkDecoderGlobalState* resourceTracker, VkDeviceImageMemoryRequirementsKHR* toTransform);

#endif
#ifdef VK_ANDROID_native_buffer
void transform_tohost_VkNativeBufferANDROID(VkDecoderGlobalState* resourceTracker,
                                            VkNativeBufferANDROID* toTransform);

void transform_fromhost_VkNativeBufferANDROID(VkDecoderGlobalState* resourceTracker,
                                              VkNativeBufferANDROID* toTransform);

#endif
#ifdef VK_EXT_debug_report
void transform_tohost_VkDebugReportCallbackCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugReportCallbackCreateInfoEXT* toTransform);

void transform_fromhost_VkDebugReportCallbackCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugReportCallbackCreateInfoEXT* toTransform);

#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 transform_tohost_VkPipelineRasterizationStateRasterizationOrderAMD(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationStateRasterizationOrderAMD* toTransform);

void transform_fromhost_VkPipelineRasterizationStateRasterizationOrderAMD(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationStateRasterizationOrderAMD* toTransform);

#endif
#ifdef VK_AMD_shader_trinary_minmax
#endif
#ifdef VK_AMD_shader_explicit_vertex_parameter
#endif
#ifdef VK_EXT_debug_marker
void transform_tohost_VkDebugMarkerObjectNameInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkDebugMarkerObjectNameInfoEXT* toTransform);

void transform_fromhost_VkDebugMarkerObjectNameInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkDebugMarkerObjectNameInfoEXT* toTransform);

void transform_tohost_VkDebugMarkerObjectTagInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkDebugMarkerObjectTagInfoEXT* toTransform);

void transform_fromhost_VkDebugMarkerObjectTagInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkDebugMarkerObjectTagInfoEXT* toTransform);

void transform_tohost_VkDebugMarkerMarkerInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                 VkDebugMarkerMarkerInfoEXT* toTransform);

void transform_fromhost_VkDebugMarkerMarkerInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                   VkDebugMarkerMarkerInfoEXT* toTransform);

#endif
#ifdef VK_AMD_gcn_shader
#endif
#ifdef VK_NV_dedicated_allocation
void transform_tohost_VkDedicatedAllocationImageCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationImageCreateInfoNV* toTransform);

void transform_fromhost_VkDedicatedAllocationImageCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationImageCreateInfoNV* toTransform);

void transform_tohost_VkDedicatedAllocationBufferCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationBufferCreateInfoNV* toTransform);

void transform_fromhost_VkDedicatedAllocationBufferCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationBufferCreateInfoNV* toTransform);

void transform_tohost_VkDedicatedAllocationMemoryAllocateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationMemoryAllocateInfoNV* toTransform);

void transform_fromhost_VkDedicatedAllocationMemoryAllocateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDedicatedAllocationMemoryAllocateInfoNV* toTransform);

#endif
#ifdef VK_EXT_transform_feedback
void transform_tohost_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTransformFeedbackFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceTransformFeedbackFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTransformFeedbackFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTransformFeedbackPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceTransformFeedbackPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTransformFeedbackPropertiesEXT* toTransform);

void transform_tohost_VkPipelineRasterizationStateStreamCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationStateStreamCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineRasterizationStateStreamCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationStateStreamCreateInfoEXT* toTransform);

#endif
#ifdef VK_NVX_binary_import
void transform_tohost_VkCuModuleCreateInfoNVX(VkDecoderGlobalState* resourceTracker,
                                              VkCuModuleCreateInfoNVX* toTransform);

void transform_fromhost_VkCuModuleCreateInfoNVX(VkDecoderGlobalState* resourceTracker,
                                                VkCuModuleCreateInfoNVX* toTransform);

void transform_tohost_VkCuFunctionCreateInfoNVX(VkDecoderGlobalState* resourceTracker,
                                                VkCuFunctionCreateInfoNVX* toTransform);

void transform_fromhost_VkCuFunctionCreateInfoNVX(VkDecoderGlobalState* resourceTracker,
                                                  VkCuFunctionCreateInfoNVX* toTransform);

void transform_tohost_VkCuLaunchInfoNVX(VkDecoderGlobalState* resourceTracker,
                                        VkCuLaunchInfoNVX* toTransform);

void transform_fromhost_VkCuLaunchInfoNVX(VkDecoderGlobalState* resourceTracker,
                                          VkCuLaunchInfoNVX* toTransform);

#endif
#ifdef VK_NVX_image_view_handle
void transform_tohost_VkImageViewHandleInfoNVX(VkDecoderGlobalState* resourceTracker,
                                               VkImageViewHandleInfoNVX* toTransform);

void transform_fromhost_VkImageViewHandleInfoNVX(VkDecoderGlobalState* resourceTracker,
                                                 VkImageViewHandleInfoNVX* toTransform);

void transform_tohost_VkImageViewAddressPropertiesNVX(VkDecoderGlobalState* resourceTracker,
                                                      VkImageViewAddressPropertiesNVX* toTransform);

void transform_fromhost_VkImageViewAddressPropertiesNVX(
    VkDecoderGlobalState* resourceTracker, VkImageViewAddressPropertiesNVX* toTransform);

#endif
#ifdef VK_AMD_draw_indirect_count
#endif
#ifdef VK_AMD_negative_viewport_height
#endif
#ifdef VK_AMD_gpu_shader_half_float
#endif
#ifdef VK_AMD_shader_ballot
#endif
#ifdef VK_EXT_video_encode_h264
void transform_tohost_VkVideoEncodeH264CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264CapabilitiesEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264CapabilitiesEXT* toTransform);

void transform_tohost_VkVideoEncodeH264SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264SessionCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264SessionCreateInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH264SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH264SessionParametersAddInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH264SessionParametersAddInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH264SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH264SessionParametersCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH264SessionParametersCreateInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH264DpbSlotInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoEncodeH264DpbSlotInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264DpbSlotInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264DpbSlotInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH264NaluSliceEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoEncodeH264NaluSliceEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264NaluSliceEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoEncodeH264NaluSliceEXT* toTransform);

void transform_tohost_VkVideoEncodeH264VclFrameInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264VclFrameInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264VclFrameInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264VclFrameInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH264EmitPictureParametersEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264EmitPictureParametersEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264EmitPictureParametersEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH264EmitPictureParametersEXT* toTransform);

void transform_tohost_VkVideoEncodeH264ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoEncodeH264ProfileEXT* toTransform);

void transform_fromhost_VkVideoEncodeH264ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoEncodeH264ProfileEXT* toTransform);

#endif
#ifdef VK_EXT_video_encode_h265
void transform_tohost_VkVideoEncodeH265CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265CapabilitiesEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265CapabilitiesEXT* toTransform);

void transform_tohost_VkVideoEncodeH265SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265SessionCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265SessionCreateInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH265SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH265SessionParametersAddInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH265SessionParametersAddInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH265SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH265SessionParametersCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoEncodeH265SessionParametersCreateInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH265DpbSlotInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoEncodeH265DpbSlotInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265DpbSlotInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265DpbSlotInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH265ReferenceListsEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265ReferenceListsEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265ReferenceListsEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265ReferenceListsEXT* toTransform);

void transform_tohost_VkVideoEncodeH265NaluSliceEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoEncodeH265NaluSliceEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265NaluSliceEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoEncodeH265NaluSliceEXT* toTransform);

void transform_tohost_VkVideoEncodeH265VclFrameInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265VclFrameInfoEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265VclFrameInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265VclFrameInfoEXT* toTransform);

void transform_tohost_VkVideoEncodeH265EmitPictureParametersEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265EmitPictureParametersEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265EmitPictureParametersEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoEncodeH265EmitPictureParametersEXT* toTransform);

void transform_tohost_VkVideoEncodeH265ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoEncodeH265ProfileEXT* toTransform);

void transform_fromhost_VkVideoEncodeH265ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoEncodeH265ProfileEXT* toTransform);

#endif
#ifdef VK_EXT_video_decode_h264
void transform_tohost_VkVideoDecodeH264ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoDecodeH264ProfileEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoDecodeH264ProfileEXT* toTransform);

void transform_tohost_VkVideoDecodeH264CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264CapabilitiesEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264CapabilitiesEXT* toTransform);

void transform_tohost_VkVideoDecodeH264SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264SessionCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264SessionCreateInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH264SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH264SessionParametersAddInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH264SessionParametersAddInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH264SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH264SessionParametersCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH264SessionParametersCreateInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH264PictureInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoDecodeH264PictureInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264PictureInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264PictureInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH264MvcEXT(VkDecoderGlobalState* resourceTracker,
                                              VkVideoDecodeH264MvcEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264MvcEXT(VkDecoderGlobalState* resourceTracker,
                                                VkVideoDecodeH264MvcEXT* toTransform);

void transform_tohost_VkVideoDecodeH264DpbSlotInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoDecodeH264DpbSlotInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH264DpbSlotInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH264DpbSlotInfoEXT* toTransform);

#endif
#ifdef VK_AMD_texture_gather_bias_lod
void transform_tohost_VkTextureLODGatherFormatPropertiesAMD(
    VkDecoderGlobalState* resourceTracker, VkTextureLODGatherFormatPropertiesAMD* toTransform);

void transform_fromhost_VkTextureLODGatherFormatPropertiesAMD(
    VkDecoderGlobalState* resourceTracker, VkTextureLODGatherFormatPropertiesAMD* toTransform);

#endif
#ifdef VK_AMD_shader_info
void transform_tohost_VkShaderResourceUsageAMD(VkDecoderGlobalState* resourceTracker,
                                               VkShaderResourceUsageAMD* toTransform);

void transform_fromhost_VkShaderResourceUsageAMD(VkDecoderGlobalState* resourceTracker,
                                                 VkShaderResourceUsageAMD* toTransform);

void transform_tohost_VkShaderStatisticsInfoAMD(VkDecoderGlobalState* resourceTracker,
                                                VkShaderStatisticsInfoAMD* toTransform);

void transform_fromhost_VkShaderStatisticsInfoAMD(VkDecoderGlobalState* resourceTracker,
                                                  VkShaderStatisticsInfoAMD* toTransform);

#endif
#ifdef VK_AMD_shader_image_load_store_lod
#endif
#ifdef VK_GGP_stream_descriptor_surface
void transform_tohost_VkStreamDescriptorSurfaceCreateInfoGGP(
    VkDecoderGlobalState* resourceTracker, VkStreamDescriptorSurfaceCreateInfoGGP* toTransform);

void transform_fromhost_VkStreamDescriptorSurfaceCreateInfoGGP(
    VkDecoderGlobalState* resourceTracker, VkStreamDescriptorSurfaceCreateInfoGGP* toTransform);

#endif
#ifdef VK_NV_corner_sampled_image
void transform_tohost_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCornerSampledImageFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceCornerSampledImageFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCornerSampledImageFeaturesNV* toTransform);

#endif
#ifdef VK_IMG_format_pvrtc
#endif
#ifdef VK_NV_external_memory_capabilities
void transform_tohost_VkExternalImageFormatPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkExternalImageFormatPropertiesNV* toTransform);

void transform_fromhost_VkExternalImageFormatPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkExternalImageFormatPropertiesNV* toTransform);

#endif
#ifdef VK_NV_external_memory
void transform_tohost_VkExternalMemoryImageCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkExternalMemoryImageCreateInfoNV* toTransform);

void transform_fromhost_VkExternalMemoryImageCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkExternalMemoryImageCreateInfoNV* toTransform);

void transform_tohost_VkExportMemoryAllocateInfoNV(VkDecoderGlobalState* resourceTracker,
                                                   VkExportMemoryAllocateInfoNV* toTransform);

void transform_fromhost_VkExportMemoryAllocateInfoNV(VkDecoderGlobalState* resourceTracker,
                                                     VkExportMemoryAllocateInfoNV* toTransform);

#endif
#ifdef VK_NV_external_memory_win32
void transform_tohost_VkImportMemoryWin32HandleInfoNV(VkDecoderGlobalState* resourceTracker,
                                                      VkImportMemoryWin32HandleInfoNV* toTransform);

void transform_fromhost_VkImportMemoryWin32HandleInfoNV(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryWin32HandleInfoNV* toTransform);

void transform_tohost_VkExportMemoryWin32HandleInfoNV(VkDecoderGlobalState* resourceTracker,
                                                      VkExportMemoryWin32HandleInfoNV* toTransform);

void transform_fromhost_VkExportMemoryWin32HandleInfoNV(
    VkDecoderGlobalState* resourceTracker, VkExportMemoryWin32HandleInfoNV* toTransform);

#endif
#ifdef VK_NV_win32_keyed_mutex
void transform_tohost_VkWin32KeyedMutexAcquireReleaseInfoNV(
    VkDecoderGlobalState* resourceTracker, VkWin32KeyedMutexAcquireReleaseInfoNV* toTransform);

void transform_fromhost_VkWin32KeyedMutexAcquireReleaseInfoNV(
    VkDecoderGlobalState* resourceTracker, VkWin32KeyedMutexAcquireReleaseInfoNV* toTransform);

#endif
#ifdef VK_EXT_validation_flags
void transform_tohost_VkValidationFlagsEXT(VkDecoderGlobalState* resourceTracker,
                                           VkValidationFlagsEXT* toTransform);

void transform_fromhost_VkValidationFlagsEXT(VkDecoderGlobalState* resourceTracker,
                                             VkValidationFlagsEXT* toTransform);

#endif
#ifdef VK_NN_vi_surface
void transform_tohost_VkViSurfaceCreateInfoNN(VkDecoderGlobalState* resourceTracker,
                                              VkViSurfaceCreateInfoNN* toTransform);

void transform_fromhost_VkViSurfaceCreateInfoNN(VkDecoderGlobalState* resourceTracker,
                                                VkViSurfaceCreateInfoNN* toTransform);

#endif
#ifdef VK_EXT_shader_subgroup_ballot
#endif
#ifdef VK_EXT_shader_subgroup_vote
#endif
#ifdef VK_EXT_texture_compression_astc_hdr
void transform_tohost_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_astc_decode_mode
void transform_tohost_VkImageViewASTCDecodeModeEXT(VkDecoderGlobalState* resourceTracker,
                                                   VkImageViewASTCDecodeModeEXT* toTransform);

void transform_fromhost_VkImageViewASTCDecodeModeEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkImageViewASTCDecodeModeEXT* toTransform);

void transform_tohost_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceASTCDecodeFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceASTCDecodeFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceASTCDecodeFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_conditional_rendering
void transform_tohost_VkConditionalRenderingBeginInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkConditionalRenderingBeginInfoEXT* toTransform);

void transform_fromhost_VkConditionalRenderingBeginInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkConditionalRenderingBeginInfoEXT* toTransform);

void transform_tohost_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceConditionalRenderingFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceConditionalRenderingFeaturesEXT* toTransform);

void transform_tohost_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceConditionalRenderingInfoEXT* toTransform);

void transform_fromhost_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceConditionalRenderingInfoEXT* toTransform);

#endif
#ifdef VK_NV_clip_space_w_scaling
void transform_tohost_VkViewportWScalingNV(VkDecoderGlobalState* resourceTracker,
                                           VkViewportWScalingNV* toTransform);

void transform_fromhost_VkViewportWScalingNV(VkDecoderGlobalState* resourceTracker,
                                             VkViewportWScalingNV* toTransform);

void transform_tohost_VkPipelineViewportWScalingStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportWScalingStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineViewportWScalingStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportWScalingStateCreateInfoNV* toTransform);

#endif
#ifdef VK_EXT_direct_mode_display
#endif
#ifdef VK_EXT_acquire_xlib_display
#endif
#ifdef VK_EXT_display_surface_counter
void transform_tohost_VkSurfaceCapabilities2EXT(VkDecoderGlobalState* resourceTracker,
                                                VkSurfaceCapabilities2EXT* toTransform);

void transform_fromhost_VkSurfaceCapabilities2EXT(VkDecoderGlobalState* resourceTracker,
                                                  VkSurfaceCapabilities2EXT* toTransform);

#endif
#ifdef VK_EXT_display_control
void transform_tohost_VkDisplayPowerInfoEXT(VkDecoderGlobalState* resourceTracker,
                                            VkDisplayPowerInfoEXT* toTransform);

void transform_fromhost_VkDisplayPowerInfoEXT(VkDecoderGlobalState* resourceTracker,
                                              VkDisplayPowerInfoEXT* toTransform);

void transform_tohost_VkDeviceEventInfoEXT(VkDecoderGlobalState* resourceTracker,
                                           VkDeviceEventInfoEXT* toTransform);

void transform_fromhost_VkDeviceEventInfoEXT(VkDecoderGlobalState* resourceTracker,
                                             VkDeviceEventInfoEXT* toTransform);

void transform_tohost_VkDisplayEventInfoEXT(VkDecoderGlobalState* resourceTracker,
                                            VkDisplayEventInfoEXT* toTransform);

void transform_fromhost_VkDisplayEventInfoEXT(VkDecoderGlobalState* resourceTracker,
                                              VkDisplayEventInfoEXT* toTransform);

void transform_tohost_VkSwapchainCounterCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkSwapchainCounterCreateInfoEXT* toTransform);

void transform_fromhost_VkSwapchainCounterCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSwapchainCounterCreateInfoEXT* toTransform);

#endif
#ifdef VK_GOOGLE_display_timing
void transform_tohost_VkRefreshCycleDurationGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                   VkRefreshCycleDurationGOOGLE* toTransform);

void transform_fromhost_VkRefreshCycleDurationGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                     VkRefreshCycleDurationGOOGLE* toTransform);

void transform_tohost_VkPastPresentationTimingGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                     VkPastPresentationTimingGOOGLE* toTransform);

void transform_fromhost_VkPastPresentationTimingGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                       VkPastPresentationTimingGOOGLE* toTransform);

void transform_tohost_VkPresentTimeGOOGLE(VkDecoderGlobalState* resourceTracker,
                                          VkPresentTimeGOOGLE* toTransform);

void transform_fromhost_VkPresentTimeGOOGLE(VkDecoderGlobalState* resourceTracker,
                                            VkPresentTimeGOOGLE* toTransform);

void transform_tohost_VkPresentTimesInfoGOOGLE(VkDecoderGlobalState* resourceTracker,
                                               VkPresentTimesInfoGOOGLE* toTransform);

void transform_fromhost_VkPresentTimesInfoGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                 VkPresentTimesInfoGOOGLE* toTransform);

#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 transform_tohost_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* toTransform);

void transform_fromhost_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* toTransform);

#endif
#ifdef VK_NV_viewport_swizzle
void transform_tohost_VkViewportSwizzleNV(VkDecoderGlobalState* resourceTracker,
                                          VkViewportSwizzleNV* toTransform);

void transform_fromhost_VkViewportSwizzleNV(VkDecoderGlobalState* resourceTracker,
                                            VkViewportSwizzleNV* toTransform);

void transform_tohost_VkPipelineViewportSwizzleStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkPipelineViewportSwizzleStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineViewportSwizzleStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkPipelineViewportSwizzleStateCreateInfoNV* toTransform);

#endif
#ifdef VK_EXT_discard_rectangles
void transform_tohost_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDiscardRectanglePropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDiscardRectanglePropertiesEXT* toTransform);

void transform_tohost_VkPipelineDiscardRectangleStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineDiscardRectangleStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineDiscardRectangleStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineDiscardRectangleStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_conservative_rasterization
void transform_tohost_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceConservativeRasterizationPropertiesEXT* toTransform);

void transform_tohost_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationConservativeStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineRasterizationConservativeStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationConservativeStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_depth_clip_enable
void transform_tohost_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDepthClipEnableFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceDepthClipEnableFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDepthClipEnableFeaturesEXT* toTransform);

void transform_tohost_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationDepthClipStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineRasterizationDepthClipStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationDepthClipStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_swapchain_colorspace
#endif
#ifdef VK_EXT_hdr_metadata
void transform_tohost_VkXYColorEXT(VkDecoderGlobalState* resourceTracker,
                                   VkXYColorEXT* toTransform);

void transform_fromhost_VkXYColorEXT(VkDecoderGlobalState* resourceTracker,
                                     VkXYColorEXT* toTransform);

void transform_tohost_VkHdrMetadataEXT(VkDecoderGlobalState* resourceTracker,
                                       VkHdrMetadataEXT* toTransform);

void transform_fromhost_VkHdrMetadataEXT(VkDecoderGlobalState* resourceTracker,
                                         VkHdrMetadataEXT* toTransform);

#endif
#ifdef VK_MVK_ios_surface
void transform_tohost_VkIOSSurfaceCreateInfoMVK(VkDecoderGlobalState* resourceTracker,
                                                VkIOSSurfaceCreateInfoMVK* toTransform);

void transform_fromhost_VkIOSSurfaceCreateInfoMVK(VkDecoderGlobalState* resourceTracker,
                                                  VkIOSSurfaceCreateInfoMVK* toTransform);

#endif
#ifdef VK_MVK_macos_surface
void transform_tohost_VkMacOSSurfaceCreateInfoMVK(VkDecoderGlobalState* resourceTracker,
                                                  VkMacOSSurfaceCreateInfoMVK* toTransform);

void transform_fromhost_VkMacOSSurfaceCreateInfoMVK(VkDecoderGlobalState* resourceTracker,
                                                    VkMacOSSurfaceCreateInfoMVK* toTransform);

#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 transform_tohost_VkDebugUtilsLabelEXT(VkDecoderGlobalState* resourceTracker,
                                           VkDebugUtilsLabelEXT* toTransform);

void transform_fromhost_VkDebugUtilsLabelEXT(VkDecoderGlobalState* resourceTracker,
                                             VkDebugUtilsLabelEXT* toTransform);

void transform_tohost_VkDebugUtilsObjectNameInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkDebugUtilsObjectNameInfoEXT* toTransform);

void transform_fromhost_VkDebugUtilsObjectNameInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkDebugUtilsObjectNameInfoEXT* toTransform);

void transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugUtilsMessengerCallbackDataEXT* toTransform);

void transform_fromhost_VkDebugUtilsMessengerCallbackDataEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugUtilsMessengerCallbackDataEXT* toTransform);

void transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugUtilsMessengerCreateInfoEXT* toTransform);

void transform_fromhost_VkDebugUtilsMessengerCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDebugUtilsMessengerCreateInfoEXT* toTransform);

void transform_tohost_VkDebugUtilsObjectTagInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                   VkDebugUtilsObjectTagInfoEXT* toTransform);

void transform_fromhost_VkDebugUtilsObjectTagInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkDebugUtilsObjectTagInfoEXT* toTransform);

#endif
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
void transform_tohost_VkAndroidHardwareBufferUsageANDROID(
    VkDecoderGlobalState* resourceTracker, VkAndroidHardwareBufferUsageANDROID* toTransform);

void transform_fromhost_VkAndroidHardwareBufferUsageANDROID(
    VkDecoderGlobalState* resourceTracker, VkAndroidHardwareBufferUsageANDROID* toTransform);

void transform_tohost_VkAndroidHardwareBufferPropertiesANDROID(
    VkDecoderGlobalState* resourceTracker, VkAndroidHardwareBufferPropertiesANDROID* toTransform);

void transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(
    VkDecoderGlobalState* resourceTracker, VkAndroidHardwareBufferPropertiesANDROID* toTransform);

void transform_tohost_VkAndroidHardwareBufferFormatPropertiesANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkAndroidHardwareBufferFormatPropertiesANDROID* toTransform);

void transform_fromhost_VkAndroidHardwareBufferFormatPropertiesANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkAndroidHardwareBufferFormatPropertiesANDROID* toTransform);

void transform_tohost_VkImportAndroidHardwareBufferInfoANDROID(
    VkDecoderGlobalState* resourceTracker, VkImportAndroidHardwareBufferInfoANDROID* toTransform);

void transform_fromhost_VkImportAndroidHardwareBufferInfoANDROID(
    VkDecoderGlobalState* resourceTracker, VkImportAndroidHardwareBufferInfoANDROID* toTransform);

void transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkMemoryGetAndroidHardwareBufferInfoANDROID* toTransform);

void transform_fromhost_VkMemoryGetAndroidHardwareBufferInfoANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkMemoryGetAndroidHardwareBufferInfoANDROID* toTransform);

void transform_tohost_VkExternalFormatANDROID(VkDecoderGlobalState* resourceTracker,
                                              VkExternalFormatANDROID* toTransform);

void transform_fromhost_VkExternalFormatANDROID(VkDecoderGlobalState* resourceTracker,
                                                VkExternalFormatANDROID* toTransform);

void transform_tohost_VkAndroidHardwareBufferFormatProperties2ANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkAndroidHardwareBufferFormatProperties2ANDROID* toTransform);

void transform_fromhost_VkAndroidHardwareBufferFormatProperties2ANDROID(
    VkDecoderGlobalState* resourceTracker,
    VkAndroidHardwareBufferFormatProperties2ANDROID* toTransform);

#endif
#ifdef VK_EXT_sampler_filter_minmax
DEFINE_ALIAS_FUNCTION(transform_tohost_VkSamplerReductionModeCreateInfo,
                      transform_tohost_VkSamplerReductionModeCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkSamplerReductionModeCreateInfo,
                      transform_fromhost_VkSamplerReductionModeCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceSamplerFilterMinmaxProperties,
                      transform_tohost_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceSamplerFilterMinmaxProperties,
                      transform_fromhost_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 transform_tohost_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInlineUniformBlockFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInlineUniformBlockFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInlineUniformBlockPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInlineUniformBlockPropertiesEXT* toTransform);

void transform_tohost_VkWriteDescriptorSetInlineUniformBlockEXT(
    VkDecoderGlobalState* resourceTracker, VkWriteDescriptorSetInlineUniformBlockEXT* toTransform);

void transform_fromhost_VkWriteDescriptorSetInlineUniformBlockEXT(
    VkDecoderGlobalState* resourceTracker, VkWriteDescriptorSetInlineUniformBlockEXT* toTransform);

void transform_tohost_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorPoolInlineUniformBlockCreateInfoEXT* toTransform);

void transform_fromhost_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkDescriptorPoolInlineUniformBlockCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_shader_stencil_export
#endif
#ifdef VK_EXT_sample_locations
void transform_tohost_VkSampleLocationEXT(VkDecoderGlobalState* resourceTracker,
                                          VkSampleLocationEXT* toTransform);

void transform_fromhost_VkSampleLocationEXT(VkDecoderGlobalState* resourceTracker,
                                            VkSampleLocationEXT* toTransform);

void transform_tohost_VkSampleLocationsInfoEXT(VkDecoderGlobalState* resourceTracker,
                                               VkSampleLocationsInfoEXT* toTransform);

void transform_fromhost_VkSampleLocationsInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                 VkSampleLocationsInfoEXT* toTransform);

void transform_tohost_VkAttachmentSampleLocationsEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkAttachmentSampleLocationsEXT* toTransform);

void transform_fromhost_VkAttachmentSampleLocationsEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkAttachmentSampleLocationsEXT* toTransform);

void transform_tohost_VkSubpassSampleLocationsEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkSubpassSampleLocationsEXT* toTransform);

void transform_fromhost_VkSubpassSampleLocationsEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkSubpassSampleLocationsEXT* toTransform);

void transform_tohost_VkRenderPassSampleLocationsBeginInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkRenderPassSampleLocationsBeginInfoEXT* toTransform);

void transform_fromhost_VkRenderPassSampleLocationsBeginInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkRenderPassSampleLocationsBeginInfoEXT* toTransform);

void transform_tohost_VkPipelineSampleLocationsStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineSampleLocationsStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineSampleLocationsStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineSampleLocationsStateCreateInfoEXT* toTransform);

void transform_tohost_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSampleLocationsPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceSampleLocationsPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSampleLocationsPropertiesEXT* toTransform);

void transform_tohost_VkMultisamplePropertiesEXT(VkDecoderGlobalState* resourceTracker,
                                                 VkMultisamplePropertiesEXT* toTransform);

void transform_fromhost_VkMultisamplePropertiesEXT(VkDecoderGlobalState* resourceTracker,
                                                   VkMultisamplePropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_blend_operation_advanced
void transform_tohost_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* toTransform);

void transform_tohost_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineColorBlendAdvancedStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineColorBlendAdvancedStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_NV_fragment_coverage_to_color
void transform_tohost_VkPipelineCoverageToColorStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkPipelineCoverageToColorStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineCoverageToColorStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkPipelineCoverageToColorStateCreateInfoNV* toTransform);

#endif
#ifdef VK_NV_framebuffer_mixed_samples
void transform_tohost_VkPipelineCoverageModulationStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineCoverageModulationStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineCoverageModulationStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineCoverageModulationStateCreateInfoNV* toTransform);

#endif
#ifdef VK_NV_fill_rectangle
#endif
#ifdef VK_NV_shader_sm_builtins
void transform_tohost_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* toTransform);

void transform_tohost_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* toTransform);

#endif
#ifdef VK_EXT_post_depth_coverage
#endif
#ifdef VK_EXT_image_drm_format_modifier
void transform_tohost_VkDrmFormatModifierPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesEXT* toTransform);

void transform_fromhost_VkDrmFormatModifierPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesEXT* toTransform);

void transform_tohost_VkDrmFormatModifierPropertiesListEXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesListEXT* toTransform);

void transform_fromhost_VkDrmFormatModifierPropertiesListEXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesListEXT* toTransform);

void transform_tohost_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImageDrmFormatModifierInfoEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImageDrmFormatModifierInfoEXT* toTransform);

void transform_tohost_VkImageDrmFormatModifierListCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkImageDrmFormatModifierListCreateInfoEXT* toTransform);

void transform_fromhost_VkImageDrmFormatModifierListCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkImageDrmFormatModifierListCreateInfoEXT* toTransform);

void transform_tohost_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkImageDrmFormatModifierExplicitCreateInfoEXT* toTransform);

void transform_fromhost_VkImageDrmFormatModifierExplicitCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkImageDrmFormatModifierExplicitCreateInfoEXT* toTransform);

void transform_tohost_VkImageDrmFormatModifierPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkImageDrmFormatModifierPropertiesEXT* toTransform);

void transform_fromhost_VkImageDrmFormatModifierPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkImageDrmFormatModifierPropertiesEXT* toTransform);

void transform_tohost_VkDrmFormatModifierProperties2EXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierProperties2EXT* toTransform);

void transform_fromhost_VkDrmFormatModifierProperties2EXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierProperties2EXT* toTransform);

void transform_tohost_VkDrmFormatModifierPropertiesList2EXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesList2EXT* toTransform);

void transform_fromhost_VkDrmFormatModifierPropertiesList2EXT(
    VkDecoderGlobalState* resourceTracker, VkDrmFormatModifierPropertiesList2EXT* toTransform);

#endif
#ifdef VK_EXT_validation_cache
void transform_tohost_VkValidationCacheCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkValidationCacheCreateInfoEXT* toTransform);

void transform_fromhost_VkValidationCacheCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkValidationCacheCreateInfoEXT* toTransform);

void transform_tohost_VkShaderModuleValidationCacheCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkShaderModuleValidationCacheCreateInfoEXT* toTransform);

void transform_fromhost_VkShaderModuleValidationCacheCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkShaderModuleValidationCacheCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_descriptor_indexing
DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorSetLayoutBindingFlagsCreateInfo,
                      transform_tohost_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorSetLayoutBindingFlagsCreateInfo,
                      transform_fromhost_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceDescriptorIndexingFeatures,
                      transform_tohost_VkPhysicalDeviceDescriptorIndexingFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceDescriptorIndexingFeatures,
                      transform_fromhost_VkPhysicalDeviceDescriptorIndexingFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceDescriptorIndexingProperties,
                      transform_tohost_VkPhysicalDeviceDescriptorIndexingPropertiesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceDescriptorIndexingProperties,
                      transform_fromhost_VkPhysicalDeviceDescriptorIndexingPropertiesEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorSetVariableDescriptorCountAllocateInfo,
                      transform_tohost_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorSetVariableDescriptorCountAllocateInfo,
                      transform_fromhost_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkDescriptorSetVariableDescriptorCountLayoutSupport,
                      transform_tohost_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkDescriptorSetVariableDescriptorCountLayoutSupport,
                      transform_fromhost_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)

#endif
#ifdef VK_EXT_shader_viewport_index_layer
#endif
#ifdef VK_NV_shading_rate_image
void transform_tohost_VkShadingRatePaletteNV(VkDecoderGlobalState* resourceTracker,
                                             VkShadingRatePaletteNV* toTransform);

void transform_fromhost_VkShadingRatePaletteNV(VkDecoderGlobalState* resourceTracker,
                                               VkShadingRatePaletteNV* toTransform);

void transform_tohost_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportShadingRateImageStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineViewportShadingRateImageStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportShadingRateImageStateCreateInfoNV* toTransform);

void transform_tohost_VkPhysicalDeviceShadingRateImageFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShadingRateImageFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceShadingRateImageFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShadingRateImageFeaturesNV* toTransform);

void transform_tohost_VkPhysicalDeviceShadingRateImagePropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShadingRateImagePropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceShadingRateImagePropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShadingRateImagePropertiesNV* toTransform);

void transform_tohost_VkCoarseSampleLocationNV(VkDecoderGlobalState* resourceTracker,
                                               VkCoarseSampleLocationNV* toTransform);

void transform_fromhost_VkCoarseSampleLocationNV(VkDecoderGlobalState* resourceTracker,
                                                 VkCoarseSampleLocationNV* toTransform);

void transform_tohost_VkCoarseSampleOrderCustomNV(VkDecoderGlobalState* resourceTracker,
                                                  VkCoarseSampleOrderCustomNV* toTransform);

void transform_fromhost_VkCoarseSampleOrderCustomNV(VkDecoderGlobalState* resourceTracker,
                                                    VkCoarseSampleOrderCustomNV* toTransform);

void transform_tohost_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* toTransform);

#endif
#ifdef VK_NV_ray_tracing
void transform_tohost_VkRayTracingShaderGroupCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkRayTracingShaderGroupCreateInfoNV* toTransform);

void transform_fromhost_VkRayTracingShaderGroupCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkRayTracingShaderGroupCreateInfoNV* toTransform);

void transform_tohost_VkRayTracingPipelineCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineCreateInfoNV* toTransform);

void transform_fromhost_VkRayTracingPipelineCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineCreateInfoNV* toTransform);

void transform_tohost_VkGeometryTrianglesNV(VkDecoderGlobalState* resourceTracker,
                                            VkGeometryTrianglesNV* toTransform);

void transform_fromhost_VkGeometryTrianglesNV(VkDecoderGlobalState* resourceTracker,
                                              VkGeometryTrianglesNV* toTransform);

void transform_tohost_VkGeometryAABBNV(VkDecoderGlobalState* resourceTracker,
                                       VkGeometryAABBNV* toTransform);

void transform_fromhost_VkGeometryAABBNV(VkDecoderGlobalState* resourceTracker,
                                         VkGeometryAABBNV* toTransform);

void transform_tohost_VkGeometryDataNV(VkDecoderGlobalState* resourceTracker,
                                       VkGeometryDataNV* toTransform);

void transform_fromhost_VkGeometryDataNV(VkDecoderGlobalState* resourceTracker,
                                         VkGeometryDataNV* toTransform);

void transform_tohost_VkGeometryNV(VkDecoderGlobalState* resourceTracker,
                                   VkGeometryNV* toTransform);

void transform_fromhost_VkGeometryNV(VkDecoderGlobalState* resourceTracker,
                                     VkGeometryNV* toTransform);

void transform_tohost_VkAccelerationStructureInfoNV(VkDecoderGlobalState* resourceTracker,
                                                    VkAccelerationStructureInfoNV* toTransform);

void transform_fromhost_VkAccelerationStructureInfoNV(VkDecoderGlobalState* resourceTracker,
                                                      VkAccelerationStructureInfoNV* toTransform);

void transform_tohost_VkAccelerationStructureCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureCreateInfoNV* toTransform);

void transform_fromhost_VkAccelerationStructureCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureCreateInfoNV* toTransform);

void transform_tohost_VkBindAccelerationStructureMemoryInfoNV(
    VkDecoderGlobalState* resourceTracker, VkBindAccelerationStructureMemoryInfoNV* toTransform);

void transform_fromhost_VkBindAccelerationStructureMemoryInfoNV(
    VkDecoderGlobalState* resourceTracker, VkBindAccelerationStructureMemoryInfoNV* toTransform);

void transform_tohost_VkWriteDescriptorSetAccelerationStructureNV(
    VkDecoderGlobalState* resourceTracker,
    VkWriteDescriptorSetAccelerationStructureNV* toTransform);

void transform_fromhost_VkWriteDescriptorSetAccelerationStructureNV(
    VkDecoderGlobalState* resourceTracker,
    VkWriteDescriptorSetAccelerationStructureNV* toTransform);

void transform_tohost_VkAccelerationStructureMemoryRequirementsInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMemoryRequirementsInfoNV* toTransform);

void transform_fromhost_VkAccelerationStructureMemoryRequirementsInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMemoryRequirementsInfoNV* toTransform);

void transform_tohost_VkPhysicalDeviceRayTracingPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRayTracingPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceRayTracingPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRayTracingPropertiesNV* toTransform);

void transform_tohost_VkTransformMatrixKHR(VkDecoderGlobalState* resourceTracker,
                                           VkTransformMatrixKHR* toTransform);

void transform_fromhost_VkTransformMatrixKHR(VkDecoderGlobalState* resourceTracker,
                                             VkTransformMatrixKHR* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkTransformMatrixKHR, transform_tohost_VkTransformMatrixNV)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkTransformMatrixKHR,
                      transform_fromhost_VkTransformMatrixNV)

void transform_tohost_VkAabbPositionsKHR(VkDecoderGlobalState* resourceTracker,
                                         VkAabbPositionsKHR* toTransform);

void transform_fromhost_VkAabbPositionsKHR(VkDecoderGlobalState* resourceTracker,
                                           VkAabbPositionsKHR* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAabbPositionsKHR, transform_tohost_VkAabbPositionsNV)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAabbPositionsKHR, transform_fromhost_VkAabbPositionsNV)

void transform_tohost_VkAccelerationStructureInstanceKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureInstanceKHR* toTransform);

void transform_fromhost_VkAccelerationStructureInstanceKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureInstanceKHR* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkAccelerationStructureInstanceKHR,
                      transform_tohost_VkAccelerationStructureInstanceNV)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkAccelerationStructureInstanceKHR,
                      transform_fromhost_VkAccelerationStructureInstanceNV)

#endif
#ifdef VK_NV_representative_fragment_test
void transform_tohost_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* toTransform);

void transform_tohost_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRepresentativeFragmentTestStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRepresentativeFragmentTestStateCreateInfoNV* toTransform);

#endif
#ifdef VK_EXT_filter_cubic
void transform_tohost_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImageViewImageFormatInfoEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceImageViewImageFormatInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceImageViewImageFormatInfoEXT* toTransform);

void transform_tohost_VkFilterCubicImageViewImageFormatPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkFilterCubicImageViewImageFormatPropertiesEXT* toTransform);

void transform_fromhost_VkFilterCubicImageViewImageFormatPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkFilterCubicImageViewImageFormatPropertiesEXT* toTransform);

#endif
#ifdef VK_QCOM_render_pass_shader_resolve
#endif
#ifdef VK_EXT_global_priority
void transform_tohost_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceQueueGlobalPriorityCreateInfoEXT* toTransform);

void transform_fromhost_VkDeviceQueueGlobalPriorityCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceQueueGlobalPriorityCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_external_memory_host
void transform_tohost_VkImportMemoryHostPointerInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryHostPointerInfoEXT* toTransform);

void transform_fromhost_VkImportMemoryHostPointerInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryHostPointerInfoEXT* toTransform);

void transform_tohost_VkMemoryHostPointerPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkMemoryHostPointerPropertiesEXT* toTransform);

void transform_fromhost_VkMemoryHostPointerPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkMemoryHostPointerPropertiesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExternalMemoryHostPropertiesEXT* toTransform);

#endif
#ifdef VK_AMD_buffer_marker
#endif
#ifdef VK_AMD_pipeline_compiler_control
void transform_tohost_VkPipelineCompilerControlCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkPipelineCompilerControlCreateInfoAMD* toTransform);

void transform_fromhost_VkPipelineCompilerControlCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkPipelineCompilerControlCreateInfoAMD* toTransform);

#endif
#ifdef VK_EXT_calibrated_timestamps
void transform_tohost_VkCalibratedTimestampInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                   VkCalibratedTimestampInfoEXT* toTransform);

void transform_fromhost_VkCalibratedTimestampInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkCalibratedTimestampInfoEXT* toTransform);

#endif
#ifdef VK_AMD_shader_core_properties
void transform_tohost_VkPhysicalDeviceShaderCorePropertiesAMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderCorePropertiesAMD* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderCorePropertiesAMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderCorePropertiesAMD* toTransform);

#endif
#ifdef VK_EXT_video_decode_h265
void transform_tohost_VkVideoDecodeH265ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkVideoDecodeH265ProfileEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265ProfileEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkVideoDecodeH265ProfileEXT* toTransform);

void transform_tohost_VkVideoDecodeH265CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265CapabilitiesEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265CapabilitiesEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265CapabilitiesEXT* toTransform);

void transform_tohost_VkVideoDecodeH265SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265SessionCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265SessionCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265SessionCreateInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH265SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH265SessionParametersAddInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265SessionParametersAddInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH265SessionParametersAddInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH265SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH265SessionParametersCreateInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265SessionParametersCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkVideoDecodeH265SessionParametersCreateInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH265PictureInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoDecodeH265PictureInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265PictureInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265PictureInfoEXT* toTransform);

void transform_tohost_VkVideoDecodeH265DpbSlotInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkVideoDecodeH265DpbSlotInfoEXT* toTransform);

void transform_fromhost_VkVideoDecodeH265DpbSlotInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkVideoDecodeH265DpbSlotInfoEXT* toTransform);

#endif
#ifdef VK_AMD_memory_overallocation_behavior
void transform_tohost_VkDeviceMemoryOverallocationCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryOverallocationCreateInfoAMD* toTransform);

void transform_fromhost_VkDeviceMemoryOverallocationCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryOverallocationCreateInfoAMD* toTransform);

#endif
#ifdef VK_EXT_vertex_attribute_divisor
void transform_tohost_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* toTransform);

void transform_tohost_VkVertexInputBindingDivisorDescriptionEXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputBindingDivisorDescriptionEXT* toTransform);

void transform_fromhost_VkVertexInputBindingDivisorDescriptionEXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputBindingDivisorDescriptionEXT* toTransform);

void transform_tohost_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineVertexInputDivisorStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineVertexInputDivisorStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineVertexInputDivisorStateCreateInfoEXT* toTransform);

void transform_tohost_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* toTransform);

#endif
#ifdef VK_GGP_frame_token
void transform_tohost_VkPresentFrameTokenGGP(VkDecoderGlobalState* resourceTracker,
                                             VkPresentFrameTokenGGP* toTransform);

void transform_fromhost_VkPresentFrameTokenGGP(VkDecoderGlobalState* resourceTracker,
                                               VkPresentFrameTokenGGP* toTransform);

#endif
#ifdef VK_EXT_pipeline_creation_feedback
void transform_tohost_VkPipelineCreationFeedbackEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkPipelineCreationFeedbackEXT* toTransform);

void transform_fromhost_VkPipelineCreationFeedbackEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkPipelineCreationFeedbackEXT* toTransform);

void transform_tohost_VkPipelineCreationFeedbackCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkPipelineCreationFeedbackCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineCreationFeedbackCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkPipelineCreationFeedbackCreateInfoEXT* toTransform);

#endif
#ifdef VK_NV_shader_subgroup_partitioned
#endif
#ifdef VK_NV_compute_shader_derivatives
void transform_tohost_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* toTransform);

#endif
#ifdef VK_NV_mesh_shader
void transform_tohost_VkPhysicalDeviceMeshShaderFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMeshShaderFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceMeshShaderFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMeshShaderFeaturesNV* toTransform);

void transform_tohost_VkPhysicalDeviceMeshShaderPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMeshShaderPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceMeshShaderPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMeshShaderPropertiesNV* toTransform);

void transform_tohost_VkDrawMeshTasksIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkDrawMeshTasksIndirectCommandNV* toTransform);

void transform_fromhost_VkDrawMeshTasksIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkDrawMeshTasksIndirectCommandNV* toTransform);

#endif
#ifdef VK_NV_fragment_shader_barycentric
void transform_tohost_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* toTransform);

#endif
#ifdef VK_NV_shader_image_footprint
void transform_tohost_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderImageFootprintFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderImageFootprintFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderImageFootprintFeaturesNV* toTransform);

#endif
#ifdef VK_NV_scissor_exclusive
void transform_tohost_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportExclusiveScissorStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineViewportExclusiveScissorStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineViewportExclusiveScissorStateCreateInfoNV* toTransform);

void transform_tohost_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExclusiveScissorFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceExclusiveScissorFeaturesNV(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceExclusiveScissorFeaturesNV* toTransform);

#endif
#ifdef VK_NV_device_diagnostic_checkpoints
void transform_tohost_VkQueueFamilyCheckpointPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyCheckpointPropertiesNV* toTransform);

void transform_fromhost_VkQueueFamilyCheckpointPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyCheckpointPropertiesNV* toTransform);

void transform_tohost_VkCheckpointDataNV(VkDecoderGlobalState* resourceTracker,
                                         VkCheckpointDataNV* toTransform);

void transform_fromhost_VkCheckpointDataNV(VkDecoderGlobalState* resourceTracker,
                                           VkCheckpointDataNV* toTransform);

#endif
#ifdef VK_INTEL_shader_integer_functions2
void transform_tohost_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL* toTransform);

#endif
#ifdef VK_INTEL_performance_query
void transform_tohost_VkPerformanceValueDataINTEL(VkDecoderGlobalState* resourceTracker,
                                                  VkPerformanceValueDataINTEL* toTransform);

void transform_fromhost_VkPerformanceValueDataINTEL(VkDecoderGlobalState* resourceTracker,
                                                    VkPerformanceValueDataINTEL* toTransform);

void transform_tohost_VkPerformanceValueINTEL(VkDecoderGlobalState* resourceTracker,
                                              VkPerformanceValueINTEL* toTransform);

void transform_fromhost_VkPerformanceValueINTEL(VkDecoderGlobalState* resourceTracker,
                                                VkPerformanceValueINTEL* toTransform);

void transform_tohost_VkInitializePerformanceApiInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkInitializePerformanceApiInfoINTEL* toTransform);

void transform_fromhost_VkInitializePerformanceApiInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkInitializePerformanceApiInfoINTEL* toTransform);

void transform_tohost_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkQueryPoolPerformanceQueryCreateInfoINTEL* toTransform);

void transform_fromhost_VkQueryPoolPerformanceQueryCreateInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkQueryPoolPerformanceQueryCreateInfoINTEL* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkQueryPoolPerformanceQueryCreateInfoINTEL,
                      transform_tohost_VkQueryPoolCreateInfoINTEL)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkQueryPoolPerformanceQueryCreateInfoINTEL,
                      transform_fromhost_VkQueryPoolCreateInfoINTEL)

void transform_tohost_VkPerformanceMarkerInfoINTEL(VkDecoderGlobalState* resourceTracker,
                                                   VkPerformanceMarkerInfoINTEL* toTransform);

void transform_fromhost_VkPerformanceMarkerInfoINTEL(VkDecoderGlobalState* resourceTracker,
                                                     VkPerformanceMarkerInfoINTEL* toTransform);

void transform_tohost_VkPerformanceStreamMarkerInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkPerformanceStreamMarkerInfoINTEL* toTransform);

void transform_fromhost_VkPerformanceStreamMarkerInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkPerformanceStreamMarkerInfoINTEL* toTransform);

void transform_tohost_VkPerformanceOverrideInfoINTEL(VkDecoderGlobalState* resourceTracker,
                                                     VkPerformanceOverrideInfoINTEL* toTransform);

void transform_fromhost_VkPerformanceOverrideInfoINTEL(VkDecoderGlobalState* resourceTracker,
                                                       VkPerformanceOverrideInfoINTEL* toTransform);

void transform_tohost_VkPerformanceConfigurationAcquireInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkPerformanceConfigurationAcquireInfoINTEL* toTransform);

void transform_fromhost_VkPerformanceConfigurationAcquireInfoINTEL(
    VkDecoderGlobalState* resourceTracker, VkPerformanceConfigurationAcquireInfoINTEL* toTransform);

#endif
#ifdef VK_EXT_pci_bus_info
void transform_tohost_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePCIBusInfoPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDevicePCIBusInfoPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePCIBusInfoPropertiesEXT* toTransform);

#endif
#ifdef VK_AMD_display_native_hdr
void transform_tohost_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    VkDecoderGlobalState* resourceTracker, VkDisplayNativeHdrSurfaceCapabilitiesAMD* toTransform);

void transform_fromhost_VkDisplayNativeHdrSurfaceCapabilitiesAMD(
    VkDecoderGlobalState* resourceTracker, VkDisplayNativeHdrSurfaceCapabilitiesAMD* toTransform);

void transform_tohost_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkSwapchainDisplayNativeHdrCreateInfoAMD* toTransform);

void transform_fromhost_VkSwapchainDisplayNativeHdrCreateInfoAMD(
    VkDecoderGlobalState* resourceTracker, VkSwapchainDisplayNativeHdrCreateInfoAMD* toTransform);

#endif
#ifdef VK_FUCHSIA_imagepipe_surface
void transform_tohost_VkImagePipeSurfaceCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImagePipeSurfaceCreateInfoFUCHSIA* toTransform);

void transform_fromhost_VkImagePipeSurfaceCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImagePipeSurfaceCreateInfoFUCHSIA* toTransform);

#endif
#ifdef VK_EXT_metal_surface
void transform_tohost_VkMetalSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkMetalSurfaceCreateInfoEXT* toTransform);

void transform_fromhost_VkMetalSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                    VkMetalSurfaceCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_fragment_density_map
void transform_tohost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMapFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMapPropertiesEXT* toTransform);

void transform_tohost_VkRenderPassFragmentDensityMapCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);

void transform_fromhost_VkRenderPassFragmentDensityMapCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkRenderPassFragmentDensityMapCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_scalar_block_layout
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeatures,
                      transform_tohost_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceScalarBlockLayoutFeatures,
                      transform_fromhost_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT)

#endif
#ifdef VK_GOOGLE_hlsl_functionality1
#endif
#ifdef VK_GOOGLE_decorate_string
#endif
#ifdef VK_EXT_subgroup_size_control
void transform_tohost_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubgroupSizeControlFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceSubgroupSizeControlPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubgroupSizeControlPropertiesEXT* toTransform);

void transform_tohost_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT* toTransform);

#endif
#ifdef VK_AMD_shader_core_properties2
void transform_tohost_VkPhysicalDeviceShaderCoreProperties2AMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderCoreProperties2AMD* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderCoreProperties2AMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceShaderCoreProperties2AMD* toTransform);

#endif
#ifdef VK_AMD_device_coherent_memory
void transform_tohost_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceCoherentMemoryFeaturesAMD* toTransform);

void transform_fromhost_VkPhysicalDeviceCoherentMemoryFeaturesAMD(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceCoherentMemoryFeaturesAMD* toTransform);

#endif
#ifdef VK_EXT_shader_image_atomic_int64
void transform_tohost_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_memory_budget
void transform_tohost_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryBudgetPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceMemoryBudgetPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryBudgetPropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_memory_priority
void transform_tohost_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryPriorityFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceMemoryPriorityFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMemoryPriorityFeaturesEXT* toTransform);

void transform_tohost_VkMemoryPriorityAllocateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                      VkMemoryPriorityAllocateInfoEXT* toTransform);

void transform_fromhost_VkMemoryPriorityAllocateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkMemoryPriorityAllocateInfoEXT* toTransform);

#endif
#ifdef VK_NV_dedicated_allocation_image_aliasing
void transform_tohost_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* toTransform);

#endif
#ifdef VK_EXT_buffer_device_address
void transform_tohost_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* toTransform);

DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT,
                      transform_tohost_VkPhysicalDeviceBufferAddressFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT,
                      transform_fromhost_VkPhysicalDeviceBufferAddressFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_tohost_VkBufferDeviceAddressInfo,
                      transform_tohost_VkBufferDeviceAddressInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkBufferDeviceAddressInfo,
                      transform_fromhost_VkBufferDeviceAddressInfoEXT)

void transform_tohost_VkBufferDeviceAddressCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkBufferDeviceAddressCreateInfoEXT* toTransform);

void transform_fromhost_VkBufferDeviceAddressCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkBufferDeviceAddressCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_tooling_info
void transform_tohost_VkPhysicalDeviceToolPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceToolPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceToolPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceToolPropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_separate_stencil_usage
DEFINE_ALIAS_FUNCTION(transform_tohost_VkImageStencilUsageCreateInfo,
                      transform_tohost_VkImageStencilUsageCreateInfoEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkImageStencilUsageCreateInfo,
                      transform_fromhost_VkImageStencilUsageCreateInfoEXT)

#endif
#ifdef VK_EXT_validation_features
void transform_tohost_VkValidationFeaturesEXT(VkDecoderGlobalState* resourceTracker,
                                              VkValidationFeaturesEXT* toTransform);

void transform_fromhost_VkValidationFeaturesEXT(VkDecoderGlobalState* resourceTracker,
                                                VkValidationFeaturesEXT* toTransform);

#endif
#ifdef VK_NV_cooperative_matrix
void transform_tohost_VkCooperativeMatrixPropertiesNV(VkDecoderGlobalState* resourceTracker,
                                                      VkCooperativeMatrixPropertiesNV* toTransform);

void transform_fromhost_VkCooperativeMatrixPropertiesNV(
    VkDecoderGlobalState* resourceTracker, VkCooperativeMatrixPropertiesNV* toTransform);

void transform_tohost_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCooperativeMatrixFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceCooperativeMatrixFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCooperativeMatrixFeaturesNV* toTransform);

void transform_tohost_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCooperativeMatrixPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceCooperativeMatrixPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCooperativeMatrixPropertiesNV* toTransform);

#endif
#ifdef VK_NV_coverage_reduction_mode
void transform_tohost_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCoverageReductionModeFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceCoverageReductionModeFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCoverageReductionModeFeaturesNV* toTransform);

void transform_tohost_VkPipelineCoverageReductionStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineCoverageReductionStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineCoverageReductionStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineCoverageReductionStateCreateInfoNV* toTransform);

void transform_tohost_VkFramebufferMixedSamplesCombinationNV(
    VkDecoderGlobalState* resourceTracker, VkFramebufferMixedSamplesCombinationNV* toTransform);

void transform_fromhost_VkFramebufferMixedSamplesCombinationNV(
    VkDecoderGlobalState* resourceTracker, VkFramebufferMixedSamplesCombinationNV* toTransform);

#endif
#ifdef VK_EXT_fragment_shader_interlock
void transform_tohost_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_ycbcr_image_arrays
void transform_tohost_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_provoking_vertex
void transform_tohost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProvokingVertexFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceProvokingVertexFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceProvokingVertexFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceProvokingVertexPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceProvokingVertexPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceProvokingVertexPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceProvokingVertexPropertiesEXT* toTransform);

void transform_tohost_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineRasterizationProvokingVertexStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationProvokingVertexStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_full_screen_exclusive
void transform_tohost_VkSurfaceFullScreenExclusiveInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSurfaceFullScreenExclusiveInfoEXT* toTransform);

void transform_fromhost_VkSurfaceFullScreenExclusiveInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSurfaceFullScreenExclusiveInfoEXT* toTransform);

void transform_tohost_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    VkDecoderGlobalState* resourceTracker,
    VkSurfaceCapabilitiesFullScreenExclusiveEXT* toTransform);

void transform_fromhost_VkSurfaceCapabilitiesFullScreenExclusiveEXT(
    VkDecoderGlobalState* resourceTracker,
    VkSurfaceCapabilitiesFullScreenExclusiveEXT* toTransform);

void transform_tohost_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSurfaceFullScreenExclusiveWin32InfoEXT* toTransform);

void transform_fromhost_VkSurfaceFullScreenExclusiveWin32InfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSurfaceFullScreenExclusiveWin32InfoEXT* toTransform);

#endif
#ifdef VK_EXT_headless_surface
void transform_tohost_VkHeadlessSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkHeadlessSurfaceCreateInfoEXT* toTransform);

void transform_fromhost_VkHeadlessSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkHeadlessSurfaceCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_line_rasterization
void transform_tohost_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceLineRasterizationFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceLineRasterizationFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceLineRasterizationFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceLineRasterizationPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceLineRasterizationPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceLineRasterizationPropertiesEXT* toTransform);

void transform_tohost_VkPipelineRasterizationLineStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationLineStateCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineRasterizationLineStateCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineRasterizationLineStateCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_shader_atomic_float
void transform_tohost_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderAtomicFloatFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_host_query_reset
DEFINE_ALIAS_FUNCTION(transform_tohost_VkPhysicalDeviceHostQueryResetFeatures,
                      transform_tohost_VkPhysicalDeviceHostQueryResetFeaturesEXT)

DEFINE_ALIAS_FUNCTION(transform_fromhost_VkPhysicalDeviceHostQueryResetFeatures,
                      transform_fromhost_VkPhysicalDeviceHostQueryResetFeaturesEXT)

#endif
#ifdef VK_EXT_index_type_uint8
void transform_tohost_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceIndexTypeUint8FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceIndexTypeUint8FeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceIndexTypeUint8FeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_extended_dynamic_state
void transform_tohost_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceExtendedDynamicStateFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_shader_atomic_float2
void transform_tohost_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_shader_demote_to_helper_invocation
void transform_tohost_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* toTransform);

#endif
#ifdef VK_NV_device_generated_commands
void transform_tohost_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV* toTransform);

void transform_tohost_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV* toTransform);

void transform_tohost_VkGraphicsShaderGroupCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkGraphicsShaderGroupCreateInfoNV* toTransform);

void transform_fromhost_VkGraphicsShaderGroupCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkGraphicsShaderGroupCreateInfoNV* toTransform);

void transform_tohost_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkGraphicsPipelineShaderGroupsCreateInfoNV* toTransform);

void transform_fromhost_VkGraphicsPipelineShaderGroupsCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkGraphicsPipelineShaderGroupsCreateInfoNV* toTransform);

void transform_tohost_VkBindShaderGroupIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindShaderGroupIndirectCommandNV* toTransform);

void transform_fromhost_VkBindShaderGroupIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindShaderGroupIndirectCommandNV* toTransform);

void transform_tohost_VkBindIndexBufferIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindIndexBufferIndirectCommandNV* toTransform);

void transform_fromhost_VkBindIndexBufferIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindIndexBufferIndirectCommandNV* toTransform);

void transform_tohost_VkBindVertexBufferIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindVertexBufferIndirectCommandNV* toTransform);

void transform_fromhost_VkBindVertexBufferIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkBindVertexBufferIndirectCommandNV* toTransform);

void transform_tohost_VkSetStateFlagsIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkSetStateFlagsIndirectCommandNV* toTransform);

void transform_fromhost_VkSetStateFlagsIndirectCommandNV(
    VkDecoderGlobalState* resourceTracker, VkSetStateFlagsIndirectCommandNV* toTransform);

void transform_tohost_VkIndirectCommandsStreamNV(VkDecoderGlobalState* resourceTracker,
                                                 VkIndirectCommandsStreamNV* toTransform);

void transform_fromhost_VkIndirectCommandsStreamNV(VkDecoderGlobalState* resourceTracker,
                                                   VkIndirectCommandsStreamNV* toTransform);

void transform_tohost_VkIndirectCommandsLayoutTokenNV(VkDecoderGlobalState* resourceTracker,
                                                      VkIndirectCommandsLayoutTokenNV* toTransform);

void transform_fromhost_VkIndirectCommandsLayoutTokenNV(
    VkDecoderGlobalState* resourceTracker, VkIndirectCommandsLayoutTokenNV* toTransform);

void transform_tohost_VkIndirectCommandsLayoutCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkIndirectCommandsLayoutCreateInfoNV* toTransform);

void transform_fromhost_VkIndirectCommandsLayoutCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkIndirectCommandsLayoutCreateInfoNV* toTransform);

void transform_tohost_VkGeneratedCommandsInfoNV(VkDecoderGlobalState* resourceTracker,
                                                VkGeneratedCommandsInfoNV* toTransform);

void transform_fromhost_VkGeneratedCommandsInfoNV(VkDecoderGlobalState* resourceTracker,
                                                  VkGeneratedCommandsInfoNV* toTransform);

void transform_tohost_VkGeneratedCommandsMemoryRequirementsInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkGeneratedCommandsMemoryRequirementsInfoNV* toTransform);

void transform_fromhost_VkGeneratedCommandsMemoryRequirementsInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkGeneratedCommandsMemoryRequirementsInfoNV* toTransform);

#endif
#ifdef VK_NV_inherited_viewport_scissor
void transform_tohost_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInheritedViewportScissorFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceInheritedViewportScissorFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInheritedViewportScissorFeaturesNV* toTransform);

void transform_tohost_VkCommandBufferInheritanceViewportScissorInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceViewportScissorInfoNV* toTransform);

void transform_fromhost_VkCommandBufferInheritanceViewportScissorInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceViewportScissorInfoNV* toTransform);

#endif
#ifdef VK_EXT_texel_buffer_alignment
void transform_tohost_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* toTransform);

#endif
#ifdef VK_QCOM_render_pass_transform
void transform_tohost_VkRenderPassTransformBeginInfoQCOM(
    VkDecoderGlobalState* resourceTracker, VkRenderPassTransformBeginInfoQCOM* toTransform);

void transform_fromhost_VkRenderPassTransformBeginInfoQCOM(
    VkDecoderGlobalState* resourceTracker, VkRenderPassTransformBeginInfoQCOM* toTransform);

void transform_tohost_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceRenderPassTransformInfoQCOM* toTransform);

void transform_fromhost_VkCommandBufferInheritanceRenderPassTransformInfoQCOM(
    VkDecoderGlobalState* resourceTracker,
    VkCommandBufferInheritanceRenderPassTransformInfoQCOM* toTransform);

#endif
#ifdef VK_EXT_device_memory_report
void transform_tohost_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceDeviceMemoryReportFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* toTransform);

void transform_tohost_VkDeviceMemoryReportCallbackDataEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryReportCallbackDataEXT* toTransform);

void transform_fromhost_VkDeviceMemoryReportCallbackDataEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceMemoryReportCallbackDataEXT* toTransform);

void transform_tohost_VkDeviceDeviceMemoryReportCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceDeviceMemoryReportCreateInfoEXT* toTransform);

void transform_fromhost_VkDeviceDeviceMemoryReportCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDeviceDeviceMemoryReportCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_acquire_drm_display
#endif
#ifdef VK_EXT_robustness2
void transform_tohost_VkPhysicalDeviceRobustness2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRobustness2FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceRobustness2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRobustness2FeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceRobustness2PropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRobustness2PropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceRobustness2PropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRobustness2PropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_custom_border_color
void transform_tohost_VkSamplerCustomBorderColorCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSamplerCustomBorderColorCreateInfoEXT* toTransform);

void transform_fromhost_VkSamplerCustomBorderColorCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkSamplerCustomBorderColorCreateInfoEXT* toTransform);

void transform_tohost_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCustomBorderColorPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceCustomBorderColorPropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCustomBorderColorPropertiesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCustomBorderColorFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceCustomBorderColorFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceCustomBorderColorFeaturesEXT* toTransform);

#endif
#ifdef VK_GOOGLE_user_type
#endif
#ifdef VK_EXT_private_data
void transform_tohost_VkPhysicalDevicePrivateDataFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePrivateDataFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDevicePrivateDataFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevicePrivateDataFeaturesEXT* toTransform);

void transform_tohost_VkDevicePrivateDataCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDevicePrivateDataCreateInfoEXT* toTransform);

void transform_fromhost_VkDevicePrivateDataCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkDevicePrivateDataCreateInfoEXT* toTransform);

void transform_tohost_VkPrivateDataSlotCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkPrivateDataSlotCreateInfoEXT* toTransform);

void transform_fromhost_VkPrivateDataSlotCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkPrivateDataSlotCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_pipeline_creation_cache_control
void transform_tohost_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT* toTransform);

#endif
#ifdef VK_NV_device_diagnostics_config
void transform_tohost_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDiagnosticsConfigFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceDiagnosticsConfigFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceDiagnosticsConfigFeaturesNV* toTransform);

void transform_tohost_VkDeviceDiagnosticsConfigCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDeviceDiagnosticsConfigCreateInfoNV* toTransform);

void transform_fromhost_VkDeviceDiagnosticsConfigCreateInfoNV(
    VkDecoderGlobalState* resourceTracker, VkDeviceDiagnosticsConfigCreateInfoNV* toTransform);

#endif
#ifdef VK_QCOM_render_pass_store_ops
#endif
#ifdef VK_NV_fragment_shading_rate_enums
void transform_tohost_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV* toTransform);

void transform_tohost_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineFragmentShadingRateEnumStateCreateInfoNV* toTransform);

void transform_fromhost_VkPipelineFragmentShadingRateEnumStateCreateInfoNV(
    VkDecoderGlobalState* resourceTracker,
    VkPipelineFragmentShadingRateEnumStateCreateInfoNV* toTransform);

#endif
#ifdef VK_NV_ray_tracing_motion_blur
void transform_tohost_VkDeviceOrHostAddressConstKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkDeviceOrHostAddressConstKHR* toTransform);

void transform_fromhost_VkDeviceOrHostAddressConstKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkDeviceOrHostAddressConstKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryMotionTrianglesDataNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryMotionTrianglesDataNV* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryMotionTrianglesDataNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryMotionTrianglesDataNV* toTransform);

void transform_tohost_VkAccelerationStructureMotionInfoNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureMotionInfoNV* toTransform);

void transform_fromhost_VkAccelerationStructureMotionInfoNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureMotionInfoNV* toTransform);

void transform_tohost_VkAccelerationStructureMatrixMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMatrixMotionInstanceNV* toTransform);

void transform_fromhost_VkAccelerationStructureMatrixMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMatrixMotionInstanceNV* toTransform);

void transform_tohost_VkSRTDataNV(VkDecoderGlobalState* resourceTracker, VkSRTDataNV* toTransform);

void transform_fromhost_VkSRTDataNV(VkDecoderGlobalState* resourceTracker,
                                    VkSRTDataNV* toTransform);

void transform_tohost_VkAccelerationStructureSRTMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureSRTMotionInstanceNV* toTransform);

void transform_fromhost_VkAccelerationStructureSRTMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureSRTMotionInstanceNV* toTransform);

void transform_tohost_VkAccelerationStructureMotionInstanceDataNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMotionInstanceDataNV* toTransform);

void transform_fromhost_VkAccelerationStructureMotionInstanceDataNV(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureMotionInstanceDataNV* toTransform);

void transform_tohost_VkAccelerationStructureMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureMotionInstanceNV* toTransform);

void transform_fromhost_VkAccelerationStructureMotionInstanceNV(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureMotionInstanceNV* toTransform);

void transform_tohost_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceRayTracingMotionBlurFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingMotionBlurFeaturesNV* toTransform);

#endif
#ifdef VK_EXT_ycbcr_2plane_444_formats
void transform_tohost_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_fragment_density_map2
void transform_tohost_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentDensityMap2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceFragmentDensityMap2PropertiesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* toTransform);

#endif
#ifdef VK_QCOM_rotated_copy_commands
void transform_tohost_VkCopyCommandTransformInfoQCOM(VkDecoderGlobalState* resourceTracker,
                                                     VkCopyCommandTransformInfoQCOM* toTransform);

void transform_fromhost_VkCopyCommandTransformInfoQCOM(VkDecoderGlobalState* resourceTracker,
                                                       VkCopyCommandTransformInfoQCOM* toTransform);

#endif
#ifdef VK_EXT_image_robustness
void transform_tohost_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceImageRobustnessFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceImageRobustnessFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceImageRobustnessFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_4444_formats
void transform_tohost_VkPhysicalDevice4444FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice4444FormatsFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDevice4444FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDevice4444FormatsFeaturesEXT* toTransform);

#endif
#ifdef VK_EXT_rgba10x6_formats
void transform_tohost_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* toTransform);

#endif
#ifdef VK_NV_acquire_winrt_display
#endif
#ifdef VK_EXT_directfb_surface
void transform_tohost_VkDirectFBSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                     VkDirectFBSurfaceCreateInfoEXT* toTransform);

void transform_fromhost_VkDirectFBSurfaceCreateInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                       VkDirectFBSurfaceCreateInfoEXT* toTransform);

#endif
#ifdef VK_VALVE_mutable_descriptor_type
void transform_tohost_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* toTransform);

void transform_fromhost_VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE* toTransform);

void transform_tohost_VkMutableDescriptorTypeListVALVE(
    VkDecoderGlobalState* resourceTracker, VkMutableDescriptorTypeListVALVE* toTransform);

void transform_fromhost_VkMutableDescriptorTypeListVALVE(
    VkDecoderGlobalState* resourceTracker, VkMutableDescriptorTypeListVALVE* toTransform);

void transform_tohost_VkMutableDescriptorTypeCreateInfoVALVE(
    VkDecoderGlobalState* resourceTracker, VkMutableDescriptorTypeCreateInfoVALVE* toTransform);

void transform_fromhost_VkMutableDescriptorTypeCreateInfoVALVE(
    VkDecoderGlobalState* resourceTracker, VkMutableDescriptorTypeCreateInfoVALVE* toTransform);

#endif
#ifdef VK_EXT_vertex_input_dynamic_state
void transform_tohost_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* toTransform);

void transform_tohost_VkVertexInputBindingDescription2EXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputBindingDescription2EXT* toTransform);

void transform_fromhost_VkVertexInputBindingDescription2EXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputBindingDescription2EXT* toTransform);

void transform_tohost_VkVertexInputAttributeDescription2EXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputAttributeDescription2EXT* toTransform);

void transform_fromhost_VkVertexInputAttributeDescription2EXT(
    VkDecoderGlobalState* resourceTracker, VkVertexInputAttributeDescription2EXT* toTransform);

#endif
#ifdef VK_EXT_physical_device_drm
void transform_tohost_VkPhysicalDeviceDrmPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDrmPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceDrmPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceDrmPropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_primitive_topology_list_restart
void transform_tohost_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* toTransform);

#endif
#ifdef VK_FUCHSIA_external_memory
void transform_tohost_VkImportMemoryZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryZirconHandleInfoFUCHSIA* toTransform);

void transform_fromhost_VkImportMemoryZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryZirconHandleInfoFUCHSIA* toTransform);

void transform_tohost_VkMemoryZirconHandlePropertiesFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkMemoryZirconHandlePropertiesFUCHSIA* toTransform);

void transform_fromhost_VkMemoryZirconHandlePropertiesFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkMemoryZirconHandlePropertiesFUCHSIA* toTransform);

void transform_tohost_VkMemoryGetZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkMemoryGetZirconHandleInfoFUCHSIA* toTransform);

void transform_fromhost_VkMemoryGetZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkMemoryGetZirconHandleInfoFUCHSIA* toTransform);

#endif
#ifdef VK_FUCHSIA_external_semaphore
void transform_tohost_VkImportSemaphoreZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportSemaphoreZirconHandleInfoFUCHSIA* toTransform);

void transform_fromhost_VkImportSemaphoreZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportSemaphoreZirconHandleInfoFUCHSIA* toTransform);

void transform_tohost_VkSemaphoreGetZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkSemaphoreGetZirconHandleInfoFUCHSIA* toTransform);

void transform_fromhost_VkSemaphoreGetZirconHandleInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkSemaphoreGetZirconHandleInfoFUCHSIA* toTransform);

#endif
#ifdef VK_FUCHSIA_buffer_collection
void transform_tohost_VkBufferCollectionCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionCreateInfoFUCHSIA* toTransform);

void transform_fromhost_VkBufferCollectionCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionCreateInfoFUCHSIA* toTransform);

void transform_tohost_VkImportMemoryBufferCollectionFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryBufferCollectionFUCHSIA* toTransform);

void transform_fromhost_VkImportMemoryBufferCollectionFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImportMemoryBufferCollectionFUCHSIA* toTransform);

void transform_tohost_VkBufferCollectionImageCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionImageCreateInfoFUCHSIA* toTransform);

void transform_fromhost_VkBufferCollectionImageCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionImageCreateInfoFUCHSIA* toTransform);

void transform_tohost_VkBufferCollectionConstraintsInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionConstraintsInfoFUCHSIA* toTransform);

void transform_fromhost_VkBufferCollectionConstraintsInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionConstraintsInfoFUCHSIA* toTransform);

void transform_tohost_VkBufferConstraintsInfoFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                     VkBufferConstraintsInfoFUCHSIA* toTransform);

void transform_fromhost_VkBufferConstraintsInfoFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                       VkBufferConstraintsInfoFUCHSIA* toTransform);

void transform_tohost_VkBufferCollectionBufferCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionBufferCreateInfoFUCHSIA* toTransform);

void transform_fromhost_VkBufferCollectionBufferCreateInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionBufferCreateInfoFUCHSIA* toTransform);

void transform_tohost_VkSysmemColorSpaceFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                VkSysmemColorSpaceFUCHSIA* toTransform);

void transform_fromhost_VkSysmemColorSpaceFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                  VkSysmemColorSpaceFUCHSIA* toTransform);

void transform_tohost_VkBufferCollectionPropertiesFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionPropertiesFUCHSIA* toTransform);

void transform_fromhost_VkBufferCollectionPropertiesFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkBufferCollectionPropertiesFUCHSIA* toTransform);

void transform_tohost_VkImageFormatConstraintsInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImageFormatConstraintsInfoFUCHSIA* toTransform);

void transform_fromhost_VkImageFormatConstraintsInfoFUCHSIA(
    VkDecoderGlobalState* resourceTracker, VkImageFormatConstraintsInfoFUCHSIA* toTransform);

void transform_tohost_VkImageConstraintsInfoFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                    VkImageConstraintsInfoFUCHSIA* toTransform);

void transform_fromhost_VkImageConstraintsInfoFUCHSIA(VkDecoderGlobalState* resourceTracker,
                                                      VkImageConstraintsInfoFUCHSIA* toTransform);

#endif
#ifdef VK_HUAWEI_subpass_shading
void transform_tohost_VkSubpassShadingPipelineCreateInfoHUAWEI(
    VkDecoderGlobalState* resourceTracker, VkSubpassShadingPipelineCreateInfoHUAWEI* toTransform);

void transform_fromhost_VkSubpassShadingPipelineCreateInfoHUAWEI(
    VkDecoderGlobalState* resourceTracker, VkSubpassShadingPipelineCreateInfoHUAWEI* toTransform);

void transform_tohost_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* toTransform);

void transform_fromhost_VkPhysicalDeviceSubpassShadingFeaturesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubpassShadingFeaturesHUAWEI* toTransform);

void transform_tohost_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* toTransform);

void transform_fromhost_VkPhysicalDeviceSubpassShadingPropertiesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceSubpassShadingPropertiesHUAWEI* toTransform);

#endif
#ifdef VK_HUAWEI_invocation_mask
void transform_tohost_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* toTransform);

void transform_fromhost_VkPhysicalDeviceInvocationMaskFeaturesHUAWEI(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceInvocationMaskFeaturesHUAWEI* toTransform);

#endif
#ifdef VK_NV_external_memory_rdma
void transform_tohost_VkMemoryGetRemoteAddressInfoNV(VkDecoderGlobalState* resourceTracker,
                                                     VkMemoryGetRemoteAddressInfoNV* toTransform);

void transform_fromhost_VkMemoryGetRemoteAddressInfoNV(VkDecoderGlobalState* resourceTracker,
                                                       VkMemoryGetRemoteAddressInfoNV* toTransform);

void transform_tohost_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* toTransform);

void transform_fromhost_VkPhysicalDeviceExternalMemoryRDMAFeaturesNV(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExternalMemoryRDMAFeaturesNV* toTransform);

#endif
#ifdef VK_EXT_extended_dynamic_state2
void transform_tohost_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceExtendedDynamicState2FeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* toTransform);

#endif
#ifdef VK_QNX_screen_surface
void transform_tohost_VkScreenSurfaceCreateInfoQNX(VkDecoderGlobalState* resourceTracker,
                                                   VkScreenSurfaceCreateInfoQNX* toTransform);

void transform_fromhost_VkScreenSurfaceCreateInfoQNX(VkDecoderGlobalState* resourceTracker,
                                                     VkScreenSurfaceCreateInfoQNX* toTransform);

#endif
#ifdef VK_EXT_color_write_enable
void transform_tohost_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceColorWriteEnableFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceColorWriteEnableFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceColorWriteEnableFeaturesEXT* toTransform);

void transform_tohost_VkPipelineColorWriteCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorWriteCreateInfoEXT* toTransform);

void transform_fromhost_VkPipelineColorWriteCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker, VkPipelineColorWriteCreateInfoEXT* toTransform);

#endif
#ifdef VK_GOOGLE_gfxstream
void transform_tohost_VkImportColorBufferGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                VkImportColorBufferGOOGLE* toTransform);

void transform_fromhost_VkImportColorBufferGOOGLE(VkDecoderGlobalState* resourceTracker,
                                                  VkImportColorBufferGOOGLE* toTransform);

void transform_tohost_VkImportBufferGOOGLE(VkDecoderGlobalState* resourceTracker,
                                           VkImportBufferGOOGLE* toTransform);

void transform_fromhost_VkImportBufferGOOGLE(VkDecoderGlobalState* resourceTracker,
                                             VkImportBufferGOOGLE* toTransform);

void transform_tohost_VkCreateBlobGOOGLE(VkDecoderGlobalState* resourceTracker,
                                         VkCreateBlobGOOGLE* toTransform);

void transform_fromhost_VkCreateBlobGOOGLE(VkDecoderGlobalState* resourceTracker,
                                           VkCreateBlobGOOGLE* toTransform);

#endif
#ifdef VK_EXT_global_priority_query
void transform_tohost_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT* toTransform);

void transform_tohost_VkQueueFamilyGlobalPriorityPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyGlobalPriorityPropertiesEXT* toTransform);

void transform_fromhost_VkQueueFamilyGlobalPriorityPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkQueueFamilyGlobalPriorityPropertiesEXT* toTransform);

#endif
#ifdef VK_EXT_multi_draw
void transform_tohost_VkPhysicalDeviceMultiDrawFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiDrawFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceMultiDrawFeaturesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiDrawFeaturesEXT* toTransform);

void transform_tohost_VkPhysicalDeviceMultiDrawPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiDrawPropertiesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceMultiDrawPropertiesEXT(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceMultiDrawPropertiesEXT* toTransform);

void transform_tohost_VkMultiDrawInfoEXT(VkDecoderGlobalState* resourceTracker,
                                         VkMultiDrawInfoEXT* toTransform);

void transform_fromhost_VkMultiDrawInfoEXT(VkDecoderGlobalState* resourceTracker,
                                           VkMultiDrawInfoEXT* toTransform);

void transform_tohost_VkMultiDrawIndexedInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                VkMultiDrawIndexedInfoEXT* toTransform);

void transform_fromhost_VkMultiDrawIndexedInfoEXT(VkDecoderGlobalState* resourceTracker,
                                                  VkMultiDrawIndexedInfoEXT* toTransform);

#endif
#ifdef VK_EXT_load_store_op_none
#endif
#ifdef VK_EXT_border_color_swizzle
void transform_tohost_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDeviceBorderColorSwizzleFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* toTransform);

void transform_tohost_VkSamplerBorderColorComponentMappingCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkSamplerBorderColorComponentMappingCreateInfoEXT* toTransform);

void transform_fromhost_VkSamplerBorderColorComponentMappingCreateInfoEXT(
    VkDecoderGlobalState* resourceTracker,
    VkSamplerBorderColorComponentMappingCreateInfoEXT* toTransform);

#endif
#ifdef VK_EXT_pageable_device_local_memory
void transform_tohost_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* toTransform);

void transform_fromhost_VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* toTransform);

#endif
#ifdef VK_KHR_acceleration_structure
void transform_tohost_VkDeviceOrHostAddressKHR(VkDecoderGlobalState* resourceTracker,
                                               VkDeviceOrHostAddressKHR* toTransform);

void transform_fromhost_VkDeviceOrHostAddressKHR(VkDecoderGlobalState* resourceTracker,
                                                 VkDeviceOrHostAddressKHR* toTransform);

void transform_tohost_VkAccelerationStructureBuildRangeInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureBuildRangeInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureBuildRangeInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureBuildRangeInfoKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryTrianglesDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryTrianglesDataKHR* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryTrianglesDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryTrianglesDataKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryAabbsDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryAabbsDataKHR* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryAabbsDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryAabbsDataKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryInstancesDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryInstancesDataKHR* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryInstancesDataKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureGeometryInstancesDataKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryDataKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureGeometryDataKHR* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryDataKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureGeometryDataKHR* toTransform);

void transform_tohost_VkAccelerationStructureGeometryKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureGeometryKHR* toTransform);

void transform_fromhost_VkAccelerationStructureGeometryKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureGeometryKHR* toTransform);

void transform_tohost_VkAccelerationStructureBuildGeometryInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureBuildGeometryInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureBuildGeometryInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureBuildGeometryInfoKHR* toTransform);

void transform_tohost_VkAccelerationStructureCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureCreateInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureCreateInfoKHR* toTransform);

void transform_tohost_VkWriteDescriptorSetAccelerationStructureKHR(
    VkDecoderGlobalState* resourceTracker,
    VkWriteDescriptorSetAccelerationStructureKHR* toTransform);

void transform_fromhost_VkWriteDescriptorSetAccelerationStructureKHR(
    VkDecoderGlobalState* resourceTracker,
    VkWriteDescriptorSetAccelerationStructureKHR* toTransform);

void transform_tohost_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceAccelerationStructureFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceAccelerationStructureFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceAccelerationStructureFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceAccelerationStructurePropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceAccelerationStructurePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceAccelerationStructurePropertiesKHR* toTransform);

void transform_tohost_VkAccelerationStructureDeviceAddressInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureDeviceAddressInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureDeviceAddressInfoKHR(
    VkDecoderGlobalState* resourceTracker,
    VkAccelerationStructureDeviceAddressInfoKHR* toTransform);

void transform_tohost_VkAccelerationStructureVersionInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureVersionInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureVersionInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureVersionInfoKHR* toTransform);

void transform_tohost_VkCopyAccelerationStructureToMemoryInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyAccelerationStructureToMemoryInfoKHR* toTransform);

void transform_fromhost_VkCopyAccelerationStructureToMemoryInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyAccelerationStructureToMemoryInfoKHR* toTransform);

void transform_tohost_VkCopyMemoryToAccelerationStructureInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyMemoryToAccelerationStructureInfoKHR* toTransform);

void transform_fromhost_VkCopyMemoryToAccelerationStructureInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyMemoryToAccelerationStructureInfoKHR* toTransform);

void transform_tohost_VkCopyAccelerationStructureInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyAccelerationStructureInfoKHR* toTransform);

void transform_fromhost_VkCopyAccelerationStructureInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkCopyAccelerationStructureInfoKHR* toTransform);

void transform_tohost_VkAccelerationStructureBuildSizesInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureBuildSizesInfoKHR* toTransform);

void transform_fromhost_VkAccelerationStructureBuildSizesInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkAccelerationStructureBuildSizesInfoKHR* toTransform);

#endif
#ifdef VK_KHR_ray_tracing_pipeline
void transform_tohost_VkRayTracingShaderGroupCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingShaderGroupCreateInfoKHR* toTransform);

void transform_fromhost_VkRayTracingShaderGroupCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingShaderGroupCreateInfoKHR* toTransform);

void transform_tohost_VkRayTracingPipelineInterfaceCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineInterfaceCreateInfoKHR* toTransform);

void transform_fromhost_VkRayTracingPipelineInterfaceCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineInterfaceCreateInfoKHR* toTransform);

void transform_tohost_VkRayTracingPipelineCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineCreateInfoKHR* toTransform);

void transform_fromhost_VkRayTracingPipelineCreateInfoKHR(
    VkDecoderGlobalState* resourceTracker, VkRayTracingPipelineCreateInfoKHR* toTransform);

void transform_tohost_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingPipelineFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceRayTracingPipelineFeaturesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingPipelineFeaturesKHR* toTransform);

void transform_tohost_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingPipelinePropertiesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceRayTracingPipelinePropertiesKHR(
    VkDecoderGlobalState* resourceTracker,
    VkPhysicalDeviceRayTracingPipelinePropertiesKHR* toTransform);

void transform_tohost_VkStridedDeviceAddressRegionKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkStridedDeviceAddressRegionKHR* toTransform);

void transform_fromhost_VkStridedDeviceAddressRegionKHR(
    VkDecoderGlobalState* resourceTracker, VkStridedDeviceAddressRegionKHR* toTransform);

void transform_tohost_VkTraceRaysIndirectCommandKHR(VkDecoderGlobalState* resourceTracker,
                                                    VkTraceRaysIndirectCommandKHR* toTransform);

void transform_fromhost_VkTraceRaysIndirectCommandKHR(VkDecoderGlobalState* resourceTracker,
                                                      VkTraceRaysIndirectCommandKHR* toTransform);

#endif
#ifdef VK_KHR_ray_query
void transform_tohost_VkPhysicalDeviceRayQueryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRayQueryFeaturesKHR* toTransform);

void transform_fromhost_VkPhysicalDeviceRayQueryFeaturesKHR(
    VkDecoderGlobalState* resourceTracker, VkPhysicalDeviceRayQueryFeaturesKHR* toTransform);

#endif

}  // namespace vk
}  // namespace gfxstream
