Files

4361 lines
192 KiB
C++

#include <common/GeneratorInterface.h>
#include <type_traits>
template<auto>
struct fex_gen_config {
unsigned version = 1;
};
// Some of Vulkan's handle types are so-called "non-dispatchable handles".
// On 64-bit, these are defined as dedicated types by default, which makes
// annotating these handle types unnecessarily complicated. Instead, setting
// the following define will make the Vulkan headers alias all handle types
// to uint64_t.
#define VK_USE_64_BIT_PTR_DEFINES 0
#define VK_USE_PLATFORM_XLIB_XRANDR_EXT
#define VK_USE_PLATFORM_XLIB_KHR
#define VK_USE_PLATFORM_XCB_KHR
#define VK_USE_PLATFORM_WAYLAND_KHR
#include <vulkan/vulkan.h>
template<>
struct fex_gen_config<vkGetDeviceProcAddr> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint, fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<vkGetInstanceProcAddr> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint, fexgen::returns_guest_pointer {};
template<typename>
struct fex_gen_type {};
// internal use
void Vulkan_SetGuestXSync(uintptr_t, uintptr_t);
void Vulkan_SetGuestXGetVisualInfo(uintptr_t, uintptr_t);
void Vulkan_SetGuestXDisplayString(uintptr_t, uintptr_t);
template<>
struct fex_gen_config<Vulkan_SetGuestXSync> : fexgen::custom_guest_entrypoint, fexgen::custom_host_impl {};
template<>
struct fex_gen_config<Vulkan_SetGuestXGetVisualInfo> : fexgen::custom_guest_entrypoint, fexgen::custom_host_impl {};
template<>
struct fex_gen_config<Vulkan_SetGuestXDisplayString> : fexgen::custom_guest_entrypoint, fexgen::custom_host_impl {};
// So-called "dispatchable" handles are represented as opaque pointers.
// In addition to marking them as such, API functions that create these objects
// need special care since they wrap these handles in another pointer, which
// the thunk generator can't automatically handle.
//
// So-called "non-dispatchable" handles don't need this extra treatment, since
// they are uint64_t IDs on both 32-bit and 64-bit systems.
template<>
struct fex_gen_type<VkCommandBuffer_T> : fexgen::opaque_type {};
template<>
struct fex_gen_type<VkDevice_T> : fexgen::opaque_type {};
template<>
struct fex_gen_type<VkInstance_T> : fexgen::opaque_type {};
template<>
struct fex_gen_type<VkPhysicalDevice_T> : fexgen::opaque_type {};
template<>
struct fex_gen_type<VkQueue_T> : fexgen::opaque_type {};
template<>
struct fex_gen_type<VkExternalComputeQueueNV_T> : fexgen::opaque_type {};
// Mark union types with compatible layout as such
// TODO: These may still have different alignment requirements!
template<>
struct fex_gen_type<VkClearValue> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkClearColorValue> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkPipelineExecutableStatisticValueKHR> : fexgen::assume_compatible_data_layout {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_type<VkAccelerationStructureGeometryDataKHR> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkDescriptorDataEXT> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkResourceDescriptorDataEXT> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkDeviceOrHostAddressKHR> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkDeviceOrHostAddressConstKHR> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkPerformanceValueDataINTEL> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkIndirectExecutionSetInfoEXT> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkIndirectCommandsTokenDataEXT> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<VkClusterAccelerationStructureOpInputNV> : fexgen::assume_compatible_data_layout {};
#endif
// Explicitly register types that are only ever referenced through nested pointers
template<>
struct fex_gen_type<VkAccelerationStructureBuildRangeInfoKHR> {};
template<>
struct fex_gen_type<VkDescriptorSetLayoutBinding> {};
template<>
struct fex_gen_type<VkDescriptorUpdateTemplateEntry> {};
template<>
struct fex_gen_type<VkSubpassDescription> {};
// Structures that contain function pointers
// TODO: Use custom repacking for these instead
template<>
struct fex_gen_type<VkDebugReportCallbackCreateInfoEXT> : fexgen::emit_layout_wrappers {};
template<>
struct fex_gen_type<VkDebugUtilsMessengerCreateInfoEXT> : fexgen::emit_layout_wrappers {};
#ifdef IS_32BIT_THUNK
template<>
struct fex_gen_type<VkBaseOutStructure> : fexgen::emit_layout_wrappers {};
// Register structs with an extension point (pNext). Any other members that need customization are listed below.
// Generated using
// for i in `grep VK_STRUCTURE_TYPE vk.xml -B1 | grep category=\"struct\" | cut -d'"' -f 4 | sort`
// do
// grep $i vulkan_{core,wayland,xcb,xlib,xlib_xrandr}.h >& /dev/null && echo $i
// done | awk '{ print "template<> struct fex_gen_config<&"$1"::pNext> : fexgen::custom_repack {};" }'
// template<>
// struct fex_gen_config<&VkAccelerationStructureBuildGeometryInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureBuildSizesInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureCaptureDescriptorDataInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureCreateInfo2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureDeviceAddressInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryAabbsDataKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryInstancesDataKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryMicromapDataKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryMotionTrianglesDataNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureGeometryTrianglesDataKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureMemoryRequirementsInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureMotionInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAccelerationStructureTrianglesOpacityMicromapEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureTrianglesOpacityMicromapKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAccelerationStructureVersionInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAcquireNextImageInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAcquireProfilingLockInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAmigoProfilingSubmitInfoSEC::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkAntiLagDataAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAntiLagPresentationInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkApplicationInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentDescription2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentDescriptionStencilLayout::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentFeedbackLoopInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentReference2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentReferenceStencilLayout::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkAttachmentSampleCountInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBeginCustomResolveInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindAccelerationStructureMemoryInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindBufferMemoryDeviceGroupInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindBufferMemoryInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindDataGraphPipelineSessionMemoryInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindDescriptorBufferEmbeddedSamplersInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindDescriptorSetsInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindHeapInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindImageMemoryDeviceGroupInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindImageMemoryInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindImageMemorySwapchainInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindImagePlaneMemoryInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindIndexBuffer3InfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindMemoryStatus::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkBindSparseInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindTensorMemoryInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindTransformFeedbackBuffer2InfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindVertexBuffer3InfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBindVideoSessionMemoryInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBlitImageCubicWeightsInfoQCOM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkBlitImageInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferCaptureDescriptorDataInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferCopy2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferDeviceAddressAlignmentAllocateInfoVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferDeviceAddressCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferDeviceAddressInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferImageCopy2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferMemoryBarrier::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferMemoryBarrier2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferMemoryRequirementsInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferOpaqueCaptureAddressCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferUsageFlags2CreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBufferViewCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkBuildPartitionedAccelerationStructureInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCalibratedTimestampInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCheckpointData2NV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCheckpointDataNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkClusterAccelerationStructureClustersBottomLevelInputNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkClusterAccelerationStructureCommandsInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkClusterAccelerationStructureInputInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkClusterAccelerationStructureMoveObjectsInputNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkClusterAccelerationStructureTriangleClusterInputNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferBeginInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferInheritanceConditionalRenderingInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCommandBufferInheritanceDescriptorHeapInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferInheritanceInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferInheritanceRenderingInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferInheritanceRenderPassTransformInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferInheritanceViewportScissorInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferSubmitInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandPoolCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkComputeOccupancyPriorityParametersNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkComputePipelineCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkComputePipelineIndirectBufferInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkConditionalRenderingBeginInfo2EXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkConditionalRenderingBeginInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkConvertCooperativeVectorMatrixInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCooperativeMatrixFlexibleDimensionsPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCooperativeMatrixProperties2EXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCooperativeMatrixPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCooperativeMatrixPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCooperativeVectorPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyAccelerationStructureInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyAccelerationStructureToMemoryInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyBufferInfo2::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyBufferToImageInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyCommandTransformInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyDescriptorSet::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyDeviceMemoryImageInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyDeviceMemoryInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyImageInfo2::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyImageToBufferInfo2::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyImageToImageInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyImageToMemoryInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyMemoryIndirectInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyMemoryToAccelerationStructureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyMemoryToImageIndirectInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyMemoryToImageInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyMemoryToImageInfo::pRegions> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyMemoryToMicromapInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCopyMicromapInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyMicromapToMemoryInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCopyTensorInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCuFunctionCreateInfoNVX::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCuLaunchInfoNVX::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkCuModuleCreateInfoNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCuModuleTexturingModeCreateInfoNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCustomResolveCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphOpticalFlowImageFormatInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphOpticalFlowImageFormatPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineBuiltinModelCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineCompilerControlCreateInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDataGraphPipelineConstantARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDataGraphPipelineCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineDispatchInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineIdentifierCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineNeuralStatisticsCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineOpticalFlowCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineOpticalFlowDispatchInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDataGraphPipelinePropertyQueryResultARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineResourceInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineResourceInfoImageLayoutARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSessionBindPointRequirementARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSessionBindPointRequirementsInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSessionCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSessionMemoryRequirementsInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDataGraphPipelineShaderModuleCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphPipelineSingleNodeConnectionARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDataGraphPipelineSingleNodeCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDataGraphProcessingEngineCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugMarkerMarkerInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugMarkerObjectNameInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDebugMarkerObjectTagInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugReportCallbackCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugUtilsLabelEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDebugUtilsMessengerCallbackDataEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugUtilsMessengerCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDebugUtilsObjectNameInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDebugUtilsObjectTagInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDecompressMemoryInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDedicatedAllocationBufferCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDedicatedAllocationImageCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDedicatedAllocationMemoryAllocateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDependencyInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDepthBiasInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDepthBiasRepresentationInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorAddressInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorBufferBindingInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorBufferBindingPushDescriptorBufferHandleEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorGetInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorGetTensorInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorPoolCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorPoolInlineUniformBlockCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetAllocateInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDescriptorSetAndBindingMappingEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetBindingReferenceVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetLayoutBindingFlagsCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetLayoutCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetLayoutHostMappingInfoVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetLayoutSupport::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetVariableDescriptorCountAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetVariableDescriptorCountLayoutSupport::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorUpdateTemplateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceAddressBindingCallbackDataEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceBufferMemoryRequirements::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceCreateInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceDeviceMemoryReportCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceDiagnosticsConfigCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceEventInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceFaultCountsEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceFaultDebugInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceFaultInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceFaultInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceFaultShaderAbortMessageInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceGroupBindSparseInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupCommandBufferBeginInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceGroupDeviceCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupPresentCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupPresentInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupRenderPassBeginInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupSubmitInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceGroupSwapchainCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceImageMemoryRequirements::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceMemoryCopyKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceMemoryImageCopyKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceImageSubresourceInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceMemoryOpaqueCaptureAddressInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceMemoryOverallocationCreateInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceMemoryReportCallbackDataEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDevicePipelineBinaryInternalCacheControlKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDevicePrivateDataCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceQueueCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceQueueGlobalPriorityCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceQueueInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceQueueShaderCoreControlCreateInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDeviceTensorMemoryRequirementsARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDirectDriverLoadingInfoLUNARG::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDirectDriverLoadingListLUNARG::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDispatchIndirect2InfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDispatchParametersARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDispatchTileInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayEventInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayModeCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayModeProperties2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayModeStereoPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayNativeHdrSurfaceCapabilitiesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayPlaneCapabilities2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayPlaneInfo2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayPlaneProperties2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayPowerInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayPresentInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplayProperties2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplaySurfaceCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDisplaySurfaceStereoCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDrawIndirect2InfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDrawIndirectCount2InfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDrmFormatModifierPropertiesList2EXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkDrmFormatModifierPropertiesListEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkEventCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExportFenceCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExportMemoryAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExportMemoryAllocateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExportSemaphoreCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalBufferProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalComputeQueueCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalComputeQueueDataParamsNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalComputeQueueDeviceCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalFenceProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalImageFormatProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalMemoryAcquireUnmodifiedEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalMemoryBufferCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalMemoryImageCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalMemoryImageCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalMemoryTensorCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalSemaphoreProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkExternalTensorPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFenceCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFenceGetFdInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFilterCubicImageViewImageFormatPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFormatProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFormatProperties3::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFormatProperties4KHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkFragmentShadingRateAttachmentInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkFrameBoundaryEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFrameBoundaryTensorsARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFramebufferAttachmentImageInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkFramebufferAttachmentsCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFramebufferCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkFramebufferMixedSamplesCombinationNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeneratedCommandsInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkGeneratedCommandsInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeneratedCommandsMemoryRequirementsInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeneratedCommandsMemoryRequirementsInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeneratedCommandsPipelineInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeneratedCommandsShaderInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeometryAABBNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeometryNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGeometryTrianglesNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkGetLatencyMarkerInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGpaDeviceClockModeInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGpaDeviceGetClockInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGpaSampleBeginInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGpaSessionCreateInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineLibraryCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkGraphicsPipelineShaderGroupsCreateInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkGraphicsShaderGroupCreateInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkHdrVividDynamicMetadataHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkHeadlessSurfaceCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkHostImageCopyDevicePerformanceQuery::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkHostImageLayoutTransitionInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageAlignmentControlCreateInfoMESA::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageBlit2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCaptureDescriptorDataInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCompressionControlEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCompressionPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCopy2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCreateFlags2CreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageCreateInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkImageDescriptorInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkImageDrmFormatModifierExplicitCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageDrmFormatModifierListCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageDrmFormatModifierPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageFormatListCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageFormatProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageMemoryBarrier::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageMemoryBarrier2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageMemoryRequirementsInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImagePlaneMemoryRequirementsInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageResolve2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageSparseMemoryRequirementsInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageStencilUsage2CreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageStencilUsageCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageSubresource2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageSwapchainCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageTilingControlCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkImageToMemoryCopy::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageUsageFlags2CreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewAddressPropertiesNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewASTCDecodeModeEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewCaptureDescriptorDataInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewHandleInfoNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewMinLodCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewSampleWeightCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewSlicedCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewUsage2CreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImageViewUsageCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImportFenceFdInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImportMemoryFdInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkImportMemoryHostPointerInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkImportSemaphoreFdInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkIndirectCommandsLayoutCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkIndirectCommandsLayoutCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkIndirectCommandsLayoutPushDataTokenNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkIndirectCommandsLayoutTokenEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkIndirectCommandsLayoutTokenNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkIndirectExecutionSetCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkIndirectExecutionSetPipelineInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkIndirectExecutionSetShaderInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkIndirectExecutionSetShaderLayoutInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkInitializePerformanceApiInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkInstanceCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkLatencySleepInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkLatencySleepModeInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkLatencySubmissionPresentIdNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkLatencySurfaceCapabilitiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkLatencyTimingsFrameReportNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkLayerSettingsCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMappedMemoryRange::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryAllocateFlagsInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryBarrier::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryBarrier2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryBarrierAccessFlags3KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryDedicatedAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryDedicatedAllocateInfoTensorARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryDedicatedRequirements::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryFdPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryGetFdInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryGetRemoteAddressInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryHostPointerPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryMapInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkMemoryMapPlacedInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryMarkerInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryOpaqueCaptureAddressAllocateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryPriorityAllocateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryRangeBarrierKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkMemoryRangeBarriersInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryRequirements2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryToImageCopy::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryToImageCopy::pHostPointer> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMemoryUnmapInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkMicromapBuildInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMicromapBuildSizesInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMicromapCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMicromapVersionInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMultisampledRenderToSingleSampledInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMultisamplePropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMultiviewPerViewAttributesInfoNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkMutableDescriptorTypeCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkOpaqueCaptureDataCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkOpaqueCaptureDescriptorDataCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkOpticalFlowExecuteInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkOpticalFlowImageFormatInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkOpticalFlowImageFormatPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkOpticalFlowSessionCreateInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkOpticalFlowSessionCreatePrivateDataInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkOutOfBandQueueTypeInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPartitionedAccelerationStructureFlagsNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPartitionedAccelerationStructureInstancesInputNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPastPresentationTimingEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPastPresentationTimingInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPastPresentationTimingPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerfHintInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceConfigurationAcquireInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceCounterARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceCounterDescriptionARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceCounterDescriptionKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceCounterKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceMarkerInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceOverrideInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceQuerySubmitInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerformanceStreamMarkerInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerTileBeginInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPerTileEndInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevice16BitStorageFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevice4444FormatsFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevice8BitStorageFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAccelerationStructureFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAccelerationStructurePropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAddressBindingReportFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAmigoProfilingFeaturesSEC::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAntiLagFeaturesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceASTCDecodeFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBorderColorSwizzleFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBufferDeviceAddressAllocationAlignmentFeaturesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBufferDeviceAddressAllocationAlignmentPropertiesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBufferDeviceAddressFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceClusterAccelerationStructureFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceClusterAccelerationStructurePropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCoherentMemoryFeaturesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceColorWriteEnableFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCommandBufferInheritanceFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceConditionalRenderingFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceConservativeRasterizationPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrix2FeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrix2PropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixInfo2EXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixMaintenance1FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeMatrixPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeVectorFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCooperativeVectorPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCopyMemoryIndirectFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCornerSampledImageFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCoverageReductionModeFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCubicClampFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCubicWeightsFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCustomBorderColorFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCustomBorderColorPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceCustomResolveFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDataGraphFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDataGraphModelFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthBiasControlFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthClampControlFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthClampZeroOneFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthClipControlFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthClipEnableFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDepthStencilResolveProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorBufferFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorBufferPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorBufferTensorFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorBufferTensorPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorHeapFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorHeapPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorHeapTensorPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorIndexingFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorIndexingProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDeviceMemoryReportFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDiagnosticsConfigFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDiscardRectanglePropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDriverProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDrmPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDynamicRenderingFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDynamicRenderingLocalReadFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceElapsedTimerQueryFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExclusiveScissorFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedDynamicState2FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedDynamicState3FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedDynamicState3PropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedDynamicStateFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedFlagsFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalBufferInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalComputeQueuePropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalFenceInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalImageFormatInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalMemoryHostPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalMemoryRDMAFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceExternalSemaphoreInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPhysicalDeviceExternalTensorInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFaultFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFaultFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFaultPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFeatures2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFloatControlsProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFormatPackFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMap2FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMap2PropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentDensityMapPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShadingRateFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShadingRateKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFragmentShadingRatePropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceFrameBoundaryFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGlobalPriorityQueryFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGpaFeaturesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGpaProperties2AMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGpaPropertiesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPhysicalDeviceGroupProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceHdrVividFeaturesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceHostImageCopyFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceHostImageCopyProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceHostQueryResetFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceIDProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImage2DViewOf3DFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageAlignmentControlFeaturesMESA::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageAlignmentControlPropertiesMESA::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageCompressionControlFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageDrmFormatModifierInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageFormatInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImagelessFramebufferFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageProcessing2FeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageProcessing2PropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageProcessing3FeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageProcessingFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageProcessingPropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageRobustnessFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageTilingControlFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageViewImageFormatInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceImageViewMinLodFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceIndexTypeUint8Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceInheritedViewportScissorFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceInlineUniformBlockFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceInlineUniformBlockProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceInvocationMaskFeaturesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLayeredApiPropertiesKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPhysicalDeviceLayeredApiPropertiesListKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLayeredApiVulkanPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLayeredDriverPropertiesMSFT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLegacyDitheringFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLinearColorAttachmentFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLineRasterizationFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceLineRasterizationProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance10FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance10PropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance11FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance3Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance4Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance4Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance5Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance5Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance6Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance6Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance7FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance7PropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance8FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance9FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMaintenance9PropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMapMemoryPlacedFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMapMemoryPlacedPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMemoryBudgetPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMemoryDecompressionFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMemoryDecompressionPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMemoryPriorityFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMemoryProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMeshShaderFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMeshShaderFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMeshShaderPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMeshShaderPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiDrawFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiDrawPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultisampledRenderToSwapchainFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiviewFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMultiviewProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceNestedCommandBufferFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceNestedCommandBufferPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpacityMicromapFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpacityMicromapFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpacityMicromapPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpacityMicromapPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpticalFlowFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceOpticalFlowPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePCIBusInfoPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePerformanceCountersByRegionFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePerformanceQueryFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePerformanceQueryPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePerStageDescriptorSetFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineBinaryFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineBinaryPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineCreationCacheControlFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineOpacityMicromapFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelinePropertiesFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineProtectedAccessFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineRobustnessFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePipelineRobustnessProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePointClippingProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentBarrierFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentId2FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentIdFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentMeteringFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentTimingFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentWait2FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePresentWaitFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePrivateDataBaseHandleFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePrivateDataFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceProtectedMemoryFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceProtectedMemoryProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceProvokingVertexFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceProvokingVertexPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePushConstantBankFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePushConstantBankPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDevicePushDescriptorProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceQueuePerfHintFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceQueuePerfHintPropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRawAccessChainsFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayQueryFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingMotionBlurFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRayTracingValidationFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRenderPassStripedFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRenderPassStripedPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRobustness2FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceRobustness2PropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSampleLocationsPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSamplerFilterMinmaxProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSamplerYcbcrConversionFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceScalarBlockLayoutFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSchedulingControlsFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSchedulingControlsPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShader64BitIndexingFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAbortFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAbortPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAtomicFloatFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderAtomicInt64Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderBfloat16FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderClockFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderConstantDataFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderCoreProperties2AMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderCorePropertiesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderCorePropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderDrawParametersFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderExpectAssumeFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderFloat16Int8Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderFloat8FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderFloatControls2Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderFmaFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderImageFootprintFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderInstrumentationFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderInstrumentationPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderIntegerDotProductFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderIntegerDotProductProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderLongVectorFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderLongVectorPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderMultipleWaitQueuesFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderMultipleWaitQueuesPropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderObjectFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderObjectPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderOCPMicroscalingTypesFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderQuadControlFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSplitBarrierFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSplitBarrierPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSubgroupRotateFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderTerminateInvocationFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderTileImageFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderTileImagePropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShaderUntypedPointersFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShadingRateImageFeaturesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceShadingRateImagePropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSparseImageFormatInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubgroupProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubgroupSizeControlFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubgroupSizeControlProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubpassShadingFeaturesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSubpassShadingPropertiesHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSurfaceInfo2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceSynchronization2Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTensorFeaturesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTensorPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTexelBufferAlignmentProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTextureCompressionASTCHDRFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceThrottleHintFeaturesSEC::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTileMemoryHeapFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTileMemoryHeapPropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTilePropertiesFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTileShadingFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTileShadingPropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTimelineSemaphoreFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTimelineSemaphoreProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceToolProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTransformFeedbackFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceTransformFeedbackPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceUniformBufferStandardLayoutFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVariablePointersFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVertexAttributeDivisorFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVertexAttributeDivisorProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoDecodeVP9FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoEncodeAV1FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoEncodeFeedback2FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoFormatInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoMaintenance1FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVideoMaintenance2FeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan11Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan11Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan12Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan12Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan13Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan13Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan14Features::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkan14Properties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceVulkanMemoryModelFeatures::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceYcbcrDegammaFeaturesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineBinaryCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineBinaryDataInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineBinaryHandlesInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineBinaryInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineBinaryKeyKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCacheCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineColorBlendAdvancedStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineColorBlendStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineColorWriteCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCompilerControlCreateInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCoverageModulationStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCoverageReductionStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCoverageToColorStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCreateFlags2CreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineCreationFeedbackCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineDepthStencilStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineDiscardRectangleStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineDynamicStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineExecutableInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineExecutableInternalRepresentationKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineExecutablePropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineExecutableStatisticKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineFragmentDensityMapLayeredCreateInfoVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineFragmentShadingRateStateCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineIndirectDeviceAddressInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineInputAssemblyStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineLayoutCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineLibraryCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineMultisampleStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelinePropertiesIdentifierEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationConservativeStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationDepthClipStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationLineStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationProvokingVertexStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationStateRasterizationOrderAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRasterizationStateStreamCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRenderingCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRepresentativeFragmentTestStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineRobustnessCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineSampleLocationsStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineShaderStageCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineShaderStageModuleIdentifierCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineShaderStageRequiredSubgroupSizeCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineTessellationDomainOriginStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineTessellationStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineVertexInputDivisorStateCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineVertexInputStateCreateInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineViewportCoarseSampleOrderStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportDepthClampControlCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportDepthClipControlCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportExclusiveScissorStateCreateInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPipelineViewportShadingRateImageStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportStateCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportSwizzleStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineViewportWScalingStateCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentId2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentIdKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPresentRegionsKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPresentTimesInfoGOOGLE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentTimingInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPresentTimingsInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentTimingSurfaceCapabilitiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPresentWait2InfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPrivateDataSlotCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkProtectedSubmitInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPushConstantBankInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPushConstantsInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPushDataInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPushDescriptorSetInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkPushDescriptorSetWithTemplateInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkQueryLowLatencySupportNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueryPoolCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueryPoolPerformanceCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueryPoolPerformanceQueryCreateInfoINTEL::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueryPoolVideoEncodeFeedbackCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyCheckpointProperties2NV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyCheckpointPropertiesNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyDataGraphOpticalFlowPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyDataGraphProcessingEnginePropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyDataGraphPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyDataGraphTOSAPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyGlobalPriorityProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyOwnershipTransferPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyQueryResultStatusPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkQueueFamilyVideoPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRayTracingPipelineCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRayTracingPipelineCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRayTracingPipelineInterfaceCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRayTracingShaderGroupCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRayTracingShaderGroupCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkReleaseCapturedPipelineDataInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkReleaseSwapchainImagesInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingAreaInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingAttachmentFlagsInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingAttachmentInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingAttachmentLocationInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingEndInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingFragmentDensityMapAttachmentInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingFragmentShadingRateAttachmentInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingInputAttachmentIndexInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassAttachmentBeginInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassBeginInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreateInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreationControlEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreationFeedbackCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassFragmentDensityMapCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassFragmentDensityMapOffsetEndInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassInputAttachmentAspectCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassMultiviewCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassPerformanceCountersByRegionBeginInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRenderPassSampleLocationsBeginInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRenderPassStripeBeginInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassStripeInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkRenderPassStripeSubmitInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassSubpassFeedbackCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassTileShadingCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassTransformBeginInfoQCOM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkResolveImageInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkResolveImageModeInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkResourceDescriptorInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSampleLocationsInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerBlockMatchWindowCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerBorderColorComponentMappingCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerCaptureDescriptorDataInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerCubicWeightsCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerCustomBorderColorCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerCustomBorderColorIndexCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerReductionModeCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerYcbcrConversionCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerYcbcrConversionImageFormatProperties::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerYcbcrConversionInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreGetFdInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreSignalInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreSubmitInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreTypeCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSemaphoreWaitInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSetDescriptorBufferOffsetsInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSetLatencyMarkerInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSetPresentConfigNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkShaderCreateInfoEXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkShaderDescriptorSetAndBindingMappingInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkShaderInstrumentationCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkShaderInstrumentationMetricDescriptionARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkShaderModuleCreateInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkShaderModuleIdentifierEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkShaderModuleValidationCacheCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSharedPresentSurfaceCapabilities2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSharedPresentSurfaceCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSparseImageFormatProperties2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSparseImageMemoryRequirements2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubmitInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkSubmitInfo2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassBeginInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDependency2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDescription2::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkSubpassDescriptionDepthStencilResolve::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassEndInfo::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassResolvePerformanceQueryEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassShadingPipelineCreateInfoHUAWEI::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubresourceHostMemcpySize::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubresourceLayout2::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubsampledImageFormatPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceCapabilities2EXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceCapabilities2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceCapabilitiesPresentBarrierNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceCapabilitiesPresentId2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceCapabilitiesPresentWait2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceFormat2KHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfacePresentModeCompatibilityKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfacePresentModeKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfacePresentScalingCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSurfaceProtectedCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainCalibratedTimestampInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainCounterCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainDisplayNativeHdrCreateInfoAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainFlagsSurfaceCapabilitiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainLatencyCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainPresentBarrierCreateInfoNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainPresentFenceInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainPresentModeInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainPresentModesCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainPresentScalingCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkSwapchainTimeDomainPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSwapchainTimingPropertiesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorCaptureDescriptorDataInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkTensorCopyARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkTensorCreateInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkTensorDependencyInfoARM::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkTensorDescriptionARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorExplicitTilingFormatPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorFormatPropertiesARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorMemoryBarrierARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorMemoryRequirementsInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorRollingBackingCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorViewCaptureDescriptorDataInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTensorViewCreateInfoARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTexelBufferDescriptorInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTextureLODGatherFormatPropertiesAMD::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkThrottleHintSubmitInfoSEC::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTileMemoryBindInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTileMemoryRequirementsQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTileMemorySizeInfoQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTilePropertiesQCOM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkTimelineSemaphoreSubmitInfo::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkValidationCacheCreateInfoEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkValidationFeaturesEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkValidationFlagsEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVertexInputAttributeDescription2EXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVertexInputBindingDescription2EXT::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoBeginCodingInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoCodingControlInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeAV1CapabilitiesKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeAV1DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeAV1InlineSessionParametersInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeAV1PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeAV1ProfileInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeAV1SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH264CapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH264DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH264InlineSessionParametersInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH264PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH264ProfileInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH264SessionParametersAddInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH264SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH265CapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH265DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH265InlineSessionParametersInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH265PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeH265ProfileInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH265SessionParametersAddInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeH265SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeUsageInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeVP9CapabilitiesKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoDecodeVP9PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoDecodeVP9ProfileInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1CapabilitiesKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeAV1DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1GopRemainingFrameInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeAV1PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1ProfileInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1QualityLevelPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1QuantizationMapCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1RateControlInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1RateControlLayerInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeAV1SessionCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeAV1SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeFeedback2CapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264CapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264GopRemainingFrameInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH264NaluSliceInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH264PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264ProfileInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264QualityLevelPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264QuantizationMapCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264RateControlInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264RateControlLayerInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264SessionCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH264SessionParametersAddInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH264SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264SessionParametersFeedbackInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH264SessionParametersGetInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265CapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265DpbSlotInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265GopRemainingFrameInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH265NaluSliceSegmentInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH265PictureInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265ProfileInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265QualityLevelPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265QuantizationMapCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265RateControlInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265RateControlLayerInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265SessionCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH265SessionParametersAddInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeH265SessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265SessionParametersFeedbackInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeH265SessionParametersGetInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeIntraRefreshCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeIntraRefreshInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeProfileRgbConversionInfoVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeQualityLevelInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeQualityLevelPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeQuantizationMapCapabilitiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeQuantizationMapInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoEncodeRateControlInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeRateControlLayerInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeRgbConversionCapabilitiesVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeSessionIntraRefreshCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeSessionParametersFeedbackInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeSessionParametersGetInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeSessionRgbConversionCreateInfoVALVE::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEncodeUsageInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoEndCodingInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoFormatAV1QuantizationMapPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoFormatH265QuantizationMapPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoFormatPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoFormatQuantizationMapPropertiesKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoInlineQueryInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoPictureResourceInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoProfileInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoProfileListInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoReferenceIntraRefreshInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoReferenceSlotInfoKHR::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkVideoSessionCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoSessionMemoryRequirementsKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoSessionParametersCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkVideoSessionParametersUpdateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWaylandSurfaceCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteDescriptorSet::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteDescriptorSetAccelerationStructureKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteDescriptorSetAccelerationStructureNV::pNext> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkWriteDescriptorSetInlineUniformBlock::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteDescriptorSetPartitionedAccelerationStructureNV::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteDescriptorSetTensorARM::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteIndirectExecutionSetPipelineEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkWriteIndirectExecutionSetShaderEXT::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkXcbSurfaceCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkXlibSurfaceCreateInfoKHR::pNext> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkCommandBufferBeginInfo::pInheritanceInfo> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceCreateInfo::pQueueCreateInfos> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceCreateInfo::ppEnabledLayerNames> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDeviceCreateInfo::ppEnabledExtensionNames> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDependencyInfo::pMemoryBarriers> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDependencyInfo::pBufferMemoryBarriers> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDependencyInfo::pImageMemoryBarriers> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorGetInfoEXT::data> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorSetLayoutCreateInfo::pBindings> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkDescriptorUpdateTemplateCreateInfo::pDescriptorUpdateEntries> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pStages> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pVertexInputState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pInputAssemblyState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pTessellationState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pViewportState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pRasterizationState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pMultisampleState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pDepthStencilState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pColorBlendState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkGraphicsPipelineCreateInfo::pDynamicState> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkInstanceCreateInfo::pApplicationInfo> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkInstanceCreateInfo::ppEnabledLayerNames> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkInstanceCreateInfo::ppEnabledExtensionNames> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreateInfo::pSubpasses> : fexgen::custom_repack {};
// NOTE: pDependencies and pAttachments point to ABI-compatible data
template<>
struct fex_gen_config<&VkRenderPassCreateInfo2::pAttachments> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreateInfo2::pSubpasses> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderPassCreateInfo2::pDependencies> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkPipelineShaderStageCreateInfo::pSpecializationInfo> : fexgen::custom_repack {};
// template<>
// struct fex_gen_config<&VkSpecializationInfo::pMapEntries> : fexgen::custom_repack {};
// TODO: Support annotating as assume_compatible_data_layout instead
template<>
struct fex_gen_config<&VkPipelineCacheCreateInfo::pInitialData> : fexgen::custom_repack {};
// Command buffers are dispatchable handles, so on 32-bit they need to be repacked
template<>
struct fex_gen_config<&VkSubmitInfo::pCommandBuffers> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingInfo::pColorAttachments> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingInfo::pDepthAttachment> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkRenderingInfo::pStencilAttachment> : fexgen::custom_repack {};
// TODO: Support annotating as assume_compatible_data_layout instead
template<>
struct fex_gen_config<&VkRenderPassBeginInfo::pClearValues> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDescription2::pInputAttachments> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDescription2::pColorAttachments> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDescription2::pResolveAttachments> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkSubpassDescription2::pDepthStencilAttachment> : fexgen::custom_repack {};
// These types have incompatible data layout but we use their layout wrappers elsewhere
template<>
struct fex_gen_type<VkWriteDescriptorSet> : fexgen::emit_layout_wrappers {};
#else
// The pNext member of this is a pointer to another VkBaseOutStructure, so data layout compatibility can't be inferred automatically
template<>
struct fex_gen_type<VkBaseOutStructure> : fexgen::assume_compatible_data_layout {};
#endif
// TODO: Should not be opaque, but it's usually NULL anyway. Supporting the contained function pointers will need more work.
template<>
struct fex_gen_type<VkAllocationCallbacks> : fexgen::opaque_type {};
// X11 interop
template<>
struct fex_gen_config<&VkXcbSurfaceCreateInfoKHR::connection> : fexgen::custom_repack {};
template<>
struct fex_gen_config<&VkXlibSurfaceCreateInfoKHR::dpy> : fexgen::custom_repack {};
// Wayland interop
template<>
struct fex_gen_type<wl_display> : fexgen::opaque_type {};
template<>
struct fex_gen_type<wl_surface> : fexgen::opaque_type {};
namespace internal {
// Function, parameter index, parameter type [optional]
template<auto, int, typename = void>
struct fex_gen_param {};
template<auto>
struct fex_gen_config : fexgen::generate_guest_symtable, fexgen::indirect_guest_calls {};
template<>
struct fex_gen_config<vkCreateInstance> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkCreateInstance, 2, VkInstance*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_config<vkDestroyInstance> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkEnumeratePhysicalDevices> {};
#else
template<>
struct fex_gen_config<vkEnumeratePhysicalDevices> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkEnumeratePhysicalDevices, 2, VkPhysicalDevice*> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_config<vkGetPhysicalDeviceFeatures> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceFormatProperties> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceImageFormatProperties> {};
// TODO: Output parameter must repack on exit!
template<>
struct fex_gen_config<vkGetPhysicalDeviceProperties> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyProperties> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceMemoryProperties> {};
template<>
struct fex_gen_config<vkCreateDevice> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkCreateDevice, 3, VkDevice*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_config<vkDestroyDevice> {};
template<>
struct fex_gen_config<vkEnumerateInstanceExtensionProperties> {};
template<>
struct fex_gen_config<vkEnumerateDeviceExtensionProperties> {};
template<>
struct fex_gen_config<vkEnumerateInstanceLayerProperties> {};
template<>
struct fex_gen_config<vkEnumerateDeviceLayerProperties> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetDeviceQueue> {};
#else
template<>
struct fex_gen_config<vkGetDeviceQueue> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkGetDeviceQueue, 3, VkQueue*> : fexgen::ptr_passthrough {};
#endif
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkQueueSubmit> {};
#else
// Needs array repacking for multiple submit infos
template<>
struct fex_gen_config<vkQueueSubmit> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkQueueSubmit, 2, const VkSubmitInfo*> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_config<vkQueueWaitIdle> {};
template<>
struct fex_gen_config<vkDeviceWaitIdle> {};
template<>
struct fex_gen_config<vkAllocateMemory> : fexgen::custom_host_impl {};
template<>
struct fex_gen_config<vkFreeMemory> : fexgen::custom_host_impl {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkMapMemory> {};
#else
template<>
struct fex_gen_config<vkMapMemory> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkMapMemory, 5, void**> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_config<vkUnmapMemory> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkFlushMappedMemoryRanges> {};
template<>
struct fex_gen_config<vkInvalidateMappedMemoryRanges> {};
template<>
struct fex_gen_config<vkGetDeviceMemoryCommitment> {};
#endif
template<>
struct fex_gen_config<vkBindBufferMemory> {};
template<>
struct fex_gen_config<vkBindImageMemory> {};
template<>
struct fex_gen_config<vkGetBufferMemoryRequirements> {};
template<>
struct fex_gen_config<vkGetImageMemoryRequirements> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetImageSparseMemoryRequirements> {};
#endif
template<>
struct fex_gen_config<vkGetPhysicalDeviceSparseImageFormatProperties> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkQueueBindSparse> {};
#endif
template<>
struct fex_gen_config<vkCreateFence> {};
template<>
struct fex_gen_config<vkDestroyFence> {};
template<>
struct fex_gen_config<vkResetFences> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetFenceStatus> {};
#endif
template<>
struct fex_gen_config<vkWaitForFences> {};
template<>
struct fex_gen_config<vkCreateSemaphore> {};
template<>
struct fex_gen_config<vkDestroySemaphore> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCreateQueryPool> {};
template<>
struct fex_gen_config<vkDestroyQueryPool> {};
template<>
struct fex_gen_config<vkGetQueryPoolResults> {};
template<>
struct fex_gen_param<vkGetQueryPoolResults, 5, void*> : fexgen::assume_compatible_data_layout {};
#endif
template<>
struct fex_gen_config<vkCreateBuffer> {};
template<>
struct fex_gen_config<vkDestroyBuffer> {};
template<>
struct fex_gen_config<vkCreateImage> {};
template<>
struct fex_gen_config<vkDestroyImage> {};
template<>
struct fex_gen_config<vkGetImageSubresourceLayout> {};
template<>
struct fex_gen_config<vkCreateImageView> {};
template<>
struct fex_gen_config<vkDestroyImageView> {};
template<>
struct fex_gen_config<vkCreateCommandPool> {};
template<>
struct fex_gen_config<vkDestroyCommandPool> {};
template<>
struct fex_gen_config<vkResetCommandPool> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkAllocateCommandBuffers> {};
#else
template<>
struct fex_gen_config<vkAllocateCommandBuffers> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkAllocateCommandBuffers, 2, VkCommandBuffer*> : fexgen::ptr_passthrough {};
#endif
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkFreeCommandBuffers> {};
#else
template<>
struct fex_gen_config<vkFreeCommandBuffers> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkFreeCommandBuffers, 3, const VkCommandBuffer*> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_config<vkBeginCommandBuffer> {};
template<>
struct fex_gen_config<vkEndCommandBuffer> {};
template<>
struct fex_gen_config<vkResetCommandBuffer> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdCopyBuffer> {};
template<>
struct fex_gen_config<vkCmdCopyImage> {};
#endif
template<>
struct fex_gen_config<vkCmdCopyBufferToImage> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdCopyImageToBuffer> {};
template<>
struct fex_gen_config<vkCmdUpdateBuffer> {};
template<>
struct fex_gen_param<vkCmdUpdateBuffer, 4, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdFillBuffer> {};
#endif
template<>
struct fex_gen_config<vkCmdPipelineBarrier> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBeginQuery> {};
template<>
struct fex_gen_config<vkCmdEndQuery> {};
template<>
struct fex_gen_config<vkCmdResetQueryPool> {};
template<>
struct fex_gen_config<vkCmdWriteTimestamp> {};
template<>
struct fex_gen_config<vkCmdCopyQueryPoolResults> {};
template<>
struct fex_gen_config<vkCmdExecuteCommands> {};
template<>
struct fex_gen_config<vkCreateEvent> {};
template<>
struct fex_gen_config<vkDestroyEvent> {};
template<>
struct fex_gen_config<vkGetEventStatus> {};
template<>
struct fex_gen_config<vkSetEvent> {};
template<>
struct fex_gen_config<vkResetEvent> {};
#endif
template<>
struct fex_gen_config<vkCreateBufferView> {};
template<>
struct fex_gen_config<vkDestroyBufferView> {};
template<>
struct fex_gen_config<vkCreateShaderModule> : fexgen::custom_host_impl {};
template<>
struct fex_gen_config<vkDestroyShaderModule> {};
template<>
struct fex_gen_config<vkCreatePipelineCache> {};
template<>
struct fex_gen_config<vkDestroyPipelineCache> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetPipelineCacheData> {};
#else
template<>
struct fex_gen_config<vkGetPipelineCacheData> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkGetPipelineCacheData, 2, size_t*> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_param<vkGetPipelineCacheData, 3, void*> : fexgen::assume_compatible_data_layout {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkMergePipelineCaches> {};
template<>
struct fex_gen_config<vkCreateComputePipelines> {};
#endif
template<>
struct fex_gen_config<vkDestroyPipeline> {};
template<>
struct fex_gen_config<vkCreatePipelineLayout> {};
template<>
struct fex_gen_config<vkDestroyPipelineLayout> {};
template<>
struct fex_gen_config<vkCreateSampler> {};
template<>
struct fex_gen_config<vkDestroySampler> {};
template<>
struct fex_gen_config<vkCreateDescriptorSetLayout> {};
template<>
struct fex_gen_config<vkDestroyDescriptorSetLayout> {};
template<>
struct fex_gen_config<vkCreateDescriptorPool> {};
template<>
struct fex_gen_config<vkDestroyDescriptorPool> {};
template<>
struct fex_gen_config<vkResetDescriptorPool> {};
template<>
struct fex_gen_config<vkAllocateDescriptorSets> {};
template<>
struct fex_gen_config<vkFreeDescriptorSets> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkUpdateDescriptorSets> {};
#else
template<>
struct fex_gen_config<vkUpdateDescriptorSets> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkUpdateDescriptorSets, 2, const VkWriteDescriptorSet*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_param<vkUpdateDescriptorSets, 4, const VkCopyDescriptorSet*> : fexgen::ptr_passthrough {};
#endif
template<>
struct fex_gen_config<vkCmdBindPipeline> {};
template<>
struct fex_gen_config<vkCmdBindDescriptorSets> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdClearColorImage> {};
template<>
struct fex_gen_config<vkCmdDispatch> {};
template<>
struct fex_gen_config<vkCmdDispatchIndirect> {};
template<>
struct fex_gen_config<vkCmdSetEvent> {};
template<>
struct fex_gen_config<vkCmdResetEvent> {};
template<>
struct fex_gen_config<vkCmdWaitEvents> {};
template<>
struct fex_gen_config<vkCmdPushConstants> {};
template<>
struct fex_gen_param<vkCmdPushConstants, 5, const void*> : fexgen::assume_compatible_data_layout {};
#endif
// TODO: Should be custom_host_impl since there may be more than one VkGraphicsPipelineCreateInfo and more than one output pipeline
template<>
struct fex_gen_config<vkCreateGraphicsPipelines> {};
template<>
struct fex_gen_config<vkCreateFramebuffer> {};
template<>
struct fex_gen_config<vkDestroyFramebuffer> {};
template<>
struct fex_gen_config<vkCreateRenderPass> {};
template<>
struct fex_gen_config<vkDestroyRenderPass> {};
template<>
struct fex_gen_config<vkGetRenderAreaGranularity> {};
template<>
struct fex_gen_config<vkCmdSetViewport> {};
template<>
struct fex_gen_config<vkCmdSetScissor> {};
template<>
struct fex_gen_config<vkCmdSetLineWidth> {};
template<>
struct fex_gen_config<vkCmdSetDepthBias> {};
template<>
struct fex_gen_config<vkCmdSetBlendConstants> {};
template<>
struct fex_gen_config<vkCmdSetDepthBounds> {};
template<>
struct fex_gen_config<vkCmdSetStencilCompareMask> {};
template<>
struct fex_gen_config<vkCmdSetStencilWriteMask> {};
template<>
struct fex_gen_config<vkCmdSetStencilReference> {};
template<>
struct fex_gen_config<vkCmdBindIndexBuffer> {};
template<>
struct fex_gen_config<vkCmdBindVertexBuffers> {};
template<>
struct fex_gen_config<vkCmdDraw> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdDrawIndexed> {};
template<>
struct fex_gen_config<vkCmdDrawIndirect> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirect> {};
template<>
struct fex_gen_config<vkCmdBlitImage> {};
template<>
struct fex_gen_config<vkCmdClearDepthStencilImage> {};
#endif
template<>
struct fex_gen_config<vkCmdClearAttachments> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdResolveImage> {};
#endif
template<>
struct fex_gen_config<vkCmdBeginRenderPass> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdNextSubpass> {};
#endif
template<>
struct fex_gen_config<vkCmdEndRenderPass> {};
template<>
struct fex_gen_config<vkEnumerateInstanceVersion> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkBindBufferMemory2> {};
template<>
struct fex_gen_config<vkBindImageMemory2> {};
template<>
struct fex_gen_config<vkGetDeviceGroupPeerMemoryFeatures> {};
template<>
struct fex_gen_config<vkCmdSetDeviceMask> {};
template<>
struct fex_gen_config<vkEnumeratePhysicalDeviceGroups> {};
#endif
template<>
struct fex_gen_config<vkGetImageMemoryRequirements2> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetBufferMemoryRequirements2> {};
template<>
struct fex_gen_config<vkGetImageSparseMemoryRequirements2> {};
#endif
template<>
struct fex_gen_config<vkGetPhysicalDeviceFeatures2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceProperties2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceFormatProperties2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceImageFormatProperties2> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyProperties2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceMemoryProperties2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSparseImageFormatProperties2> {};
template<>
struct fex_gen_config<vkTrimCommandPool> {};
template<>
struct fex_gen_config<vkGetDeviceQueue2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalBufferProperties> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalFenceProperties> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalSemaphoreProperties> {};
template<>
struct fex_gen_config<vkCmdDispatchBase> {};
#endif
template<>
struct fex_gen_config<vkCreateDescriptorUpdateTemplate> {};
template<>
struct fex_gen_config<vkDestroyDescriptorUpdateTemplate> {};
template<>
struct fex_gen_config<vkUpdateDescriptorSetWithTemplate> {};
template<>
struct fex_gen_param<vkUpdateDescriptorSetWithTemplate, 3, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkGetDescriptorSetLayoutSupport> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCreateSamplerYcbcrConversion> {};
template<>
struct fex_gen_config<vkDestroySamplerYcbcrConversion> {};
template<>
struct fex_gen_config<vkResetQueryPool> {};
template<>
struct fex_gen_config<vkGetSemaphoreCounterValue> {};
#endif
template<>
struct fex_gen_config<vkWaitSemaphores> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkSignalSemaphore> {};
#endif
template<>
struct fex_gen_config<vkGetBufferDeviceAddress> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetBufferOpaqueCaptureAddress> {};
template<>
struct fex_gen_config<vkGetDeviceMemoryOpaqueCaptureAddress> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectCount> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirectCount> {};
#endif
template<>
struct fex_gen_config<vkCreateRenderPass2> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBeginRenderPass2> {};
template<>
struct fex_gen_config<vkCmdNextSubpass2> {};
template<>
struct fex_gen_config<vkCmdEndRenderPass2> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceToolProperties> {};
template<>
struct fex_gen_config<vkCreatePrivateDataSlot> {};
template<>
struct fex_gen_config<vkDestroyPrivateDataSlot> {};
template<>
struct fex_gen_config<vkSetPrivateData> {};
template<>
struct fex_gen_config<vkGetPrivateData> {};
#endif
template<>
struct fex_gen_config<vkCmdPipelineBarrier2> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdWriteTimestamp2> {};
template<>
struct fex_gen_config<vkQueueSubmit2> {};
template<>
struct fex_gen_config<vkCmdCopyBuffer2> {};
template<>
struct fex_gen_config<vkCmdCopyImage2> {};
template<>
struct fex_gen_config<vkCmdCopyBufferToImage2> {};
template<>
struct fex_gen_config<vkCmdCopyImageToBuffer2> {};
template<>
struct fex_gen_config<vkGetDeviceBufferMemoryRequirements> {};
template<>
struct fex_gen_config<vkGetDeviceImageMemoryRequirements> {};
template<>
struct fex_gen_config<vkGetDeviceImageSparseMemoryRequirements> {};
template<>
struct fex_gen_config<vkCmdSetEvent2> {};
template<>
struct fex_gen_config<vkCmdResetEvent2> {};
template<>
struct fex_gen_config<vkCmdWaitEvents2> {};
template<>
struct fex_gen_config<vkCmdBlitImage2> {};
template<>
struct fex_gen_config<vkCmdResolveImage2> {};
#endif
template<>
struct fex_gen_config<vkCmdBeginRendering> {};
template<>
struct fex_gen_config<vkCmdEndRendering> {};
template<>
struct fex_gen_config<vkCmdSetCullMode> {};
template<>
struct fex_gen_config<vkCmdSetFrontFace> {};
template<>
struct fex_gen_config<vkCmdSetPrimitiveTopology> {};
template<>
struct fex_gen_config<vkCmdSetViewportWithCount> {};
template<>
struct fex_gen_config<vkCmdSetScissorWithCount> {};
template<>
struct fex_gen_config<vkCmdBindVertexBuffers2> {};
template<>
struct fex_gen_config<vkCmdSetDepthTestEnable> {};
template<>
struct fex_gen_config<vkCmdSetDepthWriteEnable> {};
template<>
struct fex_gen_config<vkCmdSetDepthCompareOp> {};
template<>
struct fex_gen_config<vkCmdSetDepthBoundsTestEnable> {};
template<>
struct fex_gen_config<vkCmdSetStencilTestEnable> {};
template<>
struct fex_gen_config<vkCmdSetStencilOp> {};
template<>
struct fex_gen_config<vkCmdSetRasterizerDiscardEnable> {};
template<>
struct fex_gen_config<vkCmdSetDepthBiasEnable> {};
template<>
struct fex_gen_config<vkCmdSetPrimitiveRestartEnable> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkMapMemory2> {};
#endif
template<>
struct fex_gen_config<vkUnmapMemory2> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetDeviceImageSubresourceLayout> {};
#endif
template<>
struct fex_gen_config<vkGetImageSubresourceLayout2> {};
template<>
struct fex_gen_config<vkCopyMemoryToImage> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCopyImageToMemory> {};
template<>
struct fex_gen_config<vkCopyImageToImage> {};
#endif
template<>
struct fex_gen_config<vkTransitionImageLayout> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdPushDescriptorSet> {};
#endif
template<>
struct fex_gen_config<vkCmdPushDescriptorSetWithTemplate> {};
template<>
struct fex_gen_param<vkCmdPushDescriptorSetWithTemplate, 4, const void*> : fexgen::assume_compatible_data_layout {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBindDescriptorSets2> {};
template<>
struct fex_gen_config<vkCmdPushConstants2> {};
template<>
struct fex_gen_config<vkCmdPushDescriptorSet2> {};
template<>
struct fex_gen_config<vkCmdPushDescriptorSetWithTemplate2> {};
#endif
template<>
struct fex_gen_config<vkCmdSetLineStipple> {};
template<>
struct fex_gen_config<vkCmdBindIndexBuffer2> {};
template<>
struct fex_gen_config<vkGetRenderingAreaGranularity> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdSetRenderingAttachmentLocations> {};
template<>
struct fex_gen_config<vkCmdSetRenderingInputAttachmentIndices> {};
#endif
template<>
struct fex_gen_config<vkDestroySurfaceKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceSupportKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceCapabilitiesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceFormatsKHR> {}; // TODO: Need to figure out how *not* to repack the last parameter on input...
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfacePresentModesKHR> {};
template<>
struct fex_gen_config<vkCreateSwapchainKHR> {};
template<>
struct fex_gen_config<vkDestroySwapchainKHR> {};
template<>
struct fex_gen_config<vkGetSwapchainImagesKHR> {};
template<>
struct fex_gen_config<vkAcquireNextImageKHR> {};
template<>
struct fex_gen_config<vkQueuePresentKHR> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetDeviceGroupPresentCapabilitiesKHR> {};
template<>
struct fex_gen_config<vkGetDeviceGroupSurfacePresentModesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDevicePresentRectanglesKHR> {};
template<>
struct fex_gen_config<vkAcquireNextImage2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceDisplayPropertiesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceDisplayPlanePropertiesKHR> {};
template<>
struct fex_gen_config<vkGetDisplayPlaneSupportedDisplaysKHR> {};
template<>
struct fex_gen_config<vkGetDisplayModePropertiesKHR> {};
template<>
struct fex_gen_config<vkCreateDisplayModeKHR> {};
template<>
struct fex_gen_config<vkGetDisplayPlaneCapabilitiesKHR> {};
template<>
struct fex_gen_config<vkCreateDisplayPlaneSurfaceKHR> {};
template<>
struct fex_gen_config<vkCreateSharedSwapchainsKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceVideoCapabilitiesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceVideoFormatPropertiesKHR> {};
template<>
struct fex_gen_config<vkCreateVideoSessionKHR> {};
template<>
struct fex_gen_config<vkDestroyVideoSessionKHR> {};
template<>
struct fex_gen_config<vkGetVideoSessionMemoryRequirementsKHR> {};
template<>
struct fex_gen_config<vkBindVideoSessionMemoryKHR> {};
template<>
struct fex_gen_config<vkCreateVideoSessionParametersKHR> {};
template<>
struct fex_gen_config<vkUpdateVideoSessionParametersKHR> {};
template<>
struct fex_gen_config<vkDestroyVideoSessionParametersKHR> {};
template<>
struct fex_gen_config<vkCmdBeginVideoCodingKHR> {};
template<>
struct fex_gen_config<vkCmdEndVideoCodingKHR> {};
template<>
struct fex_gen_config<vkCmdControlVideoCodingKHR> {};
template<>
struct fex_gen_config<vkCmdDecodeVideoKHR> {};
template<>
struct fex_gen_config<vkCmdBeginRenderingKHR> {};
template<>
struct fex_gen_config<vkCmdEndRenderingKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceFeatures2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceFormatProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceImageFormatProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceMemoryProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSparseImageFormatProperties2KHR> {};
template<>
struct fex_gen_config<vkGetDeviceGroupPeerMemoryFeaturesKHR> {};
template<>
struct fex_gen_config<vkCmdSetDeviceMaskKHR> {};
template<>
struct fex_gen_config<vkCmdDispatchBaseKHR> {};
template<>
struct fex_gen_config<vkTrimCommandPoolKHR> {};
template<>
struct fex_gen_config<vkEnumeratePhysicalDeviceGroupsKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalBufferPropertiesKHR> {};
template<>
struct fex_gen_config<vkGetMemoryFdKHR> {};
template<>
struct fex_gen_config<vkGetMemoryFdPropertiesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalSemaphorePropertiesKHR> {};
template<>
struct fex_gen_config<vkImportSemaphoreFdKHR> {};
template<>
struct fex_gen_config<vkGetSemaphoreFdKHR> {};
template<>
struct fex_gen_config<vkCmdPushDescriptorSetKHR> {};
#endif
template<>
struct fex_gen_config<vkCmdPushDescriptorSetWithTemplateKHR> {};
template<>
struct fex_gen_param<vkCmdPushDescriptorSetWithTemplateKHR, 4, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCreateDescriptorUpdateTemplateKHR> {};
template<>
struct fex_gen_config<vkDestroyDescriptorUpdateTemplateKHR> {};
template<>
struct fex_gen_config<vkUpdateDescriptorSetWithTemplateKHR> {};
template<>
struct fex_gen_param<vkUpdateDescriptorSetWithTemplateKHR, 3, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCreateRenderPass2KHR> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBeginRenderPass2KHR> {};
template<>
struct fex_gen_config<vkCmdNextSubpass2KHR> {};
template<>
struct fex_gen_config<vkCmdEndRenderPass2KHR> {};
template<>
struct fex_gen_config<vkGetSwapchainStatusKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalFencePropertiesKHR> {};
template<>
struct fex_gen_config<vkImportFenceFdKHR> {};
template<>
struct fex_gen_config<vkGetFenceFdKHR> {};
template<>
struct fex_gen_config<vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR> {};
template<>
struct fex_gen_config<vkAcquireProfilingLockKHR> {};
template<>
struct fex_gen_config<vkReleaseProfilingLockKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceCapabilities2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceFormats2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceDisplayProperties2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceDisplayPlaneProperties2KHR> {};
template<>
struct fex_gen_config<vkGetDisplayModeProperties2KHR> {};
template<>
struct fex_gen_config<vkGetDisplayPlaneCapabilities2KHR> {};
template<>
struct fex_gen_config<vkGetImageMemoryRequirements2KHR> {};
template<>
struct fex_gen_config<vkGetBufferMemoryRequirements2KHR> {};
template<>
struct fex_gen_config<vkGetImageSparseMemoryRequirements2KHR> {};
template<>
struct fex_gen_config<vkCreateSamplerYcbcrConversionKHR> {};
template<>
struct fex_gen_config<vkDestroySamplerYcbcrConversionKHR> {};
template<>
struct fex_gen_config<vkBindBufferMemory2KHR> {};
template<>
struct fex_gen_config<vkBindImageMemory2KHR> {};
template<>
struct fex_gen_config<vkGetDescriptorSetLayoutSupportKHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectCountKHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirectCountKHR> {};
template<>
struct fex_gen_config<vkGetSemaphoreCounterValueKHR> {};
template<>
struct fex_gen_config<vkWaitSemaphoresKHR> {};
template<>
struct fex_gen_config<vkSignalSemaphoreKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceFragmentShadingRatesKHR> {};
template<>
struct fex_gen_config<vkCmdSetFragmentShadingRateKHR> {};
template<>
struct fex_gen_config<vkCmdSetRenderingAttachmentLocationsKHR> {};
template<>
struct fex_gen_config<vkCmdSetRenderingInputAttachmentIndicesKHR> {};
template<>
struct fex_gen_config<vkWaitForPresentKHR> {};
template<>
struct fex_gen_config<vkGetBufferDeviceAddressKHR> {};
template<>
struct fex_gen_config<vkGetBufferOpaqueCaptureAddressKHR> {};
template<>
struct fex_gen_config<vkGetDeviceMemoryOpaqueCaptureAddressKHR> {};
template<>
struct fex_gen_config<vkCreateDeferredOperationKHR> {};
template<>
struct fex_gen_config<vkDestroyDeferredOperationKHR> {};
template<>
struct fex_gen_config<vkGetDeferredOperationMaxConcurrencyKHR> {};
template<>
struct fex_gen_config<vkGetDeferredOperationResultKHR> {};
template<>
struct fex_gen_config<vkDeferredOperationJoinKHR> {};
template<>
struct fex_gen_config<vkGetPipelineExecutablePropertiesKHR> {};
template<>
struct fex_gen_config<vkGetPipelineExecutableStatisticsKHR> {};
template<>
struct fex_gen_config<vkGetPipelineExecutableInternalRepresentationsKHR> {};
template<>
struct fex_gen_config<vkMapMemory2KHR> {};
template<>
struct fex_gen_config<vkUnmapMemory2KHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> {};
template<>
struct fex_gen_config<vkGetEncodedVideoSessionParametersKHR> {};
template<>
struct fex_gen_config<vkCmdEncodeVideoKHR> {};
template<>
struct fex_gen_config<vkCmdSetEvent2KHR> {};
template<>
struct fex_gen_config<vkCmdResetEvent2KHR> {};
template<>
struct fex_gen_config<vkCmdWaitEvents2KHR> {};
template<>
struct fex_gen_config<vkCmdPipelineBarrier2KHR> {};
template<>
struct fex_gen_config<vkCmdWriteTimestamp2KHR> {};
template<>
struct fex_gen_config<vkQueueSubmit2KHR> {};
template<>
struct fex_gen_config<vkCmdBindIndexBuffer3KHR> {};
template<>
struct fex_gen_config<vkCmdBindVertexBuffers3KHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndirect2KHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirect2KHR> {};
template<>
struct fex_gen_config<vkCmdDispatchIndirect2KHR> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryToImageKHR> {};
template<>
struct fex_gen_config<vkCmdCopyImageToMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdUpdateMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdFillMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdCopyQueryPoolResultsToMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectCount2KHR> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirectCount2KHR> {};
template<>
struct fex_gen_config<vkCmdBeginConditionalRendering2EXT> {};
template<>
struct fex_gen_config<vkCmdBindTransformFeedbackBuffers2EXT> {};
template<>
struct fex_gen_config<vkCmdBeginTransformFeedback2EXT> {};
template<>
struct fex_gen_config<vkCmdEndTransformFeedback2EXT> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectByteCount2EXT> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirect2EXT> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirectCount2EXT> {};
template<>
struct fex_gen_config<vkCmdWriteMarkerToMemoryAMD> {};
template<>
struct fex_gen_config<vkCreateAccelerationStructure2KHR> {};
template<>
struct fex_gen_config<vkCmdCopyBuffer2KHR> {};
template<>
struct fex_gen_config<vkCmdCopyImage2KHR> {};
template<>
struct fex_gen_config<vkCmdCopyBufferToImage2KHR> {};
template<>
struct fex_gen_config<vkCmdCopyImageToBuffer2KHR> {};
template<>
struct fex_gen_config<vkCmdBlitImage2KHR> {};
template<>
struct fex_gen_config<vkCmdResolveImage2KHR> {};
template<>
struct fex_gen_config<vkCmdTraceRaysIndirect2KHR> {};
template<>
struct fex_gen_config<vkGetDeviceBufferMemoryRequirementsKHR> {};
template<>
struct fex_gen_config<vkGetDeviceImageMemoryRequirementsKHR> {};
template<>
struct fex_gen_config<vkGetDeviceImageSparseMemoryRequirementsKHR> {};
template<>
struct fex_gen_config<vkCmdBindIndexBuffer2KHR> {};
template<>
struct fex_gen_config<vkGetRenderingAreaGranularityKHR> {};
template<>
struct fex_gen_config<vkGetDeviceImageSubresourceLayoutKHR> {};
template<>
struct fex_gen_config<vkGetImageSubresourceLayout2KHR> {};
template<>
struct fex_gen_config<vkWaitForPresent2KHR> {};
template<>
struct fex_gen_config<vkCreatePipelineBinariesKHR> {};
template<>
struct fex_gen_config<vkDestroyPipelineBinaryKHR> {};
template<>
struct fex_gen_config<vkGetPipelineKeyKHR> {};
template<>
struct fex_gen_config<vkGetPipelineBinaryDataKHR> {};
template<>
struct fex_gen_config<vkReleaseCapturedPipelineDataKHR> {};
template<>
struct fex_gen_config<vkReleaseSwapchainImagesKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR> {};
template<>
struct fex_gen_config<vkCmdSetLineStippleKHR> {};
#endif
template<>
struct fex_gen_config<vkGetPhysicalDeviceCalibrateableTimeDomainsKHR> {};
template<>
struct fex_gen_config<vkGetCalibratedTimestampsKHR> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBindDescriptorSets2KHR> {};
template<>
struct fex_gen_config<vkCmdPushConstants2KHR> {};
template<>
struct fex_gen_config<vkCmdPushDescriptorSet2KHR> {};
template<>
struct fex_gen_config<vkCmdPushDescriptorSetWithTemplate2KHR> {};
template<>
struct fex_gen_config<vkCmdSetDescriptorBufferOffsets2EXT> {};
template<>
struct fex_gen_config<vkCmdBindDescriptorBufferEmbeddedSamplers2EXT> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryIndirectKHR> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryToImageIndirectKHR> {};
template<>
struct fex_gen_config<vkGetDeviceFaultReportsKHR> {};
template<>
struct fex_gen_config<vkGetDeviceFaultDebugInfoKHR> {};
template<>
struct fex_gen_config<vkCmdEndRendering2KHR> {};
#endif
template<>
struct fex_gen_config<vkCreateDebugReportCallbackEXT> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkCreateDebugReportCallbackEXT, 1, const VkDebugReportCallbackCreateInfoEXT*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_config<vkDestroyDebugReportCallbackEXT> : fexgen::custom_host_impl {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkDebugReportMessageEXT> {};
template<>
struct fex_gen_config<vkDebugMarkerSetObjectTagEXT> {};
template<>
struct fex_gen_config<vkDebugMarkerSetObjectNameEXT> {};
template<>
struct fex_gen_config<vkCmdDebugMarkerBeginEXT> {};
template<>
struct fex_gen_config<vkCmdDebugMarkerEndEXT> {};
template<>
struct fex_gen_config<vkCmdDebugMarkerInsertEXT> {};
template<>
struct fex_gen_config<vkCmdBindTransformFeedbackBuffersEXT> {};
template<>
struct fex_gen_config<vkCmdBeginTransformFeedbackEXT> {};
template<>
struct fex_gen_config<vkCmdEndTransformFeedbackEXT> {};
template<>
struct fex_gen_config<vkCmdBeginQueryIndexedEXT> {};
template<>
struct fex_gen_config<vkCmdEndQueryIndexedEXT> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectByteCountEXT> {};
template<>
struct fex_gen_config<vkCreateCuModuleNVX> {};
template<>
struct fex_gen_config<vkCreateCuFunctionNVX> {};
template<>
struct fex_gen_config<vkDestroyCuModuleNVX> {};
template<>
struct fex_gen_config<vkDestroyCuFunctionNVX> {};
template<>
struct fex_gen_config<vkCmdCuLaunchKernelNVX> {};
template<>
struct fex_gen_config<vkGetImageViewHandleNVX> {};
template<>
struct fex_gen_config<vkGetImageViewHandle64NVX> {};
template<>
struct fex_gen_config<vkGetImageViewAddressNVX> {};
template<>
struct fex_gen_config<vkGetDeviceCombinedImageSamplerIndexNVX> {};
template<>
struct fex_gen_config<vkCmdDrawIndirectCountAMD> {};
template<>
struct fex_gen_config<vkCmdDrawIndexedIndirectCountAMD> {};
template<>
struct fex_gen_config<vkGetShaderInfoAMD> {};
template<>
struct fex_gen_param<vkGetShaderInfoAMD, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalImageFormatPropertiesNV> {};
template<>
struct fex_gen_config<vkCmdBeginConditionalRenderingEXT> {};
template<>
struct fex_gen_config<vkCmdEndConditionalRenderingEXT> {};
template<>
struct fex_gen_config<vkCmdSetViewportWScalingNV> {};
template<>
struct fex_gen_config<vkReleaseDisplayEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSurfaceCapabilities2EXT> {};
template<>
struct fex_gen_config<vkDisplayPowerControlEXT> {};
template<>
struct fex_gen_config<vkRegisterDeviceEventEXT> {};
template<>
struct fex_gen_config<vkRegisterDisplayEventEXT> {};
template<>
struct fex_gen_config<vkGetSwapchainCounterEXT> {};
template<>
struct fex_gen_config<vkGetRefreshCycleDurationGOOGLE> {};
template<>
struct fex_gen_config<vkGetPastPresentationTimingGOOGLE> {};
template<>
struct fex_gen_config<vkCmdSetDiscardRectangleEXT> {};
template<>
struct fex_gen_config<vkCmdSetDiscardRectangleEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetDiscardRectangleModeEXT> {};
template<>
struct fex_gen_config<vkSetHdrMetadataEXT> {};
template<>
struct fex_gen_config<vkSetDebugUtilsObjectNameEXT> {};
template<>
struct fex_gen_config<vkSetDebugUtilsObjectTagEXT> {};
template<>
struct fex_gen_config<vkQueueBeginDebugUtilsLabelEXT> {};
template<>
struct fex_gen_config<vkQueueEndDebugUtilsLabelEXT> {};
template<>
struct fex_gen_config<vkQueueInsertDebugUtilsLabelEXT> {};
template<>
struct fex_gen_config<vkCmdBeginDebugUtilsLabelEXT> {};
template<>
struct fex_gen_config<vkCmdEndDebugUtilsLabelEXT> {};
template<>
struct fex_gen_config<vkCmdInsertDebugUtilsLabelEXT> {};
#endif
template<>
struct fex_gen_config<vkCreateDebugUtilsMessengerEXT> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkCreateDebugUtilsMessengerEXT, 1, const VkDebugUtilsMessengerCreateInfoEXT*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_config<vkDestroyDebugUtilsMessengerEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkSubmitDebugUtilsMessageEXT> {};
template<>
struct fex_gen_config<vkCreateGpaSessionAMD> {};
template<>
struct fex_gen_config<vkDestroyGpaSessionAMD> {};
template<>
struct fex_gen_config<vkSetGpaDeviceClockModeAMD> {};
template<>
struct fex_gen_config<vkGetGpaDeviceClockInfoAMD> {};
template<>
struct fex_gen_config<vkCmdBeginGpaSessionAMD> {};
template<>
struct fex_gen_config<vkCmdEndGpaSessionAMD> {};
template<>
struct fex_gen_config<vkCmdBeginGpaSampleAMD> {};
template<>
struct fex_gen_config<vkCmdEndGpaSampleAMD> {};
template<>
struct fex_gen_config<vkGetGpaSessionStatusAMD> {};
template<>
struct fex_gen_config<vkGetGpaSessionResultsAMD> {};
template<>
struct fex_gen_config<vkResetGpaSessionAMD> {};
template<>
struct fex_gen_config<vkCmdCopyGpaSessionResultsAMD> {};
template<>
struct fex_gen_config<vkWriteSamplerDescriptorsEXT> {};
template<>
struct fex_gen_config<vkWriteResourceDescriptorsEXT> {};
template<>
struct fex_gen_config<vkCmdBindSamplerHeapEXT> {};
template<>
struct fex_gen_config<vkCmdBindResourceHeapEXT> {};
template<>
struct fex_gen_config<vkCmdPushDataEXT> {};
template<>
struct fex_gen_config<vkGetImageOpaqueCaptureDataEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceDescriptorSizeEXT> {};
template<>
struct fex_gen_config<vkRegisterCustomBorderColorEXT> {};
template<>
struct fex_gen_config<vkUnregisterCustomBorderColorEXT> {};
template<>
struct fex_gen_config<vkGetTensorOpaqueCaptureDataARM> {};
template<>
struct fex_gen_config<vkCmdSetSampleLocationsEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceMultisamplePropertiesEXT> {};
template<>
struct fex_gen_config<vkGetImageDrmFormatModifierPropertiesEXT> {};
template<>
struct fex_gen_config<vkCreateValidationCacheEXT> {};
template<>
struct fex_gen_config<vkDestroyValidationCacheEXT> {};
template<>
struct fex_gen_config<vkMergeValidationCachesEXT> {};
template<>
struct fex_gen_config<vkGetValidationCacheDataEXT> {};
template<>
struct fex_gen_param<vkGetValidationCacheDataEXT, 3, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdBindShadingRateImageNV> {};
template<>
struct fex_gen_config<vkCmdSetViewportShadingRatePaletteNV> {};
template<>
struct fex_gen_config<vkCmdSetCoarseSampleOrderNV> {};
template<>
struct fex_gen_config<vkCreateAccelerationStructureNV> {};
template<>
struct fex_gen_config<vkDestroyAccelerationStructureNV> {};
template<>
struct fex_gen_config<vkGetAccelerationStructureMemoryRequirementsNV> {};
template<>
struct fex_gen_config<vkBindAccelerationStructureMemoryNV> {};
template<>
struct fex_gen_config<vkCmdBuildAccelerationStructureNV> {};
template<>
struct fex_gen_config<vkCmdCopyAccelerationStructureNV> {};
template<>
struct fex_gen_config<vkCmdTraceRaysNV> {};
template<>
struct fex_gen_config<vkCreateRayTracingPipelinesNV> {};
template<>
struct fex_gen_config<vkGetRayTracingShaderGroupHandlesKHR> {};
template<>
struct fex_gen_param<vkGetRayTracingShaderGroupHandlesKHR, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkGetRayTracingShaderGroupHandlesNV> {};
template<>
struct fex_gen_param<vkGetRayTracingShaderGroupHandlesNV, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkGetAccelerationStructureHandleNV> {};
template<>
struct fex_gen_param<vkGetAccelerationStructureHandleNV, 3, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdWriteAccelerationStructuresPropertiesNV> {};
template<>
struct fex_gen_config<vkCompileDeferredNV> {};
template<>
struct fex_gen_config<vkGetMemoryHostPointerPropertiesEXT> {};
template<>
struct fex_gen_param<vkGetMemoryHostPointerPropertiesEXT, 2, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdWriteBufferMarkerAMD> {};
#endif
template<>
struct fex_gen_config<vkCmdWriteBufferMarker2AMD> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCalibrateableTimeDomainsEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetCalibratedTimestampsEXT> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksNV> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirectNV> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirectCountNV> {};
template<>
struct fex_gen_config<vkCmdSetExclusiveScissorEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetExclusiveScissorNV> {};
template<>
struct fex_gen_config<vkCmdSetCheckpointNV> {};
template<>
struct fex_gen_param<vkCmdSetCheckpointNV, 1, const void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkGetQueueCheckpointDataNV> {};
template<>
struct fex_gen_config<vkGetQueueCheckpointData2NV> {};
template<>
struct fex_gen_config<vkSetSwapchainPresentTimingQueueSizeEXT> {};
template<>
struct fex_gen_config<vkGetSwapchainTimingPropertiesEXT> {};
template<>
struct fex_gen_config<vkGetSwapchainTimeDomainPropertiesEXT> {};
template<>
struct fex_gen_config<vkGetPastPresentationTimingEXT> {};
template<>
struct fex_gen_config<vkInitializePerformanceApiINTEL> {};
template<>
struct fex_gen_config<vkUninitializePerformanceApiINTEL> {};
template<>
struct fex_gen_config<vkCmdSetPerformanceMarkerINTEL> {};
template<>
struct fex_gen_config<vkCmdSetPerformanceStreamMarkerINTEL> {};
template<>
struct fex_gen_config<vkCmdSetPerformanceOverrideINTEL> {};
template<>
struct fex_gen_config<vkAcquirePerformanceConfigurationINTEL> {};
template<>
struct fex_gen_config<vkReleasePerformanceConfigurationINTEL> {};
template<>
struct fex_gen_config<vkQueueSetPerformanceConfigurationINTEL> {};
template<>
struct fex_gen_config<vkGetPerformanceParameterINTEL> {};
template<>
struct fex_gen_config<vkSetLocalDimmingAMD> {};
template<>
struct fex_gen_config<vkGetBufferDeviceAddressEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceToolPropertiesEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCooperativeMatrixPropertiesNV> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV> {};
template<>
struct fex_gen_config<vkCreateHeadlessSurfaceEXT> {};
#endif
template<>
struct fex_gen_config<vkCmdSetLineStippleEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkResetQueryPoolEXT> {};
template<>
struct fex_gen_config<vkCmdSetCullModeEXT> {};
template<>
struct fex_gen_config<vkCmdSetFrontFaceEXT> {};
template<>
struct fex_gen_config<vkCmdSetPrimitiveTopologyEXT> {};
template<>
struct fex_gen_config<vkCmdSetViewportWithCountEXT> {};
template<>
struct fex_gen_config<vkCmdSetScissorWithCountEXT> {};
template<>
struct fex_gen_config<vkCmdBindVertexBuffers2EXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthTestEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthWriteEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthCompareOpEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthBoundsTestEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetStencilTestEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetStencilOpEXT> {};
#endif
template<>
struct fex_gen_config<vkCopyMemoryToImageEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCopyImageToMemoryEXT> {};
template<>
struct fex_gen_config<vkCopyImageToImageEXT> {};
#endif
template<>
struct fex_gen_config<vkTransitionImageLayoutEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetImageSubresourceLayout2EXT> {};
template<>
struct fex_gen_config<vkReleaseSwapchainImagesEXT> {};
template<>
struct fex_gen_config<vkGetGeneratedCommandsMemoryRequirementsNV> {};
template<>
struct fex_gen_config<vkCmdPreprocessGeneratedCommandsNV> {};
template<>
struct fex_gen_config<vkCmdExecuteGeneratedCommandsNV> {};
template<>
struct fex_gen_config<vkCmdBindPipelineShaderGroupNV> {};
template<>
struct fex_gen_config<vkCreateIndirectCommandsLayoutNV> {};
template<>
struct fex_gen_config<vkDestroyIndirectCommandsLayoutNV> {};
template<>
struct fex_gen_config<vkCmdSetDepthBias2EXT> {};
template<>
struct fex_gen_config<vkAcquireDrmDisplayEXT> {};
template<>
struct fex_gen_config<vkGetDrmDisplayEXT> {};
template<>
struct fex_gen_config<vkCreatePrivateDataSlotEXT> {};
template<>
struct fex_gen_config<vkDestroyPrivateDataSlotEXT> {};
template<>
struct fex_gen_config<vkSetPrivateDataEXT> {};
template<>
struct fex_gen_config<vkGetPrivateDataEXT> {};
template<>
struct fex_gen_config<vkQueueSetPerfHintQCOM> {};
template<>
struct fex_gen_config<vkCmdDispatchTileQCOM> {};
template<>
struct fex_gen_config<vkCmdBeginPerTileExecutionQCOM> {};
template<>
struct fex_gen_config<vkCmdEndPerTileExecutionQCOM> {};
template<>
struct fex_gen_config<vkSetLatencySleepModeLegacyNV> {};
template<>
struct fex_gen_config<vkLatencySleepLegacyNV> {};
template<>
struct fex_gen_config<vkSetLatencyMarkerLegacyNV> {};
template<>
struct fex_gen_config<vkGetLatencyTimingsLegacyNV> {};
template<>
struct fex_gen_config<vkQueueNotifyOutOfBandLegacyNV> {};
template<>
struct fex_gen_config<vkGetSleepStatusLegacyNV> {};
template<>
struct fex_gen_config<vkShutdownLatencyDeviceLegacyNV> {};
#endif
template<>
struct fex_gen_config<vkGetDescriptorSetLayoutSizeEXT> {};
template<>
struct fex_gen_config<vkGetDescriptorSetLayoutBindingOffsetEXT> {};
template<>
struct fex_gen_config<vkGetDescriptorEXT> {};
template<>
struct fex_gen_param<vkGetDescriptorEXT, 3, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdBindDescriptorBuffersEXT> {};
template<>
struct fex_gen_config<vkCmdSetDescriptorBufferOffsetsEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBindDescriptorBufferEmbeddedSamplersEXT> {};
template<>
struct fex_gen_config<vkGetBufferOpaqueCaptureDescriptorDataEXT> {};
template<>
struct fex_gen_config<vkGetImageOpaqueCaptureDescriptorDataEXT> {};
template<>
struct fex_gen_config<vkGetImageViewOpaqueCaptureDescriptorDataEXT> {};
template<>
struct fex_gen_config<vkGetSamplerOpaqueCaptureDescriptorDataEXT> {};
template<>
struct fex_gen_config<vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT> {};
template<>
struct fex_gen_config<vkCmdSetFragmentShadingRateEnumNV> {};
template<>
struct fex_gen_config<vkGetDeviceFaultInfoEXT> {};
#endif
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdSetVertexInputEXT> {};
#else
template<>
struct fex_gen_config<vkCmdSetVertexInputEXT> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkCmdSetVertexInputEXT, 2, const VkVertexInputBindingDescription2EXT*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_param<vkCmdSetVertexInputEXT, 4, const VkVertexInputAttributeDescription2EXT*> : fexgen::ptr_passthrough {};
#endif
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> {};
template<>
struct fex_gen_config<vkCmdSubpassShadingHUAWEI> {};
template<>
struct fex_gen_config<vkCmdBindInvocationMaskHUAWEI> {};
#ifndef IS_32BIT_THUNK
// VkRemoteAddressNV* expands to void**, so it needs custom repacking on on 32-bit
template<>
struct fex_gen_config<vkGetMemoryRemoteAddressNV> {};
#endif
template<>
struct fex_gen_config<vkGetPipelinePropertiesEXT> {};
#endif
template<>
struct fex_gen_config<vkCmdSetPatchControlPointsEXT> {};
template<>
struct fex_gen_config<vkCmdSetRasterizerDiscardEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthBiasEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetLogicOpEXT> {};
template<>
struct fex_gen_config<vkCmdSetPrimitiveRestartEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetColorWriteEnableEXT> {};
template<>
struct fex_gen_config<vkCmdDrawMultiEXT> {};
template<>
struct fex_gen_config<vkCmdDrawMultiIndexedEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCreateMicromapEXT> {};
template<>
struct fex_gen_config<vkDestroyMicromapEXT> {};
template<>
struct fex_gen_config<vkCmdBuildMicromapsEXT> {};
template<>
struct fex_gen_config<vkBuildMicromapsEXT> {};
template<>
struct fex_gen_config<vkCopyMicromapEXT> {};
template<>
struct fex_gen_config<vkCopyMicromapToMemoryEXT> {};
template<>
struct fex_gen_config<vkCopyMemoryToMicromapEXT> {};
template<>
struct fex_gen_config<vkWriteMicromapsPropertiesEXT> {};
template<>
struct fex_gen_param<vkWriteMicromapsPropertiesEXT, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdCopyMicromapEXT> {};
template<>
struct fex_gen_config<vkCmdCopyMicromapToMemoryEXT> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryToMicromapEXT> {};
template<>
struct fex_gen_config<vkCmdWriteMicromapsPropertiesEXT> {};
template<>
struct fex_gen_config<vkGetDeviceMicromapCompatibilityEXT> {};
template<>
struct fex_gen_config<vkGetMicromapBuildSizesEXT> {};
template<>
struct fex_gen_config<vkCmdDrawClusterHUAWEI> {};
template<>
struct fex_gen_config<vkCmdDrawClusterIndirectHUAWEI> {};
template<>
struct fex_gen_config<vkSetDeviceMemoryPriorityEXT> {};
template<>
struct fex_gen_config<vkCmdSetDispatchParametersARM> {};
template<>
struct fex_gen_config<vkGetDescriptorSetLayoutHostMappingInfoVALVE> {};
template<>
struct fex_gen_config<vkGetDescriptorSetHostMappingVALVE> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryIndirectNV> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryToImageIndirectNV> {};
template<>
struct fex_gen_config<vkCmdDecompressMemoryNV> {};
template<>
struct fex_gen_config<vkCmdDecompressMemoryIndirectCountNV> {};
template<>
struct fex_gen_config<vkGetPipelineIndirectMemoryRequirementsNV> {};
template<>
struct fex_gen_config<vkCmdUpdatePipelineIndirectBufferNV> {};
template<>
struct fex_gen_config<vkGetPipelineIndirectDeviceAddressNV> {};
#endif
template<>
struct fex_gen_config<vkCmdSetDepthClampEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetPolygonModeEXT> {};
template<>
struct fex_gen_config<vkCmdSetRasterizationSamplesEXT> {};
template<>
struct fex_gen_config<vkCmdSetSampleMaskEXT> {};
template<>
struct fex_gen_config<vkCmdSetAlphaToCoverageEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetAlphaToOneEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetLogicOpEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetColorBlendEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetColorBlendEquationEXT> {};
template<>
struct fex_gen_config<vkCmdSetColorWriteMaskEXT> {};
template<>
struct fex_gen_config<vkCmdSetTessellationDomainOriginEXT> {};
template<>
struct fex_gen_config<vkCmdSetRasterizationStreamEXT> {};
template<>
struct fex_gen_config<vkCmdSetConservativeRasterizationModeEXT> {};
template<>
struct fex_gen_config<vkCmdSetExtraPrimitiveOverestimationSizeEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthClipEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetSampleLocationsEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetColorBlendAdvancedEXT> {};
template<>
struct fex_gen_config<vkCmdSetProvokingVertexModeEXT> {};
template<>
struct fex_gen_config<vkCmdSetLineRasterizationModeEXT> {};
template<>
struct fex_gen_config<vkCmdSetLineStippleEnableEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthClipNegativeOneToOneEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdSetViewportWScalingEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetViewportSwizzleNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageToColorEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageToColorLocationNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageModulationModeNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageModulationTableEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageModulationTableNV> {};
template<>
struct fex_gen_config<vkCmdSetShadingRateImageEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetRepresentativeFragmentTestEnableNV> {};
template<>
struct fex_gen_config<vkCmdSetCoverageReductionModeNV> {};
template<>
struct fex_gen_config<vkCreateTensorARM> {};
#endif
template<>
struct fex_gen_config<vkDestroyTensorARM> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCreateTensorViewARM> {};
#endif
template<>
struct fex_gen_config<vkDestroyTensorViewARM> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetTensorMemoryRequirementsARM> {};
template<>
struct fex_gen_config<vkBindTensorMemoryARM> {};
template<>
struct fex_gen_config<vkGetDeviceTensorMemoryRequirementsARM> {};
template<>
struct fex_gen_config<vkCmdCopyTensorARM> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceExternalTensorPropertiesARM> {};
template<>
struct fex_gen_config<vkGetTensorOpaqueCaptureDescriptorDataARM> {};
template<>
struct fex_gen_config<vkGetTensorViewOpaqueCaptureDescriptorDataARM> {};
template<>
struct fex_gen_config<vkGetShaderModuleIdentifierEXT> {};
template<>
struct fex_gen_config<vkGetShaderModuleCreateInfoIdentifierEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceOpticalFlowImageFormatsNV> {};
template<>
struct fex_gen_config<vkCreateOpticalFlowSessionNV> {};
template<>
struct fex_gen_config<vkDestroyOpticalFlowSessionNV> {};
template<>
struct fex_gen_config<vkBindOpticalFlowSessionImageNV> {};
template<>
struct fex_gen_config<vkCmdOpticalFlowExecuteNV> {};
template<>
struct fex_gen_config<vkAntiLagUpdateAMD> {};
template<>
struct fex_gen_config<vkCreateShadersEXT> {};
template<>
struct fex_gen_config<vkDestroyShaderEXT> {};
template<>
struct fex_gen_config<vkGetShaderBinaryDataEXT> {};
template<>
struct fex_gen_config<vkCmdBindShadersEXT> {};
template<>
struct fex_gen_config<vkCmdSetDepthClampRangeEXT> {};
template<>
struct fex_gen_config<vkGetFramebufferTilePropertiesQCOM> {};
template<>
struct fex_gen_config<vkGetDynamicRenderingTilePropertiesQCOM> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCooperativeVectorPropertiesNV> {};
template<>
struct fex_gen_config<vkConvertCooperativeVectorMatrixNV> {};
template<>
struct fex_gen_config<vkCmdConvertCooperativeVectorMatrixNV> {};
template<>
struct fex_gen_config<vkSetLatencySleepModeNV> {};
template<>
struct fex_gen_config<vkLatencySleepNV> {};
template<>
struct fex_gen_config<vkSetLatencyMarkerNV> {};
template<>
struct fex_gen_config<vkGetLatencyTimingsNV> {};
template<>
struct fex_gen_config<vkQueueNotifyOutOfBandNV> {};
template<>
struct fex_gen_config<vkCreateDataGraphPipelinesARM> {};
template<>
struct fex_gen_config<vkCreateDataGraphPipelineSessionARM> {};
template<>
struct fex_gen_config<vkGetDataGraphPipelineSessionBindPointRequirementsARM> {};
template<>
struct fex_gen_config<vkGetDataGraphPipelineSessionMemoryRequirementsARM> {};
template<>
struct fex_gen_config<vkBindDataGraphPipelineSessionMemoryARM> {};
#endif
template<>
struct fex_gen_config<vkDestroyDataGraphPipelineSessionARM> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdDispatchDataGraphARM> {};
template<>
struct fex_gen_config<vkGetDataGraphPipelineAvailablePropertiesARM> {};
template<>
struct fex_gen_config<vkGetDataGraphPipelinePropertiesARM> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM> {};
#endif
template<>
struct fex_gen_config<vkCmdSetAttachmentFeedbackLoopEnableEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCmdBindTileMemoryQCOM> {};
template<>
struct fex_gen_config<vkCmdDecompressMemoryEXT> {};
#endif
template<>
struct fex_gen_config<vkCmdDecompressMemoryIndirectCountEXT> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkCreateExternalComputeQueueNV> {};
#endif
template<>
struct fex_gen_config<vkDestroyExternalComputeQueueNV> {};
#ifndef IS_32BIT_THUNK
template<>
struct fex_gen_config<vkGetExternalComputeQueueDataNV> {};
template<>
struct fex_gen_config<vkGetClusterAccelerationStructureBuildSizesNV> {};
template<>
struct fex_gen_config<vkCmdBuildClusterAccelerationStructureIndirectNV> {};
template<>
struct fex_gen_config<vkGetPartitionedAccelerationStructuresBuildSizesNV> {};
template<>
struct fex_gen_config<vkCmdBuildPartitionedAccelerationStructuresNV> {};
template<>
struct fex_gen_config<vkGetGeneratedCommandsMemoryRequirementsEXT> {};
template<>
struct fex_gen_config<vkCmdPreprocessGeneratedCommandsEXT> {};
template<>
struct fex_gen_config<vkCmdExecuteGeneratedCommandsEXT> {};
template<>
struct fex_gen_config<vkCreateIndirectCommandsLayoutEXT> {};
template<>
struct fex_gen_config<vkDestroyIndirectCommandsLayoutEXT> {};
template<>
struct fex_gen_config<vkCreateIndirectExecutionSetEXT> {};
template<>
struct fex_gen_config<vkDestroyIndirectExecutionSetEXT> {};
template<>
struct fex_gen_config<vkUpdateIndirectExecutionSetPipelineEXT> {};
template<>
struct fex_gen_config<vkUpdateIndirectExecutionSetShaderEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV> {};
template<>
struct fex_gen_config<vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM> {};
template<>
struct fex_gen_config<vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM> {};
template<>
struct fex_gen_config<vkCreateShaderInstrumentationARM> {};
template<>
struct fex_gen_config<vkDestroyShaderInstrumentationARM> {};
template<>
struct fex_gen_config<vkCmdBeginShaderInstrumentationARM> {};
template<>
struct fex_gen_config<vkCmdEndShaderInstrumentationARM> {};
template<>
struct fex_gen_config<vkGetShaderInstrumentationValuesARM> {};
template<>
struct fex_gen_config<vkClearShaderInstrumentationMetricsARM> {};
template<>
struct fex_gen_config<vkCmdEndRendering2EXT> {};
template<>
struct fex_gen_config<vkCmdBeginCustomResolveEXT> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM> {};
template<>
struct fex_gen_config<vkCmdSetComputeOccupancyPriorityNV> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceCooperativeMatrixProperties2EXT> {};
template<>
struct fex_gen_config<vkCmdSetPrimitiveRestartIndexEXT> {};
template<>
struct fex_gen_config<vkCreateAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkDestroyAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkCmdBuildAccelerationStructuresKHR> {};
template<>
struct fex_gen_config<vkCmdBuildAccelerationStructuresIndirectKHR> {};
template<>
struct fex_gen_config<vkBuildAccelerationStructuresKHR> {};
template<>
struct fex_gen_config<vkCopyAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkCopyAccelerationStructureToMemoryKHR> {};
template<>
struct fex_gen_config<vkCopyMemoryToAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkWriteAccelerationStructuresPropertiesKHR> {};
template<>
struct fex_gen_param<vkWriteAccelerationStructuresPropertiesKHR, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdCopyAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkCmdCopyAccelerationStructureToMemoryKHR> {};
template<>
struct fex_gen_config<vkCmdCopyMemoryToAccelerationStructureKHR> {};
template<>
struct fex_gen_config<vkGetAccelerationStructureDeviceAddressKHR> {};
template<>
struct fex_gen_config<vkCmdWriteAccelerationStructuresPropertiesKHR> {};
template<>
struct fex_gen_config<vkGetDeviceAccelerationStructureCompatibilityKHR> {};
template<>
struct fex_gen_config<vkGetAccelerationStructureBuildSizesKHR> {};
template<>
struct fex_gen_config<vkCmdTraceRaysKHR> {};
template<>
struct fex_gen_config<vkCreateRayTracingPipelinesKHR> {};
template<>
struct fex_gen_config<vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> {};
template<>
struct fex_gen_param<vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, 5, void*> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_config<vkCmdTraceRaysIndirectKHR> {};
template<>
struct fex_gen_config<vkGetRayTracingShaderGroupStackSizeKHR> {};
template<>
struct fex_gen_config<vkCmdSetRayTracingPipelineStackSizeKHR> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksEXT> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirectEXT> {};
template<>
struct fex_gen_config<vkCmdDrawMeshTasksIndirectCountEXT> {};
#endif
// vulkan_xlib_xrandr.h
template<>
struct fex_gen_config<vkAcquireXlibDisplayEXT> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkAcquireXlibDisplayEXT, 1, Display*> : fexgen::ptr_passthrough {};
template<>
struct fex_gen_config<vkGetRandROutputDisplayEXT> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkGetRandROutputDisplayEXT, 1, Display*> : fexgen::ptr_passthrough {};
// vulkan_wayland.h
template<>
struct fex_gen_config<vkCreateWaylandSurfaceKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceWaylandPresentationSupportKHR> {};
// vulkan_xcb.h
template<>
struct fex_gen_config<vkCreateXcbSurfaceKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceXcbPresentationSupportKHR> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkGetPhysicalDeviceXcbPresentationSupportKHR, 2, xcb_connection_t*> : fexgen::ptr_passthrough {};
// vulkan_xlib.h
template<>
struct fex_gen_config<vkCreateXlibSurfaceKHR> {};
template<>
struct fex_gen_config<vkGetPhysicalDeviceXlibPresentationSupportKHR> : fexgen::custom_host_impl {};
template<>
struct fex_gen_param<vkGetPhysicalDeviceXlibPresentationSupportKHR, 2, Display*> : fexgen::ptr_passthrough {};
} // namespace internal