Browse Source

Vk: expose the new RT extensions.

Enabling them in the Vulkan header, function pointer loader, extension
lists and feature queries / setup:

 - KHR_acceleration_structure
 - KHR_deferred_host_operations
 - KHR_pipeline_library
 - KHR_ray_tracing_pipeline
 - KHR_ray_query
pull/491/head
Vladimír Vondruš 5 years ago
parent
commit
7bdf0feba1
  1. 60
      doc/vulkan-mapping.dox
  2. 5
      doc/vulkan-support.dox
  3. 1
      src/Magnum/Vk/BufferCreateInfo.h
  4. 11
      src/Magnum/Vk/Device.cpp
  5. 102
      src/Magnum/Vk/DeviceFeatures.h
  6. 6
      src/Magnum/Vk/DeviceProperties.cpp
  7. 5
      src/Magnum/Vk/Extensions.cpp
  8. 37
      src/Magnum/Vk/Extensions.h
  9. 3
      src/Magnum/Vk/Implementation/DeviceFeatures.h
  10. 18
      src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp
  11. 5
      src/MagnumExternal/Vulkan/extensions.txt
  12. 28
      src/MagnumExternal/Vulkan/flextVk.cpp
  13. 519
      src/MagnumExternal/Vulkan/flextVk.h
  14. 46
      src/MagnumExternal/Vulkan/flextVkGlobal.h

60
doc/vulkan-mapping.dox

