vulkan-3.24.5: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_acceleration_structure

Description

Name

VK_KHR_acceleration_structure - device extension

VK_KHR_acceleration_structure

Name String
VK_KHR_acceleration_structure
Extension Type
Device extension
Registered Extension Number
151
Revision
13
Extension and Version Dependencies
  • Requires support for Vulkan 1.1
  • Requires VK_EXT_descriptor_indexing to be enabled for any device-level functionality
  • Requires VK_KHR_buffer_device_address to be enabled for any device-level functionality
  • Requires VK_KHR_deferred_host_operations to be enabled for any device-level functionality
Contact

Other Extension Metadata

Last Modified Date
2021-09-30
Contributors
  • Samuel Bourasseau, Adobe
  • Matthäus Chajdas, AMD
  • Greg Grebe, AMD
  • Nicolai Hähnle, AMD
  • Tobias Hector, AMD
  • Dave Oldcorn, AMD
  • Skyler Saleh, AMD
  • Mathieu Robart, Arm
  • Marius Bjorge, Arm
  • Tom Olson, Arm
  • Sebastian Tafuri, EA
  • Henrik Rydgard, Embark
  • Juan Cañada, Epic Games
  • Patrick Kelly, Epic Games
  • Yuriy O’Donnell, Epic Games
  • Michael Doggett, Facebook/Oculus
  • Ricardo Garcia, Igalia
  • Andrew Garrard, Imagination
  • Don Scorgie, Imagination
  • Dae Kim, Imagination
  • Joshua Barczak, Intel
  • Slawek Grajewski, Intel
  • Jeff Bolz, NVIDIA
  • Pascal Gautron, NVIDIA
  • Daniel Koch, NVIDIA
  • Christoph Kubisch, NVIDIA
  • Ashwin Lele, NVIDIA
  • Robert Stepinski, NVIDIA
  • Martin Stich, NVIDIA
  • Nuno Subtil, NVIDIA
  • Eric Werness, NVIDIA
  • Jon Leech, Khronos
  • Jeroen van Schijndel, OTOY
  • Juul Joosten, OTOY
  • Alex Bourd, Qualcomm
  • Roman Larionov, Qualcomm
  • David McAllister, Qualcomm
  • Lewis Gordon, Samsung
  • Ralph Potter, Samsung
  • Jasper Bekkers, Traverse Research
  • Jesse Barker, Unity
  • Baldur Karlsson, Valve

Description

In order to be efficient, rendering techniques such as ray tracing need a quick way to identify which primitives may be intersected by a ray traversing the geometries. Acceleration structures are the most common way to represent the geometry spatially sorted, in order to quickly identify such potential intersections.

This extension adds new functionalities:

  • Acceleration structure objects and build commands
  • Structures to describe geometry inputs to acceleration structure builds
  • Acceleration structure copy commands

New Object Types

New Commands

New Structures

New Unions

New Enums

New Bitmasks

New Enum Constants

If VK_KHR_format_feature_flags2 is supported:

Issues

  1. How does this extension differ from VK_NV_ray_tracing?

DISCUSSION:

The following is a summary of the main functional differences between VK_KHR_acceleration_structure and VK_NV_ray_tracing:

  1. Can you give a more detailed comparison of differences and similarities between VK_NV_ray_tracing and VK_KHR_acceleration_structure?

DISCUSSION:

The following is a more detailed comparison of which commands, structures, and enums are aliased, changed, or removed.

  1. What are the changes between the public provisional (VK_KHR_ray_tracing v8) release and the internal provisional (VK_KHR_ray_tracing v9) release?
  1. What are the changes between the internal provisional (VK_KHR_ray_tracing v9) release and the final (VK_KHR_acceleration_structure v11) release?
  1. What is ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR for?

RESOLVED: It is primarily intended for API layering. In DXR, the acceleration structure is basically just a buffer in a special layout, and you do not know at creation time whether it will be used as a top or bottom level acceleration structure. We thus added a generic acceleration structure type whose type is unknown at creation time, but is specified at build time instead. Applications which are written directly for Vulkan should not use it.

Version History

  • Revision 1, 2019-12-05 (Members of the Vulkan Ray Tracing TSG)

    • Internal revisions (forked from VK_NV_ray_tracing)
  • Revision 2, 2019-12-20 (Daniel Koch, Eric Werness)

    • Add const version of DeviceOrHostAddress (!3515)
    • Add VU to clarify that only handles in the current pipeline are valid (!3518)
    • Restore some missing VUs and add in-place update language (#1902, !3522)
    • rename VkAccelerationStructureInstanceKHR member from accelerationStructure to accelerationStructureReference to better match its type (!3523)
    • Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline creation if shader group handles cannot be reused (!3523)
    • update documentation for the VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add missing documentation for new return codes from VK_KHR_deferred_host_operations (!3523)
    • list new query types for VK_KHR_ray_tracing (!3523)
    • Fix VU statements for VkAccelerationStructureGeometryKHR referring to correct union members and update to use more current wording (!3523)
  • Revision 3, 2020-01-10 (Daniel Koch, Jon Leech, Christoph Kubisch)

    • Fix 'instance of' and 'that/which contains/defines' markup issues (!3528)
    • factor out VK_KHR_pipeline_library as stand-alone extension (!3540)
    • Resolve Vulkan-hpp issues (!3543)

      • add missing require for VkGeometryInstanceFlagsKHR
      • de-alias VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV since the KHR structure is no longer equivalent
      • add len to pDataSize attribute for vkWriteAccelerationStructuresPropertiesKHR
  • Revision 4, 2020-01-23 (Daniel Koch, Eric Werness)

    • Improve vkWriteAccelerationStructuresPropertiesKHR, add return value and VUs (#1947)
    • Clarify language to allow multiple raygen shaders (#1959)
    • Various editorial feedback (!3556)
    • Add language to help deal with looped self-intersecting fans (#1901)
    • Change vkCmdTraceRays{,Indirect}KHR args to pointers (!3559)
    • Add scratch address validation language (#1941, !3551)
    • Fix definition and add hierarchy information for shader call scope (#1977, !3571)
  • Revision 5, 2020-02-04 (Eric Werness, Jeff Bolz, Daniel Koch)

    • remove vestigial accelerationStructureUUID (!3582)
    • update definition of repack instructions and improve memory model interactions (#1910, #1913, !3584)
    • Fix wrong sType for VkPhysicalDeviceRayTracingFeaturesKHR (#1988)
    • Use provisional SPIR-V capabilities (#1987)
    • require rayTraversalPrimitiveCulling if rayQuery is supported (#1927)
    • Miss shaders do not have object parameters (!3592)
    • Fix missing required types in XML (!3592)
    • clarify matching conditions for update (!3592)
    • add goal that host and device builds be similar (!3592)
    • clarify that maxPrimitiveCount limit should apply to triangles and AABBs (!3592)
    • Require alignment for instance arrayOfPointers (!3592)
    • Zero is a valid value for instance flags (!3592)
    • Add some alignment VUs that got lost in refactoring (!3592)
    • Recommend TMin epsilon rather than culling (!3592)
    • Get angle from dot product not cross product (!3592)
    • Clarify that AH can access the payload and attributes (!3592)
    • Match DXR behavior for inactive primitive definition (!3592)
    • Use a more generic term than degenerate for inactive to avoid confusion (!3592)
  • Revision 6, 2020-02-20 (Daniel Koch)

    • fix some dangling NV references (#1996)
    • rename VkCmdTraceRaysIndirectCommandKHR to VkTraceRaysIndirectCommandKHR (!3607)
    • update contributor list (!3611)
    • use uint64_t instead of VkAccelerationStructureReferenceKHR in VkAccelerationStructureInstanceKHR (#2004)
  • Revision 7, 2020-02-28 (Tobias Hector)

    • remove HitTKHR SPIR-V builtin (spirv/spirv-extensions#7)
  • Revision 8, 2020-03-06 (Tobias Hector, Dae Kim, Daniel Koch, Jeff Bolz, Eric Werness)

    • explicitly state that Tmax is updated when new closest intersection is accepted (#2020,!3536)
    • Made references to min and max t values consistent (!3644)
    • finish enumerating differences relative to VK_NV_ray_tracing in issues (1) and (2) (#1974,!3642)
    • fix formatting in some math equations (!3642)
    • Restrict the Hit Kind operand of OpReportIntersectionKHR to 7-bits (spirv/spirv-extensions#8,!3646)
    • Say ray tracing 'should' be watertight (#2008,!3631)
    • Clarify memory requirements for ray tracing buffers (#2005,!3649)
    • Add callable size limits (#1997,!3652)
  • Revision 9, 2020-04-15 (Eric Werness, Daniel Koch, Tobias Hector, Joshua Barczak)

    • Add geometry flags to acceleration structure creation (!3672)
    • add build scratch memory alignment (minAccelerationStructureScratchOffsetAlignment) (#2065,!3725)
    • fix naming and return enum from vkGetDeviceAccelerationStructureCompatibilityKHR (#2051,!3726)
    • require SPIR-V 1.4 (#2096,!3777)
    • added creation time capture/replay flags (#2104,!3774)
    • require Vulkan 1.1 (#2133,!3806)
    • use device addresses instead of VkBuffers for ray tracing commands (#2074,!3815)
    • add interactions with Vulkan 1.2 and VK_KHR_vulkan_memory_model (#2133,!3830)
    • make VK_KHR_pipeline_library an interaction instead of required (2108,!3830)
    • make VK_KHR_deferred_host_operations an interaction instead of required (#2045,!3830)
    • removed maxCallableSize and added explicit stack size management for ray pipelines (#1997,!3817,!3772,!3844)
    • improved documentation for VkAccelerationStructureVersionInfoKHR (#2135,3835)
    • rename VkAccelerationStructureBuildOffsetInfoKHR to VkAccelerationStructureBuildRangeInfoKHR (#2058,!3754)
    • Re-unify geometry description between build and create (!3754)
    • Fix ppGeometries ambiguity, add pGeometries (#2032,!3811)
    • add interactions with VK_EXT_robustness2 and allow nullDescriptor support for acceleration structures (#1920,!3848)
    • added future extensibility for AS updates (#2114,!3849)
    • Fix VU for dispatchrays and add a limit on the size of the full grid (#2160,!3851)
    • Add shaderGroupHandleAlignment property (#2180,!3875)
    • Clarify deferred host ops for pipeline creation (#2067,!3813)
    • Change acceleration structure build to always be sized (2197,#2198,!3854,!3883,!3880)
  • Revision 10, 2020-07-03 (Mathieu Robart, Daniel Koch, Eric Werness, Tobias Hector)

    • Decomposition of the specification, from VK_KHR_ray_tracing to VK_KHR_acceleration_structure (#1918,!3912)
    • clarify buffer usage flags for ray tracing (#2181,!3939)
    • add max primitive counts to build indirect command (#2233,!3944)
    • Allocate acceleration structures from VkBuffers and add a mode to constrain the device address (#2131,!3936)
    • Move VK_GEOMETRY_TYPE_INSTANCES_KHR to main enum (#2243,!3952)
    • make build commands more consistent (#2247,!3958)
    • add interactions with UPDATE_AFTER_BIND (#2128,!3986)
    • correct and expand build command VUs (!4020)
    • fix copy command VUs (!4018)
    • added various alignment requirements (#2229,!3943)
    • fix valid usage for arrays of geometryCount items (#2198,!4010)
    • define what is allowed to change on RTAS updates and relevant VUs (#2177,!3961)
  • Revision 11, 2020-11-12 (Eric Werness, Josh Barczak, Daniel Koch, Tobias Hector)

    • de-alias NV and KHR acceleration structure types and associated commands (#2271,!4035)
    • specify alignment for host copy commands (#2273,!4037)
    • document FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
    • specify that acceleration structures are non-linear (#2289,!4068)
    • add several missing VUs for strides, vertexFormat, and indexType (#2315,!4069)
    • restore VUs for VkAccelerationStructureBuildGeometryInfoKHR (#2337,!4098)
    • ban multi-instance memory for host operations (#2324,!4102)
    • allow dstAccelerationStructure to be null for vkGetAccelerationStructureBuildSizesKHR (#2330,!4111)
    • more build VU cleanup (4130)
    • specify host endianness for AS serialization (#2261,!4136)
    • add invertible transform matrix VU (#1710,!4140)
    • require geometryCount to be 1 for TLAS builds (!4145)
    • improved validity conditions for build addresses (#4142)
    • add single statement SPIR-V VUs, build limit VUs (!4158)
    • document limits for vertex and aabb strides (#2390,!4184)
    • specify that PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR applies to AS copies (4173)
    • define sync for AS build inputs and indirect buffer (#2407,!4208)
  • Revision 12, 2021-08-06 (Samuel Bourasseau)

    • rename VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR to VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR (keep previous as alias).
    • Clarify description and add note.
  • Revision 13, 2021-09-30 (Jon Leech)

    • Add interaction with VK_KHR_format_feature_flags2 to vk.xml

See Also

AabbPositionsKHR, AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildRangeInfoKHR, AccelerationStructureBuildSizesInfoKHR, AccelerationStructureBuildTypeKHR, AccelerationStructureCompatibilityKHR, AccelerationStructureCreateFlagBitsKHR, AccelerationStructureCreateFlagsKHR, AccelerationStructureCreateInfoKHR, AccelerationStructureDeviceAddressInfoKHR, AccelerationStructureGeometryAabbsDataKHR, AccelerationStructureGeometryDataKHR, AccelerationStructureGeometryInstancesDataKHR, AccelerationStructureGeometryKHR, AccelerationStructureGeometryTrianglesDataKHR, AccelerationStructureInstanceKHR, AccelerationStructureKHR, AccelerationStructureTypeKHR, AccelerationStructureVersionInfoKHR, BuildAccelerationStructureFlagBitsKHR, BuildAccelerationStructureFlagsKHR, BuildAccelerationStructureModeKHR, CopyAccelerationStructureInfoKHR, CopyAccelerationStructureModeKHR, CopyAccelerationStructureToMemoryInfoKHR, CopyMemoryToAccelerationStructureInfoKHR, DeviceOrHostAddressConstKHR, DeviceOrHostAddressKHR, GeometryFlagBitsKHR, GeometryFlagsKHR, GeometryInstanceFlagBitsKHR, GeometryInstanceFlagsKHR, GeometryTypeKHR, PhysicalDeviceAccelerationStructureFeaturesKHR, PhysicalDeviceAccelerationStructurePropertiesKHR, TransformMatrixKHR, WriteDescriptorSetAccelerationStructureKHR, buildAccelerationStructuresKHR, cmdBuildAccelerationStructuresIndirectKHR, cmdBuildAccelerationStructuresKHR, cmdCopyAccelerationStructureKHR, cmdCopyAccelerationStructureToMemoryKHR, cmdCopyMemoryToAccelerationStructureKHR, cmdWriteAccelerationStructuresPropertiesKHR, copyAccelerationStructureKHR, copyAccelerationStructureToMemoryKHR, copyMemoryToAccelerationStructureKHR, createAccelerationStructureKHR, destroyAccelerationStructureKHR, getAccelerationStructureBuildSizesKHR, getAccelerationStructureDeviceAddressKHR, getDeviceAccelerationStructureCompatibilityKHR, writeAccelerationStructuresPropertiesKHR

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

destroyAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the acceleration structure.

-> AccelerationStructureKHR

accelerationStructure is the acceleration structure to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyAccelerationStructureKHR - Destroy an acceleration structure object

Valid Usage

  • All submitted commands that refer to accelerationStructure must have completed execution
  • If AllocationCallbacks were provided when accelerationStructure was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when accelerationStructure was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If accelerationStructure is not NULL_HANDLE, accelerationStructure must be a valid AccelerationStructureKHR handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If accelerationStructure is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to accelerationStructure must be externally synchronized

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, AllocationCallbacks, Device

cmdCopyAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> CopyAccelerationStructureInfoKHR

pInfo is a pointer to a CopyAccelerationStructureInfoKHR structure defining the copy operation.

-> io () 

vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure

Description

This command copies the pInfo->src acceleration structure to the pInfo->dst acceleration structure in the manner specified by pInfo->mode.

Accesses to pInfo->src and pInfo->dst must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR or ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR as appropriate.

Valid Usage

  • The buffer used to create pInfo->src must be bound to device memory
  • The buffer used to create pInfo->dst must be bound to device memory

Valid Usage (Implicit)

  • pInfo must be a valid pointer to a valid CopyAccelerationStructureInfoKHR structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, CommandBuffer, CopyAccelerationStructureInfoKHR

copyAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device which owns the acceleration structures.

-> DeferredOperationKHR

deferredOperation is an optional DeferredOperationKHR to request deferral for this command.

-> CopyAccelerationStructureInfoKHR

pInfo is a pointer to a CopyAccelerationStructureInfoKHR structure defining the copy operation.

-> io Result 

vkCopyAccelerationStructureKHR - Copy an acceleration structure on the host

Description

This command fulfills the same task as cmdCopyAccelerationStructureKHR but is executed by the host.

Valid Usage

  • Any previous deferred operation that was associated with deferredOperation must be complete
  • The buffer used to create pInfo->src must be bound to host-visible device memory
  • The buffer used to create pInfo->dst must be bound to host-visible device memory
  • The ::accelerationStructureHostCommands feature must be enabled
  • The buffer used to create pInfo->src must be bound to memory that was not allocated with multiple instances
  • The buffer used to create pInfo->dst must be bound to memory that was not allocated with multiple instances

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, CopyAccelerationStructureInfoKHR, DeferredOperationKHR, Device

cmdCopyAccelerationStructureToMemoryKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> CopyAccelerationStructureToMemoryInfoKHR

pInfo is an a pointer to a CopyAccelerationStructureToMemoryInfoKHR structure defining the copy operation.

-> io () 

vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory

Description

Accesses to pInfo->src must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR. Accesses to the buffer indicated by pInfo->dst.deviceAddress must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_TRANSFER_WRITE_BIT.

This command produces the same results as copyAccelerationStructureToMemoryKHR, but writes its result to a device address, and is executed on the device rather than the host. The output may not necessarily be bit-for-bit identical, but it can be equally used by either cmdCopyMemoryToAccelerationStructureKHR or copyMemoryToAccelerationStructureKHR.

The defined header structure for the serialized data consists of:

The corresponding handles matching the values returned by getAccelerationStructureDeviceAddressKHR or getAccelerationStructureHandleNV are tightly packed in the buffer following the count. The application is expected to store a mapping between those handles and the original application-generated bottom-level acceleration structures to provide when deserializing. The serialized data is written to the buffer (or read from the buffer) according to the host endianness.

Valid Usage

  • pInfo->dst.deviceAddress must be a valid device address for a buffer bound to device memory
  • pInfo->dst.deviceAddress must be aligned to 256 bytes
  • If the buffer pointed to by pInfo->dst.deviceAddress is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The buffer used to create pInfo->src must be bound to device memory

Valid Usage (Implicit)

  • pInfo must be a valid pointer to a valid CopyAccelerationStructureToMemoryInfoKHR structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, CommandBuffer, CopyAccelerationStructureToMemoryInfoKHR

copyAccelerationStructureToMemoryKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device which owns pInfo->src.

-> DeferredOperationKHR

deferredOperation is an optional DeferredOperationKHR to request deferral for this command.

-> CopyAccelerationStructureToMemoryInfoKHR

pInfo is a pointer to a CopyAccelerationStructureToMemoryInfoKHR structure defining the copy operation.

-> io Result 

vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host

Description

This command fulfills the same task as cmdCopyAccelerationStructureToMemoryKHR but is executed by the host.

This command produces the same results as cmdCopyAccelerationStructureToMemoryKHR, but writes its result directly to a host pointer, and is executed on the host rather than the device. The output may not necessarily be bit-for-bit identical, but it can be equally used by either cmdCopyMemoryToAccelerationStructureKHR or copyMemoryToAccelerationStructureKHR.

Valid Usage

  • Any previous deferred operation that was associated with deferredOperation must be complete
  • The buffer used to create pInfo->src must be bound to host-visible device memory
  • pInfo->dst.hostAddress must be a valid host pointer
  • pInfo->dst.hostAddress must be aligned to 16 bytes
  • The ::accelerationStructureHostCommands feature must be enabled
  • The buffer used to create pInfo->src must be bound to memory that was not allocated with multiple instances

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, CopyAccelerationStructureToMemoryInfoKHR, DeferredOperationKHR, Device

cmdCopyMemoryToAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> CopyMemoryToAccelerationStructureInfoKHR

pInfo is a pointer to a CopyMemoryToAccelerationStructureInfoKHR structure defining the copy operation.

-> io () 

vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure

Description

Accesses to pInfo->dst must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR. Accesses to the buffer indicated by pInfo->src.deviceAddress must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_TRANSFER_READ_BIT.

This command can accept acceleration structures produced by either cmdCopyAccelerationStructureToMemoryKHR or copyAccelerationStructureToMemoryKHR.

The structure provided as input to deserialize is as described in cmdCopyAccelerationStructureToMemoryKHR, with any acceleration structure handles filled in with the newly-queried handles to bottom level acceleration structures created before deserialization. These do not need to be built at deserialize time, but must be created.

Valid Usage

  • pInfo->src.deviceAddress must be a valid device address for a buffer bound to device memory
  • pInfo->src.deviceAddress must be aligned to 256 bytes
  • If the buffer pointed to by pInfo->src.deviceAddress is non-sparse then it must be bound completely and contiguously to a single DeviceMemory object
  • The buffer used to create pInfo->dst must be bound to device memory

Valid Usage (Implicit)

  • pInfo must be a valid pointer to a valid CopyMemoryToAccelerationStructureInfoKHR structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, CommandBuffer, CopyMemoryToAccelerationStructureInfoKHR

copyMemoryToAccelerationStructureKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device which owns pInfo->dst.

-> DeferredOperationKHR

deferredOperation is an optional DeferredOperationKHR to request deferral for this command.

-> CopyMemoryToAccelerationStructureInfoKHR

pInfo is a pointer to a CopyMemoryToAccelerationStructureInfoKHR structure defining the copy operation.

-> io Result 

vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host

Description

This command fulfills the same task as cmdCopyMemoryToAccelerationStructureKHR but is executed by the host.

This command can accept acceleration structures produced by either cmdCopyAccelerationStructureToMemoryKHR or copyAccelerationStructureToMemoryKHR.

Valid Usage

  • Any previous deferred operation that was associated with deferredOperation must be complete
  • pInfo->src.hostAddress must be a valid host pointer
  • pInfo->src.hostAddress must be aligned to 16 bytes
  • The buffer used to create pInfo->dst must be bound to host-visible device memory
  • The ::accelerationStructureHostCommands feature must be enabled
  • The buffer used to create pInfo->dst must be bound to memory that was not allocated with multiple instances

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, CopyMemoryToAccelerationStructureInfoKHR, DeferredOperationKHR, Device

cmdWriteAccelerationStructuresPropertiesKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("accelerationStructures" ::: Vector AccelerationStructureKHR)

pAccelerationStructures is a pointer to an array of existing previously built acceleration structures.

-> QueryType

queryType is a QueryType value specifying the type of queries managed by the pool.

-> QueryPool

queryPool is the query pool that will manage the results of the query.

-> ("firstQuery" ::: Word32)

firstQuery is the first query index within the query pool that will contain the accelerationStructureCount number of results.

-> io () 

vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results.

Description

Accesses to any of the acceleration structures listed in pAccelerationStructures must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR.

Valid Usage

  • queryPool must have been created with a queryType matching queryType

Valid Usage (Implicit)

  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid AccelerationStructureKHR handles
  • queryType must be a valid QueryType value
  • queryPool must be a valid QueryPool handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope
  • accelerationStructureCount must be greater than 0
  • Each of commandBuffer, queryPool, and the elements of pAccelerationStructures must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, CommandBuffer, QueryPool, QueryType

writeAccelerationStructuresPropertiesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device which owns the acceleration structures in pAccelerationStructures.

-> ("accelerationStructures" ::: Vector AccelerationStructureKHR)

pAccelerationStructures is a pointer to an array of existing previously built acceleration structures.

-> QueryType

queryType is a QueryType value specifying the property to be queried.

-> ("dataSize" ::: Word64)

dataSize is the size in bytes of the buffer pointed to by pData.

-> ("data" ::: Ptr ())

pData is a pointer to a user-allocated buffer where the results will be written.

-> ("stride" ::: Word64)

stride is the stride in bytes between results for individual queries within pData.

-> io () 

vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host

Description

This command fulfills the same task as cmdWriteAccelerationStructuresPropertiesKHR but is executed by the host.

Valid Usage

  • All acceleration structures in pAccelerationStructures must have been built prior to the execution of this command

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid AccelerationStructureKHR handles
  • queryType must be a valid QueryType value
  • pData must be a valid pointer to an array of dataSize bytes
  • accelerationStructureCount must be greater than 0
  • dataSize must be greater than 0
  • Each element of pAccelerationStructures must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, Device, QueryType

getDeviceAccelerationStructureCompatibilityKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the device to check the version against.

-> AccelerationStructureVersionInfoKHR

pVersionInfo is a pointer to a AccelerationStructureVersionInfoKHR structure specifying version information to check against the device.

-> io AccelerationStructureCompatibilityKHR 

vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

See Also

VK_KHR_acceleration_structure, AccelerationStructureCompatibilityKHR, AccelerationStructureVersionInfoKHR, Device

createAccelerationStructureKHR Source #

Arguments

:: forall a io. (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io) 
=> Device

device is the logical device that creates the acceleration structure object.

-> AccelerationStructureCreateInfoKHR a

pCreateInfo is a pointer to a AccelerationStructureCreateInfoKHR structure containing parameters affecting creation of the acceleration structure.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io AccelerationStructureKHR 

vkCreateAccelerationStructureKHR - Create a new acceleration structure object

Description

Similar to other objects in Vulkan, the acceleration structure creation merely creates an object with a specific “shape”. The type and quantity of geometry that can be built into an acceleration structure is determined by the parameters of AccelerationStructureCreateInfoKHR.

Populating the data in the object after allocating and binding memory is done with commands such as cmdBuildAccelerationStructuresKHR, buildAccelerationStructuresKHR, cmdCopyAccelerationStructureKHR, and copyAccelerationStructureKHR.

The input buffers passed to acceleration structure build commands will be referenced by the implementation for the duration of the command. After the command completes, the acceleration structure may hold a reference to any acceleration structure specified by an active instance contained therein. Apart from this referencing, acceleration structures must be fully self-contained. The application may re-use or free any memory which was used by the command as an input or as scratch without affecting the results of ray traversal.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateInfoKHR, AccelerationStructureKHR, AllocationCallbacks, Device

withAccelerationStructureKHR :: forall a io r. (Extendss AccelerationStructureCreateInfoKHR a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoKHR a -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createAccelerationStructureKHR and destroyAccelerationStructureKHR

To ensure that destroyAccelerationStructureKHR is always called: pass bracket (or the allocate function from your favourite resource management library) as the last argument. To just extract the pair pass (,) as the last argument.

cmdBuildAccelerationStructuresKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)

pInfos is a pointer to an array of infoCount AccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.

-> ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))

ppBuildRangeInfos is a pointer to an array of infoCount pointers to arrays of AccelerationStructureBuildRangeInfoKHR structures. Each ppBuildRangeInfos[i] is a pointer to an array of pInfos[i].geometryCount AccelerationStructureBuildRangeInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].

-> io () 

vkCmdBuildAccelerationStructuresKHR - Build an acceleration structure

Description

The cmdBuildAccelerationStructuresKHR command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.

Note

This means that an application cannot build a top-level acceleration structure in the same cmdBuildAccelerationStructuresKHR call as the associated bottom-level or instance acceleration structures are being built. There also cannot be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.

Accesses to the acceleration structure scratch buffers as identified by the AccelerationStructureBuildGeometryInfoKHR::scratchData buffer device addresses must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of (ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR | ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR). Accesses to each AccelerationStructureBuildGeometryInfoKHR::srcAccelerationStructure and AccelerationStructureBuildGeometryInfoKHR::dstAccelerationStructure must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR or ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, as appropriate.

Accesses to other input buffers as identified by any used values of AccelerationStructureGeometryMotionTrianglesDataNV::vertexData, AccelerationStructureGeometryTrianglesDataKHR::vertexData, AccelerationStructureGeometryTrianglesDataKHR::indexData, AccelerationStructureGeometryTrianglesDataKHR::transformData, AccelerationStructureGeometryAabbsDataKHR::data, and AccelerationStructureGeometryInstancesDataKHR::data must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_SHADER_READ_BIT.

Valid Usage

Valid Usage (Implicit)

  • pInfos must be a valid pointer to an array of infoCount valid AccelerationStructureBuildGeometryInfoKHR structures
  • ppBuildRangeInfos must be a valid pointer to an array of infoCount AccelerationStructureBuildRangeInfoKHR structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope
  • infoCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildRangeInfoKHR, CommandBuffer

cmdBuildAccelerationStructuresIndirectKHR Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)

pInfos is a pointer to an array of infoCount AccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.

-> ("indirectDeviceAddresses" ::: Vector DeviceAddress)

pIndirectDeviceAddresses is a pointer to an array of infoCount buffer device addresses which point to pInfos[i].geometryCount AccelerationStructureBuildRangeInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].

-> ("indirectStrides" ::: Vector Word32)

pIndirectStrides is a pointer to an array of infoCount byte strides between elements of pIndirectDeviceAddresses.

-> ("maxPrimitiveCounts" ::: Vector (Vector Word32))

ppMaxPrimitiveCounts is a pointer to an array of infoCount pointers to arrays of pInfos[i].geometryCount values indicating the maximum number of primitives that will be built by this command for each geometry.

-> io () 

vkCmdBuildAccelerationStructuresIndirectKHR - Build an acceleration structure with some parameters provided on the device

Description

Accesses to acceleration structures, scratch buffers, vertex buffers, index buffers, and instance buffers must be synchronized as with cmdBuildAccelerationStructuresKHR.

Accesses to any element of pIndirectDeviceAddresses must be synchronized with the PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline stage and an access type of ACCESS_INDIRECT_COMMAND_READ_BIT.

Valid Usage

Valid Usage (Implicit)

  • pInfos must be a valid pointer to an array of infoCount valid AccelerationStructureBuildGeometryInfoKHR structures
  • pIndirectDeviceAddresses must be a valid pointer to an array of infoCount DeviceAddress values
  • pIndirectStrides must be a valid pointer to an array of infoCount uint32_t values
  • ppMaxPrimitiveCounts must be a valid pointer to an array of infoCount uint32_t values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope
  • infoCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryOutside Outside Compute Action

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR, CommandBuffer, DeviceAddress

buildAccelerationStructuresKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the Device for which the acceleration structures are being built.

-> DeferredOperationKHR

deferredOperation is an optional DeferredOperationKHR to request deferral for this command.

-> ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)

pInfos is a pointer to an array of infoCount AccelerationStructureBuildGeometryInfoKHR structures defining the geometry used to build each acceleration structure.

-> ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))

ppBuildRangeInfos is a pointer to an array of infoCount pointers to arrays of AccelerationStructureBuildRangeInfoKHR structures. Each ppBuildRangeInfos[i] is a pointer to an array of pInfos[i].geometryCount AccelerationStructureBuildRangeInfoKHR structures defining dynamic offsets to the addresses where geometry data is stored, as defined by pInfos[i].

-> io Result 

vkBuildAccelerationStructuresKHR - Build an acceleration structure on the host

Description

This command fulfills the same task as cmdBuildAccelerationStructuresKHR but is executed by the host.

The buildAccelerationStructuresKHR command provides the ability to initiate multiple acceleration structures builds, however there is no ordering or synchronization implied between any of the individual acceleration structure builds.

Note

This means that an application cannot build a top-level acceleration structure in the same buildAccelerationStructuresKHR call as the associated bottom-level or instance acceleration structures are being built. There also cannot be any memory aliasing between any acceleration structure memories or scratch memories being used by any of the builds.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildRangeInfoKHR, DeferredOperationKHR, Device

getAccelerationStructureDeviceAddressKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that the acceleration structure was created on.

-> AccelerationStructureDeviceAddressInfoKHR

pInfo is a pointer to a AccelerationStructureDeviceAddressInfoKHR structure specifying the acceleration structure to retrieve an address for.

-> io DeviceAddress 

vkGetAccelerationStructureDeviceAddressKHR - Query an address of a acceleration structure

Description

The 64-bit return value is an address of the acceleration structure, which can be used for device and shader operations that involve acceleration structures, such as ray traversal and acceleration structure building.

If the acceleration structure was created with a non-zero value of AccelerationStructureCreateInfoKHR::deviceAddress, the return value will be the same address.

If the acceleration structure was created with a type of ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR, the returned address must be consistent with the relative offset to other acceleration structures with type ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR allocated with the same Buffer. That is, the difference in returned addresses between the two must be the same as the difference in offsets provided at acceleration structure creation.

The returned address must be aligned to 256 bytes.

Note

The acceleration structure device address may be different from the buffer device address corresponding to the acceleration structure’s start offset in its storage buffer for acceleration structure types other than ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

See Also

VK_KHR_acceleration_structure, AccelerationStructureDeviceAddressInfoKHR, Device

getAccelerationStructureBuildSizesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that will be used for creating the acceleration structure.

-> AccelerationStructureBuildTypeKHR

buildType defines whether host or device operations (or both) are being queried for.

-> ("buildInfo" ::: AccelerationStructureBuildGeometryInfoKHR)

pBuildInfo is a pointer to a AccelerationStructureBuildGeometryInfoKHR structure describing parameters of a build operation.

-> ("maxPrimitiveCounts" ::: Vector Word32)

pMaxPrimitiveCounts is a pointer to an array of pBuildInfo->geometryCount uint32_t values defining the number of primitives built into each geometry.

-> io ("sizeInfo" ::: AccelerationStructureBuildSizesInfoKHR) 

vkGetAccelerationStructureBuildSizesKHR - Retrieve the required size for an acceleration structure

Description

The srcAccelerationStructure, dstAccelerationStructure, and mode members of pBuildInfo are ignored. Any DeviceOrHostAddressKHR members of pBuildInfo are ignored by this command, except that the hostAddress member of AccelerationStructureGeometryTrianglesDataKHR::transformData will be examined to check if it is NULL.

An acceleration structure created with the accelerationStructureSize returned by this command supports any build or update with a AccelerationStructureBuildGeometryInfoKHR structure and array of AccelerationStructureBuildRangeInfoKHR structures subject to the following properties:

Similarly, the updateScratchSize value will support any build command specifying the BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR mode under the above conditions, and the buildScratchSize value will support any build command specifying the BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR mode under the above conditions.

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureBuildSizesInfoKHR, AccelerationStructureBuildTypeKHR, Device

data WriteDescriptorSetAccelerationStructureKHR Source #

VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor information

Valid Usage

  • accelerationStructureCount must be equal to descriptorCount in the extended structure

Valid Usage (Implicit)

  • pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid or NULL_HANDLE AccelerationStructureKHR handles
  • accelerationStructureCount must be greater than 0

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, StructureType

Constructors

WriteDescriptorSetAccelerationStructureKHR 

Fields

data PhysicalDeviceAccelerationStructureFeaturesKHR Source #

VkPhysicalDeviceAccelerationStructureFeaturesKHR - Structure describing the acceleration structure features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceAccelerationStructureFeaturesKHR structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceAccelerationStructureFeaturesKHR can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, Bool32, StructureType

Constructors

PhysicalDeviceAccelerationStructureFeaturesKHR 

Fields

Instances

Instances details
Storable PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero PhysicalDeviceAccelerationStructureFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data PhysicalDeviceAccelerationStructurePropertiesKHR Source #

VkPhysicalDeviceAccelerationStructurePropertiesKHR - Properties of the physical device for acceleration structure

Description

Due to the fact that the geometry, instance, and primitive counts are specified at acceleration structure creation as 32-bit values, maxGeometryCount, maxInstanceCount, and maxPrimitiveCount must not exceed 232-1.

If the PhysicalDeviceAccelerationStructurePropertiesKHR structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Limits specified by this structure must match those specified with the same name in PhysicalDeviceRayTracingPropertiesNV.

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, StructureType

Constructors

PhysicalDeviceAccelerationStructurePropertiesKHR 

Fields

Instances

Instances details
Storable PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero PhysicalDeviceAccelerationStructurePropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureGeometryTrianglesDataKHR (es :: [Type]) Source #

VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure

Description

Note

Unlike the stride for vertex buffers in VertexInputBindingDescription for graphics pipelines which must not exceed maxVertexInputBindingStride, vertexStride for acceleration structure geometry is instead restricted to being a 32-bit value.

Valid Usage

  • vertexStride must be a multiple of the size in bytes of the smallest component of vertexFormat

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureGeometryDataKHR, DeviceOrHostAddressConstKHR, DeviceSize, Format, IndexType, StructureType

Constructors

AccelerationStructureGeometryTrianglesDataKHR 

Fields

Instances

Instances details
Extensible AccelerationStructureGeometryTrianglesDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show (Chain es) => Show (AccelerationStructureGeometryTrianglesDataKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

(Extendss AccelerationStructureGeometryTrianglesDataKHR es, PokeChain es) => ToCStruct (AccelerationStructureGeometryTrianglesDataKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

es ~ ('[] :: [Type]) => Zero (AccelerationStructureGeometryTrianglesDataKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureGeometryAabbsDataKHR Source #

VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureGeometryDataKHR, DeviceOrHostAddressConstKHR, DeviceSize, StructureType

Constructors

AccelerationStructureGeometryAabbsDataKHR 

Fields

  • data' :: DeviceOrHostAddressConstKHR

    data is a device or host address to memory containing AabbPositionsKHR structures containing position data for each axis-aligned bounding box in the geometry.

  • stride :: DeviceSize

    stride is the stride in bytes between each entry in data. The stride must be a multiple of 8.

    stride must be a multiple of 8

    stride must be less than or equal to 232-1

data AccelerationStructureGeometryInstancesDataKHR Source #

VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureGeometryDataKHR, Bool32, DeviceOrHostAddressConstKHR, StructureType

Constructors

AccelerationStructureGeometryInstancesDataKHR 

Fields

data AccelerationStructureGeometryKHR Source #

VkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR, AccelerationStructureGeometryDataKHR, GeometryFlagsKHR, GeometryTypeKHR, StructureType

Constructors

AccelerationStructureGeometryKHR 

Fields

data AccelerationStructureBuildGeometryInfoKHR Source #

VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure

Description

Only one of pGeometries or ppGeometries can be a valid pointer, the other must be NULL. Each element of the non-NULL array describes the data used to build each acceleration structure geometry.

The index of each element of the pGeometries or ppGeometries members of AccelerationStructureBuildGeometryInfoKHR is used as the /geometry index/ during ray traversal. The geometry index is available in ray shaders via the RayGeometryIndexKHR built-in, and is used to determine hit and intersection shaders executed during traversal. The geometry index is available to ray queries via the OpRayQueryGetIntersectionGeometryIndexKHR instruction.

Setting BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV in flags indicates that this build is a motion top level acceleration structure. A motion top level uses instances of format AccelerationStructureMotionInstanceNV if AccelerationStructureGeometryInstancesDataKHR::arrayOfPointers is FALSE.

If AccelerationStructureGeometryInstancesDataKHR::arrayOfPointers is TRUE, the pointer for any given element of the array of instance pointers consists of 4 bits of AccelerationStructureMotionInstanceTypeNV in the low 4 bits of the pointer identifying the type of structure at the pointer. The device address accessed is the value in the array with the low 4 bits set to zero. The structure at the pointer is one of AccelerationStructureInstanceKHR, AccelerationStructureMatrixMotionInstanceNV or AccelerationStructureSRTMotionInstanceNV, depending on the type value encoded in the low 4 bits.

A top level acceleration structure with either motion instances or vertex motion in its instances must set BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV in flags.

Members srcAccelerationStructure and dstAccelerationStructure may be the same or different for an update operation (when mode is BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR). If they are the same, the update happens in-place. Otherwise, the target acceleration structure is updated and the source is not modified.

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL
  • type must be a valid AccelerationStructureTypeKHR value
  • flags must be a valid combination of BuildAccelerationStructureFlagBitsKHR values
  • If geometryCount is not 0, and pGeometries is not NULL, pGeometries must be a valid pointer to an array of geometryCount valid AccelerationStructureGeometryKHR structures
  • If geometryCount is not 0, and ppGeometries is not NULL, ppGeometries must be a valid pointer to an array of geometryCount valid pointers to valid AccelerationStructureGeometryKHR structures
  • Both of dstAccelerationStructure, and srcAccelerationStructure that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

VK_KHR_acceleration_structure, AccelerationStructureGeometryKHR, AccelerationStructureKHR, AccelerationStructureTypeKHR, BuildAccelerationStructureFlagsKHR, BuildAccelerationStructureModeKHR, DeviceOrHostAddressKHR, StructureType, buildAccelerationStructuresKHR, cmdBuildAccelerationStructuresIndirectKHR, cmdBuildAccelerationStructuresKHR, getAccelerationStructureBuildSizesKHR

Constructors

AccelerationStructureBuildGeometryInfoKHR 

Fields

data AccelerationStructureBuildRangeInfoKHR Source #

VkAccelerationStructureBuildRangeInfoKHR - Structure specifying build offsets and counts for acceleration structure builds

Description

The primitive count and primitive offset are interpreted differently depending on the GeometryTypeKHR used:

Valid Usage

See Also

VK_KHR_acceleration_structure, buildAccelerationStructuresKHR, cmdBuildAccelerationStructuresKHR

Constructors

AccelerationStructureBuildRangeInfoKHR 

Fields

  • primitiveCount :: Word32

    primitiveCount defines the number of primitives for a corresponding acceleration structure geometry.

  • primitiveOffset :: Word32

    primitiveOffset defines an offset in bytes into the memory where primitive data is defined.

  • firstVertex :: Word32

    firstVertex is the index of the first vertex to build from for triangle geometry.

  • transformOffset :: Word32

    transformOffset defines an offset in bytes into the memory where a transform matrix is defined.

Instances

Instances details
Storable AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureBuildRangeInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureCreateInfoKHR (es :: [Type]) Source #

VkAccelerationStructureCreateInfoKHR - Structure specifying the parameters of a newly created acceleration structure object

Description

If deviceAddress is zero, no specific address is requested.

If deviceAddress is not zero, deviceAddress must be an address retrieved from an identically created acceleration structure on the same implementation. The acceleration structure must also be placed on an identically created buffer and at the same offset.

Applications should avoid creating acceleration structures with application-provided addresses and implementation-provided addresses in the same process, to reduce the likelihood of ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR errors.

Note

The expected usage for this is that a trace capture/replay tool will add the BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT flag to all buffers that use BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, and will add BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT to all buffers used as storage for an acceleration structure where deviceAddress is not zero. This also means that the tool will need to add MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT to memory allocations to allow the flag to be set where the application may not have otherwise required it. During capture the tool will save the queried opaque device addresses in the trace. During replay, the buffers will be created specifying the original address so any address values stored in the trace data will remain valid.

Implementations are expected to separate such buffers in the GPU address space so normal allocations will avoid using these addresses. Apps/tools should avoid mixing app-provided and implementation-provided addresses for buffers created with BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, to avoid address space allocation conflicts.

Applications should create an acceleration structure with a specific AccelerationStructureTypeKHR other than ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR.

Note

ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR is intended to be used by API translation layers. This can be used at acceleration structure creation time in cases where the actual acceleration structure type (top or bottom) is not yet known. The actual acceleration structure type must be specified as ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR or ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR when the build is performed.

If the acceleration structure will be the target of a build operation, the required size for an acceleration structure can be queried with getAccelerationStructureBuildSizesKHR. If the acceleration structure is going to be the target of a compacting copy, cmdWriteAccelerationStructuresPropertiesKHR or writeAccelerationStructuresPropertiesKHR can be used to obtain the compacted size required.

If the acceleration structure will be the target of a build operation with BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV it must include ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV in flags and include AccelerationStructureMotionInfoNV as an extension structure in pNext with the number of instances as metadata for the object.

Valid Usage

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR, AccelerationStructureTypeKHR, Buffer, DeviceAddress, DeviceSize, StructureType, createAccelerationStructureKHR

Constructors

AccelerationStructureCreateInfoKHR 

Fields

Instances

Instances details
Extensible AccelerationStructureCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show (Chain es) => Show (AccelerationStructureCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

(Extendss AccelerationStructureCreateInfoKHR es, PeekChain es) => FromCStruct (AccelerationStructureCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

(Extendss AccelerationStructureCreateInfoKHR es, PokeChain es) => ToCStruct (AccelerationStructureCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

es ~ ('[] :: [Type]) => Zero (AccelerationStructureCreateInfoKHR es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AabbPositionsKHR Source #

VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box

Valid Usage

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing

Constructors

AabbPositionsKHR 

Fields

  • minX :: Float

    minX is the x position of one opposing corner of a bounding box.

    minX must be less than or equal to maxX

  • minY :: Float

    minY is the y position of one opposing corner of a bounding box.

    minY must be less than or equal to maxY

  • minZ :: Float

    minZ is the z position of one opposing corner of a bounding box.

    minZ must be less than or equal to maxZ

  • maxX :: Float

    maxX is the x position of the other opposing corner of a bounding box.

  • maxY :: Float

    maxY is the y position of the other opposing corner of a bounding box.

  • maxZ :: Float

    maxZ is the z position of the other opposing corner of a bounding box.

Instances

Instances details
Storable AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AabbPositionsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data TransformMatrixKHR Source #

VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix

Valid Usage

  • The first three columns of matrix must define an invertible 3x3 matrix

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureInstanceKHR, AccelerationStructureMatrixMotionInstanceNV

Instances

Instances details
Storable TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct TransformMatrixKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero TransformMatrixKHR Source #

The Identity Matrix

Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureInstanceKHR Source #

VkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry

Description

The C language specification does not define the ordering of bit-fields, but in practice, this struct produces the correct layout with existing compilers. The intended bit pattern is for the following:

If a compiler produces code that diverges from that pattern, applications must employ another method to set values according to the correct bit pattern.

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureMotionInstanceDataNV, GeometryInstanceFlagsKHR, TransformMatrixKHR

Constructors

AccelerationStructureInstanceKHR 

Fields

Instances

Instances details
Storable AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureInstanceKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureDeviceAddressInfoKHR Source #

VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address for

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, StructureType, getAccelerationStructureDeviceAddressKHR

Constructors

AccelerationStructureDeviceAddressInfoKHR 

Fields

Instances

Instances details
Storable AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureDeviceAddressInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data AccelerationStructureVersionInfoKHR Source #

VkAccelerationStructureVersionInfoKHR - Acceleration structure version information

Description

Note

pVersionData is a pointer to an array of 2×UUID_SIZE uint8_t values instead of two UUID_SIZE arrays as the expected use case for this member is to be pointed at the header of a previously serialized acceleration structure (via cmdCopyAccelerationStructureToMemoryKHR or copyAccelerationStructureToMemoryKHR) that is loaded in memory. Using arrays would necessitate extra memory copies of the UUIDs.

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, StructureType, getDeviceAccelerationStructureCompatibilityKHR

Constructors

AccelerationStructureVersionInfoKHR 

Fields

data CopyAccelerationStructureInfoKHR Source #

VkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure

Valid Usage

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, CopyAccelerationStructureModeKHR, StructureType, cmdCopyAccelerationStructureKHR, copyAccelerationStructureKHR

Constructors

CopyAccelerationStructureInfoKHR 

Fields

Instances

Instances details
Storable CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero CopyAccelerationStructureInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

data CopyAccelerationStructureToMemoryInfoKHR Source #

VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure

Valid Usage

  • The source acceleration structure src must have been constructed prior to the execution of this command

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, CopyAccelerationStructureModeKHR, DeviceOrHostAddressKHR, StructureType, cmdCopyAccelerationStructureToMemoryKHR, copyAccelerationStructureToMemoryKHR

Constructors

CopyAccelerationStructureToMemoryInfoKHR 

Fields

data CopyMemoryToAccelerationStructureInfoKHR Source #

VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure

Valid Usage

  • The source memory pointed to by src must contain data previously serialized using cmdCopyAccelerationStructureToMemoryKHR, potentially modified to relocate acceleration structure references as described in that command

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, AccelerationStructureKHR, CopyAccelerationStructureModeKHR, DeviceOrHostAddressConstKHR, StructureType, cmdCopyMemoryToAccelerationStructureKHR, copyMemoryToAccelerationStructureKHR

Constructors

CopyMemoryToAccelerationStructureInfoKHR 

Fields

data AccelerationStructureBuildSizesInfoKHR Source #

VkAccelerationStructureBuildSizesInfoKHR - Structure specifying build sizes for an acceleration structure

Valid Usage (Implicit)

See Also

VK_KHR_acceleration_structure, DeviceSize, StructureType, getAccelerationStructureBuildSizesKHR

Constructors

AccelerationStructureBuildSizesInfoKHR 

Fields

Instances

Instances details
Storable AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FromCStruct AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

ToCStruct AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureBuildSizesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryInstanceFlagBitsKHR Source #

VkGeometryInstanceFlagBitsKHR - Instance flag bits

Description

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR and GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR must not be used in the same flag.

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, GeometryInstanceFlagsKHR

Bundled Patterns

pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR disables face culling for this instance.

pattern GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR indicates that the facing determination for geometry in this instance is inverted. Because the facing is determined in object space, an instance transform does not change the winding, but a geometry transform does.

pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V NoOpaqueKHR ray flag.

pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR

GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR causes this instance to act as though GEOMETRY_OPAQUE_BIT_KHR were not specified on all geometries referenced by this instance. This behavior can be overridden by the SPIR-V OpaqueKHR ray flag.

pattern GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT :: GeometryInstanceFlagBitsKHR 
pattern GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT :: GeometryInstanceFlagBitsKHR 

Instances

Instances details
Storable GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

(.|.) :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

xor :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

complement :: GeometryInstanceFlagBitsKHR -> GeometryInstanceFlagBitsKHR #

shift :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotate :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

zeroBits :: GeometryInstanceFlagBitsKHR #

bit :: Int -> GeometryInstanceFlagBitsKHR #

setBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

clearBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

complementBit :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

testBit :: GeometryInstanceFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: GeometryInstanceFlagBitsKHR -> Maybe Int #

bitSize :: GeometryInstanceFlagBitsKHR -> Int #

isSigned :: GeometryInstanceFlagBitsKHR -> Bool #

shiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

shiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

unsafeShiftR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateL :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

rotateR :: GeometryInstanceFlagBitsKHR -> Int -> GeometryInstanceFlagBitsKHR #

popCount :: GeometryInstanceFlagBitsKHR -> Int #

FiniteBits GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryInstanceFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryFlagBitsKHR Source #

VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, GeometryFlagsKHR

Bundled Patterns

pattern GEOMETRY_OPAQUE_BIT_KHR :: GeometryFlagBitsKHR

GEOMETRY_OPAQUE_BIT_KHR indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.

pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR :: GeometryFlagBitsKHR

GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR indicates that the implementation must only call the any-hit shader a single time for each primitive in this geometry. If this bit is absent an implementation may invoke the any-hit shader more than once for this geometry.

Instances

Instances details
Storable GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

FiniteBits GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype BuildAccelerationStructureFlagBitsKHR Source #

VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional parameters for acceleration structure builds

Description

Note

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR and BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR may take more time and memory than a normal build, and so should only be used when those features are needed.

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, BuildAccelerationStructureFlagsKHR

Bundled Patterns

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR indicates that the specified acceleration structure can be updated with a mode of BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR in AccelerationStructureBuildGeometryInfoKHR or an update of TRUE in cmdBuildAccelerationStructureNV .

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR indicates that the specified acceleration structure can act as the source for a copy acceleration structure command with mode of COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR to produce a compacted acceleration structure.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR indicates that the given acceleration structure build should prioritize trace performance over build time.

pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR indicates that the given acceleration structure build should prioritize build time over trace performance.

pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR indicates that this acceleration structure should minimize the size of the scratch memory and the final result acceleration structure, potentially at the expense of build time or trace performance.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT indicates that the data of the opacity micromaps associated with the specified acceleration structure may change with an acceleration structure update.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT indicates that the specified acceleration structure may be referenced in an instance with GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT set.

pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT :: BuildAccelerationStructureFlagBitsKHR

BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT indicates that the opacity micromaps associated with the specified acceleration structure may change with an acceleration structure update.

pattern BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV :: BuildAccelerationStructureFlagBitsKHR 

Instances

Instances details
Storable BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

(.|.) :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

xor :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

complement :: BuildAccelerationStructureFlagBitsKHR -> BuildAccelerationStructureFlagBitsKHR #

shift :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotate :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

zeroBits :: BuildAccelerationStructureFlagBitsKHR #

bit :: Int -> BuildAccelerationStructureFlagBitsKHR #

setBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

clearBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

complementBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

testBit :: BuildAccelerationStructureFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: BuildAccelerationStructureFlagBitsKHR -> Maybe Int #

bitSize :: BuildAccelerationStructureFlagBitsKHR -> Int #

isSigned :: BuildAccelerationStructureFlagBitsKHR -> Bool #

shiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

shiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

unsafeShiftR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateL :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

rotateR :: BuildAccelerationStructureFlagBitsKHR -> Int -> BuildAccelerationStructureFlagBitsKHR #

popCount :: BuildAccelerationStructureFlagBitsKHR -> Int #

FiniteBits BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero BuildAccelerationStructureFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureCreateFlagBitsKHR Source #

VkAccelerationStructureCreateFlagBitsKHR - Bitmask specifying additional creation parameters for acceleration structure

See Also

VK_KHR_acceleration_structure, AccelerationStructureCreateFlagsKHR

Bundled Patterns

pattern ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR :: AccelerationStructureCreateFlagBitsKHR

ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR specifies that the acceleration structure’s address can be saved and reused on a subsequent run.

pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV :: AccelerationStructureCreateFlagBitsKHR 
pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: AccelerationStructureCreateFlagBitsKHR

ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT specifies that the acceleration structure can be used with descriptor buffers when capturing and replaying (e.g. for trace capture and replay), see OpaqueCaptureDescriptorDataCreateInfoEXT for more detail.

Instances

Instances details
Storable AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Bits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Methods

(.&.) :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

(.|.) :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

xor :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

complement :: AccelerationStructureCreateFlagBitsKHR -> AccelerationStructureCreateFlagBitsKHR #

shift :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotate :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

zeroBits :: AccelerationStructureCreateFlagBitsKHR #

bit :: Int -> AccelerationStructureCreateFlagBitsKHR #

setBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

clearBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

complementBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

testBit :: AccelerationStructureCreateFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: AccelerationStructureCreateFlagBitsKHR -> Maybe Int #

bitSize :: AccelerationStructureCreateFlagBitsKHR -> Int #

isSigned :: AccelerationStructureCreateFlagBitsKHR -> Bool #

shiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

shiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

unsafeShiftR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateL :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

rotateR :: AccelerationStructureCreateFlagBitsKHR -> Int -> AccelerationStructureCreateFlagBitsKHR #

popCount :: AccelerationStructureCreateFlagBitsKHR -> Int #

FiniteBits AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureCreateFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype CopyAccelerationStructureModeKHR Source #

Bundled Patterns

pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR creates a direct copy of the acceleration structure specified in src into the one specified by dst. The dst acceleration structure must have been created with the same parameters as src. If src contains references to other acceleration structures, dst will reference the same acceleration structures.

pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR creates a more compact version of an acceleration structure src into dst. The acceleration structure dst must have been created with a size at least as large as that returned by cmdWriteAccelerationStructuresPropertiesKHR or writeAccelerationStructuresPropertiesKHR after the build of the acceleration structure specified by src. If src contains references to other acceleration structures, dst will reference the same acceleration structures.

pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR serializes the acceleration structure to a semi-opaque format which can be reloaded on a compatible implementation.

pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR

COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR deserializes the semi-opaque serialization format in the buffer to the acceleration structure.

Instances

Instances details
Storable CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero CopyAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype BuildAccelerationStructureModeKHR Source #

VkBuildAccelerationStructureModeKHR - Enum specifying the type of build operation to perform

See Also

VK_KHR_acceleration_structure, AccelerationStructureBuildGeometryInfoKHR

Bundled Patterns

pattern BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR :: BuildAccelerationStructureModeKHR

BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR specifies that the destination acceleration structure will be built using the specified geometries.

pattern BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR :: BuildAccelerationStructureModeKHR

BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR specifies that the destination acceleration structure will be built using data in a source acceleration structure, updated by the specified geometries.

Instances

Instances details
Storable BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero BuildAccelerationStructureModeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureTypeKHR Source #

Bundled Patterns

pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR is a top-level acceleration structure containing instance data referring to bottom-level acceleration structures.

pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR is a bottom-level acceleration structure containing the AABBs or geometry to be intersected.

pattern ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR :: AccelerationStructureTypeKHR

ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR is an acceleration structure whose type is determined at build time used for special circumstances. In these cases, the acceleration structure type is not known at creation time, but must be specified at build time as either top or bottom.

Instances

Instances details
Storable AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype GeometryTypeKHR Source #

VkGeometryTypeKHR - Enum specifying which type of geometry is provided

See Also

VK_KHR_acceleration_structure, VK_NV_ray_tracing, AccelerationStructureGeometryKHR, GeometryNV

Constructors

GeometryTypeKHR Int32 

Bundled Patterns

pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_TRIANGLES_KHR specifies a geometry type consisting of triangles.

pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_AABBS_KHR specifies a geometry type consisting of axis-aligned bounding boxes.

pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR

GEOMETRY_TYPE_INSTANCES_KHR specifies a geometry type consisting of acceleration structure instances.

Instances

Instances details
Storable GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero GeometryTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureBuildTypeKHR Source #

VkAccelerationStructureBuildTypeKHR - Acceleration structure build type

See Also

VK_KHR_acceleration_structure, getAccelerationStructureBuildSizesKHR, getMicromapBuildSizesEXT

Bundled Patterns

pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR :: AccelerationStructureBuildTypeKHR

ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR requests the memory requirement for operations performed by the host.

pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR :: AccelerationStructureBuildTypeKHR

ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR requests the memory requirement for operations performed by the device.

pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR

ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR requests the memory requirement for operations performed by either the host, or the device.

Instances

Instances details
Storable AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureBuildTypeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

newtype AccelerationStructureCompatibilityKHR Source #

VkAccelerationStructureCompatibilityKHR - Acceleration structure compatibility

See Also

VK_KHR_acceleration_structure, getDeviceAccelerationStructureCompatibilityKHR, getDeviceMicromapCompatibilityEXT

Bundled Patterns

pattern ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR :: AccelerationStructureCompatibilityKHR

ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR if the pVersionData version acceleration structure is compatible with device.

pattern ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR :: AccelerationStructureCompatibilityKHR

ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR if the pVersionData version acceleration structure is not compatible with device.

Instances

Instances details
Storable AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Read AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Show AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Eq AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Ord AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

Zero AccelerationStructureCompatibilityKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_acceleration_structure

type KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_KHR_acceleration_structure" Source #

newtype AccelerationStructureKHR Source #

Instances

Instances details
Storable AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero AccelerationStructureKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype DeferredOperationKHR Source #

Instances

Instances details
Storable DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero DeferredOperationKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype DebugReportObjectTypeEXT Source #

VkDebugReportObjectTypeEXT - Specify the type of an object handle

Description

'

DebugReportObjectTypeEXTVulkan Handle Type
DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXTUnknown/Undefined Handle
DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXTInstance
DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXTPhysicalDevice
DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXTDevice
DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXTQueue
DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXTSemaphore
DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXTCommandBuffer
DEBUG_REPORT_OBJECT_TYPE_FENCE_EXTFence
DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXTDeviceMemory
DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXTBuffer
DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXTImage
DEBUG_REPORT_OBJECT_TYPE_EVENT_EXTEvent
DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXTQueryPool
DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXTBufferView
DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXTImageView
DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXTShaderModule
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXTPipelineCache
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXTPipelineLayout
DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXTRenderPass
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXTPipeline
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXTDescriptorSetLayout
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXTSampler
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXTDescriptorPool
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXTDescriptorSet
DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXTFramebuffer
DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXTCommandPool
DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXTSurfaceKHR
DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXTSwapchainKHR
DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXTDebugReportCallbackEXT
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXTDisplayKHR
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXTDisplayModeKHR
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXTDescriptorUpdateTemplate

DebugReportObjectTypeEXT and Vulkan Handle Relationship

Note

The primary expected use of ERROR_VALIDATION_FAILED_EXT is for validation layer testing. It is not expected that an application would see this error code during normal use of the validation layers.

See Also

VK_EXT_debug_marker, VK_EXT_debug_report, DebugMarkerObjectNameInfoEXT, DebugMarkerObjectTagInfoEXT, debugReportMessageEXT

Bundled Patterns

pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT :: DebugReportObjectTypeEXT 
pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT 

Instances

Instances details
Storable DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Read DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Show DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Eq DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Ord DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report

Zero DebugReportObjectTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_debug_report