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