/* * 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 */ ////////////////////////////////////////////////////////////////////////// /** @DOC_START ## `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. ```cpp auto compCreateInfo = nvvk::make; ``` ## `nvvk::clear` Contains templated `nvvk::clear` function auto-generated by `structs.lua`. @DOC_END */ #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 } // namespace nvvk