{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures#-}
{-# OPTIONS_GHC -fno-warn-orphans#-}
{-# OPTIONS_HADDOCK not-home#-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE DataKinds                #-}
{-# LANGUAGE FlexibleInstances        #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash                #-}
{-# LANGUAGE PatternSynonyms          #-}
{-# LANGUAGE Strict                   #-}
{-# LANGUAGE TypeFamilies             #-}
{-# LANGUAGE ViewPatterns             #-}
module Graphics.Vulkan.Ext.VK_NV_ray_tracing
       (-- * Vulkan extension: @VK_NV_ray_tracing@
        -- |
        --
        -- supported: @vulkan@
        --
        -- contact: @Eric Werness @ewerness@
        --
        -- author: @NV@
        --
        -- type: @device@
        --
        -- Extension number: @166@
        --
        -- Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_memory_requirements2'.
        --

        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_memory_requirements2'.
        module Graphics.Vulkan.Marshal, VkAabbPositionsNV,
        VkAccelerationStructureCreateInfoNV, VkAccelerationStructureInfoNV,
        VkAccelerationStructureInstanceNV,
        VkAccelerationStructureMemoryRequirementsInfoNV,
        VkAccelerationStructureBuildTypeKHR(..),
        VkAccelerationStructureMemoryRequirementsTypeKHR(..),
        VkAccelerationStructureTypeKHR(..),
        VkAccelerationStructureMemoryRequirementsTypeNV(..),
        VkAccelerationStructureTypeNV(..),
        VkBindAccelerationStructureMemoryInfoNV, AHardwareBuffer(),
        ANativeWindow(), CAMetalLayer(), VkBool32(..), VkDeviceAddress(..),
        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
        VkBuildAccelerationStructureBitmaskKHR(..),
        VkBuildAccelerationStructureFlagBitsKHR(),
        VkBuildAccelerationStructureFlagBitsNV(..),
        VkBuildAccelerationStructureFlagsKHR(),
        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
        VkBuildAccelerationStructureFlagsNV(..),
        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
        VkDebugUtilsMessengerCreateFlagsEXT(..),
        VkDescriptorBindingFlagsEXT(..), VkDescriptorPoolResetFlags(..),
        VkDescriptorUpdateTemplateCreateFlags(..),
        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
        VkDeviceCreateFlags(..), VkDirectFBSurfaceCreateFlagsEXT(..),
        VkDisplayModeCreateFlagsKHR(..),
        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
        VkExternalFenceFeatureFlagsKHR(..),
        VkExternalFenceHandleTypeFlagsKHR(..),
        VkExternalMemoryFeatureFlagsKHR(..),
        VkExternalMemoryHandleTypeFlagsKHR(..),
        VkExternalSemaphoreFeatureFlagsKHR(..),
        VkExternalSemaphoreHandleTypeFlagsKHR(..),
        VkFenceImportFlagsKHR(..), VkGeometryFlagsNV(..),
        VkGeometryInstanceFlagsNV(..), VkHeadlessSurfaceCreateFlagsEXT(..),
        VkIOSSurfaceCreateFlagsMVK(..),
        VkImagePipeSurfaceCreateFlagsFUCHSIA(..),
        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
        VkMetalSurfaceCreateFlagsEXT(..), VkPeerMemoryFeatureFlagsKHR(..),
        VkPipelineColorBlendStateCreateFlags(..),
        VkPipelineCoverageModulationStateCreateFlagsNV(..),
        VkPipelineCoverageReductionStateCreateFlagsNV(..),
        VkPipelineCoverageToColorStateCreateFlagsNV(..),
        VkPipelineDepthStencilStateCreateFlags(..),
        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
        VkPipelineDynamicStateCreateFlags(..),
        VkPipelineInputAssemblyStateCreateFlags(..),
        VkPipelineLayoutCreateFlags(..),
        VkPipelineMultisampleStateCreateFlags(..),
        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
        VkPipelineRasterizationDepthClipStateCreateFlagsEXT(..),
        VkPipelineRasterizationStateCreateFlags(..),
        VkPipelineRasterizationStateStreamCreateFlagsEXT(..),
        VkPipelineTessellationStateCreateFlags(..),
        VkPipelineVertexInputStateCreateFlags(..),
        VkPipelineViewportStateCreateFlags(..),
        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
        VkQueryPoolCreateFlags(..), VkResolveModeFlagsKHR(..),
        VkSemaphoreCreateFlags(..), VkSemaphoreImportFlagsKHR(..),
        VkSemaphoreWaitFlagsKHR(..),
        VkStreamDescriptorSurfaceCreateFlagsGGP(..),
        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
        VkWaylandSurfaceCreateFlagsKHR(..),
        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
        VkXlibSurfaceCreateFlagsKHR(..),
        VkCopyAccelerationStructureModeKHR(..),
        VkCopyAccelerationStructureModeNV(..), VkFormat(..),
        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
        VkFormatFeatureFlags(), VkGeometryAABBNV, VkGeometryDataNV,
        VkGeometryInstanceBitmaskKHR(..), VkGeometryBitmaskKHR(..),
        VkGeometryTypeKHR(..), VkGeometryFlagBitsKHR(),
        VkGeometryFlagBitsNV(..), VkGeometryFlagsKHR(),
        VkGeometryInstanceFlagBitsKHR(), VkGeometryInstanceFlagBitsNV(..),
        VkGeometryInstanceFlagsKHR(), VkGeometryTypeNV(..), VkGeometryNV,
        VkGeometryTrianglesNV, VkIndexType(..), VkMemoryRequirements2KHR,
        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
        VkPhysicalDeviceProperties2,
        VkPhysicalDeviceRayTracingPropertiesNV,
        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
        VkPipelineCreateBitmask(..),
        VkPipelineCreationFeedbackBitmaskEXT(..),
        VkPipelineExecutableStatisticFormatKHR(..),
        VkPipelineStageBitmask(..), VkPipelineCacheCreateBitmask(..),
        VkPipelineCacheCreateFlagBits(), VkPipelineCacheCreateFlags(),
        VkPipelineCompilerControlBitmaskAMD(..),
        VkPipelineCompilerControlFlagBitsAMD(),
        VkPipelineCompilerControlFlagsAMD(), VkPipelineCreateFlagBits(),
        VkPipelineCreateFlags(), VkPipelineCreationFeedbackFlagBitsEXT(),
        VkPipelineCreationFeedbackFlagsEXT(),
        VkPipelineShaderStageCreateBitmask(..),
        VkPipelineShaderStageCreateFlagBits(),
        VkPipelineShaderStageCreateFlags(), VkPipelineStageFlagBits(),
        VkPipelineStageFlags(), VkPipelineShaderStageCreateInfo,
        VkRayTracingPipelineCreateInfoNV,
        VkRayTracingShaderGroupCreateInfoNV,
        VkRayTracingShaderGroupTypeKHR(..),
        VkRayTracingShaderGroupTypeNV(..), VkSampleCountBitmask(..),
        VkSampleCountFlagBits(), VkSampleCountFlags(),
        VkShaderFloatControlsIndependence(..), VkShaderInfoTypeAMD(..),
        VkShaderStageBitmask(..), VkShaderCorePropertiesBitmaskAMD(..),
        VkShaderCorePropertiesFlagBitsAMD(),
        VkShaderCorePropertiesFlagsAMD(),
        VkShaderFloatControlsIndependenceKHR(..),
        VkShaderModuleCreateBitmask(..), VkShaderModuleCreateFlagBits(),
        VkShaderModuleCreateFlags(), VkShaderStageFlagBits(),
        VkShaderStageFlags(), VkSpecializationInfo,
        VkSpecializationMapEntry, VkStructureType(..), VkTransformMatrixNV,
        VkWriteDescriptorSetAccelerationStructureNV,
        -- > #include "vk_platform.h"
        VkCreateAccelerationStructureNV,
        pattern VkCreateAccelerationStructureNV,
        HS_vkCreateAccelerationStructureNV,
        PFN_vkCreateAccelerationStructureNV,
        VkDestroyAccelerationStructureNV,
        pattern VkDestroyAccelerationStructureNV,
        HS_vkDestroyAccelerationStructureNV,
        PFN_vkDestroyAccelerationStructureNV,
        VkGetAccelerationStructureMemoryRequirementsNV,
        pattern VkGetAccelerationStructureMemoryRequirementsNV,
        HS_vkGetAccelerationStructureMemoryRequirementsNV,
        PFN_vkGetAccelerationStructureMemoryRequirementsNV,
        VkBindAccelerationStructureMemoryNV,
        pattern VkBindAccelerationStructureMemoryNV,
        HS_vkBindAccelerationStructureMemoryNV,
        PFN_vkBindAccelerationStructureMemoryNV,
        VkCmdBuildAccelerationStructureNV,
        pattern VkCmdBuildAccelerationStructureNV,
        HS_vkCmdBuildAccelerationStructureNV,
        PFN_vkCmdBuildAccelerationStructureNV,
        VkCmdCopyAccelerationStructureNV,
        pattern VkCmdCopyAccelerationStructureNV,
        HS_vkCmdCopyAccelerationStructureNV,
        PFN_vkCmdCopyAccelerationStructureNV, VkCmdTraceRaysNV,
        pattern VkCmdTraceRaysNV, HS_vkCmdTraceRaysNV,
        PFN_vkCmdTraceRaysNV, VkCreateRayTracingPipelinesNV,
        pattern VkCreateRayTracingPipelinesNV,
        HS_vkCreateRayTracingPipelinesNV,
        PFN_vkCreateRayTracingPipelinesNV,
        VkGetRayTracingShaderGroupHandlesNV,
        pattern VkGetRayTracingShaderGroupHandlesNV,
        HS_vkGetRayTracingShaderGroupHandlesNV,
        PFN_vkGetRayTracingShaderGroupHandlesNV,
        VkGetAccelerationStructureHandleNV,
        pattern VkGetAccelerationStructureHandleNV,
        HS_vkGetAccelerationStructureHandleNV,
        PFN_vkGetAccelerationStructureHandleNV,
        VkCmdWriteAccelerationStructuresPropertiesNV,
        pattern VkCmdWriteAccelerationStructuresPropertiesNV,
        HS_vkCmdWriteAccelerationStructuresPropertiesNV,
        PFN_vkCmdWriteAccelerationStructuresPropertiesNV,
        VkCompileDeferredNV, pattern VkCompileDeferredNV,
        HS_vkCompileDeferredNV, PFN_vkCompileDeferredNV,
        VkInternalAllocationType(..), VkQueryControlBitmask(..),
        VkQueryPipelineStatisticBitmask(..),
        VkQueryPoolSamplingModeINTEL(..), VkQueryResultBitmask(..),
        VkQueryType(..), VkQueryControlFlagBits(), VkQueryControlFlags(),
        VkQueryPipelineStatisticFlagBits(),
        VkQueryPipelineStatisticFlags(), VkQueryPoolCreateFlagBits(..),
        VkQueryResultFlagBits(), VkQueryResultFlags(), VkResult(..),
        VkSystemAllocationScope(..), newVkAllocationFunction,
        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
        newVkFreeFunction, newVkInternalAllocationNotification,
        newVkInternalFreeNotification, newVkReallocationFunction,
        newVkVoidFunction, unwrapVkAllocationFunction,
        unwrapVkDebugReportCallbackEXT,
        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
        unwrapVkInternalAllocationNotification,
        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
        unwrapVkVoidFunction, HS_vkAllocationFunction,
        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
        HS_vkVoidFunction, PFN_vkAllocationFunction,
        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
        PFN_vkVoidFunction, VkAccelerationStructureKHR,
        VkAccelerationStructureKHR_T(), VkAccelerationStructureNV,
        VkAccelerationStructureNV_T(), VkBuffer, VkBufferView,
        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
        VkDeferredOperationKHR, VkDeferredOperationKHR_T(),
        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
        VkImageView, VkImageView_T(), VkImage_T(),
        VkIndirectCommandsLayoutNV, VkIndirectCommandsLayoutNV_T(),
        VkInstance, VkInstance_T(), VkPerformanceConfigurationINTEL,
        VkPerformanceConfigurationINTEL_T(), VkPhysicalDevice,
        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
        VkPipeline_T(), VkPrivateDataSlotEXT, VkPrivateDataSlotEXT_T(),
        VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(), VkRenderPass,
        VkRenderPass_T(), VkSampler, VkSamplerYcbcrConversion,
        VkSamplerYcbcrConversionKHR, VkSamplerYcbcrConversionKHR_T(),
        VkSamplerYcbcrConversion_T(), VkSampler_T(), VkSemaphore,
        VkSemaphore_T(), VkShaderModule, VkShaderModule_T(), VkSurfaceKHR,
        VkSurfaceKHR_T(), VkSwapchainKHR, VkSwapchainKHR_T(),
        VkValidationCacheEXT, VkValidationCacheEXT_T(),
        VkAllocationCallbacks, VkAabbPositionsKHR,
        VkAccelerationStructureBuildGeometryInfoKHR,
        VkAccelerationStructureBuildOffsetInfoKHR,
        VkAccelerationStructureCreateGeometryTypeInfoKHR,
        VkAccelerationStructureCreateInfoKHR,
        VkAccelerationStructureDeviceAddressInfoKHR,
        VkAccelerationStructureGeometryAabbsDataKHR,
        VkAccelerationStructureGeometryDataKHR,
        VkAccelerationStructureGeometryInstancesDataKHR,
        VkAccelerationStructureGeometryKHR,
        VkAccelerationStructureGeometryTrianglesDataKHR,
        VkAccelerationStructureInstanceKHR,
        VkAccelerationStructureMemoryRequirementsInfoKHR,
        VkAccelerationStructureVersionKHR,
        VkBindAccelerationStructureMemoryInfoKHR,
        VkCopyAccelerationStructureInfoKHR,
        VkCopyAccelerationStructureToMemoryInfoKHR,
        VkCopyMemoryToAccelerationStructureInfoKHR,
        VkDeferredOperationInfoKHR, VkDeviceOrHostAddressConstKHR,
        VkDeviceOrHostAddressKHR, VkPhysicalDeviceRayTracingFeaturesKHR,
        VkPhysicalDeviceRayTracingPropertiesKHR,
        VkPipelineLibraryCreateInfoKHR, VkRayTracingPipelineCreateInfoKHR,
        VkRayTracingPipelineInterfaceCreateInfoKHR,
        VkRayTracingShaderGroupCreateInfoKHR, VkStridedBufferRegionKHR,
        VkTraceRaysIndirectCommandKHR, VkTransformMatrixKHR,
        VkWriteDescriptorSetAccelerationStructureKHR,
        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
        VkMemoryAllocateInfo, VkMemoryBarrier,
        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfoKHR,
        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirementsKHR,
        VkMemoryFdPropertiesKHR, VkMemoryGetFdInfoKHR, VkMemoryHeap,
        VkMemoryHostPointerPropertiesEXT,
        VkMemoryOpaqueCaptureAddressAllocateInfo,
        VkMemoryOpaqueCaptureAddressAllocateInfoKHR,
        VkMemoryPriorityAllocateInfoEXT, VkMemoryRequirements,
        VkMemoryRequirements2, VkMemoryType, VkGraphicsPipelineCreateInfo,
        VkPipelineCacheCreateInfo,
        VkPipelineColorBlendAdvancedStateCreateInfoEXT,
        VkPipelineColorBlendAttachmentState,
        VkPipelineColorBlendStateCreateInfo,
        VkPipelineCompilerControlCreateInfoAMD,
        VkPipelineCoverageModulationStateCreateInfoNV,
        VkPipelineCoverageReductionStateCreateInfoNV,
        VkPipelineCoverageToColorStateCreateInfoNV,
        VkPipelineCreationFeedbackCreateInfoEXT,
        VkPipelineCreationFeedbackEXT,
        VkPipelineDepthStencilStateCreateInfo,
        VkPipelineDiscardRectangleStateCreateInfoEXT,
        VkPipelineDynamicStateCreateInfo, VkPipelineExecutableInfoKHR,
        VkPipelineExecutableInternalRepresentationKHR,
        VkPipelineExecutablePropertiesKHR,
        VkPipelineExecutableStatisticKHR,
        VkPipelineExecutableStatisticValueKHR, VkPipelineInfoKHR,
        VkPipelineInputAssemblyStateCreateInfo, VkPipelineLayoutCreateInfo,
        VkPipelineMultisampleStateCreateInfo,
        VkPipelineRasterizationConservativeStateCreateInfoEXT,
        VkPipelineRasterizationDepthClipStateCreateInfoEXT,
        VkPipelineRasterizationLineStateCreateInfoEXT,
        VkPipelineRasterizationStateCreateInfo,
        VkPipelineRasterizationStateRasterizationOrderAMD,
        VkPipelineRasterizationStateStreamCreateInfoEXT,
        VkPipelineRepresentativeFragmentTestStateCreateInfoNV,
        VkPipelineSampleLocationsStateCreateInfoEXT,
        VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT,
        VkPipelineTessellationDomainOriginStateCreateInfo,
        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
        VkPipelineTessellationStateCreateInfo,
        VkPipelineVertexInputDivisorStateCreateInfoEXT,
        VkPipelineVertexInputStateCreateInfo,
        VkPipelineViewportCoarseSampleOrderStateCreateInfoNV,
        VkPipelineViewportExclusiveScissorStateCreateInfoNV,
        VkPipelineViewportShadingRateImageStateCreateInfoNV,
        VkPipelineViewportStateCreateInfo,
        VkPipelineViewportSwizzleStateCreateInfoNV,
        VkPipelineViewportWScalingStateCreateInfoNV,
        VK_NV_RAY_TRACING_SPEC_VERSION,
        pattern VK_NV_RAY_TRACING_SPEC_VERSION,
        VK_NV_RAY_TRACING_EXTENSION_NAME,
        pattern VK_NV_RAY_TRACING_EXTENSION_NAME,
        pattern VK_SHADER_UNUSED_NV,
        pattern VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV,
        pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
        pattern VK_STRUCTURE_TYPE_GEOMETRY_NV,
        pattern VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,
        pattern VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV,
        pattern VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
        pattern VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
        pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
        pattern VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
        pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV,
        pattern VK_SHADER_STAGE_RAYGEN_BIT_NV,
        pattern VK_SHADER_STAGE_ANY_HIT_BIT_NV,
        pattern VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,
        pattern VK_SHADER_STAGE_MISS_BIT_NV,
        pattern VK_SHADER_STAGE_INTERSECTION_BIT_NV,
        pattern VK_SHADER_STAGE_CALLABLE_BIT_NV,
        pattern VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV,
        pattern VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,
        pattern VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,
        pattern VK_PIPELINE_BIND_POINT_RAY_TRACING_NV,
        pattern VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
        pattern VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,
        pattern VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV,
        pattern VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV,
        pattern VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV,
        pattern VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV,
        pattern VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT,
        pattern VK_INDEX_TYPE_NONE_NV,
        pattern VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV,
        pattern VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV,
        pattern VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV,
        pattern VK_GEOMETRY_TYPE_TRIANGLES_NV,
        pattern VK_GEOMETRY_TYPE_AABBS_NV,
        pattern VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,
        pattern VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV,
        pattern VK_GEOMETRY_OPAQUE_BIT_NV,
        pattern VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV,
        pattern VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,
        pattern VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,
        pattern VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,
        pattern VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV,
        pattern VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,
        pattern VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,
        pattern VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,
        pattern VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,
        pattern VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,
        pattern VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV,
        pattern VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV,
        pattern VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,
        pattern VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV,
        pattern VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV)
       where
import GHC.Ptr                                                   (Ptr (..))
import Graphics.Vulkan.Constants                                 (pattern VK_SHADER_UNUSED_NV)
import Graphics.Vulkan.Ext.VK_KHR_ray_tracing                    (pattern VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
                                                                  pattern VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
                                                                  pattern VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR,
                                                                  pattern VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT,
                                                                  pattern VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
                                                                  pattern VK_INDEX_TYPE_NONE_KHR,
                                                                  pattern VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR,
                                                                  pattern VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
                                                                  pattern VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
                                                                  pattern VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
                                                                  pattern VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR,
                                                                  pattern VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
                                                                  pattern VK_SHADER_STAGE_CALLABLE_BIT_KHR,
                                                                  pattern VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
                                                                  pattern VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
                                                                  pattern VK_SHADER_STAGE_MISS_BIT_KHR,
                                                                  pattern VK_SHADER_STAGE_RAYGEN_BIT_KHR,
                                                                  pattern VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR,
                                                                  pattern VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Proc                              (VulkanProc (..))
import Graphics.Vulkan.Types.BaseTypes
import Graphics.Vulkan.Types.Bitmasks
import Graphics.Vulkan.Types.Enum.AccelerationStructure
import Graphics.Vulkan.Types.Enum.BuildAccelerationStructureFlag
import Graphics.Vulkan.Types.Enum.CopyAccelerationStructureMode
import Graphics.Vulkan.Types.Enum.Format
import Graphics.Vulkan.Types.Enum.Geometry
import Graphics.Vulkan.Types.Enum.IndexType
import Graphics.Vulkan.Types.Enum.InternalAllocationType
import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
import Graphics.Vulkan.Types.Enum.Pipeline
import Graphics.Vulkan.Types.Enum.Query
import Graphics.Vulkan.Types.Enum.RayTracingShaderGroupType
import Graphics.Vulkan.Types.Enum.Result
import Graphics.Vulkan.Types.Enum.SampleCountFlags
import Graphics.Vulkan.Types.Enum.Shader
import Graphics.Vulkan.Types.Enum.StructureType
import Graphics.Vulkan.Types.Enum.SystemAllocationScope
import Graphics.Vulkan.Types.Funcpointers
import Graphics.Vulkan.Types.Handles
import Graphics.Vulkan.Types.Struct.AabbPositionsNV              (VkAabbPositionsNV)
import Graphics.Vulkan.Types.Struct.AccelerationStructure
import Graphics.Vulkan.Types.Struct.AllocationCallbacks
import Graphics.Vulkan.Types.Struct.Bind                         (VkBindAccelerationStructureMemoryInfoNV)
import Graphics.Vulkan.Types.Struct.EnableBetaExtensions
import Graphics.Vulkan.Types.Struct.Geometry
import Graphics.Vulkan.Types.Struct.Memory
import Graphics.Vulkan.Types.Struct.PhysicalDevice               (VkPhysicalDeviceLimits,
                                                                  VkPhysicalDeviceProperties,
                                                                  VkPhysicalDeviceProperties2,
                                                                  VkPhysicalDeviceRayTracingPropertiesNV,
                                                                  VkPhysicalDeviceSparseProperties)
import Graphics.Vulkan.Types.Struct.Pipeline
import Graphics.Vulkan.Types.Struct.RayTracing
import Graphics.Vulkan.Types.Struct.Specialization
import Graphics.Vulkan.Types.Struct.TransformMatrixNV            (VkTransformMatrixNV)
import Graphics.Vulkan.Types.Struct.WriteDescriptorSet           (VkWriteDescriptorSetAccelerationStructureNV)

pattern VkCreateAccelerationStructureNV :: CString

pattern $bVkCreateAccelerationStructureNV :: CString
$mVkCreateAccelerationStructureNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCreateAccelerationStructureNV <-
        (is_VkCreateAccelerationStructureNV -> True)
  where
    VkCreateAccelerationStructureNV = CString
_VkCreateAccelerationStructureNV

{-# INLINE _VkCreateAccelerationStructureNV #-}

_VkCreateAccelerationStructureNV :: CString
_VkCreateAccelerationStructureNV :: CString
_VkCreateAccelerationStructureNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreateAccelerationStructureNV\NUL"#

{-# INLINE is_VkCreateAccelerationStructureNV #-}

is_VkCreateAccelerationStructureNV :: CString -> Bool
is_VkCreateAccelerationStructureNV :: CString -> Bool
is_VkCreateAccelerationStructureNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCreateAccelerationStructureNV

type VkCreateAccelerationStructureNV =
     "vkCreateAccelerationStructureNV"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY'.
--
--   > VkResult vkCreateAccelerationStructureNV
--   >     ( VkDevice device
--   >     , const VkAccelerationStructureCreateInfoNV* pCreateInfo
--   >     , const VkAllocationCallbacks* pAllocator
--   >     , VkAccelerationStructureNV* pAccelerationStructure
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV registry at www.khronos.org>
type HS_vkCreateAccelerationStructureNV =
     VkDevice -- ^ device
              ->
       Ptr VkAccelerationStructureCreateInfoNV -- ^ pCreateInfo
                                               ->
         Ptr VkAllocationCallbacks -- ^ pAllocator
                                   ->
           Ptr VkAccelerationStructureNV -- ^ pAccelerationStructure
                                         -> IO VkResult

type PFN_vkCreateAccelerationStructureNV =
     FunPtr HS_vkCreateAccelerationStructureNV

foreign import ccall unsafe "dynamic"
               unwrapVkCreateAccelerationStructureNVUnsafe ::
               PFN_vkCreateAccelerationStructureNV ->
                 HS_vkCreateAccelerationStructureNV

foreign import ccall safe "dynamic"
               unwrapVkCreateAccelerationStructureNVSafe ::
               PFN_vkCreateAccelerationStructureNV ->
                 HS_vkCreateAccelerationStructureNV

instance VulkanProc "vkCreateAccelerationStructureNV" where
    type VkProcType "vkCreateAccelerationStructureNV" =
         HS_vkCreateAccelerationStructureNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCreateAccelerationStructureNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCreateAccelerationStructureNV")
-> VkProcType "vkCreateAccelerationStructureNV"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCreateAccelerationStructureNV")
-> VkProcType "vkCreateAccelerationStructureNV"
PFN_vkCreateAccelerationStructureNV
-> HS_vkCreateAccelerationStructureNV
unwrapVkCreateAccelerationStructureNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCreateAccelerationStructureNV")
-> VkProcType "vkCreateAccelerationStructureNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCreateAccelerationStructureNV")
-> VkProcType "vkCreateAccelerationStructureNV"
PFN_vkCreateAccelerationStructureNV
-> HS_vkCreateAccelerationStructureNV
unwrapVkCreateAccelerationStructureNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkDestroyAccelerationStructureNV :: CString

pattern $bVkDestroyAccelerationStructureNV :: CString
$mVkDestroyAccelerationStructureNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkDestroyAccelerationStructureNV <-
        (is_VkDestroyAccelerationStructureNV -> True)
  where
    VkDestroyAccelerationStructureNV
      = CString
_VkDestroyAccelerationStructureNV

{-# INLINE _VkDestroyAccelerationStructureNV #-}

_VkDestroyAccelerationStructureNV :: CString
_VkDestroyAccelerationStructureNV :: CString
_VkDestroyAccelerationStructureNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkDestroyAccelerationStructureNV\NUL"#

{-# INLINE is_VkDestroyAccelerationStructureNV #-}

is_VkDestroyAccelerationStructureNV :: CString -> Bool
is_VkDestroyAccelerationStructureNV :: CString -> Bool
is_VkDestroyAccelerationStructureNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkDestroyAccelerationStructureNV

type VkDestroyAccelerationStructureNV =
     "vkDestroyAccelerationStructureNV"

-- | This is an alias for `vkDestroyAccelerationStructureKHR`.
--
--   > void vkDestroyAccelerationStructureNV
--   >     ( VkDevice device
--   >     , VkAccelerationStructureKHR accelerationStructure
--   >     , const VkAllocationCallbacks* pAllocator
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV registry at www.khronos.org>
type HS_vkDestroyAccelerationStructureNV =
     VkDevice -- ^ device
              ->
       VkAccelerationStructureKHR -- ^ accelerationStructure
                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                               -> IO ()

type PFN_vkDestroyAccelerationStructureNV =
     FunPtr HS_vkDestroyAccelerationStructureNV

foreign import ccall unsafe "dynamic"
               unwrapVkDestroyAccelerationStructureNVUnsafe ::
               PFN_vkDestroyAccelerationStructureNV ->
                 HS_vkDestroyAccelerationStructureNV

foreign import ccall safe "dynamic"
               unwrapVkDestroyAccelerationStructureNVSafe ::
               PFN_vkDestroyAccelerationStructureNV ->
                 HS_vkDestroyAccelerationStructureNV

instance VulkanProc "vkDestroyAccelerationStructureNV" where
    type VkProcType "vkDestroyAccelerationStructureNV" =
         HS_vkDestroyAccelerationStructureNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkDestroyAccelerationStructureNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkDestroyAccelerationStructureNV")
-> VkProcType "vkDestroyAccelerationStructureNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkDestroyAccelerationStructureNV")
-> VkProcType "vkDestroyAccelerationStructureNV"
PFN_vkDestroyAccelerationStructureNV
-> HS_vkDestroyAccelerationStructureNV
unwrapVkDestroyAccelerationStructureNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkDestroyAccelerationStructureNV")
-> VkProcType "vkDestroyAccelerationStructureNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkDestroyAccelerationStructureNV")
-> VkProcType "vkDestroyAccelerationStructureNV"
PFN_vkDestroyAccelerationStructureNV
-> HS_vkDestroyAccelerationStructureNV
unwrapVkDestroyAccelerationStructureNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetAccelerationStructureMemoryRequirementsNV :: CString

pattern $bVkGetAccelerationStructureMemoryRequirementsNV :: CString
$mVkGetAccelerationStructureMemoryRequirementsNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetAccelerationStructureMemoryRequirementsNV <-
        (is_VkGetAccelerationStructureMemoryRequirementsNV -> True)
  where
    VkGetAccelerationStructureMemoryRequirementsNV
      = CString
_VkGetAccelerationStructureMemoryRequirementsNV

{-# INLINE _VkGetAccelerationStructureMemoryRequirementsNV #-}

_VkGetAccelerationStructureMemoryRequirementsNV :: CString
_VkGetAccelerationStructureMemoryRequirementsNV :: CString
_VkGetAccelerationStructureMemoryRequirementsNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetAccelerationStructureMemoryRequirementsNV\NUL"#

{-# INLINE is_VkGetAccelerationStructureMemoryRequirementsNV #-}

is_VkGetAccelerationStructureMemoryRequirementsNV ::
                                                  CString -> Bool
is_VkGetAccelerationStructureMemoryRequirementsNV :: CString -> Bool
is_VkGetAccelerationStructureMemoryRequirementsNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
      CString -> CString -> Ordering
cmpCStrings CString
_VkGetAccelerationStructureMemoryRequirementsNV

type VkGetAccelerationStructureMemoryRequirementsNV =
     "vkGetAccelerationStructureMemoryRequirementsNV"

-- | > void vkGetAccelerationStructureMemoryRequirementsNV
--   >     ( VkDevice device
--   >     , const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo
--   >     , VkMemoryRequirements2KHR* pMemoryRequirements
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV registry at www.khronos.org>
type HS_vkGetAccelerationStructureMemoryRequirementsNV =
     VkDevice -- ^ device
              ->
       Ptr VkAccelerationStructureMemoryRequirementsInfoNV -- ^ pInfo
                                                           ->
         Ptr VkMemoryRequirements2KHR -- ^ pMemoryRequirements
                                      -> IO ()

type PFN_vkGetAccelerationStructureMemoryRequirementsNV =
     FunPtr HS_vkGetAccelerationStructureMemoryRequirementsNV

foreign import ccall unsafe "dynamic"
               unwrapVkGetAccelerationStructureMemoryRequirementsNVUnsafe ::
               PFN_vkGetAccelerationStructureMemoryRequirementsNV ->
                 HS_vkGetAccelerationStructureMemoryRequirementsNV

foreign import ccall safe "dynamic"
               unwrapVkGetAccelerationStructureMemoryRequirementsNVSafe ::
               PFN_vkGetAccelerationStructureMemoryRequirementsNV ->
                 HS_vkGetAccelerationStructureMemoryRequirementsNV

instance VulkanProc
           "vkGetAccelerationStructureMemoryRequirementsNV"
         where
    type VkProcType "vkGetAccelerationStructureMemoryRequirementsNV" =
         HS_vkGetAccelerationStructureMemoryRequirementsNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetAccelerationStructureMemoryRequirementsNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr
  (VkProcType "vkGetAccelerationStructureMemoryRequirementsNV")
-> VkProcType "vkGetAccelerationStructureMemoryRequirementsNV"
unwrapVkProcPtrUnsafe
      = FunPtr
  (VkProcType "vkGetAccelerationStructureMemoryRequirementsNV")
-> VkProcType "vkGetAccelerationStructureMemoryRequirementsNV"
PFN_vkGetAccelerationStructureMemoryRequirementsNV
-> HS_vkGetAccelerationStructureMemoryRequirementsNV
unwrapVkGetAccelerationStructureMemoryRequirementsNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr
  (VkProcType "vkGetAccelerationStructureMemoryRequirementsNV")
-> VkProcType "vkGetAccelerationStructureMemoryRequirementsNV"
unwrapVkProcPtrSafe
      = FunPtr
  (VkProcType "vkGetAccelerationStructureMemoryRequirementsNV")
-> VkProcType "vkGetAccelerationStructureMemoryRequirementsNV"
PFN_vkGetAccelerationStructureMemoryRequirementsNV
-> HS_vkGetAccelerationStructureMemoryRequirementsNV
unwrapVkGetAccelerationStructureMemoryRequirementsNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkBindAccelerationStructureMemoryNV :: CString

pattern $bVkBindAccelerationStructureMemoryNV :: CString
$mVkBindAccelerationStructureMemoryNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkBindAccelerationStructureMemoryNV <-
        (is_VkBindAccelerationStructureMemoryNV -> True)
  where
    VkBindAccelerationStructureMemoryNV
      = CString
_VkBindAccelerationStructureMemoryNV

{-# INLINE _VkBindAccelerationStructureMemoryNV #-}

_VkBindAccelerationStructureMemoryNV :: CString
_VkBindAccelerationStructureMemoryNV :: CString
_VkBindAccelerationStructureMemoryNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkBindAccelerationStructureMemoryNV\NUL"#

{-# INLINE is_VkBindAccelerationStructureMemoryNV #-}

is_VkBindAccelerationStructureMemoryNV :: CString -> Bool
is_VkBindAccelerationStructureMemoryNV :: CString -> Bool
is_VkBindAccelerationStructureMemoryNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkBindAccelerationStructureMemoryNV

type VkBindAccelerationStructureMemoryNV =
     "vkBindAccelerationStructureMemoryNV"

-- | This is an alias for `vkBindAccelerationStructureMemoryKHR`.
--
--   Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkBindAccelerationStructureMemoryNV
--   >     ( VkDevice device
--   >     , uint32_t bindInfoCount
--   >     , const VkBindAccelerationStructureMemoryInfoKHR* pBindInfos
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV registry at www.khronos.org>
type HS_vkBindAccelerationStructureMemoryNV =
     VkDevice -- ^ device
              ->
       Word32 -- ^ bindInfoCount
              ->
         Ptr VkBindAccelerationStructureMemoryInfoKHR -- ^ pBindInfos
                                                      -> IO VkResult

type PFN_vkBindAccelerationStructureMemoryNV =
     FunPtr HS_vkBindAccelerationStructureMemoryNV

foreign import ccall unsafe "dynamic"
               unwrapVkBindAccelerationStructureMemoryNVUnsafe ::
               PFN_vkBindAccelerationStructureMemoryNV ->
                 HS_vkBindAccelerationStructureMemoryNV

foreign import ccall safe "dynamic"
               unwrapVkBindAccelerationStructureMemoryNVSafe ::
               PFN_vkBindAccelerationStructureMemoryNV ->
                 HS_vkBindAccelerationStructureMemoryNV

instance VulkanProc "vkBindAccelerationStructureMemoryNV" where
    type VkProcType "vkBindAccelerationStructureMemoryNV" =
         HS_vkBindAccelerationStructureMemoryNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkBindAccelerationStructureMemoryNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkBindAccelerationStructureMemoryNV")
-> VkProcType "vkBindAccelerationStructureMemoryNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkBindAccelerationStructureMemoryNV")
-> VkProcType "vkBindAccelerationStructureMemoryNV"
PFN_vkBindAccelerationStructureMemoryNV
-> HS_vkBindAccelerationStructureMemoryNV
unwrapVkBindAccelerationStructureMemoryNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkBindAccelerationStructureMemoryNV")
-> VkProcType "vkBindAccelerationStructureMemoryNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkBindAccelerationStructureMemoryNV")
-> VkProcType "vkBindAccelerationStructureMemoryNV"
PFN_vkBindAccelerationStructureMemoryNV
-> HS_vkBindAccelerationStructureMemoryNV
unwrapVkBindAccelerationStructureMemoryNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdBuildAccelerationStructureNV :: CString

pattern $bVkCmdBuildAccelerationStructureNV :: CString
$mVkCmdBuildAccelerationStructureNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdBuildAccelerationStructureNV <-
        (is_VkCmdBuildAccelerationStructureNV -> True)
  where
    VkCmdBuildAccelerationStructureNV
      = CString
_VkCmdBuildAccelerationStructureNV

{-# INLINE _VkCmdBuildAccelerationStructureNV #-}

_VkCmdBuildAccelerationStructureNV :: CString
_VkCmdBuildAccelerationStructureNV :: CString
_VkCmdBuildAccelerationStructureNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdBuildAccelerationStructureNV\NUL"#

{-# INLINE is_VkCmdBuildAccelerationStructureNV #-}

is_VkCmdBuildAccelerationStructureNV :: CString -> Bool
is_VkCmdBuildAccelerationStructureNV :: CString -> Bool
is_VkCmdBuildAccelerationStructureNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCmdBuildAccelerationStructureNV

type VkCmdBuildAccelerationStructureNV =
     "vkCmdBuildAccelerationStructureNV"

-- | Queues: 'compute'.
--
--   Renderpass: @outside@
--
--   > void vkCmdBuildAccelerationStructureNV
--   >     ( VkCommandBuffer commandBuffer
--   >     , const VkAccelerationStructureInfoNV* pInfo
--   >     , VkBuffer instanceData
--   >     , VkDeviceSize instanceOffset
--   >     , VkBool32 update
--   >     , VkAccelerationStructureKHR dst
--   >     , VkAccelerationStructureKHR src
--   >     , VkBuffer scratch
--   >     , VkDeviceSize scratchOffset
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV registry at www.khronos.org>
type HS_vkCmdBuildAccelerationStructureNV =
     VkCommandBuffer -- ^ commandBuffer
                     ->
       Ptr VkAccelerationStructureInfoNV -- ^ pInfo
                                         ->
         VkBuffer -- ^ instanceData
                  ->
           VkDeviceSize -- ^ instanceOffset
                        ->
             VkBool32 -- ^ update
                      ->
               VkAccelerationStructureKHR -- ^ dst
                                          ->
                 VkAccelerationStructureKHR -- ^ src
                                            -> VkBuffer -- ^ scratch
                                                        -> VkDeviceSize -- ^ scratchOffset
                                                                        -> IO ()

type PFN_vkCmdBuildAccelerationStructureNV =
     FunPtr HS_vkCmdBuildAccelerationStructureNV

foreign import ccall unsafe "dynamic"
               unwrapVkCmdBuildAccelerationStructureNVUnsafe ::
               PFN_vkCmdBuildAccelerationStructureNV ->
                 HS_vkCmdBuildAccelerationStructureNV

foreign import ccall safe "dynamic"
               unwrapVkCmdBuildAccelerationStructureNVSafe ::
               PFN_vkCmdBuildAccelerationStructureNV ->
                 HS_vkCmdBuildAccelerationStructureNV

instance VulkanProc "vkCmdBuildAccelerationStructureNV" where
    type VkProcType "vkCmdBuildAccelerationStructureNV" =
         HS_vkCmdBuildAccelerationStructureNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdBuildAccelerationStructureNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdBuildAccelerationStructureNV")
-> VkProcType "vkCmdBuildAccelerationStructureNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkCmdBuildAccelerationStructureNV")
-> VkProcType "vkCmdBuildAccelerationStructureNV"
PFN_vkCmdBuildAccelerationStructureNV
-> HS_vkCmdBuildAccelerationStructureNV
unwrapVkCmdBuildAccelerationStructureNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdBuildAccelerationStructureNV")
-> VkProcType "vkCmdBuildAccelerationStructureNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCmdBuildAccelerationStructureNV")
-> VkProcType "vkCmdBuildAccelerationStructureNV"
PFN_vkCmdBuildAccelerationStructureNV
-> HS_vkCmdBuildAccelerationStructureNV
unwrapVkCmdBuildAccelerationStructureNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdCopyAccelerationStructureNV :: CString

pattern $bVkCmdCopyAccelerationStructureNV :: CString
$mVkCmdCopyAccelerationStructureNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdCopyAccelerationStructureNV <-
        (is_VkCmdCopyAccelerationStructureNV -> True)
  where
    VkCmdCopyAccelerationStructureNV
      = CString
_VkCmdCopyAccelerationStructureNV

{-# INLINE _VkCmdCopyAccelerationStructureNV #-}

_VkCmdCopyAccelerationStructureNV :: CString
_VkCmdCopyAccelerationStructureNV :: CString
_VkCmdCopyAccelerationStructureNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdCopyAccelerationStructureNV\NUL"#

{-# INLINE is_VkCmdCopyAccelerationStructureNV #-}

is_VkCmdCopyAccelerationStructureNV :: CString -> Bool
is_VkCmdCopyAccelerationStructureNV :: CString -> Bool
is_VkCmdCopyAccelerationStructureNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCmdCopyAccelerationStructureNV

type VkCmdCopyAccelerationStructureNV =
     "vkCmdCopyAccelerationStructureNV"

-- | Queues: 'compute'.
--
--   Renderpass: @outside@
--
--   > void vkCmdCopyAccelerationStructureNV
--   >     ( VkCommandBuffer commandBuffer
--   >     , VkAccelerationStructureKHR dst
--   >     , VkAccelerationStructureKHR src
--   >     , VkCopyAccelerationStructureModeKHR mode
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV registry at www.khronos.org>
type HS_vkCmdCopyAccelerationStructureNV =
     VkCommandBuffer -- ^ commandBuffer
                     ->
       VkAccelerationStructureKHR -- ^ dst
                                  ->
         VkAccelerationStructureKHR -- ^ src
                                    ->
           VkCopyAccelerationStructureModeKHR -- ^ mode
                                              -> IO ()

type PFN_vkCmdCopyAccelerationStructureNV =
     FunPtr HS_vkCmdCopyAccelerationStructureNV

foreign import ccall unsafe "dynamic"
               unwrapVkCmdCopyAccelerationStructureNVUnsafe ::
               PFN_vkCmdCopyAccelerationStructureNV ->
                 HS_vkCmdCopyAccelerationStructureNV

foreign import ccall safe "dynamic"
               unwrapVkCmdCopyAccelerationStructureNVSafe ::
               PFN_vkCmdCopyAccelerationStructureNV ->
                 HS_vkCmdCopyAccelerationStructureNV

instance VulkanProc "vkCmdCopyAccelerationStructureNV" where
    type VkProcType "vkCmdCopyAccelerationStructureNV" =
         HS_vkCmdCopyAccelerationStructureNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdCopyAccelerationStructureNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdCopyAccelerationStructureNV")
-> VkProcType "vkCmdCopyAccelerationStructureNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkCmdCopyAccelerationStructureNV")
-> VkProcType "vkCmdCopyAccelerationStructureNV"
PFN_vkCmdCopyAccelerationStructureNV
-> HS_vkCmdCopyAccelerationStructureNV
unwrapVkCmdCopyAccelerationStructureNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdCopyAccelerationStructureNV")
-> VkProcType "vkCmdCopyAccelerationStructureNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCmdCopyAccelerationStructureNV")
-> VkProcType "vkCmdCopyAccelerationStructureNV"
PFN_vkCmdCopyAccelerationStructureNV
-> HS_vkCmdCopyAccelerationStructureNV
unwrapVkCmdCopyAccelerationStructureNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdTraceRaysNV :: CString

pattern $bVkCmdTraceRaysNV :: CString
$mVkCmdTraceRaysNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdTraceRaysNV <- (is_VkCmdTraceRaysNV -> True)
  where
    VkCmdTraceRaysNV = CString
_VkCmdTraceRaysNV

{-# INLINE _VkCmdTraceRaysNV #-}

_VkCmdTraceRaysNV :: CString
_VkCmdTraceRaysNV :: CString
_VkCmdTraceRaysNV = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdTraceRaysNV\NUL"#

{-# INLINE is_VkCmdTraceRaysNV #-}

is_VkCmdTraceRaysNV :: CString -> Bool
is_VkCmdTraceRaysNV :: CString -> Bool
is_VkCmdTraceRaysNV = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCmdTraceRaysNV

type VkCmdTraceRaysNV = "vkCmdTraceRaysNV"

-- | Queues: 'compute'.
--
--   Renderpass: @outside@
--
--   > void vkCmdTraceRaysNV
--   >     ( VkCommandBuffer commandBuffer
--   >     , VkBuffer raygenShaderBindingTableBuffer
--   >     , VkDeviceSize raygenShaderBindingOffset
--   >     , VkBuffer missShaderBindingTableBuffer
--   >     , VkDeviceSize missShaderBindingOffset
--   >     , VkDeviceSize missShaderBindingStride
--   >     , VkBuffer hitShaderBindingTableBuffer
--   >     , VkDeviceSize hitShaderBindingOffset
--   >     , VkDeviceSize hitShaderBindingStride
--   >     , VkBuffer callableShaderBindingTableBuffer
--   >     , VkDeviceSize callableShaderBindingOffset
--   >     , VkDeviceSize callableShaderBindingStride
--   >     , uint32_t width
--   >     , uint32_t height
--   >     , uint32_t depth
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdTraceRaysNV vkCmdTraceRaysNV registry at www.khronos.org>
type HS_vkCmdTraceRaysNV =
     VkCommandBuffer -- ^ commandBuffer
                     ->
       VkBuffer -- ^ raygenShaderBindingTableBuffer
                ->
         VkDeviceSize -- ^ raygenShaderBindingOffset
                      ->
           VkBuffer -- ^ missShaderBindingTableBuffer
                    ->
             VkDeviceSize -- ^ missShaderBindingOffset
                          ->
               VkDeviceSize -- ^ missShaderBindingStride
                            ->
                 VkBuffer -- ^ hitShaderBindingTableBuffer
                          ->
                   VkDeviceSize -- ^ hitShaderBindingOffset
                                ->
                     VkDeviceSize -- ^ hitShaderBindingStride
                                  ->
                       VkBuffer -- ^ callableShaderBindingTableBuffer
                                ->
                         VkDeviceSize -- ^ callableShaderBindingOffset
                                      -> VkDeviceSize -- ^ callableShaderBindingStride
                                                      -> Word32 -- ^ width
                                                                -> Word32 -- ^ height
                                                                          -> Word32 -- ^ depth
                                                                                    -> IO ()

type PFN_vkCmdTraceRaysNV = FunPtr HS_vkCmdTraceRaysNV

foreign import ccall unsafe "dynamic" unwrapVkCmdTraceRaysNVUnsafe
               :: PFN_vkCmdTraceRaysNV -> HS_vkCmdTraceRaysNV

foreign import ccall safe "dynamic" unwrapVkCmdTraceRaysNVSafe ::
               PFN_vkCmdTraceRaysNV -> HS_vkCmdTraceRaysNV

instance VulkanProc "vkCmdTraceRaysNV" where
    type VkProcType "vkCmdTraceRaysNV" = HS_vkCmdTraceRaysNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdTraceRaysNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdTraceRaysNV")
-> VkProcType "vkCmdTraceRaysNV"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCmdTraceRaysNV")
-> VkProcType "vkCmdTraceRaysNV"
PFN_vkCmdTraceRaysNV -> HS_vkCmdTraceRaysNV
unwrapVkCmdTraceRaysNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdTraceRaysNV")
-> VkProcType "vkCmdTraceRaysNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCmdTraceRaysNV")
-> VkProcType "vkCmdTraceRaysNV"
PFN_vkCmdTraceRaysNV -> HS_vkCmdTraceRaysNV
unwrapVkCmdTraceRaysNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCreateRayTracingPipelinesNV :: CString

pattern $bVkCreateRayTracingPipelinesNV :: CString
$mVkCreateRayTracingPipelinesNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCreateRayTracingPipelinesNV <-
        (is_VkCreateRayTracingPipelinesNV -> True)
  where
    VkCreateRayTracingPipelinesNV = CString
_VkCreateRayTracingPipelinesNV

{-# INLINE _VkCreateRayTracingPipelinesNV #-}

_VkCreateRayTracingPipelinesNV :: CString
_VkCreateRayTracingPipelinesNV :: CString
_VkCreateRayTracingPipelinesNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCreateRayTracingPipelinesNV\NUL"#

{-# INLINE is_VkCreateRayTracingPipelinesNV #-}

is_VkCreateRayTracingPipelinesNV :: CString -> Bool
is_VkCreateRayTracingPipelinesNV :: CString -> Bool
is_VkCreateRayTracingPipelinesNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCreateRayTracingPipelinesNV

type VkCreateRayTracingPipelinesNV =
     "vkCreateRayTracingPipelinesNV"

-- | Success codes: 'VK_SUCCESS', 'VK_PIPELINE_COMPILE_REQUIRED_EXT'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
--
--   > VkResult vkCreateRayTracingPipelinesNV
--   >     ( VkDevice device
--   >     , VkPipelineCache pipelineCache
--   >     , uint32_t createInfoCount
--   >     , const VkRayTracingPipelineCreateInfoNV* pCreateInfos
--   >     , const VkAllocationCallbacks* pAllocator
--   >     , VkPipeline* pPipelines
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV registry at www.khronos.org>
type HS_vkCreateRayTracingPipelinesNV =
     VkDevice -- ^ device
              ->
       VkPipelineCache -- ^ pipelineCache
                       ->
         Word32 -- ^ createInfoCount
                ->
           Ptr VkRayTracingPipelineCreateInfoNV -- ^ pCreateInfos
                                                ->
             Ptr VkAllocationCallbacks -- ^ pAllocator
                                       -> Ptr VkPipeline -- ^ pPipelines
                                                         -> IO VkResult

type PFN_vkCreateRayTracingPipelinesNV =
     FunPtr HS_vkCreateRayTracingPipelinesNV

foreign import ccall unsafe "dynamic"
               unwrapVkCreateRayTracingPipelinesNVUnsafe ::
               PFN_vkCreateRayTracingPipelinesNV ->
                 HS_vkCreateRayTracingPipelinesNV

foreign import ccall safe "dynamic"
               unwrapVkCreateRayTracingPipelinesNVSafe ::
               PFN_vkCreateRayTracingPipelinesNV ->
                 HS_vkCreateRayTracingPipelinesNV

instance VulkanProc "vkCreateRayTracingPipelinesNV" where
    type VkProcType "vkCreateRayTracingPipelinesNV" =
         HS_vkCreateRayTracingPipelinesNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCreateRayTracingPipelinesNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCreateRayTracingPipelinesNV")
-> VkProcType "vkCreateRayTracingPipelinesNV"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCreateRayTracingPipelinesNV")
-> VkProcType "vkCreateRayTracingPipelinesNV"
PFN_vkCreateRayTracingPipelinesNV
-> HS_vkCreateRayTracingPipelinesNV
unwrapVkCreateRayTracingPipelinesNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCreateRayTracingPipelinesNV")
-> VkProcType "vkCreateRayTracingPipelinesNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCreateRayTracingPipelinesNV")
-> VkProcType "vkCreateRayTracingPipelinesNV"
PFN_vkCreateRayTracingPipelinesNV
-> HS_vkCreateRayTracingPipelinesNV
unwrapVkCreateRayTracingPipelinesNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetRayTracingShaderGroupHandlesNV :: CString

pattern $bVkGetRayTracingShaderGroupHandlesNV :: CString
$mVkGetRayTracingShaderGroupHandlesNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetRayTracingShaderGroupHandlesNV <-
        (is_VkGetRayTracingShaderGroupHandlesNV -> True)
  where
    VkGetRayTracingShaderGroupHandlesNV
      = CString
_VkGetRayTracingShaderGroupHandlesNV

{-# INLINE _VkGetRayTracingShaderGroupHandlesNV #-}

_VkGetRayTracingShaderGroupHandlesNV :: CString
_VkGetRayTracingShaderGroupHandlesNV :: CString
_VkGetRayTracingShaderGroupHandlesNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetRayTracingShaderGroupHandlesNV\NUL"#

{-# INLINE is_VkGetRayTracingShaderGroupHandlesNV #-}

is_VkGetRayTracingShaderGroupHandlesNV :: CString -> Bool
is_VkGetRayTracingShaderGroupHandlesNV :: CString -> Bool
is_VkGetRayTracingShaderGroupHandlesNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetRayTracingShaderGroupHandlesNV

type VkGetRayTracingShaderGroupHandlesNV =
     "vkGetRayTracingShaderGroupHandlesNV"

-- | This is an alias for `vkGetRayTracingShaderGroupHandlesKHR`.
--
--   Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkGetRayTracingShaderGroupHandlesNV
--   >     ( VkDevice device
--   >     , VkPipeline pipeline
--   >     , uint32_t firstGroup
--   >     , uint32_t groupCount
--   >     , size_t dataSize
--   >     , void* pData
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV registry at www.khronos.org>
type HS_vkGetRayTracingShaderGroupHandlesNV =
     VkDevice -- ^ device
              ->
       VkPipeline -- ^ pipeline
                  -> Word32 -- ^ firstGroup
                            -> Word32 -- ^ groupCount
                                      -> CSize -- ^ dataSize
                                               -> Ptr Void -- ^ pData
                                                           -> IO VkResult

type PFN_vkGetRayTracingShaderGroupHandlesNV =
     FunPtr HS_vkGetRayTracingShaderGroupHandlesNV

foreign import ccall unsafe "dynamic"
               unwrapVkGetRayTracingShaderGroupHandlesNVUnsafe ::
               PFN_vkGetRayTracingShaderGroupHandlesNV ->
                 HS_vkGetRayTracingShaderGroupHandlesNV

foreign import ccall safe "dynamic"
               unwrapVkGetRayTracingShaderGroupHandlesNVSafe ::
               PFN_vkGetRayTracingShaderGroupHandlesNV ->
                 HS_vkGetRayTracingShaderGroupHandlesNV

instance VulkanProc "vkGetRayTracingShaderGroupHandlesNV" where
    type VkProcType "vkGetRayTracingShaderGroupHandlesNV" =
         HS_vkGetRayTracingShaderGroupHandlesNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetRayTracingShaderGroupHandlesNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetRayTracingShaderGroupHandlesNV")
-> VkProcType "vkGetRayTracingShaderGroupHandlesNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkGetRayTracingShaderGroupHandlesNV")
-> VkProcType "vkGetRayTracingShaderGroupHandlesNV"
PFN_vkGetRayTracingShaderGroupHandlesNV
-> HS_vkGetRayTracingShaderGroupHandlesNV
unwrapVkGetRayTracingShaderGroupHandlesNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetRayTracingShaderGroupHandlesNV")
-> VkProcType "vkGetRayTracingShaderGroupHandlesNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetRayTracingShaderGroupHandlesNV")
-> VkProcType "vkGetRayTracingShaderGroupHandlesNV"
PFN_vkGetRayTracingShaderGroupHandlesNV
-> HS_vkGetRayTracingShaderGroupHandlesNV
unwrapVkGetRayTracingShaderGroupHandlesNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkGetAccelerationStructureHandleNV :: CString

pattern $bVkGetAccelerationStructureHandleNV :: CString
$mVkGetAccelerationStructureHandleNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkGetAccelerationStructureHandleNV <-
        (is_VkGetAccelerationStructureHandleNV -> True)
  where
    VkGetAccelerationStructureHandleNV
      = CString
_VkGetAccelerationStructureHandleNV

{-# INLINE _VkGetAccelerationStructureHandleNV #-}

_VkGetAccelerationStructureHandleNV :: CString
_VkGetAccelerationStructureHandleNV :: CString
_VkGetAccelerationStructureHandleNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkGetAccelerationStructureHandleNV\NUL"#

{-# INLINE is_VkGetAccelerationStructureHandleNV #-}

is_VkGetAccelerationStructureHandleNV :: CString -> Bool
is_VkGetAccelerationStructureHandleNV :: CString -> Bool
is_VkGetAccelerationStructureHandleNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkGetAccelerationStructureHandleNV

type VkGetAccelerationStructureHandleNV =
     "vkGetAccelerationStructureHandleNV"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkGetAccelerationStructureHandleNV
--   >     ( VkDevice device
--   >     , VkAccelerationStructureKHR accelerationStructure
--   >     , size_t dataSize
--   >     , void* pData
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV registry at www.khronos.org>
type HS_vkGetAccelerationStructureHandleNV =
     VkDevice -- ^ device
              ->
       VkAccelerationStructureKHR -- ^ accelerationStructure
                                  -> CSize -- ^ dataSize
                                           -> Ptr Void -- ^ pData
                                                       -> IO VkResult

type PFN_vkGetAccelerationStructureHandleNV =
     FunPtr HS_vkGetAccelerationStructureHandleNV

foreign import ccall unsafe "dynamic"
               unwrapVkGetAccelerationStructureHandleNVUnsafe ::
               PFN_vkGetAccelerationStructureHandleNV ->
                 HS_vkGetAccelerationStructureHandleNV

foreign import ccall safe "dynamic"
               unwrapVkGetAccelerationStructureHandleNVSafe ::
               PFN_vkGetAccelerationStructureHandleNV ->
                 HS_vkGetAccelerationStructureHandleNV

instance VulkanProc "vkGetAccelerationStructureHandleNV" where
    type VkProcType "vkGetAccelerationStructureHandleNV" =
         HS_vkGetAccelerationStructureHandleNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkGetAccelerationStructureHandleNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkGetAccelerationStructureHandleNV")
-> VkProcType "vkGetAccelerationStructureHandleNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkGetAccelerationStructureHandleNV")
-> VkProcType "vkGetAccelerationStructureHandleNV"
PFN_vkGetAccelerationStructureHandleNV
-> HS_vkGetAccelerationStructureHandleNV
unwrapVkGetAccelerationStructureHandleNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkGetAccelerationStructureHandleNV")
-> VkProcType "vkGetAccelerationStructureHandleNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkGetAccelerationStructureHandleNV")
-> VkProcType "vkGetAccelerationStructureHandleNV"
PFN_vkGetAccelerationStructureHandleNV
-> HS_vkGetAccelerationStructureHandleNV
unwrapVkGetAccelerationStructureHandleNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCmdWriteAccelerationStructuresPropertiesNV :: CString

pattern $bVkCmdWriteAccelerationStructuresPropertiesNV :: CString
$mVkCmdWriteAccelerationStructuresPropertiesNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCmdWriteAccelerationStructuresPropertiesNV <-
        (is_VkCmdWriteAccelerationStructuresPropertiesNV -> True)
  where
    VkCmdWriteAccelerationStructuresPropertiesNV
      = CString
_VkCmdWriteAccelerationStructuresPropertiesNV

{-# INLINE _VkCmdWriteAccelerationStructuresPropertiesNV #-}

_VkCmdWriteAccelerationStructuresPropertiesNV :: CString
_VkCmdWriteAccelerationStructuresPropertiesNV :: CString
_VkCmdWriteAccelerationStructuresPropertiesNV
  = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCmdWriteAccelerationStructuresPropertiesNV\NUL"#

{-# INLINE is_VkCmdWriteAccelerationStructuresPropertiesNV #-}

is_VkCmdWriteAccelerationStructuresPropertiesNV :: CString -> Bool
is_VkCmdWriteAccelerationStructuresPropertiesNV :: CString -> Bool
is_VkCmdWriteAccelerationStructuresPropertiesNV
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
      CString -> CString -> Ordering
cmpCStrings CString
_VkCmdWriteAccelerationStructuresPropertiesNV

type VkCmdWriteAccelerationStructuresPropertiesNV =
     "vkCmdWriteAccelerationStructuresPropertiesNV"

-- | This is an alias for `vkCmdWriteAccelerationStructuresPropertiesKHR`.
--
--   Queues: 'compute'.
--
--   Renderpass: @outside@
--
--   > void vkCmdWriteAccelerationStructuresPropertiesNV
--   >     ( VkCommandBuffer commandBuffer
--   >     , uint32_t accelerationStructureCount
--   >     , const VkAccelerationStructureKHR* pAccelerationStructures
--   >     , VkQueryType queryType
--   >     , VkQueryPool queryPool
--   >     , uint32_t firstQuery
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV registry at www.khronos.org>
type HS_vkCmdWriteAccelerationStructuresPropertiesNV =
     VkCommandBuffer -- ^ commandBuffer
                     ->
       Word32 -- ^ accelerationStructureCount
              ->
         Ptr VkAccelerationStructureKHR -- ^ pAccelerationStructures
                                        ->
           VkQueryType -- ^ queryType
                       -> VkQueryPool -- ^ queryPool
                                      -> Word32 -- ^ firstQuery
                                                -> IO ()

type PFN_vkCmdWriteAccelerationStructuresPropertiesNV =
     FunPtr HS_vkCmdWriteAccelerationStructuresPropertiesNV

foreign import ccall unsafe "dynamic"
               unwrapVkCmdWriteAccelerationStructuresPropertiesNVUnsafe ::
               PFN_vkCmdWriteAccelerationStructuresPropertiesNV ->
                 HS_vkCmdWriteAccelerationStructuresPropertiesNV

foreign import ccall safe "dynamic"
               unwrapVkCmdWriteAccelerationStructuresPropertiesNVSafe ::
               PFN_vkCmdWriteAccelerationStructuresPropertiesNV ->
                 HS_vkCmdWriteAccelerationStructuresPropertiesNV

instance VulkanProc "vkCmdWriteAccelerationStructuresPropertiesNV"
         where
    type VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV" =
         HS_vkCmdWriteAccelerationStructuresPropertiesNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCmdWriteAccelerationStructuresPropertiesNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV")
-> VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV"
unwrapVkProcPtrUnsafe
      = FunPtr (VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV")
-> VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV"
PFN_vkCmdWriteAccelerationStructuresPropertiesNV
-> HS_vkCmdWriteAccelerationStructuresPropertiesNV
unwrapVkCmdWriteAccelerationStructuresPropertiesNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV")
-> VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV"
unwrapVkProcPtrSafe
      = FunPtr (VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV")
-> VkProcType "vkCmdWriteAccelerationStructuresPropertiesNV"
PFN_vkCmdWriteAccelerationStructuresPropertiesNV
-> HS_vkCmdWriteAccelerationStructuresPropertiesNV
unwrapVkCmdWriteAccelerationStructuresPropertiesNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VkCompileDeferredNV :: CString

pattern $bVkCompileDeferredNV :: CString
$mVkCompileDeferredNV :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VkCompileDeferredNV <- (is_VkCompileDeferredNV -> True)
  where
    VkCompileDeferredNV = CString
_VkCompileDeferredNV

{-# INLINE _VkCompileDeferredNV #-}

_VkCompileDeferredNV :: CString
_VkCompileDeferredNV :: CString
_VkCompileDeferredNV = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"vkCompileDeferredNV\NUL"#

{-# INLINE is_VkCompileDeferredNV #-}

is_VkCompileDeferredNV :: CString -> Bool
is_VkCompileDeferredNV :: CString -> Bool
is_VkCompileDeferredNV = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VkCompileDeferredNV

type VkCompileDeferredNV = "vkCompileDeferredNV"

-- | Success codes: 'VK_SUCCESS'.
--
--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
--
--   > VkResult vkCompileDeferredNV
--   >     ( VkDevice device
--   >     , VkPipeline pipeline
--   >     , uint32_t shader
--   >     )
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCompileDeferredNV vkCompileDeferredNV registry at www.khronos.org>
type HS_vkCompileDeferredNV =
     VkDevice -- ^ device
              -> VkPipeline -- ^ pipeline
                            -> Word32 -- ^ shader
                                      -> IO VkResult

type PFN_vkCompileDeferredNV = FunPtr HS_vkCompileDeferredNV

foreign import ccall unsafe "dynamic"
               unwrapVkCompileDeferredNVUnsafe ::
               PFN_vkCompileDeferredNV -> HS_vkCompileDeferredNV

foreign import ccall safe "dynamic" unwrapVkCompileDeferredNVSafe
               :: PFN_vkCompileDeferredNV -> HS_vkCompileDeferredNV

instance VulkanProc "vkCompileDeferredNV" where
    type VkProcType "vkCompileDeferredNV" = HS_vkCompileDeferredNV
    vkProcSymbol :: CString
vkProcSymbol = CString
_VkCompileDeferredNV

    {-# INLINE vkProcSymbol #-}
    unwrapVkProcPtrUnsafe :: FunPtr (VkProcType "vkCompileDeferredNV")
-> VkProcType "vkCompileDeferredNV"
unwrapVkProcPtrUnsafe = FunPtr (VkProcType "vkCompileDeferredNV")
-> VkProcType "vkCompileDeferredNV"
PFN_vkCompileDeferredNV -> HS_vkCompileDeferredNV
unwrapVkCompileDeferredNVUnsafe

    {-# INLINE unwrapVkProcPtrUnsafe #-}
    unwrapVkProcPtrSafe :: FunPtr (VkProcType "vkCompileDeferredNV")
-> VkProcType "vkCompileDeferredNV"
unwrapVkProcPtrSafe = FunPtr (VkProcType "vkCompileDeferredNV")
-> VkProcType "vkCompileDeferredNV"
PFN_vkCompileDeferredNV -> HS_vkCompileDeferredNV
unwrapVkCompileDeferredNVSafe

    {-# INLINE unwrapVkProcPtrSafe #-}

pattern VK_NV_RAY_TRACING_SPEC_VERSION :: (Num a, Eq a) => a

pattern $bVK_NV_RAY_TRACING_SPEC_VERSION :: forall a. (Num a, Eq a) => a
$mVK_NV_RAY_TRACING_SPEC_VERSION :: forall {r} {a}.
(Num a, Eq a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
VK_NV_RAY_TRACING_SPEC_VERSION = 3

type VK_NV_RAY_TRACING_SPEC_VERSION = 3

pattern VK_NV_RAY_TRACING_EXTENSION_NAME :: CString

pattern $bVK_NV_RAY_TRACING_EXTENSION_NAME :: CString
$mVK_NV_RAY_TRACING_EXTENSION_NAME :: forall {r}. CString -> (Void# -> r) -> (Void# -> r) -> r
VK_NV_RAY_TRACING_EXTENSION_NAME <-
        (is_VK_NV_RAY_TRACING_EXTENSION_NAME -> True)
  where
    VK_NV_RAY_TRACING_EXTENSION_NAME
      = CString
_VK_NV_RAY_TRACING_EXTENSION_NAME

{-# INLINE _VK_NV_RAY_TRACING_EXTENSION_NAME #-}

_VK_NV_RAY_TRACING_EXTENSION_NAME :: CString
_VK_NV_RAY_TRACING_EXTENSION_NAME :: CString
_VK_NV_RAY_TRACING_EXTENSION_NAME = Addr# -> CString
forall a. Addr# -> Ptr a
Ptr Addr#
"VK_NV_ray_tracing\NUL"#

{-# INLINE is_VK_NV_RAY_TRACING_EXTENSION_NAME #-}

is_VK_NV_RAY_TRACING_EXTENSION_NAME :: CString -> Bool
is_VK_NV_RAY_TRACING_EXTENSION_NAME :: CString -> Bool
is_VK_NV_RAY_TRACING_EXTENSION_NAME
  = (Ordering
EQ Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
==) (Ordering -> Bool) -> (CString -> Ordering) -> CString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CString -> CString -> Ordering
cmpCStrings CString
_VK_NV_RAY_TRACING_EXTENSION_NAME

type VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"

pattern VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV =
        VkStructureType 1000165000

pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV =
        VkStructureType 1000165001

pattern VK_STRUCTURE_TYPE_GEOMETRY_NV :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_GEOMETRY_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_GEOMETRY_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_GEOMETRY_NV = VkStructureType 1000165003

pattern VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV =
        VkStructureType 1000165004

pattern VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_GEOMETRY_AABB_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_GEOMETRY_AABB_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV =
        VkStructureType 1000165005

pattern $bVK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
        = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR

pattern $bVK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
        = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR

pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
        = VkStructureType 1000165008

pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
        = VkStructureType 1000165009

pattern VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
        :: VkStructureType

pattern $bVK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV =
        VkStructureType 1000165011

pattern VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV ::
        VkStructureType

pattern $bVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV :: VkStructureType
$mVK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV :: forall {r}. VkStructureType -> (Void# -> r) -> (Void# -> r) -> r
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV =
        VkStructureType 1000165012

pattern $bVK_SHADER_STAGE_RAYGEN_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_RAYGEN_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_RAYGEN_BIT_NV =
        VK_SHADER_STAGE_RAYGEN_BIT_KHR

pattern $bVK_SHADER_STAGE_ANY_HIT_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_ANY_HIT_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_ANY_HIT_BIT_NV =
        VK_SHADER_STAGE_ANY_HIT_BIT_KHR

pattern $bVK_SHADER_STAGE_CLOSEST_HIT_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_CLOSEST_HIT_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV =
        VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR

pattern $bVK_SHADER_STAGE_MISS_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_MISS_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR

pattern $bVK_SHADER_STAGE_INTERSECTION_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_INTERSECTION_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_INTERSECTION_BIT_NV =
        VK_SHADER_STAGE_INTERSECTION_BIT_KHR

pattern $bVK_SHADER_STAGE_CALLABLE_BIT_NV :: forall {a :: FlagType}. VkShaderStageBitmask a
$mVK_SHADER_STAGE_CALLABLE_BIT_NV :: forall {r} {a :: FlagType}.
VkShaderStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_SHADER_STAGE_CALLABLE_BIT_NV =
        VK_SHADER_STAGE_CALLABLE_BIT_KHR

pattern $bVK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV :: forall {a :: FlagType}. VkPipelineStageBitmask a
$mVK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV :: forall {r} {a :: FlagType}.
VkPipelineStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV =
        VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR

pattern $bVK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV :: forall {a :: FlagType}. VkPipelineStageBitmask a
$mVK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV :: forall {r} {a :: FlagType}.
VkPipelineStageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV =
        VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR

pattern $bVK_BUFFER_USAGE_RAY_TRACING_BIT_NV :: forall {a :: FlagType}. VkBufferUsageBitmask a
$mVK_BUFFER_USAGE_RAY_TRACING_BIT_NV :: forall {r} {a :: FlagType}.
VkBufferUsageBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_BUFFER_USAGE_RAY_TRACING_BIT_NV =
        VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR

pattern $bVK_PIPELINE_BIND_POINT_RAY_TRACING_NV :: VkPipelineBindPoint
$mVK_PIPELINE_BIND_POINT_RAY_TRACING_NV :: forall {r}.
VkPipelineBindPoint -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_BIND_POINT_RAY_TRACING_NV =
        VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR

pattern $bVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV :: VkDescriptorType
$mVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV :: forall {r}. VkDescriptorType -> (Void# -> r) -> (Void# -> r) -> r
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV =
        VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR

pattern $bVK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV :: forall {a :: FlagType}. VkAccessBitmask a
$mVK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV :: forall {r} {a :: FlagType}.
VkAccessBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV =
        VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR

pattern $bVK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV :: forall {a :: FlagType}. VkAccessBitmask a
$mVK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV :: forall {r} {a :: FlagType}.
VkAccessBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV =
        VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR

pattern $bVK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV :: VkQueryType
$mVK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV :: forall {r}. VkQueryType -> (Void# -> r) -> (Void# -> r) -> r
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV =
        VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR

-- | bitpos = @5@
pattern VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV ::
        VkPipelineCreateBitmask a

pattern $bVK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV :: forall (a :: FlagType). VkPipelineCreateBitmask a
$mVK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV :: forall {r} {a :: FlagType}.
VkPipelineCreateBitmask a -> (Void# -> r) -> (Void# -> r) -> r
VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV =
        VkPipelineCreateBitmask 32

pattern $bVK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV :: VkObjectType
$mVK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV :: forall {r}. VkObjectType -> (Void# -> r) -> (Void# -> r) -> r
VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV =
        VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR

pattern $bVK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: VkDebugReportObjectTypeEXT
$mVK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: forall {r}.
VkDebugReportObjectTypeEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT =
        VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT

pattern $bVK_INDEX_TYPE_NONE_NV :: VkIndexType
$mVK_INDEX_TYPE_NONE_NV :: forall {r}. VkIndexType -> (Void# -> r) -> (Void# -> r) -> r
VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR

pattern $bVK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV :: VkRayTracingShaderGroupTypeKHR
$mVK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV :: forall {r}.
VkRayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV =
        VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR

pattern $bVK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: VkRayTracingShaderGroupTypeKHR
$mVK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV :: forall {r}.
VkRayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV =
        VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR

pattern $bVK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: VkRayTracingShaderGroupTypeKHR
$mVK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: forall {r}.
VkRayTracingShaderGroupTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV =
        VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR

pattern $bVK_GEOMETRY_TYPE_TRIANGLES_NV :: VkGeometryTypeKHR
$mVK_GEOMETRY_TYPE_TRIANGLES_NV :: forall {r}. VkGeometryTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_TYPE_TRIANGLES_NV =
        VK_GEOMETRY_TYPE_TRIANGLES_KHR

pattern $bVK_GEOMETRY_TYPE_AABBS_NV :: VkGeometryTypeKHR
$mVK_GEOMETRY_TYPE_AABBS_NV :: forall {r}. VkGeometryTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR

pattern $bVK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV :: VkAccelerationStructureTypeKHR
$mVK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV :: forall {r}.
VkAccelerationStructureTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV =
        VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR

pattern $bVK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: VkAccelerationStructureTypeKHR
$mVK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: forall {r}.
VkAccelerationStructureTypeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV =
        VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR

pattern $bVK_GEOMETRY_OPAQUE_BIT_NV :: forall {a :: FlagType}. VkGeometryBitmaskKHR a
$mVK_GEOMETRY_OPAQUE_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR

pattern $bVK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV :: forall {a :: FlagType}. VkGeometryBitmaskKHR a
$mVK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV =
        VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR

pattern $bVK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV :: forall {a :: FlagType}. VkGeometryInstanceBitmaskKHR a
$mVK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryInstanceBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV =
        VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR

pattern $bVK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: forall {a :: FlagType}. VkGeometryInstanceBitmaskKHR a
$mVK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryInstanceBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV
        = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR

pattern $bVK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV :: forall {a :: FlagType}. VkGeometryInstanceBitmaskKHR a
$mVK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryInstanceBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV =
        VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR

pattern $bVK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV :: forall {a :: FlagType}. VkGeometryInstanceBitmaskKHR a
$mVK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV :: forall {r} {a :: FlagType}.
VkGeometryInstanceBitmaskKHR a -> (Void# -> r) -> (Void# -> r) -> r
VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV =
        VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR

pattern $bVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: forall {a :: FlagType}. VkBuildAccelerationStructureBitmaskKHR a
$mVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV :: forall {r} {a :: FlagType}.
VkBuildAccelerationStructureBitmaskKHR a
-> (Void# -> r) -> (Void# -> r) -> r
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV =
        VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR

pattern $bVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: forall {a :: FlagType}. VkBuildAccelerationStructureBitmaskKHR a
$mVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV :: forall {r} {a :: FlagType}.
VkBuildAccelerationStructureBitmaskKHR a
-> (Void# -> r) -> (Void# -> r) -> r
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV =
        VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR

pattern $bVK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: forall {a :: FlagType}. VkBuildAccelerationStructureBitmaskKHR a
$mVK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV :: forall {r} {a :: FlagType}.
VkBuildAccelerationStructureBitmaskKHR a
-> (Void# -> r) -> (Void# -> r) -> r
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV =
        VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR

pattern $bVK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: forall {a :: FlagType}. VkBuildAccelerationStructureBitmaskKHR a
$mVK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV :: forall {r} {a :: FlagType}.
VkBuildAccelerationStructureBitmaskKHR a
-> (Void# -> r) -> (Void# -> r) -> r
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV =
        VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR

pattern $bVK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: forall {a :: FlagType}. VkBuildAccelerationStructureBitmaskKHR a
$mVK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV :: forall {r} {a :: FlagType}.
VkBuildAccelerationStructureBitmaskKHR a
-> (Void# -> r) -> (Void# -> r) -> r
VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV =
        VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR

pattern $bVK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV :: VkCopyAccelerationStructureModeKHR
$mVK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV :: forall {r}.
VkCopyAccelerationStructureModeKHR
-> (Void# -> r) -> (Void# -> r) -> r
VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV =
        VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR

pattern $bVK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: VkCopyAccelerationStructureModeKHR
$mVK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: forall {r}.
VkCopyAccelerationStructureModeKHR
-> (Void# -> r) -> (Void# -> r) -> r
VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV =
        VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR

pattern $bVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: VkAccelerationStructureMemoryRequirementsTypeKHR
$mVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV :: forall {r}.
VkAccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
        = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR

pattern $bVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: VkAccelerationStructureMemoryRequirementsTypeKHR
$mVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV :: forall {r}.
VkAccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
        =
        VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR

pattern $bVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: VkAccelerationStructureMemoryRequirementsTypeKHR
$mVK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: forall {r}.
VkAccelerationStructureMemoryRequirementsTypeKHR
-> (Void# -> r) -> (Void# -> r) -> r
VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
        =
        VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR