Implicit surface rendering via ray tracing
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

975 lines
59 KiB

/*
* Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-FileCopyrightText: Copyright (c) 2018-2021 NVIDIA CORPORATION
* SPDX-License-Identifier: Apache-2.0
*/
//////////////////////////////////////////////////////////////////////////
/**
\fn nvvk::make
Contains templated `nvvk::make<T>` function that is
auto-generated by `structs.lua`. The function provide default
structs for the Vulkan C api by initializing the `VkStructureType sType`
field (also for nested structs) and clearing the rest to zero.
\code{.cpp}
auto compCreateInfo = nvvk::make<VkComputePipelineCreateInfo>;
\endcode
*/
/**
\fn nvvk::clear
Contains templated `nvvk::clear<T>` function
auto-generated by `structs.lua`.
*/
#pragma once
namespace nvvk {
template <class T> T make(){ return T(); }
template <class T> void clear(T& ref){ ref = make<T>(); }
template<> inline VkApplicationInfo make<VkApplicationInfo>(){
return VkApplicationInfo{VK_STRUCTURE_TYPE_APPLICATION_INFO};
}
template<> inline VkDeviceQueueCreateInfo make<VkDeviceQueueCreateInfo>(){
return VkDeviceQueueCreateInfo{VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO};
}
template<> inline VkDeviceCreateInfo make<VkDeviceCreateInfo>(){
return VkDeviceCreateInfo{VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO};
}
template<> inline VkInstanceCreateInfo make<VkInstanceCreateInfo>(){
return VkInstanceCreateInfo{VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO};
}
template<> inline VkMemoryAllocateInfo make<VkMemoryAllocateInfo>(){
return VkMemoryAllocateInfo{VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO};
}
template<> inline VkMappedMemoryRange make<VkMappedMemoryRange>(){
return VkMappedMemoryRange{VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE};
}
template<> inline VkWriteDescriptorSet make<VkWriteDescriptorSet>(){
return VkWriteDescriptorSet{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET};
}
template<> inline VkCopyDescriptorSet make<VkCopyDescriptorSet>(){
return VkCopyDescriptorSet{VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET};
}
template<> inline VkBufferCreateInfo make<VkBufferCreateInfo>(){
return VkBufferCreateInfo{VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO};
}
template<> inline VkBufferViewCreateInfo make<VkBufferViewCreateInfo>(){
return VkBufferViewCreateInfo{VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO};
}
template<> inline VkMemoryBarrier make<VkMemoryBarrier>(){
return VkMemoryBarrier{VK_STRUCTURE_TYPE_MEMORY_BARRIER};
}
template<> inline VkBufferMemoryBarrier make<VkBufferMemoryBarrier>(){
return VkBufferMemoryBarrier{VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER};
}
template<> inline VkImageMemoryBarrier make<VkImageMemoryBarrier>(){
return VkImageMemoryBarrier{VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER};
}
template<> inline VkImageCreateInfo make<VkImageCreateInfo>(){
return VkImageCreateInfo{VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO};
}
template<> inline VkImageViewCreateInfo make<VkImageViewCreateInfo>(){
return VkImageViewCreateInfo{VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO};
}
template<> inline VkBindSparseInfo make<VkBindSparseInfo>(){
return VkBindSparseInfo{VK_STRUCTURE_TYPE_BIND_SPARSE_INFO};
}
template<> inline VkShaderModuleCreateInfo make<VkShaderModuleCreateInfo>(){
return VkShaderModuleCreateInfo{VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO};
}
template<> inline VkDescriptorSetLayoutCreateInfo make<VkDescriptorSetLayoutCreateInfo>(){
return VkDescriptorSetLayoutCreateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO};
}
template<> inline VkDescriptorPoolCreateInfo make<VkDescriptorPoolCreateInfo>(){
return VkDescriptorPoolCreateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO};
}
template<> inline VkDescriptorSetAllocateInfo make<VkDescriptorSetAllocateInfo>(){
return VkDescriptorSetAllocateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO};
}
template<> inline VkPipelineShaderStageCreateInfo make<VkPipelineShaderStageCreateInfo>(){
return VkPipelineShaderStageCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO};
}
template<> inline VkComputePipelineCreateInfo make<VkComputePipelineCreateInfo>(){
VkComputePipelineCreateInfo ret = {VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO};
ret.stage = {VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO};
return ret;
}
template<> inline VkPipelineVertexInputStateCreateInfo make<VkPipelineVertexInputStateCreateInfo>(){
return VkPipelineVertexInputStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO};
}
template<> inline VkPipelineInputAssemblyStateCreateInfo make<VkPipelineInputAssemblyStateCreateInfo>(){
return VkPipelineInputAssemblyStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO};
}
template<> inline VkPipelineTessellationStateCreateInfo make<VkPipelineTessellationStateCreateInfo>(){
return VkPipelineTessellationStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO};
}
template<> inline VkPipelineViewportStateCreateInfo make<VkPipelineViewportStateCreateInfo>(){
return VkPipelineViewportStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO};
}
template<> inline VkPipelineRasterizationStateCreateInfo make<VkPipelineRasterizationStateCreateInfo>(){
return VkPipelineRasterizationStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO};
}
template<> inline VkPipelineMultisampleStateCreateInfo make<VkPipelineMultisampleStateCreateInfo>(){
return VkPipelineMultisampleStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO};
}
template<> inline VkPipelineColorBlendStateCreateInfo make<VkPipelineColorBlendStateCreateInfo>(){
return VkPipelineColorBlendStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO};
}
template<> inline VkPipelineDynamicStateCreateInfo make<VkPipelineDynamicStateCreateInfo>(){
return VkPipelineDynamicStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO};
}
template<> inline VkPipelineDepthStencilStateCreateInfo make<VkPipelineDepthStencilStateCreateInfo>(){
return VkPipelineDepthStencilStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO};
}
template<> inline VkGraphicsPipelineCreateInfo make<VkGraphicsPipelineCreateInfo>(){
return VkGraphicsPipelineCreateInfo{VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO};
}
template<> inline VkPipelineCacheCreateInfo make<VkPipelineCacheCreateInfo>(){
return VkPipelineCacheCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO};
}
template<> inline VkPipelineLayoutCreateInfo make<VkPipelineLayoutCreateInfo>(){
return VkPipelineLayoutCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO};
}
template<> inline VkSamplerCreateInfo make<VkSamplerCreateInfo>(){
return VkSamplerCreateInfo{VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO};
}
template<> inline VkCommandPoolCreateInfo make<VkCommandPoolCreateInfo>(){
return VkCommandPoolCreateInfo{VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO};
}
template<> inline VkCommandBufferAllocateInfo make<VkCommandBufferAllocateInfo>(){
return VkCommandBufferAllocateInfo{VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO};
}
template<> inline VkCommandBufferInheritanceInfo make<VkCommandBufferInheritanceInfo>(){
return VkCommandBufferInheritanceInfo{VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO};
}
template<> inline VkCommandBufferBeginInfo make<VkCommandBufferBeginInfo>(){
return VkCommandBufferBeginInfo{VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO};
}
template<> inline VkRenderPassBeginInfo make<VkRenderPassBeginInfo>(){
return VkRenderPassBeginInfo{VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO};
}
template<> inline VkRenderPassCreateInfo make<VkRenderPassCreateInfo>(){
return VkRenderPassCreateInfo{VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO};
}
template<> inline VkEventCreateInfo make<VkEventCreateInfo>(){
return VkEventCreateInfo{VK_STRUCTURE_TYPE_EVENT_CREATE_INFO};
}
template<> inline VkFenceCreateInfo make<VkFenceCreateInfo>(){
return VkFenceCreateInfo{VK_STRUCTURE_TYPE_FENCE_CREATE_INFO};
}
template<> inline VkSemaphoreCreateInfo make<VkSemaphoreCreateInfo>(){
return VkSemaphoreCreateInfo{VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO};
}
template<> inline VkQueryPoolCreateInfo make<VkQueryPoolCreateInfo>(){
return VkQueryPoolCreateInfo{VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO};
}
template<> inline VkFramebufferCreateInfo make<VkFramebufferCreateInfo>(){
return VkFramebufferCreateInfo{VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO};
}
template<> inline VkSubmitInfo make<VkSubmitInfo>(){
return VkSubmitInfo{VK_STRUCTURE_TYPE_SUBMIT_INFO};
}
template<> inline VkPhysicalDeviceFeatures2 make<VkPhysicalDeviceFeatures2>(){
return VkPhysicalDeviceFeatures2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2};
}
template<> inline VkPhysicalDeviceProperties2 make<VkPhysicalDeviceProperties2>(){
return VkPhysicalDeviceProperties2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2};
}
template<> inline VkFormatProperties2 make<VkFormatProperties2>(){
return VkFormatProperties2{VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2};
}
template<> inline VkImageFormatProperties2 make<VkImageFormatProperties2>(){
return VkImageFormatProperties2{VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2};
}
template<> inline VkPhysicalDeviceImageFormatInfo2 make<VkPhysicalDeviceImageFormatInfo2>(){
return VkPhysicalDeviceImageFormatInfo2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2};
}
template<> inline VkQueueFamilyProperties2 make<VkQueueFamilyProperties2>(){
return VkQueueFamilyProperties2{VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2};
}
template<> inline VkPhysicalDeviceMemoryProperties2 make<VkPhysicalDeviceMemoryProperties2>(){
return VkPhysicalDeviceMemoryProperties2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2};
}
template<> inline VkSparseImageFormatProperties2 make<VkSparseImageFormatProperties2>(){
return VkSparseImageFormatProperties2{VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2};
}
template<> inline VkPhysicalDeviceSparseImageFormatInfo2 make<VkPhysicalDeviceSparseImageFormatInfo2>(){
return VkPhysicalDeviceSparseImageFormatInfo2{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2};
}
template<> inline VkPhysicalDeviceDriverProperties make<VkPhysicalDeviceDriverProperties>(){
return VkPhysicalDeviceDriverProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES};
}
template<> inline VkPhysicalDeviceVariablePointersFeatures make<VkPhysicalDeviceVariablePointersFeatures>(){
return VkPhysicalDeviceVariablePointersFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES};
}
template<> inline VkPhysicalDeviceExternalImageFormatInfo make<VkPhysicalDeviceExternalImageFormatInfo>(){
return VkPhysicalDeviceExternalImageFormatInfo{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO};
}
template<> inline VkExternalImageFormatProperties make<VkExternalImageFormatProperties>(){
return VkExternalImageFormatProperties{VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES};
}
template<> inline VkPhysicalDeviceExternalBufferInfo make<VkPhysicalDeviceExternalBufferInfo>(){
return VkPhysicalDeviceExternalBufferInfo{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO};
}
template<> inline VkExternalBufferProperties make<VkExternalBufferProperties>(){
return VkExternalBufferProperties{VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES};
}
template<> inline VkPhysicalDeviceIDProperties make<VkPhysicalDeviceIDProperties>(){
return VkPhysicalDeviceIDProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES};
}
template<> inline VkExternalMemoryImageCreateInfo make<VkExternalMemoryImageCreateInfo>(){
return VkExternalMemoryImageCreateInfo{VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO};
}
template<> inline VkExternalMemoryBufferCreateInfo make<VkExternalMemoryBufferCreateInfo>(){
return VkExternalMemoryBufferCreateInfo{VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO};
}
template<> inline VkExportMemoryAllocateInfo make<VkExportMemoryAllocateInfo>(){
return VkExportMemoryAllocateInfo{VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO};
}
template<> inline VkPhysicalDeviceExternalSemaphoreInfo make<VkPhysicalDeviceExternalSemaphoreInfo>(){
return VkPhysicalDeviceExternalSemaphoreInfo{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO};
}
template<> inline VkExternalSemaphoreProperties make<VkExternalSemaphoreProperties>(){
return VkExternalSemaphoreProperties{VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES};
}
template<> inline VkExportSemaphoreCreateInfo make<VkExportSemaphoreCreateInfo>(){
return VkExportSemaphoreCreateInfo{VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO};
}
template<> inline VkPhysicalDeviceExternalFenceInfo make<VkPhysicalDeviceExternalFenceInfo>(){
return VkPhysicalDeviceExternalFenceInfo{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO};
}
template<> inline VkExternalFenceProperties make<VkExternalFenceProperties>(){
return VkExternalFenceProperties{VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES};
}
template<> inline VkExportFenceCreateInfo make<VkExportFenceCreateInfo>(){
return VkExportFenceCreateInfo{VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO};
}
template<> inline VkPhysicalDeviceMultiviewFeatures make<VkPhysicalDeviceMultiviewFeatures>(){
return VkPhysicalDeviceMultiviewFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES};
}
template<> inline VkPhysicalDeviceMultiviewProperties make<VkPhysicalDeviceMultiviewProperties>(){
return VkPhysicalDeviceMultiviewProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES};
}
template<> inline VkRenderPassMultiviewCreateInfo make<VkRenderPassMultiviewCreateInfo>(){
return VkRenderPassMultiviewCreateInfo{VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO};
}
template<> inline VkPhysicalDeviceGroupProperties make<VkPhysicalDeviceGroupProperties>(){
return VkPhysicalDeviceGroupProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES};
}
template<> inline VkMemoryAllocateFlagsInfo make<VkMemoryAllocateFlagsInfo>(){
return VkMemoryAllocateFlagsInfo{VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO};
}
template<> inline VkBindBufferMemoryInfo make<VkBindBufferMemoryInfo>(){
return VkBindBufferMemoryInfo{VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO};
}
template<> inline VkBindBufferMemoryDeviceGroupInfo make<VkBindBufferMemoryDeviceGroupInfo>(){
return VkBindBufferMemoryDeviceGroupInfo{VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO};
}
template<> inline VkBindImageMemoryInfo make<VkBindImageMemoryInfo>(){
return VkBindImageMemoryInfo{VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO};
}
template<> inline VkBindImageMemoryDeviceGroupInfo make<VkBindImageMemoryDeviceGroupInfo>(){
return VkBindImageMemoryDeviceGroupInfo{VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO};
}
template<> inline VkDeviceGroupRenderPassBeginInfo make<VkDeviceGroupRenderPassBeginInfo>(){
return VkDeviceGroupRenderPassBeginInfo{VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO};
}
template<> inline VkDeviceGroupCommandBufferBeginInfo make<VkDeviceGroupCommandBufferBeginInfo>(){
return VkDeviceGroupCommandBufferBeginInfo{VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO};
}
template<> inline VkDeviceGroupSubmitInfo make<VkDeviceGroupSubmitInfo>(){
return VkDeviceGroupSubmitInfo{VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO};
}
template<> inline VkDeviceGroupBindSparseInfo make<VkDeviceGroupBindSparseInfo>(){
return VkDeviceGroupBindSparseInfo{VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO};
}
template<> inline VkDeviceGroupDeviceCreateInfo make<VkDeviceGroupDeviceCreateInfo>(){
return VkDeviceGroupDeviceCreateInfo{VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO};
}
template<> inline VkDescriptorUpdateTemplateCreateInfo make<VkDescriptorUpdateTemplateCreateInfo>(){
return VkDescriptorUpdateTemplateCreateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO};
}
template<> inline VkRenderPassInputAttachmentAspectCreateInfo make<VkRenderPassInputAttachmentAspectCreateInfo>(){
return VkRenderPassInputAttachmentAspectCreateInfo{VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO};
}
template<> inline VkPhysicalDevice16BitStorageFeatures make<VkPhysicalDevice16BitStorageFeatures>(){
return VkPhysicalDevice16BitStorageFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES};
}
template<> inline VkPhysicalDeviceSubgroupProperties make<VkPhysicalDeviceSubgroupProperties>(){
return VkPhysicalDeviceSubgroupProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES};
}
template<> inline VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures make<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(){
return VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES};
}
template<> inline VkBufferMemoryRequirementsInfo2 make<VkBufferMemoryRequirementsInfo2>(){
return VkBufferMemoryRequirementsInfo2{VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2};
}
template<> inline VkImageMemoryRequirementsInfo2 make<VkImageMemoryRequirementsInfo2>(){
return VkImageMemoryRequirementsInfo2{VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2};
}
template<> inline VkImageSparseMemoryRequirementsInfo2 make<VkImageSparseMemoryRequirementsInfo2>(){
return VkImageSparseMemoryRequirementsInfo2{VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2};
}
template<> inline VkMemoryRequirements2 make<VkMemoryRequirements2>(){
return VkMemoryRequirements2{VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2};
}
template<> inline VkSparseImageMemoryRequirements2 make<VkSparseImageMemoryRequirements2>(){
return VkSparseImageMemoryRequirements2{VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2};
}
template<> inline VkPhysicalDevicePointClippingProperties make<VkPhysicalDevicePointClippingProperties>(){
return VkPhysicalDevicePointClippingProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES};
}
template<> inline VkMemoryDedicatedRequirements make<VkMemoryDedicatedRequirements>(){
return VkMemoryDedicatedRequirements{VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS};
}
template<> inline VkMemoryDedicatedAllocateInfo make<VkMemoryDedicatedAllocateInfo>(){
return VkMemoryDedicatedAllocateInfo{VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO};
}
template<> inline VkImageViewUsageCreateInfo make<VkImageViewUsageCreateInfo>(){
return VkImageViewUsageCreateInfo{VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO};
}
template<> inline VkPipelineTessellationDomainOriginStateCreateInfo make<VkPipelineTessellationDomainOriginStateCreateInfo>(){
return VkPipelineTessellationDomainOriginStateCreateInfo{VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO};
}
template<> inline VkSamplerYcbcrConversionInfo make<VkSamplerYcbcrConversionInfo>(){
return VkSamplerYcbcrConversionInfo{VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO};
}
template<> inline VkSamplerYcbcrConversionCreateInfo make<VkSamplerYcbcrConversionCreateInfo>(){
return VkSamplerYcbcrConversionCreateInfo{VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO};
}
template<> inline VkBindImagePlaneMemoryInfo make<VkBindImagePlaneMemoryInfo>(){
return VkBindImagePlaneMemoryInfo{VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO};
}
template<> inline VkImagePlaneMemoryRequirementsInfo make<VkImagePlaneMemoryRequirementsInfo>(){
return VkImagePlaneMemoryRequirementsInfo{VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO};
}
template<> inline VkPhysicalDeviceSamplerYcbcrConversionFeatures make<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(){
return VkPhysicalDeviceSamplerYcbcrConversionFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES};
}
template<> inline VkSamplerYcbcrConversionImageFormatProperties make<VkSamplerYcbcrConversionImageFormatProperties>(){
return VkSamplerYcbcrConversionImageFormatProperties{VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES};
}
template<> inline VkProtectedSubmitInfo make<VkProtectedSubmitInfo>(){
return VkProtectedSubmitInfo{VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO};
}
template<> inline VkPhysicalDeviceProtectedMemoryFeatures make<VkPhysicalDeviceProtectedMemoryFeatures>(){
return VkPhysicalDeviceProtectedMemoryFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES};
}
template<> inline VkPhysicalDeviceProtectedMemoryProperties make<VkPhysicalDeviceProtectedMemoryProperties>(){
return VkPhysicalDeviceProtectedMemoryProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES};
}
template<> inline VkDeviceQueueInfo2 make<VkDeviceQueueInfo2>(){
return VkDeviceQueueInfo2{VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2};
}
template<> inline VkPhysicalDeviceSamplerFilterMinmaxProperties make<VkPhysicalDeviceSamplerFilterMinmaxProperties>(){
return VkPhysicalDeviceSamplerFilterMinmaxProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES};
}
template<> inline VkSamplerReductionModeCreateInfo make<VkSamplerReductionModeCreateInfo>(){
return VkSamplerReductionModeCreateInfo{VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO};
}
template<> inline VkImageFormatListCreateInfo make<VkImageFormatListCreateInfo>(){
return VkImageFormatListCreateInfo{VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO};
}
template<> inline VkPhysicalDeviceMaintenance3Properties make<VkPhysicalDeviceMaintenance3Properties>(){
return VkPhysicalDeviceMaintenance3Properties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES};
}
template<> inline VkDescriptorSetLayoutSupport make<VkDescriptorSetLayoutSupport>(){
return VkDescriptorSetLayoutSupport{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT};
}
template<> inline VkPhysicalDeviceShaderDrawParametersFeatures make<VkPhysicalDeviceShaderDrawParametersFeatures>(){
return VkPhysicalDeviceShaderDrawParametersFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES};
}
template<> inline VkPhysicalDeviceShaderFloat16Int8Features make<VkPhysicalDeviceShaderFloat16Int8Features>(){
return VkPhysicalDeviceShaderFloat16Int8Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES};
}
template<> inline VkPhysicalDeviceFloatControlsProperties make<VkPhysicalDeviceFloatControlsProperties>(){
return VkPhysicalDeviceFloatControlsProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES};
}
template<> inline VkPhysicalDeviceHostQueryResetFeatures make<VkPhysicalDeviceHostQueryResetFeatures>(){
return VkPhysicalDeviceHostQueryResetFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES};
}
template<> inline VkPhysicalDeviceDescriptorIndexingFeatures make<VkPhysicalDeviceDescriptorIndexingFeatures>(){
return VkPhysicalDeviceDescriptorIndexingFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES};
}
template<> inline VkPhysicalDeviceDescriptorIndexingProperties make<VkPhysicalDeviceDescriptorIndexingProperties>(){
return VkPhysicalDeviceDescriptorIndexingProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES};
}
template<> inline VkDescriptorSetLayoutBindingFlagsCreateInfo make<VkDescriptorSetLayoutBindingFlagsCreateInfo>(){
return VkDescriptorSetLayoutBindingFlagsCreateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO};
}
template<> inline VkDescriptorSetVariableDescriptorCountAllocateInfo make<VkDescriptorSetVariableDescriptorCountAllocateInfo>(){
return VkDescriptorSetVariableDescriptorCountAllocateInfo{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO};
}
template<> inline VkDescriptorSetVariableDescriptorCountLayoutSupport make<VkDescriptorSetVariableDescriptorCountLayoutSupport>(){
return VkDescriptorSetVariableDescriptorCountLayoutSupport{VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT};
}
template<> inline VkAttachmentDescription2 make<VkAttachmentDescription2>(){
return VkAttachmentDescription2{VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2};
}
template<> inline VkAttachmentReference2 make<VkAttachmentReference2>(){
return VkAttachmentReference2{VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2};
}
template<> inline VkSubpassDescription2 make<VkSubpassDescription2>(){
return VkSubpassDescription2{VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2};
}
template<> inline VkSubpassDependency2 make<VkSubpassDependency2>(){
return VkSubpassDependency2{VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2};
}
template<> inline VkRenderPassCreateInfo2 make<VkRenderPassCreateInfo2>(){
return VkRenderPassCreateInfo2{VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2};
}
template<> inline VkSubpassBeginInfo make<VkSubpassBeginInfo>(){
return VkSubpassBeginInfo{VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO};
}
template<> inline VkSubpassEndInfo make<VkSubpassEndInfo>(){
return VkSubpassEndInfo{VK_STRUCTURE_TYPE_SUBPASS_END_INFO};
}
template<> inline VkPhysicalDeviceTimelineSemaphoreFeatures make<VkPhysicalDeviceTimelineSemaphoreFeatures>(){
return VkPhysicalDeviceTimelineSemaphoreFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES};
}
template<> inline VkPhysicalDeviceTimelineSemaphoreProperties make<VkPhysicalDeviceTimelineSemaphoreProperties>(){
return VkPhysicalDeviceTimelineSemaphoreProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES};
}
template<> inline VkSemaphoreTypeCreateInfo make<VkSemaphoreTypeCreateInfo>(){
return VkSemaphoreTypeCreateInfo{VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO};
}
template<> inline VkTimelineSemaphoreSubmitInfo make<VkTimelineSemaphoreSubmitInfo>(){
return VkTimelineSemaphoreSubmitInfo{VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO};
}
template<> inline VkSemaphoreWaitInfo make<VkSemaphoreWaitInfo>(){
return VkSemaphoreWaitInfo{VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO};
}
template<> inline VkSemaphoreSignalInfo make<VkSemaphoreSignalInfo>(){
return VkSemaphoreSignalInfo{VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO};
}
template<> inline VkPhysicalDevice8BitStorageFeatures make<VkPhysicalDevice8BitStorageFeatures>(){
return VkPhysicalDevice8BitStorageFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES};
}
template<> inline VkPhysicalDeviceVulkanMemoryModelFeatures make<VkPhysicalDeviceVulkanMemoryModelFeatures>(){
return VkPhysicalDeviceVulkanMemoryModelFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES};
}
template<> inline VkPhysicalDeviceShaderAtomicInt64Features make<VkPhysicalDeviceShaderAtomicInt64Features>(){
return VkPhysicalDeviceShaderAtomicInt64Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES};
}
template<> inline VkPhysicalDeviceDepthStencilResolveProperties make<VkPhysicalDeviceDepthStencilResolveProperties>(){
return VkPhysicalDeviceDepthStencilResolveProperties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES};
}
template<> inline VkSubpassDescriptionDepthStencilResolve make<VkSubpassDescriptionDepthStencilResolve>(){
return VkSubpassDescriptionDepthStencilResolve{VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE};
}
template<> inline VkImageStencilUsageCreateInfo make<VkImageStencilUsageCreateInfo>(){
return VkImageStencilUsageCreateInfo{VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO};
}
template<> inline VkPhysicalDeviceScalarBlockLayoutFeatures make<VkPhysicalDeviceScalarBlockLayoutFeatures>(){
return VkPhysicalDeviceScalarBlockLayoutFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES};
}
template<> inline VkPhysicalDeviceUniformBufferStandardLayoutFeatures make<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(){
return VkPhysicalDeviceUniformBufferStandardLayoutFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES};
}
template<> inline VkPhysicalDeviceBufferDeviceAddressFeatures make<VkPhysicalDeviceBufferDeviceAddressFeatures>(){
return VkPhysicalDeviceBufferDeviceAddressFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES};
}
template<> inline VkBufferDeviceAddressInfo make<VkBufferDeviceAddressInfo>(){
return VkBufferDeviceAddressInfo{VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO};
}
template<> inline VkBufferOpaqueCaptureAddressCreateInfo make<VkBufferOpaqueCaptureAddressCreateInfo>(){
return VkBufferOpaqueCaptureAddressCreateInfo{VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO};
}
template<> inline VkPhysicalDeviceImagelessFramebufferFeatures make<VkPhysicalDeviceImagelessFramebufferFeatures>(){
return VkPhysicalDeviceImagelessFramebufferFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES};
}
template<> inline VkFramebufferAttachmentsCreateInfo make<VkFramebufferAttachmentsCreateInfo>(){
return VkFramebufferAttachmentsCreateInfo{VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO};
}
template<> inline VkFramebufferAttachmentImageInfo make<VkFramebufferAttachmentImageInfo>(){
return VkFramebufferAttachmentImageInfo{VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO};
}
template<> inline VkRenderPassAttachmentBeginInfo make<VkRenderPassAttachmentBeginInfo>(){
return VkRenderPassAttachmentBeginInfo{VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO};
}
template<> inline VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures make<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(){
return VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES};
}
template<> inline VkAttachmentReferenceStencilLayout make<VkAttachmentReferenceStencilLayout>(){
return VkAttachmentReferenceStencilLayout{VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT};
}
template<> inline VkAttachmentDescriptionStencilLayout make<VkAttachmentDescriptionStencilLayout>(){
return VkAttachmentDescriptionStencilLayout{VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT};
}
template<> inline VkMemoryOpaqueCaptureAddressAllocateInfo make<VkMemoryOpaqueCaptureAddressAllocateInfo>(){
return VkMemoryOpaqueCaptureAddressAllocateInfo{VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO};
}
template<> inline VkDeviceMemoryOpaqueCaptureAddressInfo make<VkDeviceMemoryOpaqueCaptureAddressInfo>(){
return VkDeviceMemoryOpaqueCaptureAddressInfo{VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO};
}
template<> inline VkPhysicalDeviceVulkan11Features make<VkPhysicalDeviceVulkan11Features>(){
return VkPhysicalDeviceVulkan11Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES};
}
template<> inline VkPhysicalDeviceVulkan11Properties make<VkPhysicalDeviceVulkan11Properties>(){
return VkPhysicalDeviceVulkan11Properties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES};
}
template<> inline VkPhysicalDeviceVulkan12Features make<VkPhysicalDeviceVulkan12Features>(){
return VkPhysicalDeviceVulkan12Features{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES};
}
template<> inline VkPhysicalDeviceVulkan12Properties make<VkPhysicalDeviceVulkan12Properties>(){
return VkPhysicalDeviceVulkan12Properties{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES};
}
#if VK_KHR_swapchain
template<> inline VkSwapchainCreateInfoKHR make<VkSwapchainCreateInfoKHR>(){
return VkSwapchainCreateInfoKHR{VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR};
}
template<> inline VkPresentInfoKHR make<VkPresentInfoKHR>(){
return VkPresentInfoKHR{VK_STRUCTURE_TYPE_PRESENT_INFO_KHR};
}
template<> inline VkImageSwapchainCreateInfoKHR make<VkImageSwapchainCreateInfoKHR>(){
return VkImageSwapchainCreateInfoKHR{VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR};
}
template<> inline VkBindImageMemorySwapchainInfoKHR make<VkBindImageMemorySwapchainInfoKHR>(){
return VkBindImageMemorySwapchainInfoKHR{VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR};
}
template<> inline VkAcquireNextImageInfoKHR make<VkAcquireNextImageInfoKHR>(){
return VkAcquireNextImageInfoKHR{VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR};
}
template<> inline VkDeviceGroupPresentCapabilitiesKHR make<VkDeviceGroupPresentCapabilitiesKHR>(){
return VkDeviceGroupPresentCapabilitiesKHR{VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR};
}
template<> inline VkDeviceGroupPresentInfoKHR make<VkDeviceGroupPresentInfoKHR>(){
return VkDeviceGroupPresentInfoKHR{VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR};
}
template<> inline VkDeviceGroupSwapchainCreateInfoKHR make<VkDeviceGroupSwapchainCreateInfoKHR>(){
return VkDeviceGroupSwapchainCreateInfoKHR{VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR};
}
#endif
#if VK_EXT_debug_marker
template<> inline VkDebugMarkerObjectNameInfoEXT make<VkDebugMarkerObjectNameInfoEXT>(){
return VkDebugMarkerObjectNameInfoEXT{VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT};
}
template<> inline VkDebugMarkerObjectTagInfoEXT make<VkDebugMarkerObjectTagInfoEXT>(){
return VkDebugMarkerObjectTagInfoEXT{VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT};
}
template<> inline VkDebugMarkerMarkerInfoEXT make<VkDebugMarkerMarkerInfoEXT>(){
return VkDebugMarkerMarkerInfoEXT{VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT};
}
#endif
#if VK_NV_corner_sampled_image
template<> inline VkPhysicalDeviceCornerSampledImageFeaturesNV make<VkPhysicalDeviceCornerSampledImageFeaturesNV>(){
return VkPhysicalDeviceCornerSampledImageFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV};
}
#endif
#if VK_KHR_external_memory_win32
template<> inline VkImportMemoryWin32HandleInfoKHR make<VkImportMemoryWin32HandleInfoKHR>(){
return VkImportMemoryWin32HandleInfoKHR{VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkExportMemoryWin32HandleInfoKHR make<VkExportMemoryWin32HandleInfoKHR>(){
return VkExportMemoryWin32HandleInfoKHR{VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkMemoryWin32HandlePropertiesKHR make<VkMemoryWin32HandlePropertiesKHR>(){
return VkMemoryWin32HandlePropertiesKHR{VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR};
}
template<> inline VkMemoryGetWin32HandleInfoKHR make<VkMemoryGetWin32HandleInfoKHR>(){
return VkMemoryGetWin32HandleInfoKHR{VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR};
}
#endif
#if VK_KHR_external_memory_fd
template<> inline VkImportMemoryFdInfoKHR make<VkImportMemoryFdInfoKHR>(){
return VkImportMemoryFdInfoKHR{VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR};
}
template<> inline VkMemoryFdPropertiesKHR make<VkMemoryFdPropertiesKHR>(){
return VkMemoryFdPropertiesKHR{VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR};
}
template<> inline VkMemoryGetFdInfoKHR make<VkMemoryGetFdInfoKHR>(){
return VkMemoryGetFdInfoKHR{VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR};
}
#endif
#if VK_KHR_external_semaphore_win32
template<> inline VkImportSemaphoreWin32HandleInfoKHR make<VkImportSemaphoreWin32HandleInfoKHR>(){
return VkImportSemaphoreWin32HandleInfoKHR{VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkExportSemaphoreWin32HandleInfoKHR make<VkExportSemaphoreWin32HandleInfoKHR>(){
return VkExportSemaphoreWin32HandleInfoKHR{VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkD3D12FenceSubmitInfoKHR make<VkD3D12FenceSubmitInfoKHR>(){
return VkD3D12FenceSubmitInfoKHR{VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR};
}
template<> inline VkSemaphoreGetWin32HandleInfoKHR make<VkSemaphoreGetWin32HandleInfoKHR>(){
return VkSemaphoreGetWin32HandleInfoKHR{VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR};
}
#endif
#if VK_KHR_external_semaphore_fd
template<> inline VkImportSemaphoreFdInfoKHR make<VkImportSemaphoreFdInfoKHR>(){
return VkImportSemaphoreFdInfoKHR{VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR};
}
template<> inline VkSemaphoreGetFdInfoKHR make<VkSemaphoreGetFdInfoKHR>(){
return VkSemaphoreGetFdInfoKHR{VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR};
}
#endif
#if VK_KHR_push_descriptor
template<> inline VkPhysicalDevicePushDescriptorPropertiesKHR make<VkPhysicalDevicePushDescriptorPropertiesKHR>(){
return VkPhysicalDevicePushDescriptorPropertiesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR};
}
#endif
#if VK_NV_viewport_swizzle
template<> inline VkPipelineViewportSwizzleStateCreateInfoNV make<VkPipelineViewportSwizzleStateCreateInfoNV>(){
return VkPipelineViewportSwizzleStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV};
}
#endif
#if VK_EXT_conservative_rasterization
template<> inline VkPhysicalDeviceConservativeRasterizationPropertiesEXT make<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(){
return VkPhysicalDeviceConservativeRasterizationPropertiesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT};
}
template<> inline VkPipelineRasterizationConservativeStateCreateInfoEXT make<VkPipelineRasterizationConservativeStateCreateInfoEXT>(){
return VkPipelineRasterizationConservativeStateCreateInfoEXT{VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT};
}
#endif
#if VK_EXT_depth_clip_enable
template<> inline VkPhysicalDeviceDepthClipEnableFeaturesEXT make<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(){
return VkPhysicalDeviceDepthClipEnableFeaturesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT};
}
template<> inline VkPipelineRasterizationDepthClipStateCreateInfoEXT make<VkPipelineRasterizationDepthClipStateCreateInfoEXT>(){
return VkPipelineRasterizationDepthClipStateCreateInfoEXT{VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT};
}
#endif
#if VK_KHR_external_fence_win32
template<> inline VkImportFenceWin32HandleInfoKHR make<VkImportFenceWin32HandleInfoKHR>(){
return VkImportFenceWin32HandleInfoKHR{VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkExportFenceWin32HandleInfoKHR make<VkExportFenceWin32HandleInfoKHR>(){
return VkExportFenceWin32HandleInfoKHR{VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR};
}
template<> inline VkFenceGetWin32HandleInfoKHR make<VkFenceGetWin32HandleInfoKHR>(){
return VkFenceGetWin32HandleInfoKHR{VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR};
}
#endif
#if VK_EXT_debug_utils
template<> inline VkDebugUtilsLabelEXT make<VkDebugUtilsLabelEXT>(){
return VkDebugUtilsLabelEXT{VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT};
}
template<> inline VkDebugUtilsMessengerCallbackDataEXT make<VkDebugUtilsMessengerCallbackDataEXT>(){
return VkDebugUtilsMessengerCallbackDataEXT{VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT};
}
template<> inline VkDebugUtilsMessengerCreateInfoEXT make<VkDebugUtilsMessengerCreateInfoEXT>(){
return VkDebugUtilsMessengerCreateInfoEXT{VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT};
}
template<> inline VkDebugUtilsObjectNameInfoEXT make<VkDebugUtilsObjectNameInfoEXT>(){
return VkDebugUtilsObjectNameInfoEXT{VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT};
}
template<> inline VkDebugUtilsObjectTagInfoEXT make<VkDebugUtilsObjectTagInfoEXT>(){
return VkDebugUtilsObjectTagInfoEXT{VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT};
}
#endif
#if VK_EXT_sample_locations
template<> inline VkSampleLocationsInfoEXT make<VkSampleLocationsInfoEXT>(){
return VkSampleLocationsInfoEXT{VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT};
}
template<> inline VkRenderPassSampleLocationsBeginInfoEXT make<VkRenderPassSampleLocationsBeginInfoEXT>(){
return VkRenderPassSampleLocationsBeginInfoEXT{VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT};
}
template<> inline VkPipelineSampleLocationsStateCreateInfoEXT make<VkPipelineSampleLocationsStateCreateInfoEXT>(){
VkPipelineSampleLocationsStateCreateInfoEXT ret = {VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT};
ret.sampleLocationsInfo = {VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT};
return ret;
}
template<> inline VkPhysicalDeviceSampleLocationsPropertiesEXT make<VkPhysicalDeviceSampleLocationsPropertiesEXT>(){
return VkPhysicalDeviceSampleLocationsPropertiesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT};
}
template<> inline VkMultisamplePropertiesEXT make<VkMultisamplePropertiesEXT>(){
return VkMultisamplePropertiesEXT{VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT};
}
#endif
#if VK_KHR_acceleration_structure
template<> inline VkAccelerationStructureGeometryTrianglesDataKHR make<VkAccelerationStructureGeometryTrianglesDataKHR>(){
return VkAccelerationStructureGeometryTrianglesDataKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR};
}
template<> inline VkAccelerationStructureBuildGeometryInfoKHR make<VkAccelerationStructureBuildGeometryInfoKHR>(){
return VkAccelerationStructureBuildGeometryInfoKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR};
}
template<> inline VkAccelerationStructureGeometryAabbsDataKHR make<VkAccelerationStructureGeometryAabbsDataKHR>(){
return VkAccelerationStructureGeometryAabbsDataKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR};
}
template<> inline VkAccelerationStructureGeometryInstancesDataKHR make<VkAccelerationStructureGeometryInstancesDataKHR>(){
return VkAccelerationStructureGeometryInstancesDataKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR};
}
template<> inline VkAccelerationStructureGeometryKHR make<VkAccelerationStructureGeometryKHR>(){
return VkAccelerationStructureGeometryKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR};
}
template<> inline VkAccelerationStructureCreateInfoKHR make<VkAccelerationStructureCreateInfoKHR>(){
return VkAccelerationStructureCreateInfoKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR};
}
template<> inline VkWriteDescriptorSetAccelerationStructureKHR make<VkWriteDescriptorSetAccelerationStructureKHR>(){
return VkWriteDescriptorSetAccelerationStructureKHR{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR};
}
template<> inline VkPhysicalDeviceAccelerationStructureFeaturesKHR make<VkPhysicalDeviceAccelerationStructureFeaturesKHR>(){
return VkPhysicalDeviceAccelerationStructureFeaturesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR};
}
template<> inline VkPhysicalDeviceAccelerationStructurePropertiesKHR make<VkPhysicalDeviceAccelerationStructurePropertiesKHR>(){
return VkPhysicalDeviceAccelerationStructurePropertiesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR};
}
template<> inline VkAccelerationStructureDeviceAddressInfoKHR make<VkAccelerationStructureDeviceAddressInfoKHR>(){
return VkAccelerationStructureDeviceAddressInfoKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR};
}
template<> inline VkAccelerationStructureVersionInfoKHR make<VkAccelerationStructureVersionInfoKHR>(){
return VkAccelerationStructureVersionInfoKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR};
}
template<> inline VkCopyAccelerationStructureToMemoryInfoKHR make<VkCopyAccelerationStructureToMemoryInfoKHR>(){
return VkCopyAccelerationStructureToMemoryInfoKHR{VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR};
}
template<> inline VkCopyMemoryToAccelerationStructureInfoKHR make<VkCopyMemoryToAccelerationStructureInfoKHR>(){
return VkCopyMemoryToAccelerationStructureInfoKHR{VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR};
}
template<> inline VkCopyAccelerationStructureInfoKHR make<VkCopyAccelerationStructureInfoKHR>(){
return VkCopyAccelerationStructureInfoKHR{VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR};
}
template<> inline VkAccelerationStructureBuildSizesInfoKHR make<VkAccelerationStructureBuildSizesInfoKHR>(){
return VkAccelerationStructureBuildSizesInfoKHR{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR};
}
#endif
#if VK_KHR_ray_tracing_pipeline
template<> inline VkRayTracingShaderGroupCreateInfoKHR make<VkRayTracingShaderGroupCreateInfoKHR>(){
VkRayTracingShaderGroupCreateInfoKHR ret = {VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR};
ret.generalShader = VK_SHADER_UNUSED_KHR;
ret.closestHitShader = VK_SHADER_UNUSED_KHR;
ret.anyHitShader = VK_SHADER_UNUSED_KHR;
ret.intersectionShader = VK_SHADER_UNUSED_KHR;
return ret;
}
template<> inline VkRayTracingPipelineCreateInfoKHR make<VkRayTracingPipelineCreateInfoKHR>(){
return VkRayTracingPipelineCreateInfoKHR{VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR};
}
template<> inline VkPhysicalDeviceRayTracingPipelineFeaturesKHR make<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>(){
return VkPhysicalDeviceRayTracingPipelineFeaturesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR};
}
template<> inline VkPhysicalDeviceRayTracingPipelinePropertiesKHR make<VkPhysicalDeviceRayTracingPipelinePropertiesKHR>(){
return VkPhysicalDeviceRayTracingPipelinePropertiesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR};
}
template<> inline VkRayTracingPipelineInterfaceCreateInfoKHR make<VkRayTracingPipelineInterfaceCreateInfoKHR>(){
return VkRayTracingPipelineInterfaceCreateInfoKHR{VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR};
}
#endif
#if VK_KHR_ray_query
template<> inline VkPhysicalDeviceRayQueryFeaturesKHR make<VkPhysicalDeviceRayQueryFeaturesKHR>(){
return VkPhysicalDeviceRayQueryFeaturesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR};
}
#endif
#if VK_NV_shading_rate_image
template<> inline VkPipelineViewportShadingRateImageStateCreateInfoNV make<VkPipelineViewportShadingRateImageStateCreateInfoNV>(){
return VkPipelineViewportShadingRateImageStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV};
}
template<> inline VkPhysicalDeviceShadingRateImageFeaturesNV make<VkPhysicalDeviceShadingRateImageFeaturesNV>(){
return VkPhysicalDeviceShadingRateImageFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV};
}
template<> inline VkPhysicalDeviceShadingRateImagePropertiesNV make<VkPhysicalDeviceShadingRateImagePropertiesNV>(){
return VkPhysicalDeviceShadingRateImagePropertiesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV};
}
template<> inline VkPipelineViewportCoarseSampleOrderStateCreateInfoNV make<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV>(){
return VkPipelineViewportCoarseSampleOrderStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV};
}
#endif
#if VK_NV_ray_tracing
template<> inline VkRayTracingShaderGroupCreateInfoNV make<VkRayTracingShaderGroupCreateInfoNV>(){
VkRayTracingShaderGroupCreateInfoNV ret = {VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV};
ret.generalShader = VK_SHADER_UNUSED_NV;
ret.closestHitShader = VK_SHADER_UNUSED_NV;
ret.anyHitShader = VK_SHADER_UNUSED_NV;
ret.intersectionShader = VK_SHADER_UNUSED_NV;
return ret;
}
template<> inline VkRayTracingPipelineCreateInfoNV make<VkRayTracingPipelineCreateInfoNV>(){
return VkRayTracingPipelineCreateInfoNV{VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV};
}
template<> inline VkGeometryTrianglesNV make<VkGeometryTrianglesNV>(){
return VkGeometryTrianglesNV{VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV};
}
template<> inline VkGeometryAABBNV make<VkGeometryAABBNV>(){
return VkGeometryAABBNV{VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV};
}
template<> inline VkGeometryNV make<VkGeometryNV>(){
VkGeometryNV ret = {VK_STRUCTURE_TYPE_GEOMETRY_NV};
ret.geometry.triangles = {VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV};
ret.geometry.aabbs = {VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV};
return ret;
}
template<> inline VkAccelerationStructureInfoNV make<VkAccelerationStructureInfoNV>(){
return VkAccelerationStructureInfoNV{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV};
}
template<> inline VkAccelerationStructureCreateInfoNV make<VkAccelerationStructureCreateInfoNV>(){
VkAccelerationStructureCreateInfoNV ret = {VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV};
ret.info = {VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV};
return ret;
}
template<> inline VkBindAccelerationStructureMemoryInfoNV make<VkBindAccelerationStructureMemoryInfoNV>(){
return VkBindAccelerationStructureMemoryInfoNV{VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV};
}
template<> inline VkWriteDescriptorSetAccelerationStructureNV make<VkWriteDescriptorSetAccelerationStructureNV>(){
return VkWriteDescriptorSetAccelerationStructureNV{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV};
}
template<> inline VkAccelerationStructureMemoryRequirementsInfoNV make<VkAccelerationStructureMemoryRequirementsInfoNV>(){
return VkAccelerationStructureMemoryRequirementsInfoNV{VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV};
}
template<> inline VkPhysicalDeviceRayTracingPropertiesNV make<VkPhysicalDeviceRayTracingPropertiesNV>(){
return VkPhysicalDeviceRayTracingPropertiesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV};
}
#endif
#if VK_NV_representative_fragment_test
template<> inline VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV make<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(){
return VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV};
}
template<> inline VkPipelineRepresentativeFragmentTestStateCreateInfoNV make<VkPipelineRepresentativeFragmentTestStateCreateInfoNV>(){
return VkPipelineRepresentativeFragmentTestStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV};
}
#endif
#if VK_EXT_calibrated_timestamps
template<> inline VkCalibratedTimestampInfoEXT make<VkCalibratedTimestampInfoEXT>(){
return VkCalibratedTimestampInfoEXT{VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT};
}
#endif
#if VK_NV_compute_shader_derivatives
template<> inline VkPhysicalDeviceComputeShaderDerivativesFeaturesNV make<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(){
return VkPhysicalDeviceComputeShaderDerivativesFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV};
}
#endif
#if VK_NV_mesh_shader
template<> inline VkPhysicalDeviceMeshShaderFeaturesNV make<VkPhysicalDeviceMeshShaderFeaturesNV>(){
return VkPhysicalDeviceMeshShaderFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV};
}
template<> inline VkPhysicalDeviceMeshShaderPropertiesNV make<VkPhysicalDeviceMeshShaderPropertiesNV>(){
return VkPhysicalDeviceMeshShaderPropertiesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV};
}
#endif
#if VK_NV_scissor_exclusive
template<> inline VkPipelineViewportExclusiveScissorStateCreateInfoNV make<VkPipelineViewportExclusiveScissorStateCreateInfoNV>(){
return VkPipelineViewportExclusiveScissorStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV};
}
template<> inline VkPhysicalDeviceExclusiveScissorFeaturesNV make<VkPhysicalDeviceExclusiveScissorFeaturesNV>(){
return VkPhysicalDeviceExclusiveScissorFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV};
}
#endif
#if VK_EXT_pci_bus_info
template<> inline VkPhysicalDevicePCIBusInfoPropertiesEXT make<VkPhysicalDevicePCIBusInfoPropertiesEXT>(){
return VkPhysicalDevicePCIBusInfoPropertiesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT};
}
#endif
#if VK_EXT_memory_budget
template<> inline VkPhysicalDeviceMemoryBudgetPropertiesEXT make<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(){
return VkPhysicalDeviceMemoryBudgetPropertiesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT};
}
#endif
#if VK_EXT_memory_priority
template<> inline VkPhysicalDeviceMemoryPriorityFeaturesEXT make<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(){
return VkPhysicalDeviceMemoryPriorityFeaturesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT};
}
template<> inline VkMemoryPriorityAllocateInfoEXT make<VkMemoryPriorityAllocateInfoEXT>(){
return VkMemoryPriorityAllocateInfoEXT{VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT};
}
#endif
#if VK_NV_dedicated_allocation_image_aliasing
template<> inline VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV make<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(){
return VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV};
}
#endif
#if VK_EXT_buffer_device_address
template<> inline VkPhysicalDeviceBufferAddressFeaturesEXT make<VkPhysicalDeviceBufferAddressFeaturesEXT>(){
return VkPhysicalDeviceBufferAddressFeaturesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT};
}
template<> inline VkBufferDeviceAddressCreateInfoEXT make<VkBufferDeviceAddressCreateInfoEXT>(){
return VkBufferDeviceAddressCreateInfoEXT{VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT};
}
#endif
#if VK_EXT_validation_features
template<> inline VkValidationFeaturesEXT make<VkValidationFeaturesEXT>(){
return VkValidationFeaturesEXT{VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT};
}
#endif
#if VK_NV_cooperative_matrix
template<> inline VkCooperativeMatrixPropertiesNV make<VkCooperativeMatrixPropertiesNV>(){
return VkCooperativeMatrixPropertiesNV{VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV};
}
template<> inline VkPhysicalDeviceCooperativeMatrixFeaturesNV make<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(){
return VkPhysicalDeviceCooperativeMatrixFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV};
}
template<> inline VkPhysicalDeviceCooperativeMatrixPropertiesNV make<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(){
return VkPhysicalDeviceCooperativeMatrixPropertiesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV};
}
#endif
#if VK_NV_coverage_reduction_mode
template<> inline VkPhysicalDeviceCoverageReductionModeFeaturesNV make<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(){
return VkPhysicalDeviceCoverageReductionModeFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV};
}
template<> inline VkPipelineCoverageReductionStateCreateInfoNV make<VkPipelineCoverageReductionStateCreateInfoNV>(){
return VkPipelineCoverageReductionStateCreateInfoNV{VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV};
}
template<> inline VkFramebufferMixedSamplesCombinationNV make<VkFramebufferMixedSamplesCombinationNV>(){
return VkFramebufferMixedSamplesCombinationNV{VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV};
}
#endif
#if VK_KHR_pipeline_executable_properties
template<> inline VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR make<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(){
return VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR};
}
template<> inline VkPipelineInfoKHR make<VkPipelineInfoKHR>(){
return VkPipelineInfoKHR{VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR};
}
template<> inline VkPipelineExecutablePropertiesKHR make<VkPipelineExecutablePropertiesKHR>(){
return VkPipelineExecutablePropertiesKHR{VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR};
}
template<> inline VkPipelineExecutableInfoKHR make<VkPipelineExecutableInfoKHR>(){
return VkPipelineExecutableInfoKHR{VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR};
}
template<> inline VkPipelineExecutableStatisticKHR make<VkPipelineExecutableStatisticKHR>(){
return VkPipelineExecutableStatisticKHR{VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR};
}
template<> inline VkPipelineExecutableInternalRepresentationKHR make<VkPipelineExecutableInternalRepresentationKHR>(){
return VkPipelineExecutableInternalRepresentationKHR{VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR};
}
#endif
#if VK_NV_device_generated_commands
template<> inline VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV make<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV>(){
return VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV};
}
template<> inline VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV make<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>(){
return VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV};
}
template<> inline VkGraphicsShaderGroupCreateInfoNV make<VkGraphicsShaderGroupCreateInfoNV>(){
return VkGraphicsShaderGroupCreateInfoNV{VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV};
}
template<> inline VkGraphicsPipelineShaderGroupsCreateInfoNV make<VkGraphicsPipelineShaderGroupsCreateInfoNV>(){
return VkGraphicsPipelineShaderGroupsCreateInfoNV{VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV};
}
template<> inline VkIndirectCommandsLayoutTokenNV make<VkIndirectCommandsLayoutTokenNV>(){
return VkIndirectCommandsLayoutTokenNV{VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV};
}
template<> inline VkIndirectCommandsLayoutCreateInfoNV make<VkIndirectCommandsLayoutCreateInfoNV>(){
return VkIndirectCommandsLayoutCreateInfoNV{VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV};
}
template<> inline VkGeneratedCommandsInfoNV make<VkGeneratedCommandsInfoNV>(){
return VkGeneratedCommandsInfoNV{VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV};
}
template<> inline VkGeneratedCommandsMemoryRequirementsInfoNV make<VkGeneratedCommandsMemoryRequirementsInfoNV>(){
return VkGeneratedCommandsMemoryRequirementsInfoNV{VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV};
}
#endif
#if VK_EXT_texel_buffer_alignment
template<> inline VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT make<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(){
return VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT};
}
template<> inline VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT make<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(){
return VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT};
}
#endif
}