@ -65,6 +65,7 @@ Vulkan function | Matching API
@fn_vk{BeginCommandBuffer}, \n \fn_vk{EndCommandBuffer} | |
@fn_vk{BindBufferMemory}, \n @fn_vk{BindBufferMemory2} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref Buffer::bindMemory()
@fn_vk{BindImageMemory}, \n @fn_vk{BindImageMemory2} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref Image::bindMemory()
@fn_vk{BuildAccelerationStructuresKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@subsection vulkan-mapping-functions-c C
@ -80,13 +81,18 @@ Vulkan function | Matching API
@fn_vk{CmdBindPipeline} | |
@fn_vk{CmdBindVertexBuffers} | |
@fn_vk{CmdBlitImage} | |
@fn_vk{CmdBuildAccelerationStructuresIndirectKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdBuildAccelerationStructuresKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdClearAttachments} | |
@fn_vk{CmdClearColorImage} | |
@fn_vk{CmdClearDepthStencilImage} | |
@fn_vk{CmdCopyAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdCopyAccelerationStructureToMemoryKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdCopyBuffer} | |
@fn_vk{CmdCopyBufferToImage} | |
@fn_vk{CmdCopyImage} | |
@fn_vk{CmdCopyImageToBuffer} | |
@fn_vk{CmdCopyMemoryToAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdCopyQueryPoolResults} | |
@fn_vk{CmdDebugMarkerBeginEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT**, \n @fn_vk{CmdDebugMarkerEndEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{CmdDebugMarkerInsertEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@ -114,20 +120,30 @@ Vulkan function | Matching API
@fn_vk{CmdSetDepthBounds} | |
@fn_vk{CmdSetEvent} | |
@fn_vk{CmdSetLineWidth} | |
@fn_vk{CmdSetRayTracingPipelineStackSizeKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdSetScissor} | |
@fn_vk{CmdSetStencilCompareMask} | |
@fn_vk{CmdSetStencilReference} | |
@fn_vk{CmdSetStencilWriteMask} | |
@fn_vk{CmdSetViewport} | |
@fn_vk{CmdTraceRaysIndirectKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdTraceRaysKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdUpdateBuffer} | |
@fn_vk{CmdWaitEvents} | |
@fn_vk{CmdWriteAccelerationStructuresPropertiesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdBuildAccelerationStructuresIndirectKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CmdWriteTimestamp} | |
@fn_vk{CopyAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CopyAccelerationStructureToMemoryKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CopyMemoryToAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CreateAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR**, \n @fn_vk{DestroyAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CreateBuffer}, \n @fn_vk{DestroyBuffer} | @ref Buffer constructor and destructor
@fn_vk{CreateBufferView}, \n @fn_vk{DestroyBufferView} | |
@fn_vk{CreateCommandPool}, \n @fn_vk{DestroyCommandPool} | @ref CommandPool constructor and destructor
@fn_vk{CreateComputePipelines}, \n @fn_vk{DestroyComputePipelines} | |
@fn_vk{CreateDebugReportCallbackEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT**, \n @fn_vk{DestroyDebugReportCallbackEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{CreateDebugUtilsMessengerEXT} @m_class{m-label m-flat m-warning} **EXT**, \n @fn_vk{DestroyDebugUtilsMessengerEXT} @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{CreateDeferredOperationKHR} @m_class{m-label m-flat m-warning} **KHR**, \n @fn_vk{DestroyDeferredOperationKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CreateDescriptorPool}, \n @fn_vk{DestroyDescriptorPool} | |
@fn_vk{CreateDescriptorSetLayout}, \n @fn_vk{DestroyDescriptorSetLayout} | |
@fn_vk{CreateDescriptorUpdateTemplate} @m_class{m-label m-flat m-success} **KHR, 1.1**, \n @fn_vk{DestroyDescriptorUpdateTemplate} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@ -142,6 +158,7 @@ Vulkan function | Matching API
@fn_vk{CreatePipelineCache}, \n @fn_vk{DestroyPipelineCache} | |
@fn_vk{CreatePipelineLayout}, \n @fn_vk{DestroyPipelineLayout} | |
@fn_vk{CreateQueryPool}, \n @fn_vk{DestroyQueryPool} | |
@fn_vk{CreateRayTracingPipelinesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{CreateRenderPass}, \n @fn_vk{CreateRenderPass2} @m_class{m-label m-flat m-success} **KHR, 1.2**, \n @fn_vk{DestroyRenderPass} | @ref RenderPass constructor and destructor
@fn_vk{CreateSampler}, \n @fn_vk{DestroySampler} | |
@fn_vk{CreateSamplerYcbcrConversion} @m_class{m-label m-flat m-success} **KHR, 1.1** , \n @fn_vk{DestroySamplerYcbcrConversion} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@ -158,6 +175,7 @@ Vulkan function | Matching API
@fn_vk{DebugMarkerSetObjectNameEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{DebugMarkerSetObjectTagEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{DebugReportMessageEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | |
@fn_vk{DeferredOperationJoinKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@subsection vulkan-mapping-functions-e E
@ -187,13 +205,18 @@ Vulkan function | Matching API
Vulkan function | Matching API
--------------------------------------- | ------------
@fn_vk{GetAccelerationStructureBuildSizesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetAccelerationStructureDeviceAddressKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetBufferDeviceAddress} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@fn_vk{GetBufferOpaqueCaptureAddress} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@fn_vk{GetDeviceMemoryOpaqueCaptureAddress} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@fn_vk{GetBufferMemoryRequirements}, \n @fn_vk{GetBufferMemoryRequirements2} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref Buffer::memoryRequirements()
@fn_vk{GetDeferredOperationMaxConcurrencyKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetDeferredOperationResultKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetDescriptorSetLayoutSupport} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@fn_vk{GetDeviceAccelerationStructureCompatibilityKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetDeviceGroupPeerMemoryFeatures} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@fn_vk{GetDeviceMemoryCommitment} | |
@fn_vk{GetDeviceMemoryOpaqueCaptureAddress} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@fn_vk{GetDeviceProcAddr} | @ref Device constructor
@fn_vk{GetDeviceQueue}, \n @fn_vk{GetDeviceQueue2} @m_class{m-label m-flat m-success} **1.1** | @ref Device constructor
@fn_vk{GetEventStatus} | |
@ -213,6 +236,9 @@ Vulkan function | Matching API
@fn_vk{GetPhysicalDeviceQueueFamilyProperties}, \n @fn_vk{GetPhysicalDeviceQueueFamilyProperties2} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref DeviceProperties::queueFamilyProperties()
@fn_vk{GetPhysicalDeviceSparseImageFormatProperties}, \n @fn_vk{GetPhysicalDeviceSparseImageFormatProperties2} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@fn_vk{GetPipelineCacheData} | |
@fn_vk{GetRayTracingCaptureReplayShaderGroupHandlesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetRayTracingShaderGroupHandlesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetRayTracingShaderGroupStackSizeKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@fn_vk{GetQueryPoolResults} | |
@fn_vk{GetRenderAreaGranularity} | |
@fn_vk{GetSemaphoreCounterValue} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@ -294,6 +320,7 @@ Vulkan function | Matching API
Vulkan function | Matching API
--------------------------------------- | ------------
@fn_vk{WaitForFences} | |
@fn_vk{WriteAccelerationStructuresPropertiesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@section vulkan-mapping-structures Structures
@ -303,6 +330,19 @@ Vulkan function | Matching API
Vulkan structure | Matching API
--------------------------------------- | ------------
@type_vk{AabbPositionsKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureBuildGeometryInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureBuildRangeInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureBuildSizesInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureDeviceAddressInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureGeometryAabbsDataKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureGeometryDataKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureGeometryInstancesDataKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureGeometryKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureGeometryTrianglesDataKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureInstanceKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AccelerationStructureVersionInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{AllocationCallbacks} | intentionally @ref vulkan-wrapping-host-allocation "not exposed"
@type_vk{ApplicationInfo} | @ref InstanceCreateInfo
@type_vk{AttachmentDescription}, \n @type_vk{AttachmentDescription2} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref AttachmentDescription
@ -351,6 +391,9 @@ Vulkan structure | Matching API
@type_vk{ComponentMapping} | |
@type_vk{ComputePipelineCreateInfo} | |
@type_vk{ConformanceVersion} | |
@type_vk{CopyAccelerationStructureInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{CopyAccelerationStructureToMemoryInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{CopyMemoryToAccelerationStructureInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{CopyDescriptorSet} | |
@subsection vulkan-mapping-structures-d D
@ -382,6 +425,8 @@ Vulkan structure | Matching API
@type_vk{DescriptorSetVariableDescriptorCountLayoutSupport} @m_class{m-label m-flat m-success} **EXT, 1.2** | |
@type_vk{DescriptorUpdateTemplateEntry} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@type_vk{DescriptorUpdateTemplateCreateInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@type_vk{DeviceOrHostAddressConstKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{DeviceOrHostAddressKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{DeviceCreateInfo} | @ref DeviceCreateInfo
@type_vk{DeviceGroupBindSparseInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@type_vk{DeviceGroupCommandBufferBeginInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | |
@ -501,6 +546,8 @@ Vulkan structure | Matching API
--------------------------------------- | ------------
@type_vk{PhysicalDevice8bitStorageFeatures} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref DeviceFeatures
@type_vk{PhysicalDevice16bitStorageFeatures} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref DeviceFeatures
@type_vk{PhysicalDeviceAccelerationStructureFeaturesKHR} @m_class{m-label m-flat m-warning} **KHR** | @ref DeviceFeatures
@type_vk{PhysicalDeviceAccelerationStructurePropertiesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{PhysicalDeviceBufferDeviceAddressFeatures} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref DeviceFeatures
@type_vk{PhysicalDeviceDepthStencilResolveProperties} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@type_vk{PhysicalDeviceDescriptorIndexingFeatures} @m_class{m-label m-flat m-success} **EXT, 1.2** | @ref DeviceFeatures
@ -528,6 +575,9 @@ Vulkan structure | Matching API
@type_vk{PhysicalDeviceProperties}, \n @type_vk{PhysicalDeviceProperties2} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref DeviceProperties
@type_vk{PhysicalDeviceProtectedMemoryFeatures} @m_class{m-label m-flat m-success} **1.1** | @ref DeviceFeatures
@type_vk{PhysicalDeviceProtectedMemoryProperties} @m_class{m-label m-flat m-success} **1.1** | |
@type_vk{PhysicalDeviceRayQueryFeaturesKHR} @m_class{m-label m-flat m-warning} **KHR** | @ref DeviceFeatures
@type_vk{PhysicalDeviceRayTracingPipelineFeaturesKHR} @m_class{m-label m-flat m-warning} **KHR** | @ref DeviceFeatures
@type_vk{PhysicalDeviceRayTracingPipelinePropertiesKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{PhysicalDeviceSamplerFilterMinmaxProperties} @m_class{m-label m-flat m-success} **EXT, 1.2** | |
@type_vk{PhysicalDeviceSamplerYcbcrConversionFeatures} @m_class{m-label m-flat m-success} **KHR, 1.1** | @ref DeviceFeatures
@type_vk{PhysicalDeviceSeparateDepthStencilLayoutsFeatures} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref DeviceFeatures
@ -555,6 +605,7 @@ Vulkan structure | Matching API
@type_vk{PipelineDynamicStateCreateInfo} | |
@type_vk{PipelineInputAssemblyStateCreateInfo} | |
@type_vk{PipelineLayoutCreateInfo} | |
@type_vk{PipelineLibraryCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{PipelineMultisampleStateCreateInfo} | |
@type_vk{PipelineRasterizationStateCreateInfo} | |
@type_vk{PipelineShaderStageCreateInfo} | |
@ -580,6 +631,9 @@ Vulkan structure | Matching API
Vulkan structure | Matching API
--------------------------------------- | ------------
@type_vk{RayTracingPipelineCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{RayTracingPipelineInterfaceCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{RayTracingShaderGroupCreateInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{Rect2D} | convertible from/to @ref Range2Di using @ref Magnum/Vk/Integration.h
@type_vk{RenderPassBeginInfo} | |
@type_vk{RenderPassAttachmentBeginInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@ -613,6 +667,7 @@ Vulkan structure | Matching API
@type_vk{SpecializationInfo} | |
@type_vk{SpecializationMapEntry} | |
@type_vk{StencilOpState} | |
@type_vk{StridedDeviceAddressRegionKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{SubmitInfo} | |
@type_vk{SubpassBeginInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@type_vk{SubpassEndInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@ -628,6 +683,8 @@ Vulkan structure | Matching API
Vulkan structure | Matching API
--------------------------------------- | ------------
@type_vk{TimelineSemaphoreSubmitInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@type_vk{TraceRaysIndirectCommandKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{TransformMatrixKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@subsection vulkan-mapping-structures-v V
@ -647,6 +704,7 @@ Vulkan structure | Matching API
Vulkan structure | Matching API
--------------------------------------- | ------------
@type_vk{WriteDescriptorSet} | |
@type_vk{WriteDescriptorSetAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | |
*/

5
doc/vulkan-support.dox

@ -121,6 +121,11 @@ Extension | Status
@vk_extension{EXT,debug_utils} @m_class{m-label m-info} **instance** | |
@vk_extension{EXT,validation_features} @m_class{m-label m-info} **instance** | |
@vk_extension{EXT,index_type_uint8} | @ref Vk::vkIndexType() only
@vk_extension{KHR,acceleration_structure} | |
@vk_extension{KHR,deferred_host_operations} | |
@vk_extension{KHR,pipeline_library} | |
@vk_extension{KHR,ray_tracing_pipeline} | |
@vk_extension{KHR,ray_query} | |
@vk_extension{IMG,format_pvrtc} | @ref Vk::vkFormat() only
*/

1
src/Magnum/Vk/BufferCreateInfo.h

@ -77,6 +77,7 @@ enum class BufferUsage: UnsignedInt {
IndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,
/** @todo VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, 1.2 */
/** @todo RT-related usages */
};
/**

11
src/Magnum/Vk/Device.cpp

@ -342,6 +342,7 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea
_state->features._16BitStorage,
_state->features.imagelessFramebuffer,
_state->features.variablePointers,
_state->features.accelerationStructure,
_state->features.samplerYcbcrConversion,
_state->features.descriptorIndexing,
_state->features.shaderSubgroupExtendedTypes,
@ -354,7 +355,9 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea
_state->features.uniformBufferStandardLayout,
_state->features.bufferDeviceAddress,
_state->features.hostQueryReset,
_state->features.indexTypeUint8
_state->features.indexTypeUint8,
_state->features.rayTracingPipeline,
_state->features.rayQuery
});
_state->firstEnabledFeature = {};
@ -440,6 +443,8 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea
_state->features.imagelessFramebuffer, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.variablePointers, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.accelerationStructure, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.samplerYcbcrConversion, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES);
structureConnectIfUsed(next, _state->firstEnabledFeature,
@ -466,6 +471,10 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea
_state->features.hostQueryReset, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.indexTypeUint8, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.rayTracingPipeline, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR);
structureConnectIfUsed(next, _state->firstEnabledFeature,
_state->features.rayQuery, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR);
return *this;
}

102
src/Magnum/Vk/DeviceFeatures.h

@ -530,6 +530,46 @@ enum class DeviceFeature: UnsignedShort {
*/
VariablePointers,
/* VkPhysicalDeviceAccelerationStructureFeaturesKHR, #151 */
/**
* Whether acceleration structure functionality is supported.
* @requires_vk_extension Extension @vk_extension{KHR,acceleration_structure}
*/
AccelerationStructure,
/**
* Whether saving and reusing acceleration structure devices for trace
* capture and replay is supported.
* @requires_vk_extension Extension @vk_extension{KHR,acceleration_structure}
*/
AccelerationStructureCaptureReplay,
/**
* Whether indirect acceleration structure builds are supported.
* @requires_vk_extension Extension @vk_extension{KHR,acceleration_structure}
*/
AccelerationStructureIndirectBuild,
/**
* Whether host-side acceleration structure commands are supported.
* @requires_vk_extension Extension @vk_extension{KHR,acceleration_structure}
*/
AccelerationStructureHostCommands,
/**
* Whether acceleration structure descriptors can be updated after a set is
* bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformTexelBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageTexelBufferUpdateAfterBind
* @requires_vk_extension Extension @vk_extension{KHR,acceleration_structure}
*/
DescriptorBindingAccelerationStructureUpdateAfterBind,
/* VkPhysicalDeviceSamplerYcbcrConversionFeatures, #157 */
/**
@ -742,7 +782,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether uniform buffer descriptors can be updated after a set is bound.
* @see @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformTexelBufferUpdateAfterBind,
@ -753,7 +794,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether sampled image descriptors can be updated after a set is bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformTexelBufferUpdateAfterBind,
@ -764,7 +806,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether storage image descriptors can be updated after a set is bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformTexelBufferUpdateAfterBind,
@ -775,7 +818,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether storage buffer descriptors can be updated after a set is bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformTexelBufferUpdateAfterBind,
@ -787,7 +831,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether uniform texel buffer descriptors can be updated after a set is
* bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
@ -799,7 +844,8 @@ enum class DeviceFeature: UnsignedShort {
/**
* Whether storage texel buffer descriptors can be updated after a set is
* bound.
* @see @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @see @ref DeviceFeature::DescriptorBindingAccelerationStructureUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingUniformBufferUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingSampledImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageImageUpdateAfterBind,
* @ref DeviceFeature::DescriptorBindingStorageBufferUpdateAfterBind,
@ -1000,7 +1046,49 @@ enum class DeviceFeature: UnsignedShort {
* @see @ref DeviceFeature::FullDrawIndexUint32
* @requires_vk_extension Extension @vk_extension{EXT,index_type_uint8}
*/
IndexTypeUint8
IndexTypeUint8,
/* VkPhysicalDeviceRayTracingPipelineFeaturesKHR, #348 */
/**
* Whether ray tracing pipeline functionality is supported.
* @requires_vk_extension Extension @vk_extension{KHR,ray_tracing_pipeline}
*/
RayTracingPipeline,
/**
* Whether saving and reusing shader group handles for trace capture and
* replay is supported.
* @requires_vk_extension Extension @vk_extension{KHR,ray_tracing_pipeline}
*/
RayTracingPipelineShaderGroupHandleCaptureReplay,
/**
* Whether reused shader group handles can be arbitrarily mixed with
* creation of non-reused shader group handles.
* @requires_vk_extension Extension @vk_extension{KHR,ray_tracing_pipeline}
*/
RayTracingPipelineShaderGroupHandleCaptureReplayMixed,
/**
* Whether indirect trace ray commands are supported.
* @requires_vk_extension Extension @vk_extension{KHR,ray_tracing_pipeline}
*/
RayTracingPipelineTraceRaysIndirect,
/**
* Whether primitive culling during ray traversal is supported.
* @requires_vk_extension Extension @vk_extension{KHR,ray_tracing_pipeline}
*/
RayTraversalPrimitiveCulling,
/* VkPhysicalDeviceRayQueryFeaturesKHR, #349 */
/**
* Whether ray query functionality is supported.
* @requires_vk_extension Extension @vk_extension{KHR,ray_query}
*/
RayQuery
};
/**

6
src/Magnum/Vk/DeviceProperties.cpp

@ -303,6 +303,8 @@ const DeviceFeatures& DeviceProperties::features() {
Implementation::structureConnect(next, features.imagelessFramebuffer, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES);
if(isOrVersionSupportedInternal<Extensions::KHR::variable_pointers>())
Implementation::structureConnect(next, features.variablePointers, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES);
if(isOrVersionSupportedInternal<Extensions::KHR::acceleration_structure>())
Implementation::structureConnect(next, features.accelerationStructure, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR);
if(isOrVersionSupportedInternal<Extensions::KHR::sampler_ycbcr_conversion>())
Implementation::structureConnect(next, features.samplerYcbcrConversion, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES);
if(isOrVersionSupportedInternal<Extensions::EXT::descriptor_indexing>())
@ -329,6 +331,10 @@ const DeviceFeatures& DeviceProperties::features() {
Implementation::structureConnect(next, features.hostQueryReset, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES);
if(isOrVersionSupportedInternal<Extensions::EXT::index_type_uint8>())
Implementation::structureConnect(next, features.indexTypeUint8, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT);
if(isOrVersionSupportedInternal<Extensions::KHR::ray_tracing_pipeline>())
Implementation::structureConnect(next, features.rayTracingPipeline, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR);
if(isOrVersionSupportedInternal<Extensions::KHR::ray_query>())
Implementation::structureConnect(next, features.rayQuery, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR);
_state->getFeaturesImplementation(*this, features2);

5
src/Magnum/Vk/Extensions.cpp

@ -71,6 +71,11 @@ constexpr Extension DeviceExtensions[] {
Extensions::EXT::index_type_uint8{},
Extensions::EXT::texture_compression_astc_hdr{},
Extensions::IMG::format_pvrtc{},
Extensions::KHR::acceleration_structure{},
Extensions::KHR::deferred_host_operations{},
Extensions::KHR::pipeline_library{},
Extensions::KHR::ray_query{},
Extensions::KHR::ray_tracing_pipeline{},
};
constexpr Extension DeviceExtensions11[] {
Extensions::KHR::_16bit_storage{},

37
src/Magnum/Vk/Extensions.h

@ -145,22 +145,27 @@ namespace EXT {
_extension(47, KHR,relaxed_block_layout, Vk10, Vk11) // #145
_extension(48, KHR,get_memory_requirements2, Vk10, Vk11) // #147
_extension(49, KHR,image_format_list, Vk10, Vk12) // #148
_extension(50, KHR,sampler_ycbcr_conversion, Vk10, Vk11) // #157
_extension(51, KHR,bind_memory2, Vk10, Vk11) // #158
_extension(52, KHR,maintenance3, Vk10, Vk11) // #169
_extension(53, KHR,draw_indirect_count, Vk10, Vk12) // #170
_extension(54, KHR,shader_subgroup_extended_types, Vk11, Vk12) // #176
_extension_(55, KHR,8bit_storage,_8bit_storage, Vk10, Vk12) // #178
_extension(56, KHR,shader_atomic_int64, Vk10, Vk12) // #181
_extension(57, KHR,driver_properties, Vk10, Vk12) // #197
_extension(58, KHR,shader_float_controls, Vk10, Vk12) // #198
_extension(59, KHR,depth_stencil_resolve, Vk10, Vk12) // #200
_extension(60, KHR,timeline_semaphore, Vk10, Vk12) // #208
_extension(61, KHR,vulkan_memory_model, Vk10, Vk12) // #212
_extension(62, KHR,spirv_1_4, Vk11, Vk12) // #237
_extension(63, KHR,separate_depth_stencil_layouts, Vk10, Vk12) // #242
_extension(64, KHR,uniform_buffer_standard_layout, Vk10, Vk12) // #254
_extension(65, KHR,buffer_device_address, Vk10, Vk12) // #258
_extension(50, KHR,acceleration_structure, Vk11, None) // #151
_extension(51, KHR,sampler_ycbcr_conversion, Vk10, Vk11) // #157
_extension(52, KHR,bind_memory2, Vk10, Vk11) // #158
_extension(53, KHR,maintenance3, Vk10, Vk11) // #169
_extension(54, KHR,draw_indirect_count, Vk10, Vk12) // #170
_extension(55, KHR,shader_subgroup_extended_types, Vk11, Vk12) // #176
_extension_(56, KHR,8bit_storage,_8bit_storage, Vk10, Vk12) // #178
_extension(57, KHR,shader_atomic_int64, Vk10, Vk12) // #181
_extension(58, KHR,driver_properties, Vk10, Vk12) // #197
_extension(59, KHR,shader_float_controls, Vk10, Vk12) // #198
_extension(60, KHR,depth_stencil_resolve, Vk10, Vk12) // #200
_extension(61, KHR,timeline_semaphore, Vk10, Vk12) // #208
_extension(62, KHR,vulkan_memory_model, Vk10, Vk12) // #212
_extension(63, KHR,spirv_1_4, Vk11, Vk12) // #237
_extension(64, KHR,separate_depth_stencil_layouts, Vk10, Vk12) // #242
_extension(65, KHR,uniform_buffer_standard_layout, Vk10, Vk12) // #254
_extension(66, KHR,buffer_device_address, Vk10, Vk12) // #258
_extension(67, KHR,deferred_host_operations, Vk10, None) // #259
_extension(68, KHR,pipeline_library, Vk10, None) // #291
_extension(69, KHR,ray_tracing_pipeline, Vk11, None) // #348
_extension(70, KHR,ray_query, Vk11, None) // #349
}
#undef _extension

3
src/Magnum/Vk/Implementation/DeviceFeatures.h

@ -44,6 +44,7 @@ struct DeviceFeatures {
VkPhysicalDevice16BitStorageFeatures _16BitStorage;
VkPhysicalDeviceImagelessFramebufferFeatures imagelessFramebuffer;
VkPhysicalDeviceVariablePointersFeatures variablePointers;
VkPhysicalDeviceAccelerationStructureFeaturesKHR accelerationStructure;
VkPhysicalDeviceSamplerYcbcrConversionFeatures samplerYcbcrConversion;
VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexing;
VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures shaderSubgroupExtendedTypes;
@ -57,6 +58,8 @@ struct DeviceFeatures {
VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddress;
VkPhysicalDeviceHostQueryResetFeatures hostQueryReset;
VkPhysicalDeviceIndexTypeUint8FeaturesEXT indexTypeUint8;
VkPhysicalDeviceRayTracingPipelineFeaturesKHR rayTracingPipeline;
VkPhysicalDeviceRayQueryFeaturesKHR rayQuery;
};
}}}

18
src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp

@ -122,6 +122,14 @@ _ce(VariablePointersStorageBuffer, variablePointersStorageBuffer)
_ce(VariablePointers, variablePointers)
#undef _ce
#define _ce(value, field) _cext(value, field, accelerationStructure, KHR::acceleration_structure)
_ce(AccelerationStructure, accelerationStructure)
_ce(AccelerationStructureCaptureReplay, accelerationStructureCaptureReplay)
_ce(AccelerationStructureIndirectBuild, accelerationStructureIndirectBuild)
_ce(AccelerationStructureHostCommands, accelerationStructureHostCommands)
_ce(DescriptorBindingAccelerationStructureUpdateAfterBind, descriptorBindingAccelerationStructureUpdateAfterBind)
#undef _ce
_cext(SamplerYcbcrConversion, samplerYcbcrConversion, samplerYcbcrConversion, KHR::sampler_ycbcr_conversion)
#define _ce(value, field) _cext(value, field, descriptorIndexing, EXT::descriptor_indexing)
@ -183,4 +191,14 @@ _ce(BufferDeviceAddressMultiDevice, bufferDeviceAddressMultiDevice)
_cext(HostQueryReset, hostQueryReset, hostQueryReset, EXT::host_query_reset)
_cext(IndexTypeUint8, indexTypeUint8, indexTypeUint8, EXT::index_type_uint8)
#define _ce(value, field) _cext(value, field, rayTracingPipeline, KHR::ray_tracing_pipeline)
_ce(RayTracingPipeline, rayTracingPipeline)
_ce(RayTracingPipelineShaderGroupHandleCaptureReplay, rayTracingPipelineShaderGroupHandleCaptureReplay)
_ce(RayTracingPipelineShaderGroupHandleCaptureReplayMixed, rayTracingPipelineShaderGroupHandleCaptureReplayMixed)
_ce(RayTracingPipelineTraceRaysIndirect, rayTracingPipelineTraceRaysIndirect)
_ce(RayTraversalPrimitiveCulling, rayTraversalPrimitiveCulling)
#undef _ce
_cext(RayQuery, rayQuery, rayQuery, KHR::ray_query)
#endif

5
src/MagnumExternal/Vulkan/extensions.txt vendored

@ -63,6 +63,11 @@ extension EXT_validation_features optional
extension EXT_texture_compression_astc_hdr optional
extension EXT_index_type_uint8 optional
extension IMG_format_pvrtc optional
extension KHR_acceleration_structure optional
extension KHR_deferred_host_operations optional
extension KHR_pipeline_library optional
extension KHR_ray_tracing_pipeline optional
extension KHR_ray_query optional
begin functions blacklist
# Deprecated since 1.0.13, not used

28
src/MagnumExternal/Vulkan/flextVk.cpp vendored

@ -90,6 +90,22 @@ void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction(
data->SetDebugUtilsObjectNameEXT = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkDebugUtilsObjectNameInfoEXT*)>(getDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT"));
data->SetDebugUtilsObjectTagEXT = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkDebugUtilsObjectTagInfoEXT*)>(getDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT"));
data->ResetQueryPoolEXT = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkQueryPool, uint32_t, uint32_t)>(getDeviceProcAddr(device, "vkResetQueryPoolEXT"));
data->BuildAccelerationStructuresKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkAccelerationStructureBuildRangeInfoKHR* const*)>(getDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR"));
data->CmdBuildAccelerationStructuresIndirectKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkDeviceAddress*, const uint32_t*, const uint32_t* const*)>(getDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR"));
data->CmdBuildAccelerationStructuresKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkAccelerationStructureBuildRangeInfoKHR* const*)>(getDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresKHR"));
data->CmdCopyAccelerationStructureKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkCopyAccelerationStructureInfoKHR*)>(getDeviceProcAddr(device, "vkCmdCopyAccelerationStructureKHR"));
data->CmdCopyAccelerationStructureToMemoryKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR*)>(getDeviceProcAddr(device, "vkCmdCopyAccelerationStructureToMemoryKHR"));
data->CmdCopyMemoryToAccelerationStructureKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR*)>(getDeviceProcAddr(device, "vkCmdCopyMemoryToAccelerationStructureKHR"));
data->CmdWriteAccelerationStructuresPropertiesKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, uint32_t, const VkAccelerationStructureKHR*, VkQueryType, VkQueryPool, uint32_t)>(getDeviceProcAddr(device, "vkCmdWriteAccelerationStructuresPropertiesKHR"));
data->CopyAccelerationStructureKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, const VkCopyAccelerationStructureInfoKHR*)>(getDeviceProcAddr(device, "vkCopyAccelerationStructureKHR"));
data->CopyAccelerationStructureToMemoryKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, const VkCopyAccelerationStructureToMemoryInfoKHR*)>(getDeviceProcAddr(device, "vkCopyAccelerationStructureToMemoryKHR"));
data->CopyMemoryToAccelerationStructureKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, const VkCopyMemoryToAccelerationStructureInfoKHR*)>(getDeviceProcAddr(device, "vkCopyMemoryToAccelerationStructureKHR"));
data->CreateAccelerationStructureKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkAccelerationStructureCreateInfoKHR*, const VkAllocationCallbacks*, VkAccelerationStructureKHR*)>(getDeviceProcAddr(device, "vkCreateAccelerationStructureKHR"));
data->DestroyAccelerationStructureKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkAccelerationStructureKHR, const VkAllocationCallbacks*)>(getDeviceProcAddr(device, "vkDestroyAccelerationStructureKHR"));
data->GetAccelerationStructureBuildSizesKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkAccelerationStructureBuildTypeKHR, const VkAccelerationStructureBuildGeometryInfoKHR*, const uint32_t*, VkAccelerationStructureBuildSizesInfoKHR*)>(getDeviceProcAddr(device, "vkGetAccelerationStructureBuildSizesKHR"));
data->GetAccelerationStructureDeviceAddressKHR = reinterpret_cast<VkDeviceAddress(VKAPI_PTR*)(VkDevice, const VkAccelerationStructureDeviceAddressInfoKHR*)>(getDeviceProcAddr(device, "vkGetAccelerationStructureDeviceAddressKHR"));
data->GetDeviceAccelerationStructureCompatibilityKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, const VkAccelerationStructureVersionInfoKHR*, VkAccelerationStructureCompatibilityKHR*)>(getDeviceProcAddr(device, "vkGetDeviceAccelerationStructureCompatibilityKHR"));
data->WriteAccelerationStructuresPropertiesKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, uint32_t, const VkAccelerationStructureKHR*, VkQueryType, size_t, void*, size_t)>(getDeviceProcAddr(device, "vkWriteAccelerationStructuresPropertiesKHR"));
data->BindBufferMemory2KHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, uint32_t, const VkBindBufferMemoryInfo*)>(getDeviceProcAddr(device, "vkBindBufferMemory2KHR"));
data->BindImageMemory2KHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, uint32_t, const VkBindImageMemoryInfo*)>(getDeviceProcAddr(device, "vkBindImageMemory2KHR"));
data->GetBufferDeviceAddressKHR = reinterpret_cast<VkDeviceAddress(VKAPI_PTR*)(VkDevice, const VkBufferDeviceAddressInfo*)>(getDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR"));
@ -99,6 +115,11 @@ void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction(
data->CmdEndRenderPass2KHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkSubpassEndInfo*)>(getDeviceProcAddr(device, "vkCmdEndRenderPass2KHR"));
data->CmdNextSubpass2KHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkSubpassBeginInfo*, const VkSubpassEndInfo*)>(getDeviceProcAddr(device, "vkCmdNextSubpass2KHR"));
data->CreateRenderPass2KHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkRenderPassCreateInfo2*, const VkAllocationCallbacks*, VkRenderPass*)>(getDeviceProcAddr(device, "vkCreateRenderPass2KHR"));
data->CreateDeferredOperationKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkAllocationCallbacks*, VkDeferredOperationKHR*)>(getDeviceProcAddr(device, "vkCreateDeferredOperationKHR"));
data->DeferredOperationJoinKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR)>(getDeviceProcAddr(device, "vkDeferredOperationJoinKHR"));
data->DestroyDeferredOperationKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, const VkAllocationCallbacks*)>(getDeviceProcAddr(device, "vkDestroyDeferredOperationKHR"));
data->GetDeferredOperationMaxConcurrencyKHR = reinterpret_cast<uint32_t(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR)>(getDeviceProcAddr(device, "vkGetDeferredOperationMaxConcurrencyKHR"));
data->GetDeferredOperationResultKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR)>(getDeviceProcAddr(device, "vkGetDeferredOperationResultKHR"));
data->CreateDescriptorUpdateTemplateKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkDescriptorUpdateTemplateCreateInfo*, const VkAllocationCallbacks*, VkDescriptorUpdateTemplate*)>(getDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR"));
data->DestroyDescriptorUpdateTemplateKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkDescriptorUpdateTemplate, const VkAllocationCallbacks*)>(getDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR"));
data->UpdateDescriptorSetWithTemplateKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, const void*)>(getDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR"));
@ -112,6 +133,13 @@ void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction(
data->GetImageSparseMemoryRequirements2KHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, const VkImageSparseMemoryRequirementsInfo2*, uint32_t*, VkSparseImageMemoryRequirements2*)>(getDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR"));
data->TrimCommandPoolKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkCommandPool, VkCommandPoolTrimFlags)>(getDeviceProcAddr(device, "vkTrimCommandPoolKHR"));
data->GetDescriptorSetLayoutSupportKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, const VkDescriptorSetLayoutCreateInfo*, VkDescriptorSetLayoutSupport*)>(getDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR"));
data->CmdSetRayTracingPipelineStackSizeKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, uint32_t)>(getDeviceProcAddr(device, "vkCmdSetRayTracingPipelineStackSizeKHR"));
data->CmdTraceRaysIndirectKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, VkDeviceAddress)>(getDeviceProcAddr(device, "vkCmdTraceRaysIndirectKHR"));
data->CmdTraceRaysKHR = reinterpret_cast<void(VKAPI_PTR*)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, uint32_t, uint32_t, uint32_t)>(getDeviceProcAddr(device, "vkCmdTraceRaysKHR"));
data->CreateRayTracingPipelinesKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkDeferredOperationKHR, VkPipelineCache, uint32_t, const VkRayTracingPipelineCreateInfoKHR*, const VkAllocationCallbacks*, VkPipeline*)>(getDeviceProcAddr(device, "vkCreateRayTracingPipelinesKHR"));
data->GetRayTracingCaptureReplayShaderGroupHandlesKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkPipeline, uint32_t, uint32_t, size_t, void*)>(getDeviceProcAddr(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"));
data->GetRayTracingShaderGroupHandlesKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkPipeline, uint32_t, uint32_t, size_t, void*)>(getDeviceProcAddr(device, "vkGetRayTracingShaderGroupHandlesKHR"));
data->GetRayTracingShaderGroupStackSizeKHR = reinterpret_cast<VkDeviceSize(VKAPI_PTR*)(VkDevice, VkPipeline, uint32_t, VkShaderGroupShaderKHR)>(getDeviceProcAddr(device, "vkGetRayTracingShaderGroupStackSizeKHR"));
data->CreateSamplerYcbcrConversionKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, const VkSamplerYcbcrConversionCreateInfo*, const VkAllocationCallbacks*, VkSamplerYcbcrConversion*)>(getDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR"));
data->DestroySamplerYcbcrConversionKHR = reinterpret_cast<void(VKAPI_PTR*)(VkDevice, VkSamplerYcbcrConversion, const VkAllocationCallbacks*)>(getDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR"));
data->GetSemaphoreCounterValueKHR = reinterpret_cast<VkResult(VKAPI_PTR*)(VkDevice, VkSemaphore, uint64_t*)>(getDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR"));

519
src/MagnumExternal/Vulkan/flextVk.h vendored

@ -254,6 +254,47 @@ extern "C" {
#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
/* VK_EXT_descriptor_indexing */
#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
/* VK_KHR_deferred_host_operations */
#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4
#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
/* VK_KHR_acceleration_structure */
#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11
#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
/* VK_KHR_pipeline_library */
#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
/* VK_KHR_shader_float_controls */
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
/* VK_KHR_spirv_1_4 */
#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1
#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4"
/* VK_KHR_ray_tracing_pipeline */
#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
#define VK_SHADER_UNUSED_KHR (~0U)
/* VK_KHR_ray_query */
#define VK_KHR_RAY_QUERY_SPEC_VERSION 1
#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query"
/* Data types */
#define VK_MAKE_VERSION(major, minor, patch) \
@ -344,6 +385,9 @@ typedef VkFlags VkDescriptorPoolCreateFlags;
typedef VkFlags VkDescriptorPoolResetFlags;
typedef VkFlags VkDependencyFlags;
typedef VkFlags VkSubgroupFeatureFlags;
typedef VkFlags VkGeometryFlagsKHR;
typedef VkFlags VkBuildAccelerationStructureFlagsKHR;
typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
typedef VkFlags VkSemaphoreWaitFlags;
typedef VkFlags VkPeerMemoryFeatureFlags;
@ -397,6 +441,8 @@ typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
@ -467,7 +513,8 @@ typedef int VkPipelineCacheCreateFlagBits;
typedef int VkPipelineShaderStageCreateFlagBits;
typedef enum {
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 1 << 1
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 1 << 1,
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
} VkDescriptorSetLayoutCreateFlagBits;
typedef enum {
@ -494,7 +541,10 @@ typedef enum {
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 1 << 7,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 1 << 8,
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 1 << 17,
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 1 << 19,
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 1 << 20,
VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 1 << 10
} VkBufferUsageFlagBits;
typedef enum {
@ -568,7 +618,8 @@ typedef enum {
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000
} VkDescriptorType;
typedef enum {
@ -580,7 +631,8 @@ typedef enum {
VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8
VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000
} VkDynamicState;
typedef enum {
@ -903,7 +955,8 @@ typedef enum {
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 1 << 29
} VkFormatFeatureFlagBits;
typedef enum {
@ -1006,7 +1059,8 @@ typedef enum {
typedef enum {
VK_INDEX_TYPE_UINT16 = 0,
VK_INDEX_TYPE_UINT32 = 1,
VK_INDEX_TYPE_UINT8_EXT = 1000265000
VK_INDEX_TYPE_UINT8_EXT = 1000265000,
VK_INDEX_TYPE_NONE_KHR = 1000165000
} VkIndexType;
typedef enum {
@ -1051,7 +1105,9 @@ typedef enum {
VK_ACCESS_HOST_READ_BIT = 1 << 13,
VK_ACCESS_HOST_WRITE_BIT = 1 << 14,
VK_ACCESS_MEMORY_READ_BIT = 1 << 15,
VK_ACCESS_MEMORY_WRITE_BIT = 1 << 16
VK_ACCESS_MEMORY_WRITE_BIT = 1 << 16,
VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 1 << 21,
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 1 << 22
} VkAccessFlagBits;
typedef enum {
@ -1073,7 +1129,8 @@ typedef enum {
typedef enum {
VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
VK_PIPELINE_BIND_POINT_COMPUTE = 1
VK_PIPELINE_BIND_POINT_COMPUTE = 1,
VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000
} VkPipelineBindPoint;
typedef enum {
@ -1084,7 +1141,15 @@ typedef enum {
VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 1 << 4,
VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE
VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 1 << 11,
VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 1 << 14,
VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 1 << 15,
VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 1 << 16,
VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 1 << 17,
VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 1 << 12,
VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 1 << 13,
VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 1 << 19
} VkPipelineCreateFlagBits;
typedef enum {
@ -1129,7 +1194,9 @@ typedef enum {
typedef enum {
VK_QUERY_TYPE_OCCLUSION = 0,
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
VK_QUERY_TYPE_TIMESTAMP = 2
VK_QUERY_TYPE_TIMESTAMP = 2,
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001
} VkQueryType;
typedef enum {
@ -1171,7 +1238,12 @@ typedef enum {
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
VK_THREAD_IDLE_KHR = 1000268000,
VK_THREAD_DONE_KHR = 1000268001,
VK_OPERATION_DEFERRED_KHR = 1000268002,
VK_OPERATION_NOT_DEFERRED_KHR = 1000268003
} VkResult;
typedef enum {
@ -1182,7 +1254,13 @@ typedef enum {
VK_SHADER_STAGE_FRAGMENT_BIT = 1 << 4,
VK_SHADER_STAGE_COMPUTE_BIT = 1 << 5,
VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
VK_SHADER_STAGE_ALL = 0x7FFFFFFF
VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
VK_SHADER_STAGE_RAYGEN_BIT_KHR = 1 << 8,
VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 1 << 9,
VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1 << 10,
VK_SHADER_STAGE_MISS_BIT_KHR = 1 << 11,
VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 1 << 12,
VK_SHADER_STAGE_CALLABLE_BIT_KHR = 1 << 13
} VkShaderStageFlagBits;
typedef enum {
@ -1448,7 +1526,35 @@ typedef enum {
VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009,
VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010,
VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011,
VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020,
VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001,
VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015,
VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016,
VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013
} VkStructureType;
typedef enum {
@ -1503,7 +1609,9 @@ typedef enum {
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 1 << 13,
VK_PIPELINE_STAGE_HOST_BIT = 1 << 14,
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 1 << 15,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 1 << 16
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 1 << 16,
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 1 << 25,
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 1 << 21
} VkPipelineStageFlagBits;
typedef enum {
@ -1528,7 +1636,8 @@ typedef enum {
typedef enum {
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 << 0,
VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 1 << 1
VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 1 << 1,
VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
} VkDescriptorPoolCreateFlagBits;
typedef enum {
@ -1571,7 +1680,9 @@ typedef enum {
VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000
VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,
VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000
} VkObjectType;
typedef enum {
@ -1599,7 +1710,11 @@ typedef enum {
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 << 0,
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 1 << 1,
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 1 << 2,
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 1 << 3
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 1 << 3,
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
} VkDescriptorBindingFlagBits;
typedef enum {
@ -1609,6 +1724,71 @@ typedef enum {
VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE
} VkSemaphoreType;
typedef enum {
VK_GEOMETRY_OPAQUE_BIT_KHR = 1 << 0,
VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 1 << 1
} VkGeometryFlagBitsKHR;
typedef enum {
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 << 0,
VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 1 << 1,
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 1 << 2,
VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 1 << 3,
VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 1 << 4
} VkBuildAccelerationStructureFlagBitsKHR;
typedef enum {
VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1 << 0
} VkAccelerationStructureCreateFlagBitsKHR;
typedef enum {
VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1
} VkBuildAccelerationStructureModeKHR;
typedef enum {
VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0,
VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1,
VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2,
VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3
} VkCopyAccelerationStructureModeKHR;
typedef enum {
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2
} VkAccelerationStructureTypeKHR;
typedef enum {
VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,
VK_GEOMETRY_TYPE_AABBS_KHR = 1,
VK_GEOMETRY_TYPE_INSTANCES_KHR = 2
} VkGeometryTypeKHR;
typedef enum {
VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,
VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,
VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2
} VkRayTracingShaderGroupTypeKHR;
typedef enum {
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2
} VkAccelerationStructureBuildTypeKHR;
typedef enum {
VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0,
VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1
} VkAccelerationStructureCompatibilityKHR;
typedef enum {
VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0,
VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1,
VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2,
VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3
} VkShaderGroupShaderKHR;
typedef enum {
VK_SEMAPHORE_WAIT_ANY_BIT = 1 << 0,
VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT
@ -1660,7 +1840,8 @@ typedef enum {
VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000
} VkDebugReportObjectTypeEXT;
typedef enum {
@ -1833,7 +2014,10 @@ typedef enum {
typedef enum {
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
} VkShaderFloatControlsIndependence;
typedef enum {
@ -3713,6 +3897,8 @@ typedef struct VkPhysicalDeviceFloatControlsProperties {
VkBool32 shaderRoundingModeRTZFloat64;
} VkPhysicalDeviceFloatControlsProperties;
typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
typedef struct VkPhysicalDeviceHostQueryResetFeatures {
VkStructureType sType;
void* pNext;
@ -3766,6 +3952,8 @@ typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
VkBool32 runtimeDescriptorArray;
} VkPhysicalDeviceDescriptorIndexingFeatures;
typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
VkStructureType sType;
void* pNext;
@ -3794,6 +3982,8 @@ typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
} VkPhysicalDeviceDescriptorIndexingProperties;
typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
VkStructureType sType;
const void* pNext;
@ -3801,6 +3991,8 @@ typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
const VkDescriptorBindingFlags* pBindingFlags;
} VkDescriptorSetLayoutBindingFlagsCreateInfo;
typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
VkStructureType sType;
const void* pNext;
@ -3808,12 +4000,16 @@ typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
const uint32_t* pDescriptorCounts;
} VkDescriptorSetVariableDescriptorCountAllocateInfo;
typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
VkStructureType sType;
void* pNext;
uint32_t maxVariableDescriptorCount;
} VkDescriptorSetVariableDescriptorCountLayoutSupport;
typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
typedef struct VkAttachmentDescription2 {
VkStructureType sType;
const void* pNext;
@ -3992,6 +4188,119 @@ typedef struct VkSubpassDescriptionDepthStencilResolve {
const VkAttachmentReference2* pDepthStencilResolveAttachment;
} VkSubpassDescriptionDepthStencilResolve;
typedef struct VkRayTracingShaderGroupCreateInfoKHR {
VkStructureType sType;
const void* pNext;
VkRayTracingShaderGroupTypeKHR type;
uint32_t generalShader;
uint32_t closestHitShader;
uint32_t anyHitShader;
uint32_t intersectionShader;
const void* pShaderGroupCaptureReplayHandle;
} VkRayTracingShaderGroupCreateInfoKHR;
typedef struct VkPipelineLibraryCreateInfoKHR {
VkStructureType sType;
const void* pNext;
uint32_t libraryCount;
const VkPipeline* pLibraries;
} VkPipelineLibraryCreateInfoKHR;
typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
VkStructureType sType;
const void* pNext;
uint32_t maxPipelineRayPayloadSize;
uint32_t maxPipelineRayHitAttributeSize;
} VkRayTracingPipelineInterfaceCreateInfoKHR;
typedef struct VkRayTracingPipelineCreateInfoKHR {
VkStructureType sType;
const void* pNext;
VkPipelineCreateFlags flags;
uint32_t stageCount;
const VkPipelineShaderStageCreateInfo* pStages;
uint32_t groupCount;
const VkRayTracingShaderGroupCreateInfoKHR* pGroups;
uint32_t maxPipelineRayRecursionDepth;
const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;
const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface;
const VkPipelineDynamicStateCreateInfo* pDynamicState;
VkPipelineLayout layout;
VkPipeline basePipelineHandle;
int32_t basePipelineIndex;
} VkRayTracingPipelineCreateInfoKHR;
typedef struct VkWriteDescriptorSetAccelerationStructureKHR {
VkStructureType sType;
const void* pNext;
uint32_t accelerationStructureCount;
const VkAccelerationStructureKHR* pAccelerationStructures;
} VkWriteDescriptorSetAccelerationStructureKHR;
typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 accelerationStructure;
VkBool32 accelerationStructureCaptureReplay;
VkBool32 accelerationStructureIndirectBuild;
VkBool32 accelerationStructureHostCommands;
VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;
} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayTracingPipeline;
VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay;
VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
VkBool32 rayTracingPipelineTraceRaysIndirect;
VkBool32 rayTraversalPrimitiveCulling;
} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
VkStructureType sType;
void* pNext;
VkBool32 rayQuery;
} VkPhysicalDeviceRayQueryFeaturesKHR;
typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR {
VkStructureType sType;
void* pNext;
uint64_t maxGeometryCount;
uint64_t maxInstanceCount;
uint64_t maxPrimitiveCount;
uint32_t maxPerStageDescriptorAccelerationStructures;
uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
uint32_t maxDescriptorSetAccelerationStructures;
uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures;
uint32_t minAccelerationStructureScratchOffsetAlignment;
} VkPhysicalDeviceAccelerationStructurePropertiesKHR;
typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
VkStructureType sType;
void* pNext;
uint32_t shaderGroupHandleSize;
uint32_t maxRayRecursionDepth;
uint32_t maxShaderGroupStride;
uint32_t shaderGroupBaseAlignment;
uint32_t shaderGroupHandleCaptureReplaySize;
uint32_t maxRayDispatchInvocationCount;
uint32_t shaderGroupHandleAlignment;
uint32_t maxRayHitAttributeSize;
} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
typedef struct VkStridedDeviceAddressRegionKHR {
VkDeviceAddress deviceAddress;
VkDeviceSize stride;
VkDeviceSize size;
} VkStridedDeviceAddressRegionKHR;
typedef struct VkTraceRaysIndirectCommandKHR {
uint32_t width;
uint32_t height;
uint32_t depth;
} VkTraceRaysIndirectCommandKHR;
typedef struct VkImageStencilUsageCreateInfo {
VkStructureType sType;
const void* pNext;
@ -4261,6 +4570,132 @@ typedef struct VkPhysicalDeviceVulkan12Properties {
VkSampleCountFlags framebufferIntegerColorSampleCounts;
} VkPhysicalDeviceVulkan12Properties;
typedef union VkDeviceOrHostAddressKHR {
VkDeviceAddress deviceAddress;
void* hostAddress;
} VkDeviceOrHostAddressKHR;
typedef union VkDeviceOrHostAddressConstKHR {
VkDeviceAddress deviceAddress;
const void* hostAddress;
} VkDeviceOrHostAddressConstKHR;
typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
VkStructureType sType;
const void* pNext;
VkFormat vertexFormat;
VkDeviceOrHostAddressConstKHR vertexData;
VkDeviceSize vertexStride;
uint32_t maxVertex;
VkIndexType indexType;
VkDeviceOrHostAddressConstKHR indexData;
VkDeviceOrHostAddressConstKHR transformData;
} VkAccelerationStructureGeometryTrianglesDataKHR;
typedef struct VkAccelerationStructureGeometryAabbsDataKHR {
VkStructureType sType;
const void* pNext;
VkDeviceOrHostAddressConstKHR data;
VkDeviceSize stride;
} VkAccelerationStructureGeometryAabbsDataKHR;
typedef struct VkAccelerationStructureGeometryInstancesDataKHR {
VkStructureType sType;
const void* pNext;
VkBool32 arrayOfPointers;
VkDeviceOrHostAddressConstKHR data;
} VkAccelerationStructureGeometryInstancesDataKHR;
typedef union VkAccelerationStructureGeometryDataKHR {
VkAccelerationStructureGeometryTrianglesDataKHR triangles;
VkAccelerationStructureGeometryAabbsDataKHR aabbs;
VkAccelerationStructureGeometryInstancesDataKHR instances;
} VkAccelerationStructureGeometryDataKHR;
typedef struct VkAccelerationStructureGeometryKHR {
VkStructureType sType;
const void* pNext;
VkGeometryTypeKHR geometryType;
VkAccelerationStructureGeometryDataKHR geometry;
VkGeometryFlagsKHR flags;
} VkAccelerationStructureGeometryKHR;
typedef struct VkAccelerationStructureBuildGeometryInfoKHR {
VkStructureType sType;
const void* pNext;
VkAccelerationStructureTypeKHR type;
VkBuildAccelerationStructureFlagsKHR flags;
VkBuildAccelerationStructureModeKHR mode;
VkAccelerationStructureKHR srcAccelerationStructure;
VkAccelerationStructureKHR dstAccelerationStructure;
uint32_t geometryCount;
const VkAccelerationStructureGeometryKHR* pGeometries;
const VkAccelerationStructureGeometryKHR* const* ppGeometries;
VkDeviceOrHostAddressKHR scratchData;
} VkAccelerationStructureBuildGeometryInfoKHR;
typedef struct VkAccelerationStructureBuildRangeInfoKHR {
uint32_t primitiveCount;
uint32_t primitiveOffset;
uint32_t firstVertex;
uint32_t transformOffset;
} VkAccelerationStructureBuildRangeInfoKHR;
typedef struct VkAccelerationStructureCreateInfoKHR {
VkStructureType sType;
const void* pNext;
VkAccelerationStructureCreateFlagsKHR createFlags;
VkBuffer buffer;
VkDeviceSize offset;
VkDeviceSize size;
VkAccelerationStructureTypeKHR type;
VkDeviceAddress deviceAddress;
} VkAccelerationStructureCreateInfoKHR;
typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
VkStructureType sType;
const void* pNext;
VkAccelerationStructureKHR accelerationStructure;
} VkAccelerationStructureDeviceAddressInfoKHR;
typedef struct VkAccelerationStructureVersionInfoKHR {
VkStructureType sType;
const void* pNext;
const uint8_t* pVersionData;
} VkAccelerationStructureVersionInfoKHR;
typedef struct VkCopyAccelerationStructureInfoKHR {
VkStructureType sType;
const void* pNext;
VkAccelerationStructureKHR src;
VkAccelerationStructureKHR dst;
VkCopyAccelerationStructureModeKHR mode;
} VkCopyAccelerationStructureInfoKHR;
typedef struct VkCopyAccelerationStructureToMemoryInfoKHR {
VkStructureType sType;
const void* pNext;
VkAccelerationStructureKHR src;
VkDeviceOrHostAddressKHR dst;
VkCopyAccelerationStructureModeKHR mode;
} VkCopyAccelerationStructureToMemoryInfoKHR;
typedef struct VkCopyMemoryToAccelerationStructureInfoKHR {
VkStructureType sType;
const void* pNext;
VkDeviceOrHostAddressConstKHR src;
VkAccelerationStructureKHR dst;
VkCopyAccelerationStructureModeKHR mode;
} VkCopyMemoryToAccelerationStructureInfoKHR;
typedef struct VkAccelerationStructureBuildSizesInfoKHR {
VkStructureType sType;
const void* pNext;
VkDeviceSize accelerationStructureSize;
VkDeviceSize updateScratchSize;
VkDeviceSize buildScratchSize;
} VkAccelerationStructureBuildSizesInfoKHR;
/* I'll bite the bullet and expect that vkCreateInstance(),
vkEnumerateInstanceExtensionProperties() and vkEnumerateInstanceLayerProperties()
functions can be loaded statically to avoid the need for a global
@ -4298,6 +4733,9 @@ struct FlextVkInstance {
/* VK_EXT_host_query_reset */
/* VK_KHR_acceleration_structure */
/* VK_KHR_bind_memory2 */
@ -4307,6 +4745,9 @@ struct FlextVkInstance {
/* VK_KHR_create_renderpass2 */
/* VK_KHR_deferred_host_operations */
/* VK_KHR_descriptor_update_template */
@ -4351,6 +4792,9 @@ struct FlextVkInstance {
/* VK_KHR_maintenance3 */
/* VK_KHR_ray_tracing_pipeline */
/* VK_KHR_sampler_ycbcr_conversion */
@ -4422,6 +4866,25 @@ struct FlextVkDevice {
void (VKAPI_PTR *ResetQueryPoolEXT)(VkDevice, VkQueryPool, uint32_t, uint32_t);
/* VK_KHR_acceleration_structure */
VkResult (VKAPI_PTR *BuildAccelerationStructuresKHR)(VkDevice, VkDeferredOperationKHR, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkAccelerationStructureBuildRangeInfoKHR* const*);
void (VKAPI_PTR *CmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkDeviceAddress*, const uint32_t*, const uint32_t* const*);
void (VKAPI_PTR *CmdBuildAccelerationStructuresKHR)(VkCommandBuffer, uint32_t, const VkAccelerationStructureBuildGeometryInfoKHR*, const VkAccelerationStructureBuildRangeInfoKHR* const*);
void (VKAPI_PTR *CmdCopyAccelerationStructureKHR)(VkCommandBuffer, const VkCopyAccelerationStructureInfoKHR*);
void (VKAPI_PTR *CmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR*);
void (VKAPI_PTR *CmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR*);
void (VKAPI_PTR *CmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer, uint32_t, const VkAccelerationStructureKHR*, VkQueryType, VkQueryPool, uint32_t);
VkResult (VKAPI_PTR *CopyAccelerationStructureKHR)(VkDevice, VkDeferredOperationKHR, const VkCopyAccelerationStructureInfoKHR*);
VkResult (VKAPI_PTR *CopyAccelerationStructureToMemoryKHR)(VkDevice, VkDeferredOperationKHR, const VkCopyAccelerationStructureToMemoryInfoKHR*);
VkResult (VKAPI_PTR *CopyMemoryToAccelerationStructureKHR)(VkDevice, VkDeferredOperationKHR, const VkCopyMemoryToAccelerationStructureInfoKHR*);
VkResult (VKAPI_PTR *CreateAccelerationStructureKHR)(VkDevice, const VkAccelerationStructureCreateInfoKHR*, const VkAllocationCallbacks*, VkAccelerationStructureKHR*);
void (VKAPI_PTR *DestroyAccelerationStructureKHR)(VkDevice, VkAccelerationStructureKHR, const VkAllocationCallbacks*);
void (VKAPI_PTR *GetAccelerationStructureBuildSizesKHR)(VkDevice, VkAccelerationStructureBuildTypeKHR, const VkAccelerationStructureBuildGeometryInfoKHR*, const uint32_t*, VkAccelerationStructureBuildSizesInfoKHR*);
VkDeviceAddress (VKAPI_PTR *GetAccelerationStructureDeviceAddressKHR)(VkDevice, const VkAccelerationStructureDeviceAddressInfoKHR*);
void (VKAPI_PTR *GetDeviceAccelerationStructureCompatibilityKHR)(VkDevice, const VkAccelerationStructureVersionInfoKHR*, VkAccelerationStructureCompatibilityKHR*);
VkResult (VKAPI_PTR *WriteAccelerationStructuresPropertiesKHR)(VkDevice, uint32_t, const VkAccelerationStructureKHR*, VkQueryType, size_t, void*, size_t);
/* VK_KHR_bind_memory2 */
VkResult (VKAPI_PTR *BindBufferMemory2KHR)(VkDevice, uint32_t, const VkBindBufferMemoryInfo*);
@ -4440,6 +4903,14 @@ struct FlextVkDevice {
void (VKAPI_PTR *CmdNextSubpass2KHR)(VkCommandBuffer, const VkSubpassBeginInfo*, const VkSubpassEndInfo*);
VkResult (VKAPI_PTR *CreateRenderPass2KHR)(VkDevice, const VkRenderPassCreateInfo2*, const VkAllocationCallbacks*, VkRenderPass*);
/* VK_KHR_deferred_host_operations */
VkResult (VKAPI_PTR *CreateDeferredOperationKHR)(VkDevice, const VkAllocationCallbacks*, VkDeferredOperationKHR*);
VkResult (VKAPI_PTR *DeferredOperationJoinKHR)(VkDevice, VkDeferredOperationKHR);
void (VKAPI_PTR *DestroyDeferredOperationKHR)(VkDevice, VkDeferredOperationKHR, const VkAllocationCallbacks*);
uint32_t (VKAPI_PTR *GetDeferredOperationMaxConcurrencyKHR)(VkDevice, VkDeferredOperationKHR);
VkResult (VKAPI_PTR *GetDeferredOperationResultKHR)(VkDevice, VkDeferredOperationKHR);
/* VK_KHR_descriptor_update_template */
VkResult (VKAPI_PTR *CreateDescriptorUpdateTemplateKHR)(VkDevice, const VkDescriptorUpdateTemplateCreateInfo*, const VkAllocationCallbacks*, VkDescriptorUpdateTemplate*);
@ -4486,6 +4957,16 @@ struct FlextVkDevice {
void (VKAPI_PTR *GetDescriptorSetLayoutSupportKHR)(VkDevice, const VkDescriptorSetLayoutCreateInfo*, VkDescriptorSetLayoutSupport*);
/* VK_KHR_ray_tracing_pipeline */
void (VKAPI_PTR *CmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer, uint32_t);
void (VKAPI_PTR *CmdTraceRaysIndirectKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, VkDeviceAddress);
void (VKAPI_PTR *CmdTraceRaysKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, const VkStridedDeviceAddressRegionKHR*, uint32_t, uint32_t, uint32_t);
VkResult (VKAPI_PTR *CreateRayTracingPipelinesKHR)(VkDevice, VkDeferredOperationKHR, VkPipelineCache, uint32_t, const VkRayTracingPipelineCreateInfoKHR*, const VkAllocationCallbacks*, VkPipeline*);
VkResult (VKAPI_PTR *GetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice, VkPipeline, uint32_t, uint32_t, size_t, void*);
VkResult (VKAPI_PTR *GetRayTracingShaderGroupHandlesKHR)(VkDevice, VkPipeline, uint32_t, uint32_t, size_t, void*);
VkDeviceSize (VKAPI_PTR *GetRayTracingShaderGroupStackSizeKHR)(VkDevice, VkPipeline, uint32_t, VkShaderGroupShaderKHR);
/* VK_KHR_sampler_ycbcr_conversion */
VkResult (VKAPI_PTR *CreateSamplerYcbcrConversionKHR)(VkDevice, const VkSamplerYcbcrConversionCreateInfo*, const VkAllocationCallbacks*, VkSamplerYcbcrConversion*);

46
src/MagnumExternal/Vulkan/flextVkGlobal.h vendored

@ -54,6 +54,9 @@ extern FLEXTVK_EXPORT FlextVkInstance flextVkInstance;
/* VK_EXT_host_query_reset */
/* VK_KHR_acceleration_structure */
/* VK_KHR_bind_memory2 */
@ -63,6 +66,9 @@ extern FLEXTVK_EXPORT FlextVkInstance flextVkInstance;
/* VK_KHR_create_renderpass2 */
/* VK_KHR_deferred_host_operations */
/* VK_KHR_descriptor_update_template */
@ -107,6 +113,9 @@ extern FLEXTVK_EXPORT FlextVkInstance flextVkInstance;
/* VK_KHR_maintenance3 */
/* VK_KHR_ray_tracing_pipeline */
/* VK_KHR_sampler_ycbcr_conversion */
@ -174,6 +183,25 @@ extern FLEXTVK_EXPORT FlextVkDevice flextVkDevice;
#define vkResetQueryPoolEXT flextVkDevice.ResetQueryPoolEXT
/* VK_KHR_acceleration_structure */
#define vkBuildAccelerationStructuresKHR flextVkDevice.BuildAccelerationStructuresKHR
#define vkCmdBuildAccelerationStructuresIndirectKHR flextVkDevice.CmdBuildAccelerationStructuresIndirectKHR
#define vkCmdBuildAccelerationStructuresKHR flextVkDevice.CmdBuildAccelerationStructuresKHR
#define vkCmdCopyAccelerationStructureKHR flextVkDevice.CmdCopyAccelerationStructureKHR
#define vkCmdCopyAccelerationStructureToMemoryKHR flextVkDevice.CmdCopyAccelerationStructureToMemoryKHR
#define vkCmdCopyMemoryToAccelerationStructureKHR flextVkDevice.CmdCopyMemoryToAccelerationStructureKHR
#define vkCmdWriteAccelerationStructuresPropertiesKHR flextVkDevice.CmdWriteAccelerationStructuresPropertiesKHR
#define vkCopyAccelerationStructureKHR flextVkDevice.CopyAccelerationStructureKHR
#define vkCopyAccelerationStructureToMemoryKHR flextVkDevice.CopyAccelerationStructureToMemoryKHR
#define vkCopyMemoryToAccelerationStructureKHR flextVkDevice.CopyMemoryToAccelerationStructureKHR
#define vkCreateAccelerationStructureKHR flextVkDevice.CreateAccelerationStructureKHR
#define vkDestroyAccelerationStructureKHR flextVkDevice.DestroyAccelerationStructureKHR
#define vkGetAccelerationStructureBuildSizesKHR flextVkDevice.GetAccelerationStructureBuildSizesKHR
#define vkGetAccelerationStructureDeviceAddressKHR flextVkDevice.GetAccelerationStructureDeviceAddressKHR
#define vkGetDeviceAccelerationStructureCompatibilityKHR flextVkDevice.GetDeviceAccelerationStructureCompatibilityKHR
#define vkWriteAccelerationStructuresPropertiesKHR flextVkDevice.WriteAccelerationStructuresPropertiesKHR
/* VK_KHR_bind_memory2 */
#define vkBindBufferMemory2KHR flextVkDevice.BindBufferMemory2KHR
@ -192,6 +220,14 @@ extern FLEXTVK_EXPORT FlextVkDevice flextVkDevice;
#define vkCmdNextSubpass2KHR flextVkDevice.CmdNextSubpass2KHR
#define vkCreateRenderPass2KHR flextVkDevice.CreateRenderPass2KHR
/* VK_KHR_deferred_host_operations */
#define vkCreateDeferredOperationKHR flextVkDevice.CreateDeferredOperationKHR
#define vkDeferredOperationJoinKHR flextVkDevice.DeferredOperationJoinKHR
#define vkDestroyDeferredOperationKHR flextVkDevice.DestroyDeferredOperationKHR
#define vkGetDeferredOperationMaxConcurrencyKHR flextVkDevice.GetDeferredOperationMaxConcurrencyKHR
#define vkGetDeferredOperationResultKHR flextVkDevice.GetDeferredOperationResultKHR
/* VK_KHR_descriptor_update_template */
#define vkCreateDescriptorUpdateTemplateKHR flextVkDevice.CreateDescriptorUpdateTemplateKHR
@ -238,6 +274,16 @@ extern FLEXTVK_EXPORT FlextVkDevice flextVkDevice;
#define vkGetDescriptorSetLayoutSupportKHR flextVkDevice.GetDescriptorSetLayoutSupportKHR
/* VK_KHR_ray_tracing_pipeline */
#define vkCmdSetRayTracingPipelineStackSizeKHR flextVkDevice.CmdSetRayTracingPipelineStackSizeKHR
#define vkCmdTraceRaysIndirectKHR flextVkDevice.CmdTraceRaysIndirectKHR
#define vkCmdTraceRaysKHR flextVkDevice.CmdTraceRaysKHR
#define vkCreateRayTracingPipelinesKHR flextVkDevice.CreateRayTracingPipelinesKHR
#define vkGetRayTracingCaptureReplayShaderGroupHandlesKHR flextVkDevice.GetRayTracingCaptureReplayShaderGroupHandlesKHR
#define vkGetRayTracingShaderGroupHandlesKHR flextVkDevice.GetRayTracingShaderGroupHandlesKHR
#define vkGetRayTracingShaderGroupStackSizeKHR flextVkDevice.GetRayTracingShaderGroupStackSizeKHR
/* VK_KHR_sampler_ycbcr_conversion */
#define vkCreateSamplerYcbcrConversionKHR flextVkDevice.CreateSamplerYcbcrConversionKHR

Loading…
Cancel
Save