Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- destroyAccelerationStructureKHR :: forall io. MonadIO io => Device -> AccelerationStructureKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getAccelerationStructureMemoryRequirementsKHR :: forall a io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoKHR -> io (MemoryRequirements2 a)
- bindAccelerationStructureMemoryKHR :: forall io. MonadIO io => Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR) -> io ()
- cmdCopyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureInfoKHR a -> io ()
- copyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureInfoKHR a -> io Result
- cmdCopyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureToMemoryInfoKHR a -> io ()
- copyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureToMemoryInfoKHR a -> io Result
- cmdCopyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyMemoryToAccelerationStructureInfoKHR a -> io ()
- copyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyMemoryToAccelerationStructureInfoKHR a -> io Result
- cmdWriteAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> io ()
- writeAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => Device -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: Word64) -> io ()
- cmdTraceRaysKHR :: forall io. MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()
- getRayTracingShaderGroupHandlesKHR :: forall io. MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io. MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()
- createRayTracingPipelinesKHR :: forall io. MonadIO io => Device -> PipelineCache -> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "pipelines" ::: Vector Pipeline)
- cmdTraceRaysIndirectKHR :: forall io. MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> io ()
- getDeviceAccelerationStructureCompatibilityKHR :: forall io. MonadIO io => Device -> AccelerationStructureVersionKHR -> io ()
- createAccelerationStructureKHR :: forall io. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io AccelerationStructureKHR
- withAccelerationStructureKHR :: forall io r. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> (io AccelerationStructureKHR -> (AccelerationStructureKHR -> io ()) -> r) -> r
- cmdBuildAccelerationStructureKHR :: forall io. MonadIO io => CommandBuffer -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io ()
- cmdBuildAccelerationStructureIndirectKHR :: forall a io. (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> AccelerationStructureBuildGeometryInfoKHR a -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> io ()
- buildAccelerationStructureKHR :: forall io. MonadIO io => Device -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io Result
- getAccelerationStructureDeviceAddressKHR :: forall io. MonadIO io => Device -> AccelerationStructureDeviceAddressInfoKHR -> io DeviceAddress
- data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR {}
- data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR {
- next :: Chain es
- flags :: PipelineCreateFlags
- stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
- groups :: Vector RayTracingShaderGroupCreateInfoKHR
- maxRecursionDepth :: Word32
- libraries :: PipelineLibraryCreateInfoKHR
- libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR
- layout :: PipelineLayout
- basePipelineHandle :: Pipeline
- basePipelineIndex :: Int32
- data BindAccelerationStructureMemoryInfoKHR = BindAccelerationStructureMemoryInfoKHR {}
- data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR {}
- data AccelerationStructureMemoryRequirementsInfoKHR = AccelerationStructureMemoryRequirementsInfoKHR {}
- data PhysicalDeviceRayTracingFeaturesKHR = PhysicalDeviceRayTracingFeaturesKHR {
- rayTracing :: Bool
- rayTracingShaderGroupHandleCaptureReplay :: Bool
- rayTracingShaderGroupHandleCaptureReplayMixed :: Bool
- rayTracingAccelerationStructureCaptureReplay :: Bool
- rayTracingIndirectTraceRays :: Bool
- rayTracingIndirectAccelerationStructureBuild :: Bool
- rayTracingHostAccelerationStructureCommands :: Bool
- rayQuery :: Bool
- rayTracingPrimitiveCulling :: Bool
- data PhysicalDeviceRayTracingPropertiesKHR = PhysicalDeviceRayTracingPropertiesKHR {}
- data StridedBufferRegionKHR = StridedBufferRegionKHR {
- buffer :: Buffer
- offset :: DeviceSize
- stride :: DeviceSize
- size :: DeviceSize
- data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR {}
- data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR {}
- data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR {}
- data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR {}
- data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR {}
- data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) = AccelerationStructureBuildGeometryInfoKHR {
- next :: Chain es
- type' :: AccelerationStructureTypeKHR
- flags :: BuildAccelerationStructureFlagsKHR
- update :: Bool
- srcAccelerationStructure :: AccelerationStructureKHR
- dstAccelerationStructure :: AccelerationStructureKHR
- geometries :: Vector AccelerationStructureGeometryKHR
- scratchData :: DeviceOrHostAddressKHR
- data AccelerationStructureBuildOffsetInfoKHR = AccelerationStructureBuildOffsetInfoKHR {}
- data AccelerationStructureCreateGeometryTypeInfoKHR = AccelerationStructureCreateGeometryTypeInfoKHR {}
- data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR {}
- data AabbPositionsKHR = AabbPositionsKHR {}
- data TransformMatrixKHR = TransformMatrixKHR {}
- data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR {}
- data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR {}
- data AccelerationStructureVersionKHR = AccelerationStructureVersionKHR {}
- data CopyAccelerationStructureInfoKHR (es :: [Type]) = CopyAccelerationStructureInfoKHR {}
- data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) = CopyAccelerationStructureToMemoryInfoKHR {}
- data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) = CopyMemoryToAccelerationStructureInfoKHR {}
- data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR {}
- data DeviceOrHostAddressKHR
- = DeviceAddress DeviceAddress
- | HostAddress (Ptr ())
- data DeviceOrHostAddressConstKHR
- data AccelerationStructureGeometryDataKHR
- newtype GeometryInstanceFlagBitsKHR where
- GeometryInstanceFlagBitsKHR Flags
- pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR
- type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR
- newtype GeometryFlagBitsKHR where
- type GeometryFlagsKHR = GeometryFlagBitsKHR
- newtype BuildAccelerationStructureFlagBitsKHR where
- BuildAccelerationStructureFlagBitsKHR Flags
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR :: BuildAccelerationStructureFlagBitsKHR
- type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR
- newtype CopyAccelerationStructureModeKHR where
- CopyAccelerationStructureModeKHR Int32
- pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR
- pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR
- newtype AccelerationStructureTypeKHR where
- newtype GeometryTypeKHR where
- GeometryTypeKHR Int32
- pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR
- pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR
- pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR
- newtype AccelerationStructureMemoryRequirementsTypeKHR where
- AccelerationStructureMemoryRequirementsTypeKHR Int32
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR
- newtype AccelerationStructureBuildTypeKHR where
- AccelerationStructureBuildTypeKHR Int32
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR :: AccelerationStructureBuildTypeKHR
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR :: AccelerationStructureBuildTypeKHR
- pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR
- newtype RayTracingShaderGroupTypeKHR where
- RayTracingShaderGroupTypeKHR Int32
- pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR
- pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR
- type KHR_RAY_TRACING_SPEC_VERSION = 8
- pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a
- type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"
- pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype AccelerationStructureKHR = AccelerationStructureKHR Word64
- data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR {}
- newtype DebugReportObjectTypeEXT where
- DebugReportObjectTypeEXT Int32
- 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_SAMPLER_YCBCR_CONVERSION_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT
- type SHADER_UNUSED_KHR = 4294967295
- pattern SHADER_UNUSED_KHR :: Word32
Documentation
destroyAccelerationStructureKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureKHR |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io () |
vkDestroyAccelerationStructureKHR - Destroy an acceleration structure object
Valid Usage
- All submitted commands that refer to
accelerationStructure
must have completed execution
- If
AllocationCallbacks
were provided whenaccelerationStructure
was created, a compatible set of callbacks must be provided here - If no
AllocationCallbacks
were provided whenaccelerationStructure
was created,pAllocator
must beNULL
Valid Usage (Implicit)
device
must be a validDevice
handle
- If
accelerationStructure
is notNULL_HANDLE
,accelerationStructure
must be a validAccelerationStructureKHR
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure - If
accelerationStructure
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
accelerationStructure
must be externally synchronized
See Also
getAccelerationStructureMemoryRequirementsKHR Source #
:: forall a io. (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io) | |
=> Device |
|
-> AccelerationStructureMemoryRequirementsInfoKHR |
|
-> io (MemoryRequirements2 a) |
vkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration structure memory requirements
Valid Usage (Implicit)
See Also
AccelerationStructureMemoryRequirementsInfoKHR
,
Device
,
MemoryRequirements2
bindAccelerationStructureMemoryKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR) |
|
-> io () |
vkBindAccelerationStructureMemoryKHR - Bind acceleration structure memory
Return Codes
See Also
cmdCopyAccelerationStructureKHR Source #
:: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) | |
=> CommandBuffer |
|
-> CopyAccelerationStructureInfoKHR a |
|
-> io () |
vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure
Valid Usage
- All
AccelerationStructureKHR
objects referenced by this command must be bound to device memory
- The
DeferredOperationInfoKHR
structure must not be included in thepNext
chain of theCopyAccelerationStructureInfoKHR
structure
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pInfo
must be a valid pointer to a validCopyAccelerationStructureInfoKHR
structurecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
copyAccelerationStructureKHR :: forall a io. (Extendss CopyAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureInfoKHR a -> io Result Source #
vkCopyAccelerationStructureKHR - Copy an acceleration structure on the host
Parameters
This command fulfills the same task as cmdCopyAccelerationStructureKHR
but executed by the host.
Description
device
is the device which owns the acceleration structures.
pInfo
is a pointer to aCopyAccelerationStructureInfoKHR
structure defining the copy operation.
If the
DeferredOperationInfoKHR
structure is included in the pNext
chain of the
CopyAccelerationStructureInfoKHR
structure, the operation of this
command is deferred, as defined in the
Deferred Host Operations
chapter.
Valid Usage
- All
AccelerationStructureKHR
objects referenced by this command must be bound to host-visible memory
- the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pInfo
must be a valid pointer to a validCopyAccelerationStructureInfoKHR
structure
Return Codes
See Also
cmdCopyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureToMemoryInfoKHR a -> io () Source #
vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration structure to device memory
Parameters
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
.
Description
commandBuffer
is the command buffer into which the command will be recorded.
pInfo
is an a pointer to aCopyAccelerationStructureToMemoryInfoKHR
structure defining the copy operation.
The defined header structure for the serialized data consists of:
UUID_SIZE
bytes of data matchingPhysicalDeviceIDProperties
::driverUUID
UUID_SIZE
bytes of data identifying the compatibility for comparison usinggetDeviceAccelerationStructureCompatibilityKHR
- A 64-bit integer of the total size matching the value queried using
QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
- A 64-bit integer of the deserialized size to be passed in to
AccelerationStructureCreateInfoKHR
::compactedSize
- A 64-bit integer of the count of the number of acceleration structure handles following. This will be zero for a bottom-level acceleration structure.
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.
Valid Usage
- All
DeviceOrHostAddressConstKHR
referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object
- All
AccelerationStructureKHR
objects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHR
structure must not be included in thepNext
chain of theCopyAccelerationStructureToMemoryInfoKHR
structure mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pInfo
must be a valid pointer to a validCopyAccelerationStructureToMemoryInfoKHR
structurecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
copyAccelerationStructureToMemoryKHR :: forall a io. (Extendss CopyAccelerationStructureToMemoryInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureToMemoryInfoKHR a -> io Result Source #
vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration structure on the host
Parameters
This command fulfills the same task as
cmdCopyAccelerationStructureToMemoryKHR
but executed by the host.
Description
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
.
device
is the device which ownspInfo->src
.pInfo
is a pointer to aCopyAccelerationStructureToMemoryInfoKHR
structure defining the copy operation.
If the
DeferredOperationInfoKHR
structure is included in the pNext
chain of the
CopyAccelerationStructureToMemoryInfoKHR
structure, the operation of
this command is deferred, as defined in the
https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations
chapter.
Valid Usage
- All
AccelerationStructureKHR
objects referenced by this command must be bound to host-visible memory
- All
DeviceOrHostAddressKHR
referenced by this command must contain valid host pointers - the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pInfo
must be a valid pointer to a validCopyAccelerationStructureToMemoryInfoKHR
structure
Return Codes
See Also
cmdCopyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> CopyMemoryToAccelerationStructureInfoKHR a -> io () Source #
vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an acceleration structure
Parameters
This command can accept acceleration structures produced by either
cmdCopyAccelerationStructureToMemoryKHR
or
copyAccelerationStructureToMemoryKHR
.
Description
commandBuffer
is the command buffer into which the command will be recorded.
pInfo
is a pointer to aCopyMemoryToAccelerationStructureInfoKHR
structure defining the copy operation.
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
- All
DeviceOrHostAddressKHR
referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object
- All
AccelerationStructureKHR
objects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHR
structure must not be included in thepNext
chain of theCopyMemoryToAccelerationStructureInfoKHR
structure mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
- The data in
pInfo->src
must have a format compatible with the destination physical device as returned bygetDeviceAccelerationStructureCompatibilityKHR
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pInfo
must be a valid pointer to a validCopyMemoryToAccelerationStructureInfoKHR
structurecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
copyMemoryToAccelerationStructureKHR :: forall a io. (Extendss CopyMemoryToAccelerationStructureInfoKHR a, PokeChain a, MonadIO io) => Device -> CopyMemoryToAccelerationStructureInfoKHR a -> io Result Source #
vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration structure on the host
Parameters
This command fulfills the same task as
cmdCopyMemoryToAccelerationStructureKHR
but is executed by the host.
Description
This command can accept acceleration structures produced by either
cmdCopyAccelerationStructureToMemoryKHR
or
copyAccelerationStructureToMemoryKHR
.
device
is the device which ownspInfo->dst
.pInfo
is a pointer to aCopyMemoryToAccelerationStructureInfoKHR
structure defining the copy operation.
If the
DeferredOperationInfoKHR
structure is included in the pNext
chain of the
CopyMemoryToAccelerationStructureInfoKHR
structure, the operation of
this command is deferred, as defined in the
Deferred Host Operations
chapter.
Valid Usage
- All
AccelerationStructureKHR
objects referenced by this command must be bound to host-visible memory
- All
DeviceOrHostAddressConstKHR
referenced by this command must contain valid host pointers - the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pInfo
must be a valid pointer to a validCopyMemoryToAccelerationStructureInfoKHR
structure
Return Codes
See Also
cmdWriteAccelerationStructuresPropertiesKHR Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("accelerationStructures" ::: Vector AccelerationStructureKHR) |
|
-> QueryType |
|
-> QueryPool |
|
-> ("firstQuery" ::: Word32) |
|
-> io () |
vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration structure result parameters to query results.
Valid Usage
queryPool
must have been created with aqueryType
matchingqueryType
- The queries identified by
queryPool
andfirstQuery
must be unavailable - All acceleration structures in
accelerationStructures
must have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
ifqueryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
queryType
must beQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
orQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pAccelerationStructures
must be a valid pointer to an array ofaccelerationStructureCount
validAccelerationStructureKHR
handlesqueryType
must be a validQueryType
valuequeryPool
must be a validQueryPool
handlecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
accelerationStructureCount
must be greater than0
- Each of
commandBuffer
,queryPool
, and the elements ofpAccelerationStructures
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
AccelerationStructureKHR
,
CommandBuffer
,
QueryPool
,
QueryType
writeAccelerationStructuresPropertiesKHR :: forall io. MonadIO io => Device -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: Word64) -> io () Source #
vkWriteAccelerationStructuresPropertiesKHR - Query acceleration structure meta-data on the host
Parameters
This command fulfills the same task as
cmdWriteAccelerationStructuresPropertiesKHR
but executed by the host.
Description
device
is the device which owns the acceleration structures inpAccelerationStructures
.
accelerationStructureCount
is the count of acceleration structures for which to query the property.pAccelerationStructures
points to an array of existing previously built acceleration structures.queryType
is aQueryType
value specifying the property to be queried.dataSize
is the size in bytes of the buffer pointed to bypData
.pData
is a pointer to a user-allocated buffer where the results will be written.stride
is the stride in bytes between results for individual queries withinpData
.
Valid Usage
- If
queryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
, thenstride
must be a multiple of the size ofDeviceSize
- If
queryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
, thendata
must point to aDeviceSize
- If
queryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
, thenstride
must be a multiple of the size ofDeviceSize
- If
queryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
, thendata
must point to aDeviceSize
dataSize
must be greater than or equal toaccelerationStructureCount
*stride
- The acceleration structures referenced by
pAccelerationStructures
must be bound to host-visible memory - All acceleration structures in
accelerationStructures
must have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
ifqueryType
isQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
queryType
must beQUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
orQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
- the ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pAccelerationStructures
must be a valid pointer to an array ofaccelerationStructureCount
validAccelerationStructureKHR
handlesqueryType
must be a validQueryType
valuepData
must be a valid pointer to an array ofdataSize
bytesaccelerationStructureCount
must be greater than0
dataSize
must be greater than0
- Each element of
pAccelerationStructures
must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("missShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("width" ::: Word32) |
|
-> ("height" ::: Word32) |
|
-> ("depth" ::: Word32) |
|
-> io () |
vkCmdTraceRaysKHR - Initialize a ray tracing dispatch
Description
When the command is executed, a ray generation group of width
×
height
× depth
rays is assembled.
Valid Usage
- If a
ImageView
is sampled withFILTER_LINEAR
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
- If a
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must have aImageViewType
and format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned bygetPhysicalDeviceImageFormatProperties2
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
with a reduction mode of eitherSAMPLER_REDUCTION_MODE_MIN
orSAMPLER_REDUCTION_MODE_MAX
as a result of this command must have aImageViewType
and format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned bygetPhysicalDeviceImageFormatProperties2
- Any
Image
created with aImageCreateInfo
::flags
containingIMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using aSamplerAddressMode
ofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
- For each set n that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayout
that is compatible for set n, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - For each push constant that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayout
that is compatible for push constants, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - Descriptors in each bound descriptor set, specified via
cmdBindDescriptorSets
, must be valid if they are statically used by thePipeline
bound to the pipeline bind point used by this command - A valid pipeline must be bound to the pipeline bind point used by this command
- If the
Pipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic - There must not have been any calls to dynamic state setting
commands for any state not specified as dynamic in the
Pipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from anyImage
with aImageView
of the typeIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
,IMAGE_VIEW_TYPE_1D_ARRAY
,IMAGE_VIEW_TYPE_2D_ARRAY
orIMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions withImplicitLod
,Dref
orProj
in their name, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBuffer
is an unprotected command buffer, any resource accessed by thePipeline
object bound to the pipeline bind point used by this command must not be a protected resource - If a
ImageView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format. - If a
BufferView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format. - If a
ImageView
with aFormat
that has a 64-bit channel width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64. - If a
ImageView
with aFormat
that has a channel width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32. - If a
BufferView
with aFormat
that has a 64-bit channel width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64. - If a
BufferView
with aFormat
that has a channel width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32. - If the
sparseImageInt64Atomics
feature is not enabled,
Image
objects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command. - If the
sparseImageInt64Atomics
feature is not enabled,
Buffer
objects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command. - Any shader group handle referenced by this call must have been queried from the currently bound ray tracing shader pipeline
- This command must not cause a shader call instruction to be
executed from a shader invocation with a
recursion depth
greater than the value of
maxRecursionDepth
used to create the bound ray tracing pipeline - If
pRayGenShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpRayGenShaderBindingTable
must be less than the size of thepRayGenShaderBindingTable->buffer
pRayGenShaderBindingTable->offset
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pRayGenShaderBindingTable->offset
+pRayGenShaderBindingTable->size
must be less than or equal to the size ofpRayGenShaderBindingTable->buffer
- The
size
member ofpRayGenShaderBindingTable
must be equal to itsstride
member - If
pMissShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpMissShaderBindingTable
must be less than the size ofpMissShaderBindingTable->buffer
- The
offset
member ofpMissShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pMissShaderBindingTable->offset
+pMissShaderBindingTable->size
must be less than or equal to the size ofpMissShaderBindingTable->buffer
- The
stride
member ofpMissShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpMissShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If
pHitShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpHitShaderBindingTable
must be less than the size ofpHitShaderBindingTable->buffer
- The
offset
member ofpHitShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pHitShaderBindingTable->offset
+pHitShaderBindingTable->size
must be less than or equal to the size ofpHitShaderBindingTable->buffer
- The
stride
member ofpHitShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpHitShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If
pCallableShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpCallableShaderBindingTable
must be less than the size ofpCallableShaderBindingTable->buffer
- The
offset
member ofpCallableShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pCallableShaderBindingTable->offset
+pCallableShaderBindingTable->size
must be less than or equal to the size ofpCallableShaderBindingTable->buffer
- The
stride
member ofpCallableShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpCallableShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified bypMissShaderBindingTable
must contain a valid miss shader - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute an any hit shader must not be set to zero - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute a closest hit shader must not be set to zero - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute an intersection shader must not be set to zero - If
commandBuffer
is a protected command buffer, any resource written to by thePipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource - If
commandBuffer
is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in thePipeline
object bound to the pipeline bind point must not write to any resource width
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]height
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]depth
must be less than or equal toPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pRaygenShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepMissShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepHitShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepCallableShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
getRayTracingShaderGroupHandlesKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> Pipeline |
|
-> ("firstGroup" ::: Word32) |
|
-> ("groupCount" ::: Word32) |
|
-> ("dataSize" ::: Word64) |
|
-> ("data" ::: Ptr ()) |
|
-> io () |
vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader group handles
Valid Usage
firstGroup
must be less than the number of shader groups inpipeline
- The sum of
firstGroup
andgroupCount
must be less than or equal to the number of shader groups inpipeline
dataSize
must be at leastPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
×groupCount
pipeline
must have not been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
Valid Usage (Implicit)
device
must be a validDevice
handle
pipeline
must be a validPipeline
handlepData
must be a valid pointer to an array ofdataSize
bytesdataSize
must be greater than0
pipeline
must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
getRayTracingCaptureReplayShaderGroupHandlesKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> Pipeline |
|
-> ("firstGroup" ::: Word32) |
|
-> ("groupCount" ::: Word32) |
|
-> ("dataSize" ::: Word64) |
|
-> ("data" ::: Ptr ()) |
|
-> io () |
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing capture replay pipeline shader group handles
Valid Usage
firstGroup
must be less than the number of shader groups inpipeline
- The sum of
firstGroup
andgroupCount
must be less than or equal to the number of shader groups inpipeline
dataSize
must be at leastPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleCaptureReplaySize
×groupCount
PhysicalDeviceRayTracingFeaturesKHR
::rayTracingShaderGroupHandleCaptureReplay
must be enabled to call this function
Valid Usage (Implicit)
device
must be a validDevice
handle
pipeline
must be a validPipeline
handlepData
must be a valid pointer to an array ofdataSize
bytesdataSize
must be greater than0
pipeline
must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
createRayTracingPipelinesKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> PipelineCache |
|
-> ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR)) |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io (Result, "pipelines" ::: Vector Pipeline) |
vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline object
Description
The ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
error is returned if the implementation is unable to re-use the shader
group handles provided in
RayTracingShaderGroupCreateInfoKHR
::pShaderGroupCaptureReplayHandle
when
PhysicalDeviceRayTracingFeaturesKHR
::rayTracingShaderGroupHandleCaptureReplay
is enabled.
Valid Usage
- If the
flags
member of any element ofpCreateInfos
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, and thebasePipelineIndex
member of that same element is not-1
,basePipelineIndex
must be less than the index intopCreateInfos
that corresponds to that element
- If the
flags
member of any element ofpCreateInfos
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with thePIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set - If
pipelineCache
was created withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT
, host access topipelineCache
must be externally synchronized - The rayTracing feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
- If
pipelineCache
is notNULL_HANDLE
,pipelineCache
must be a validPipelineCache
handle pCreateInfos
must be a valid pointer to an array ofcreateInfoCount
validRayTracingPipelineCreateInfoKHR
structures- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure pPipelines
must be a valid pointer to an array ofcreateInfoCount
Pipeline
handlescreateInfoCount
must be greater than0
- If
pipelineCache
is a valid handle, it must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
AllocationCallbacks
,
Device
, Pipeline
,
PipelineCache
, RayTracingPipelineCreateInfoKHR
cmdTraceRaysIndirectKHR Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("missShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) |
|
-> Buffer |
|
-> ("offset" ::: DeviceSize) |
|
-> io () |
vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch
Description
cmdTraceRaysIndirectKHR
behaves similarly to cmdTraceRaysKHR
except
that the ray trace query dimensions are read by the device from buffer
during execution. The parameters of trace ray are encoded in the
TraceRaysIndirectCommandKHR
structure located at offset
bytes in
buffer
.
Valid Usage
- If a
ImageView
is sampled withFILTER_LINEAR
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
- If a
ImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
- If a
ImageView
is sampled withFILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
as a result of this command must have aImageViewType
and format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned bygetPhysicalDeviceImageFormatProperties2
- Any
ImageView
being sampled withFILTER_CUBIC_EXT
with a reduction mode of eitherSAMPLER_REDUCTION_MODE_MIN
orSAMPLER_REDUCTION_MODE_MAX
as a result of this command must have aImageViewType
and format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned bygetPhysicalDeviceImageFormatProperties2
- Any
Image
created with aImageCreateInfo
::flags
containingIMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using aSamplerAddressMode
ofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
- For each set n that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayout
that is compatible for set n, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - For each push constant that is statically used by the
Pipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayout
that is compatible for push constants, with thePipelineLayout
used to create the currentPipeline
, as described in ??? - Descriptors in each bound descriptor set, specified via
cmdBindDescriptorSets
, must be valid if they are statically used by thePipeline
bound to the pipeline bind point used by this command - A valid pipeline must be bound to the pipeline bind point used by this command
- If the
Pipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic - There must not have been any calls to dynamic state setting
commands for any state not specified as dynamic in the
Pipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from anyImage
with aImageView
of the typeIMAGE_VIEW_TYPE_3D
,IMAGE_VIEW_TYPE_CUBE
,IMAGE_VIEW_TYPE_1D_ARRAY
,IMAGE_VIEW_TYPE_2D_ARRAY
orIMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions withImplicitLod
,Dref
orProj
in their name, in any shader stage - If the
Pipeline
object bound to the pipeline bind point used by this command accesses aSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*
orOpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If the
robust buffer access
feature is not enabled, and if the
Pipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point - If
commandBuffer
is an unprotected command buffer, any resource accessed by thePipeline
object bound to the pipeline bind point used by this command must not be a protected resource - If a
ImageView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format. - If a
BufferView
is accessed usingOpImageWrite
as a result of this command, then theType
of theTexel
operand of that instruction must have at least as many components as the image view’s format. - If a
ImageView
with aFormat
that has a 64-bit channel width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64. - If a
ImageView
with aFormat
that has a channel width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32. - If a
BufferView
with aFormat
that has a 64-bit channel width is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 64. - If a
BufferView
with aFormat
that has a channel width less than 64-bit is accessed as a result of this command, theSampledType
of theOpTypeImage
operand of that instruction must have aWidth
of 32. - If the
sparseImageInt64Atomics
feature is not enabled,
Image
objects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command. - If the
sparseImageInt64Atomics
feature is not enabled,
Buffer
objects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through anOpTypeImage
with aSampledType
with aWidth
of 64 by this command. - Any shader group handle referenced by this call must have been queried from the currently bound ray tracing shader pipeline
- This command must not cause a shader call instruction to be
executed from a shader invocation with a
recursion depth
greater than the value of
maxRecursionDepth
used to create the bound ray tracing pipeline - If
pRayGenShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpRayGenShaderBindingTable
must be less than the size of thepRayGenShaderBindingTable->buffer
pRayGenShaderBindingTable->offset
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pRayGenShaderBindingTable->offset
+pRayGenShaderBindingTable->size
must be less than or equal to the size ofpRayGenShaderBindingTable->buffer
- The
size
member ofpRayGenShaderBindingTable
must be equal to itsstride
member - If
pMissShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpMissShaderBindingTable
must be less than the size ofpMissShaderBindingTable->buffer
- The
offset
member ofpMissShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pMissShaderBindingTable->offset
+pMissShaderBindingTable->size
must be less than or equal to the size ofpMissShaderBindingTable->buffer
- The
stride
member ofpMissShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpMissShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If
pHitShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpHitShaderBindingTable
must be less than the size ofpHitShaderBindingTable->buffer
- The
offset
member ofpHitShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pHitShaderBindingTable->offset
+pHitShaderBindingTable->size
must be less than or equal to the size ofpHitShaderBindingTable->buffer
- The
stride
member ofpHitShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpHitShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If
pCallableShaderBindingTable->buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object - The
offset
member ofpCallableShaderBindingTable
must be less than the size ofpCallableShaderBindingTable->buffer
- The
offset
member ofpCallableShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupBaseAlignment
pCallableShaderBindingTable->offset
+pCallableShaderBindingTable->size
must be less than or equal to the size ofpCallableShaderBindingTable->buffer
- The
stride
member ofpCallableShaderBindingTable
must be a multiple ofPhysicalDeviceRayTracingPropertiesKHR
::shaderGroupHandleSize
- The
stride
member ofpCallableShaderBindingTable
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxShaderGroupStride
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, thebuffer
member ofpHitShaderBindingTable
must not beNULL_HANDLE
- If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified bypMissShaderBindingTable
must contain a valid miss shader - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute an any hit shader must not be set to zero - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute a closest hit shader must not be set to zero - If the currently bound ray tracing pipeline was created with
flags
that includedPIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries inpHitShaderBindingTable
accessed as a result of this command in order to execute an intersection shader must not be set to zero - If
buffer
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object buffer
must have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BIT
bit setoffset
must be a multiple of4
commandBuffer
must not be a protected command buffer- (
offset
+sizeof
(TraceRaysIndirectCommandKHR
)) must be less than or equal to the size ofbuffer
- the ::rayTracingIndirectTraceRays feature must be enabled
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pRaygenShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepMissShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepHitShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurepCallableShaderBindingTable
must be a valid pointer to a validStridedBufferRegionKHR
structurebuffer
must be a validBuffer
handlecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- Both of
buffer
, andcommandBuffer
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
getDeviceAccelerationStructureCompatibilityKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureVersionKHR |
|
-> io () |
vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized acceleration structure is compatible with the current device
Description
This possible return values for
getDeviceAccelerationStructureCompatibilityKHR
are:
SUCCESS
is returned if an acceleration structure serialized withversion
as the version information is compatible withdevice
.ERROR_INCOMPATIBLE_VERSION_KHR
is returned if an acceleration structure serialized withversion
as the version information is not compatible withdevice
.
Valid Usage
- The rayTracing or rayQuery feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
version
must be a valid pointer to a validAccelerationStructureVersionKHR
structure
Return Codes
See Also
createAccelerationStructureKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureCreateInfoKHR |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> 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 cmdBuildAccelerationStructureKHR
,
buildAccelerationStructureKHR
, 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
- The rayTracing or rayQuery feature must be enabled
- If
AccelerationStructureCreateInfoKHR
::deviceAddress
is not zero, the rayTracingAccelerationStructureCaptureReplay feature must be enabled - If
device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pCreateInfo
must be a valid pointer to a validAccelerationStructureCreateInfoKHR
structure- If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure pAccelerationStructure
must be a valid pointer to aAccelerationStructureKHR
handle
Return Codes
See Also
AccelerationStructureCreateInfoKHR
,
AccelerationStructureKHR
,
AllocationCallbacks
,
Device
withAccelerationStructureKHR :: forall io r. MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> 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 first argument.
To just extract the pair pass (,)
as the first argument.
cmdBuildAccelerationStructureKHR Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) |
|
-> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) |
|
-> io () |
vkCmdBuildAccelerationStructureKHR - Build an acceleration structure
Description
The cmdBuildAccelerationStructureKHR
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 cmdBuildAccelerationStructureKHR
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
or
ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
.
Valid Usage
- Each element of
ppOffsetInfos
[i] must be a valid pointer to an array ofpInfos
[i].geometryCount
AccelerationStructureBuildOffsetInfoKHR
structures
- Each
pInfos
[i].srcAccelerationStructure
must not refer to the same acceleration structure as anypInfos
[i].dstAccelerationStructure
that is provided to the same build command unless it is identical for an update - For each
pInfos
[i],dstAccelerationStructure
must have been created with compatibleAccelerationStructureCreateInfoKHR
whereAccelerationStructureCreateInfoKHR
::type
andAccelerationStructureCreateInfoKHR
::flags
are identical toAccelerationStructureBuildGeometryInfoKHR
::type
andAccelerationStructureBuildGeometryInfoKHR
::flags
respectively,AccelerationStructureBuildGeometryInfoKHR
::geometryCount
fordstAccelerationStructure
are greater than or equal to the build size, and each geometry inAccelerationStructureBuildGeometryInfoKHR
::ppGeometries
fordstAccelerationStructure
has greater than or equal to the number of vertices, indices, and AABBs,AccelerationStructureGeometryTrianglesDataKHR
::transformData
is both 0 or both non-zero, and all other parameters are the same - For each
pInfos
[i], ifupdate
isTRUE
, then objects that were previously active for that acceleration structure must not be made inactive as per ??? - For each
pInfos
[i], ifupdate
isTRUE
, then objects that were previously inactive for that acceleration structure must not be made active as per ??? - Any acceleration structure instance in any top level build in this command must not reference any bottom level acceleration structure built by this command
- There must not be any
memory aliasing
between the scratch memories that are provided in all the
pInfos
[i].scratchData
memories for the acceleration structure builds - There must not be any memory aliasing between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command
- If
update
isFALSE
, all addresses betweenpInfos
[i].scratchData
andpInfos
[i].scratchData
+ N - 1 must be in the buffer device address range of the same buffer,
where N is given by the
size
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsKHR
withAccelerationStructureMemoryRequirementsInfoKHR
::accelerationStructure
set topInfos
[i].dstAccelerationStructure
andAccelerationStructureMemoryRequirementsInfoKHR
::type
set toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR
- If
update
isTRUE
, all addresses betweenpInfos
[i].scratchData
andpInfos
[i].scratchData
+ N - 1 must be in the buffer device address range of the same buffer,
where N is given by the
size
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsKHR
withAccelerationStructureMemoryRequirementsInfoKHR
::accelerationStructure
set topInfos
[i].dstAccelerationStructure
andAccelerationStructureMemoryRequirementsInfoKHR
::type
set toACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR
- The buffer from which the buffer device address
pInfos
[i].scratchData
is queried must have been created withBUFFER_USAGE_RAY_TRACING_BIT_KHR
usage flag - All
DeviceOrHostAddressKHR
orDeviceOrHostAddressConstKHR
referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object - All
AccelerationStructureKHR
objects referenced by this command must be bound to device memory - The
DeferredOperationInfoKHR
structure must not be included in thepNext
chain of any of the providedAccelerationStructureBuildGeometryInfoKHR
structures
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pInfos
must be a valid pointer to an array ofinfoCount
validAccelerationStructureBuildGeometryInfoKHR
structuresppOffsetInfos
must be a valid pointer to an array ofinfoCount
AccelerationStructureBuildOffsetInfoKHR
structurescommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
infoCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureBuildOffsetInfoKHR
,
CommandBuffer
cmdBuildAccelerationStructureIndirectKHR Source #
:: forall a io. (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io) | |
=> CommandBuffer |
|
-> AccelerationStructureBuildGeometryInfoKHR a |
|
-> ("indirectBuffer" ::: Buffer) |
|
-> ("indirectOffset" ::: DeviceSize) |
|
-> ("indirectStride" ::: Word32) | |
-> io () |
vkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration structure with some parameters provided on the device
Valid Usage
- All
DeviceOrHostAddressKHR
orDeviceOrHostAddressConstKHR
referenced by this command must contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object
- All
AccelerationStructureKHR
objects referenced by this command must be bound to device memory - The ::rayTracingIndirectAccelerationStructureBuild feature must be enabled
- The
DeferredOperationInfoKHR
structure must not be included in thepNext
chain of any of the providedAccelerationStructureBuildGeometryInfoKHR
structures
Valid Usage (Implicit)
commandBuffer
must be a validCommandBuffer
handle
pInfo
must be a valid pointer to a validAccelerationStructureBuildGeometryInfoKHR
structureindirectBuffer
must be a validBuffer
handlecommandBuffer
must be in the recording state- The
CommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
- Both of
commandBuffer
, andindirectBuffer
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
AccelerationStructureBuildGeometryInfoKHR
,
Buffer
, CommandBuffer
,
DeviceSize
buildAccelerationStructureKHR :: forall io. MonadIO io => Device -> ("infos" ::: Vector (SomeStruct AccelerationStructureBuildGeometryInfoKHR)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io Result Source #
vkBuildAccelerationStructureKHR - Build an acceleration structure on the host
Parameters
This command fulfills the same task as
cmdBuildAccelerationStructureKHR
but executed by the host.
Description
device
is theDevice
for which the acceleration structures are being built.
infoCount
is the number of acceleration structures to build. It specifies the number of thepInfos
structures andppOffsetInfos
pointers that must be provided.pInfos
is a pointer to an array ofinfoCount
AccelerationStructureBuildGeometryInfoKHR
structures defining the geometry used to build each acceleration structure.ppOffsetInfos
is an array ofinfoCount
pointers to arrays ofAccelerationStructureBuildOffsetInfoKHR
structures. EachppOffsetInfos
[i] is an array ofpInfos
[i].geometryCount
AccelerationStructureBuildOffsetInfoKHR
structures defining dynamic offsets to the addresses where geometry data is stored, as defined bypInfos
[i].
The buildAccelerationStructureKHR
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 buildAccelerationStructureKHR
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.
If the
DeferredOperationInfoKHR
structure is included in the pNext
chain of any
AccelerationStructureBuildGeometryInfoKHR
structure, the operation of
this command is deferred, as defined in the
Deferred Host Operations
chapter.
Valid Usage
- Each element of
ppOffsetInfos
[i] must be a valid pointer to an array ofpInfos
[i].geometryCount
AccelerationStructureBuildOffsetInfoKHR
structures
- Each
pInfos
[i].srcAccelerationStructure
must not refer to the same acceleration structure as anypInfos
[i].dstAccelerationStructure
that is provided to the same build command unless it is identical for an update - For each
pInfos
[i],dstAccelerationStructure
must have been created with compatibleAccelerationStructureCreateInfoKHR
whereAccelerationStructureCreateInfoKHR
::type
andAccelerationStructureCreateInfoKHR
::flags
are identical toAccelerationStructureBuildGeometryInfoKHR
::type
andAccelerationStructureBuildGeometryInfoKHR
::flags
respectively,AccelerationStructureBuildGeometryInfoKHR
::geometryCount
fordstAccelerationStructure
are greater than or equal to the build size, and each geometry inAccelerationStructureBuildGeometryInfoKHR
::ppGeometries
fordstAccelerationStructure
has greater than or equal to the number of vertices, indices, and AABBs,AccelerationStructureGeometryTrianglesDataKHR
::transformData
is both 0 or both non-zero, and all other parameters are the same - For each
pInfos
[i], ifupdate
isTRUE
, then objects that were previously active for that acceleration structure must not be made inactive as per ??? - For each
pInfos
[i], ifupdate
isTRUE
, then objects that were previously inactive for that acceleration structure must not be made active as per ??? - Any acceleration structure instance in any top level build in this command must not reference any bottom level acceleration structure built by this command
- There must not be any
memory aliasing
between the scratch memories that are provided in all the
pInfos
[i].scratchData
memories for the acceleration structure builds - There must not be any memory aliasing between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command
- All
DeviceOrHostAddressKHR
orDeviceOrHostAddressConstKHR
referenced by this command must contain valid host addresses - All
AccelerationStructureKHR
objects referenced by this command must be bound to host-visible memory - The ::rayTracingHostAccelerationStructureCommands feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pInfos
must be a valid pointer to an array ofinfoCount
validAccelerationStructureBuildGeometryInfoKHR
structuresppOffsetInfos
must be a valid pointer to an array ofinfoCount
AccelerationStructureBuildOffsetInfoKHR
structuresinfoCount
must be greater than0
Return Codes
See Also
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureBuildOffsetInfoKHR
,
Device
getAccelerationStructureDeviceAddressKHR Source #
:: forall io. MonadIO io | |
=> Device |
|
-> AccelerationStructureDeviceAddressInfoKHR |
|
-> 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.
Valid Usage
- If
device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled
Valid Usage (Implicit)
device
must be a validDevice
handle
pInfo
must be a valid pointer to a validAccelerationStructureDeviceAddressInfoKHR
structure
See Also
data RayTracingShaderGroupCreateInfoKHR Source #
VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a shader group
Valid Usage
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
thengeneralShader
must be a valid index intoRayTracingPipelineCreateInfoKHR
::pStages
referring to a shader ofSHADER_STAGE_RAYGEN_BIT_KHR
,SHADER_STAGE_MISS_BIT_KHR
, orSHADER_STAGE_CALLABLE_BIT_KHR
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
thenclosestHitShader
,anyHitShader
, andintersectionShader
must beSHADER_UNUSED_KHR
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
thenintersectionShader
must be a valid index intoRayTracingPipelineCreateInfoKHR
::pStages
referring to a shader ofSHADER_STAGE_INTERSECTION_BIT_KHR
- If
type
isRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
thenintersectionShader
must beSHADER_UNUSED_KHR
closestHitShader
must be eitherSHADER_UNUSED_KHR
or a valid index intoRayTracingPipelineCreateInfoKHR
::pStages
referring to a shader ofSHADER_STAGE_CLOSEST_HIT_BIT_KHR
anyHitShader
must be eitherSHADER_UNUSED_KHR
or a valid index intoRayTracingPipelineCreateInfoKHR
::pStages
referring to a shader ofSHADER_STAGE_ANY_HIT_BIT_KHR
- If
PhysicalDeviceRayTracingFeaturesKHR
::rayTracingShaderGroupHandleCaptureReplayMixed
isFALSE
thenpShaderGroupCaptureReplayHandle
must not be provided if it has not been provided on a previous call to ray tracing pipeline creation - If
PhysicalDeviceRayTracingFeaturesKHR
::rayTracingShaderGroupHandleCaptureReplayMixed
isFALSE
then the caller must guarantee that no ray tracing pipeline creation commands withpShaderGroupCaptureReplayHandle
provided execute simultaneously with ray tracing pipeline creation commands withoutpShaderGroupCaptureReplayHandle
provided
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
pNext
must beNULL
type
must be a validRayTracingShaderGroupTypeKHR
value
See Also
RayTracingPipelineCreateInfoKHR
, RayTracingShaderGroupTypeKHR
,
StructureType
RayTracingShaderGroupCreateInfoKHR | |
|
Instances
data RayTracingPipelineCreateInfoKHR (es :: [Type]) Source #
VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a newly created ray tracing pipeline
Description
The parameters basePipelineHandle
and basePipelineIndex
are
described in more detail in
Pipeline Derivatives.
When
PIPELINE_CREATE_LIBRARY_BIT_KHR
is specified, this pipeline defines a pipeline library which cannot
be bound as a ray tracing pipeline directly. Instead, pipeline libraries
define common shaders and shader groups which can be included in
future pipeline creation.
If pipeline libraries are included in libraries
, shaders defined in
those libraries are treated as if they were defined as additional
entries in pStages
, appended in the order they appear in the
pLibraries
array and in the pStages
array when those libraries were
defined.
When referencing shader groups in order to obtain a shader group handle,
groups defined in those libraries are treated as if they were defined as
additional entries in pGroups
, appended in the order they appear in
the pLibraries
array and in the pGroups
array when those libraries
were defined. The shaders these groups reference are set when the
pipeline library is created, referencing those specified in the pipeline
library, not in the pipeline that includes it.
If the
DeferredOperationInfoKHR
structure is included in the pNext
chain of
RayTracingPipelineCreateInfoKHR
, the operation of this pipeline
creation is deferred, as defined in the
Deferred Host Operations
chapter.
Valid Usage
- If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineIndex
is-1
,basePipelineHandle
must be a valid handle to a ray tracingPipeline
- If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineHandle
isNULL_HANDLE
,basePipelineIndex
must be a valid index into the calling command’spCreateInfos
parameter - If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineIndex
is not-1
,basePipelineHandle
must beNULL_HANDLE
- If
flags
contains thePIPELINE_CREATE_DERIVATIVE_BIT
flag, andbasePipelineHandle
is notNULL_HANDLE
,basePipelineIndex
must be-1
- The
stage
member of at least one element ofpStages
must beSHADER_STAGE_RAYGEN_BIT_KHR
- The shader code for the entry points identified by
pStages
, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter layout
must be consistent with all shaders specified inpStages
- The number of resources in
layout
accessible to each shader stage that is used by the pipeline must be less than or equal toPhysicalDeviceLimits
::maxPerStageResources
flags
must not includePIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
- If the
pipelineCreationCacheControl
feature is not enabled,
flags
must not includePIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
orPIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
maxRecursionDepth
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxRecursionDepth
- If
flags
includesPIPELINE_CREATE_LIBRARY_BIT_KHR
,pLibraryInterface
must not beNULL
- If the
libraryCount
member oflibraries
is greater than0
,pLibraryInterface
must not beNULL
- Each element of the
pLibraries
member oflibraries
must have been created with the value ofmaxRecursionDepth
equal to that in this pipeline - Each element of the
pLibraries
member oflibraries
must have been created with alayout
that is compatible with thelayout
in this pipeline - Each element of the
pLibraries
member oflibraries
must have been created with values of themaxPayloadSize
,maxAttributeSize
, andmaxCallableSize
members ofpLibraryInterface
equal to those in this pipeline - If
flags
includesPIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, for any element ofpGroups
with atype
ofRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
orRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
, theanyHitShader
of that element must not beSHADER_UNUSED_KHR
- If
flags
includesPIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, for any element ofpGroups
with atype
ofRAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
orRAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
, theclosestHitShader
of that element must not beSHADER_UNUSED_KHR
- If the
rayTracingPrimitiveCulling
feature is not enabled,
flags
must not includePIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
- If the
rayTracingPrimitiveCulling
feature is not enabled,
flags
must not includePIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
- If
libraries.libraryCount
is zero, thenstageCount
must not be zero - If
libraries.libraryCount
is zero, thengroupCount
must not be zero
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
- Each
pNext
member of any structure (including this one) in thepNext
chain must be eitherNULL
or a pointer to a valid instance ofDeferredOperationInfoKHR
orPipelineCreationFeedbackCreateInfoEXT
- The
sType
value of each struct in thepNext
chain must be unique flags
must be a valid combination ofPipelineCreateFlagBits
values- If
stageCount
is not0
,pStages
must be a valid pointer to an array ofstageCount
validPipelineShaderStageCreateInfo
structures - If
groupCount
is not0
,pGroups
must be a valid pointer to an array ofgroupCount
validRayTracingShaderGroupCreateInfoKHR
structures libraries
must be a validPipelineLibraryCreateInfoKHR
structure- If
pLibraryInterface
is notNULL
,pLibraryInterface
must be a valid pointer to a validRayTracingPipelineInterfaceCreateInfoKHR
structure layout
must be a validPipelineLayout
handle- Both of
basePipelineHandle
, andlayout
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
Pipeline
,
PipelineCreateFlags
,
PipelineLayout
,
PipelineLibraryCreateInfoKHR
,
PipelineShaderStageCreateInfo
,
RayTracingPipelineInterfaceCreateInfoKHR
,
RayTracingShaderGroupCreateInfoKHR
,
StructureType
,
createRayTracingPipelinesKHR
RayTracingPipelineCreateInfoKHR | |
|
Instances
data BindAccelerationStructureMemoryInfoKHR Source #
VkBindAccelerationStructureMemoryInfoKHR - Structure specifying acceleration structure memory binding
Valid Usage
accelerationStructure
must not already be backed by a memory object
memoryOffset
must be less than the size ofmemory
memory
must have been allocated using one of the memory types allowed in thememoryTypeBits
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsKHR
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR
memoryOffset
must be an integer multiple of thealignment
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsKHR
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR
- The
size
member of theMemoryRequirements
structure returned from a call togetAccelerationStructureMemoryRequirementsKHR
withaccelerationStructure
andtype
ofACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR
must be less than or equal to the size ofmemory
minusmemoryOffset
Valid Usage (Implicit)
pNext
must beNULL
accelerationStructure
must be a validAccelerationStructureKHR
handlememory
must be a validDeviceMemory
handle- If
deviceIndexCount
is not0
,pDeviceIndices
must be a valid pointer to an array ofdeviceIndexCount
uint32_t
values - Both of
accelerationStructure
, andmemory
must have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureKHR
,
DeviceMemory
,
DeviceSize
,
StructureType
,
bindAccelerationStructureMemoryKHR
,
bindAccelerationStructureMemoryNV
BindAccelerationStructureMemoryInfoKHR | |
|
Instances
data WriteDescriptorSetAccelerationStructureKHR Source #
VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying acceleration structure descriptor info
Valid Usage
accelerationStructureCount
must be equal todescriptorCount
in the extended structure
- Each acceleration structure in
pAccelerationStructures
must have been created withACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
Valid Usage (Implicit)
pAccelerationStructures
must be a valid pointer to an array ofaccelerationStructureCount
validAccelerationStructureKHR
handlesaccelerationStructureCount
must be greater than0
See Also
WriteDescriptorSetAccelerationStructureKHR | |
|
Instances
data AccelerationStructureMemoryRequirementsInfoKHR Source #
VkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying acceleration to query for memory requirements
Valid Usage (Implicit)
See Also
AccelerationStructureBuildTypeKHR
,
AccelerationStructureKHR
,
AccelerationStructureMemoryRequirementsTypeKHR
,
StructureType
,
getAccelerationStructureMemoryRequirementsKHR
AccelerationStructureMemoryRequirementsInfoKHR | |
|
Instances
data PhysicalDeviceRayTracingFeaturesKHR Source #
VkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray tracing features that can be supported by an implementation
Members
The members of the PhysicalDeviceRayTracingFeaturesKHR
structure
describe the following features:
Description
rayTracing
indicates whether the implementation supports ray tracing functionality. See Ray Tracing.
rayTracingShaderGroupHandleCaptureReplay
indicates whether the implementation supports saving and reusing shader group handles, e.g. for trace capture and replay.rayTracingShaderGroupHandleCaptureReplayMixed
indicates whether the implementation supports reuse of shader group handles being arbitrarily mixed with creation of non-reused shader group handles. If this isFALSE
, all reused shader group handles must be specified before any non-reused handles may be created.rayTracingAccelerationStructureCaptureReplay
indicates whether the implementation supports saving and reusing acceleration structure device addresses, e.g. for trace capture and replay.rayTracingIndirectTraceRays
indicates whether the implementation supports indirect trace ray commands, e.g.cmdTraceRaysIndirectKHR
.rayTracingIndirectAccelerationStructureBuild
indicates whether the implementation supports indirect acceleration structure build commands, e.g.cmdBuildAccelerationStructureIndirectKHR
.rayTracingHostAccelerationStructureCommands
indicates whether the implementation supports host side acceleration structure commands, e.g.buildAccelerationStructureKHR
,copyAccelerationStructureKHR
,copyAccelerationStructureToMemoryKHR
,copyMemoryToAccelerationStructureKHR
,writeAccelerationStructuresPropertiesKHR
.rayQuery
indicates whether the implementation supports ray query (OpRayQueryProceedKHR
) functionality.rayTracingPrimitiveCulling
indicates whether the implementation supports primitive culling during ray traversal.
If the PhysicalDeviceRayTracingFeaturesKHR
structure is included in
the pNext
chain of
PhysicalDeviceFeatures2
,
it is filled with values indicating whether the feature is supported.
PhysicalDeviceRayTracingFeaturesKHR
can also be used in the pNext
chain of DeviceCreateInfo
to enable the features.
Valid Usage
- If
rayTracingShaderGroupHandleCaptureReplayMixed
isTRUE
,rayTracingShaderGroupHandleCaptureReplay
must also beTRUE
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR
See Also
Instances
data PhysicalDeviceRayTracingPropertiesKHR Source #
VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical device for ray tracing
Description
If the PhysicalDeviceRayTracingPropertiesKHR
structure is included in
the pNext
chain of
PhysicalDeviceProperties2
,
it is filled with the implementation-dependent limits.
Limits specified by this structure must match those specified with the
same name in
PhysicalDeviceRayTracingPropertiesNV
.
Valid Usage (Implicit)
See Also
PhysicalDeviceRayTracingPropertiesKHR | |
|
Instances
data StridedBufferRegionKHR Source #
VkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer with a stride
Valid Usage
- If
buffer
is notNULL_HANDLE
,size
plusoffset
must be less than or equal to the size ofbuffer
- If
buffer
is notNULL_HANDLE
,stride
must be less than the size ofbuffer
Valid Usage (Implicit)
- If
buffer
is notNULL_HANDLE
,buffer
must be a validBuffer
handle
See Also
Buffer
,
DeviceSize
, cmdTraceRaysIndirectKHR
,
cmdTraceRaysKHR
StridedBufferRegionKHR | |
|
Instances
data TraceRaysIndirectCommandKHR Source #
VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of an indirect trace ray command
Description
The members of TraceRaysIndirectCommandKHR
have the same meaning as
the similarly named parameters of cmdTraceRaysKHR
.
Valid Usage
See Also
No cross-references are available
TraceRaysIndirectCommandKHR | |
|
Instances
data AccelerationStructureGeometryTrianglesDataKHR Source #
VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a triangle geometry in a bottom-level acceleration structure
Valid Usage (Implicit)
pNext
must beNULL
vertexFormat
must be a validFormat
valuevertexData
must be a validDeviceOrHostAddressConstKHR
unionindexType
must be a validIndexType
value- If
indexData
is not0
,indexData
must be a validDeviceOrHostAddressConstKHR
union - If
transformData
is not0
,transformData
must be a validDeviceOrHostAddressConstKHR
union
See Also
AccelerationStructureGeometryDataKHR
, DeviceOrHostAddressConstKHR
,
DeviceSize
,
Format
,
IndexType
,
StructureType
AccelerationStructureGeometryTrianglesDataKHR | |
|
Instances
data AccelerationStructureGeometryAabbsDataKHR Source #
VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying axis-aligned bounding box geometry in a bottom-level acceleration structure
Valid Usage (Implicit)
See Also
AccelerationStructureGeometryDataKHR
, DeviceOrHostAddressConstKHR
,
DeviceSize
,
StructureType
AccelerationStructureGeometryAabbsDataKHR | |
|
Instances
data AccelerationStructureGeometryInstancesDataKHR Source #
VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a geometry consisting of instances of other acceleration structures
Valid Usage
data
must be aligned to16
bytes
- If
arrayOfPointers
is true, each pointer must be aligned to16
bytes
Valid Usage (Implicit)
pNext
must beNULL
data
must be a validDeviceOrHostAddressConstKHR
union
See Also
AccelerationStructureGeometryDataKHR
,
Bool32
, DeviceOrHostAddressConstKHR
,
StructureType
AccelerationStructureGeometryInstancesDataKHR | |
|
Instances
data AccelerationStructureGeometryKHR Source #
VkAccelerationStructureGeometryKHR - Structure specifying geometries to be built into an acceleration structure
Valid Usage
- If
geometryType
isGEOMETRY_TYPE_AABBS_KHR
, theaabbs
member ofgeometry
must be a validAccelerationStructureGeometryAabbsDataKHR
structure
- If
geometryType
isGEOMETRY_TYPE_TRIANGLES_KHR
, thetriangles
member ofgeometry
must be a validAccelerationStructureGeometryTrianglesDataKHR
structure - If
geometryType
isGEOMETRY_TYPE_INSTANCES_KHR
, theinstances
member ofgeometry
must be a validAccelerationStructureGeometryInstancesDataKHR
structure
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
pNext
must beNULL
geometryType
must be a validGeometryTypeKHR
value- If
geometryType
isGEOMETRY_TYPE_TRIANGLES_KHR
, thetriangles
member ofgeometry
must be a validAccelerationStructureGeometryTrianglesDataKHR
structure - If
geometryType
isGEOMETRY_TYPE_AABBS_KHR
, theaabbs
member ofgeometry
must be a validAccelerationStructureGeometryAabbsDataKHR
structure - If
geometryType
isGEOMETRY_TYPE_INSTANCES_KHR
, theinstances
member ofgeometry
must be a validAccelerationStructureGeometryInstancesDataKHR
structure flags
must be a valid combination ofGeometryFlagBitsKHR
values
See Also
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureGeometryDataKHR
, GeometryFlagsKHR
,
GeometryTypeKHR
, StructureType
AccelerationStructureGeometryKHR | |
|
Instances
data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) Source #
VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the geometry data used to build an acceleration structure
Description
Note
Elements of ppGeometries
are accessed as follows, based on
geometryArrayOfPointers
:
if (geometryArrayOfPointers) { use *(ppGeometries[i]); } else { use (*ppGeometries)[i]; }
Valid Usage
- If
update
isTRUE
,srcAccelerationStructure
must not beNULL_HANDLE
- If
update
isTRUE
,srcAccelerationStructure
must have been built before withBUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
set inAccelerationStructureBuildGeometryInfoKHR
::flags
scratchData
must have been created withBUFFER_USAGE_RAY_TRACING_BIT_KHR
usage flag- If
update
isTRUE
, thesrcAccelerationStructure
anddstAccelerationStructure
objects must either be the same object or not have any memory aliasing
Valid Usage (Implicit)
pNext
must beNULL
or a pointer to a valid instance ofDeferredOperationInfoKHR
- The
sType
value of each struct in thepNext
chain must be unique type
must be a validAccelerationStructureTypeKHR
valueflags
must be a valid combination ofBuildAccelerationStructureFlagBitsKHR
values- If
srcAccelerationStructure
is notNULL_HANDLE
,srcAccelerationStructure
must be a validAccelerationStructureKHR
handle dstAccelerationStructure
must be a validAccelerationStructureKHR
handlescratchData
must be a validDeviceOrHostAddressKHR
union- Both of
dstAccelerationStructure
, andsrcAccelerationStructure
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureGeometryKHR
,
AccelerationStructureKHR
,
AccelerationStructureTypeKHR
, Bool32
,
BuildAccelerationStructureFlagsKHR
, DeviceOrHostAddressKHR
,
StructureType
,
buildAccelerationStructureKHR
,
cmdBuildAccelerationStructureIndirectKHR
,
cmdBuildAccelerationStructureKHR
AccelerationStructureBuildGeometryInfoKHR | |
|
Instances
data AccelerationStructureBuildOffsetInfoKHR Source #
VkAccelerationStructureBuildOffsetInfoKHR - 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:
For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR
,primitiveCount
is the number of triangles to be built, where each triangle is treated as 3 vertices.- If the geometry uses indices,
primitiveCount
× 3 indices are consumed fromAccelerationStructureGeometryTrianglesDataKHR
::indexData
, starting at an offset ofprimitiveOffset
. The value offirstVertex
is added to the index values before fetching vertices. - If the geometry does not use indices,
primitiveCount
× 3 vertices are consumed fromAccelerationStructureGeometryTrianglesDataKHR
::vertexData
, starting at an offset ofprimitiveOffset
+AccelerationStructureGeometryTrianglesDataKHR
::vertexStride
×firstVertex
. - A single
TransformMatrixKHR
structure is consumed fromAccelerationStructureGeometryTrianglesDataKHR
::transformData
, at an offset oftransformOffset
. This transformation matrix is used by all triangles.
- If the geometry uses indices,
- For geometries of type
GEOMETRY_TYPE_AABBS_KHR
,primitiveCount
is the number of axis-aligned bounding boxes.primitiveCount
AabbPositionsKHR
structures are consumed fromAccelerationStructureGeometryAabbsDataKHR
::data
, starting at an offset ofprimitiveOffset
. - For geometries of type
GEOMETRY_TYPE_INSTANCES_KHR
,primitiveCount
is the number of acceleration structures.primitiveCount
AccelerationStructureInstanceKHR
structures are consumed fromAccelerationStructureGeometryInstancesDataKHR
::data
, starting at an offset ofprimitiveOffset
.
Valid Usage
- For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR
, if the geometry uses indices, the offsetprimitiveOffset
fromAccelerationStructureGeometryTrianglesDataKHR
::indexData
must be a multiple of the element size ofAccelerationStructureGeometryTrianglesDataKHR
::indexType
- For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR
, if the geometry doesn’t use indices, the offsetprimitiveOffset
fromAccelerationStructureGeometryTrianglesDataKHR
::vertexData
must be a multiple of the component size ofAccelerationStructureGeometryTrianglesDataKHR
::vertexFormat
- For geometries of type
GEOMETRY_TYPE_TRIANGLES_KHR
, the offsettransformOffset
fromAccelerationStructureGeometryTrianglesDataKHR
::transformData
must be a multiple of 16 - For geometries of type
GEOMETRY_TYPE_AABBS_KHR
, the offsetprimitiveOffset
fromAccelerationStructureGeometryAabbsDataKHR
::data
must be a multiple of 8 - For geometries of type
GEOMETRY_TYPE_INSTANCES_KHR
, the offsetprimitiveOffset
fromAccelerationStructureGeometryInstancesDataKHR
::data
must be a multiple of 16 // TODO - Almost certainly should be more here
See Also
buildAccelerationStructureKHR
, cmdBuildAccelerationStructureKHR
AccelerationStructureBuildOffsetInfoKHR | |
|
Instances
data AccelerationStructureCreateGeometryTypeInfoKHR Source #
VkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying the shape of geometries that will be built into an acceleration structure
Description
When geometryType
is GEOMETRY_TYPE_TRIANGLES_KHR
:
- if
indexType
isINDEX_TYPE_NONE_KHR
, then this structure describes a set of triangles. - if
indexType
is notINDEX_TYPE_NONE_KHR
, then this structure describes a set of indexed triangles.
Valid Usage
- If
geometryType
isGEOMETRY_TYPE_TRIANGLES_KHR
,vertexFormat
must support theFORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
inFormatProperties
::bufferFeatures
as returned bygetPhysicalDeviceFormatProperties2
- If
geometryType
isGEOMETRY_TYPE_TRIANGLES_KHR
,indexType
must beINDEX_TYPE_UINT16
,INDEX_TYPE_UINT32
, orINDEX_TYPE_NONE_KHR
Valid Usage (Implicit)
pNext
must beNULL
geometryType
must be a validGeometryTypeKHR
valueindexType
must be a validIndexType
value- If
vertexFormat
is not0
,vertexFormat
must be a validFormat
value
See Also
AccelerationStructureCreateInfoKHR
,
Bool32
,
Format
, GeometryTypeKHR
,
IndexType
,
StructureType
AccelerationStructureCreateGeometryTypeInfoKHR | |
|
Instances
data AccelerationStructureCreateInfoKHR 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 bound to an
identically created DeviceMemory
object.
Apps should avoid creating acceleration structures with app-provided
addresses and implementation-provided addresses in the same process, to
reduce the likelihood of
ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR
errors.
Valid Usage
- If
compactedSize
is not0
thenmaxGeometryCount
must be0
- If
compactedSize
is0
thenmaxGeometryCount
must not be0
- If
type
isACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
thenmaxGeometryCount
must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxGeometryCount
- If
type
isACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
then themaxPrimitiveCount
member of each element of thepGeometryInfos
array must be less than or equal toPhysicalDeviceRayTracingPropertiesKHR
::maxInstanceCount
- The total number of triangles in all geometries must be less than
or equal to
PhysicalDeviceRayTracingPropertiesKHR
::maxPrimitiveCount
- The total number of AABBs in all geometries must be less than or
equal to
PhysicalDeviceRayTracingPropertiesKHR
::maxPrimitiveCount
- If
type
isACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
andcompactedSize
is0
,maxGeometryCount
must be1
- If
type
isACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
andcompactedSize
is0
, thegeometryType
member of elements ofpGeometryInfos
must beGEOMETRY_TYPE_INSTANCES_KHR
- If
type
isACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
andcompactedSize
is0
, thegeometryType
member of elements ofpGeometryInfos
must not beGEOMETRY_TYPE_INSTANCES_KHR
- If
type
isACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
then thegeometryType
member of each geometry inpGeometryInfos
must be the same - If
flags
has theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
bit set, then it must not have theBUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
bit set - If
deviceAddress
is not0
,PhysicalDeviceRayTracingFeaturesKHR
::rayTracingAccelerationStructureCaptureReplay
must beTRUE
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
pNext
must beNULL
type
must be a validAccelerationStructureTypeKHR
valueflags
must be a valid combination ofBuildAccelerationStructureFlagBitsKHR
values- If
maxGeometryCount
is not0
,pGeometryInfos
must be a valid pointer to an array ofmaxGeometryCount
validAccelerationStructureCreateGeometryTypeInfoKHR
structures
See Also
AccelerationStructureCreateGeometryTypeInfoKHR
,
AccelerationStructureTypeKHR
, BuildAccelerationStructureFlagsKHR
,
DeviceAddress
,
DeviceSize
,
StructureType
,
createAccelerationStructureKHR
AccelerationStructureCreateInfoKHR | |
|
Instances
data AabbPositionsKHR Source #
VkAabbPositionsKHR - Structure specifying two opposing corners of an axis-aligned bounding box
Valid Usage
See Also
No cross-references are available
AabbPositionsKHR | |
|
Instances
data TransformMatrixKHR Source #
VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation matrix
See Also
Instances
data AccelerationStructureInstanceKHR Source #
VkAccelerationStructureInstanceKHR - Structure specifying a single acceleration structure instance for building into an acceleration structure geometry
Description
The C language spec 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
AccelerationStructureInstanceKHR | |
|
Instances
data AccelerationStructureDeviceAddressInfoKHR Source #
VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the acceleration structure to query an address for
Valid Usage (Implicit)
See Also
AccelerationStructureKHR
,
StructureType
,
getAccelerationStructureDeviceAddressKHR
AccelerationStructureDeviceAddressInfoKHR | |
|
Instances
data AccelerationStructureVersionKHR Source #
VkAccelerationStructureVersionKHR - Acceleration structure version information
Valid Usage (Implicit)
See Also
StructureType
,
getDeviceAccelerationStructureCompatibilityKHR
AccelerationStructureVersionKHR | |
|
Instances
data CopyAccelerationStructureInfoKHR (es :: [Type]) Source #
VkCopyAccelerationStructureInfoKHR - Parameters for copying an acceleration structure
Valid Usage
mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
orCOPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
src
must have been built withBUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
ifmode
isCOPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
pNext
must beNULL
or a pointer to a valid instance ofDeferredOperationInfoKHR
- The
sType
value of each struct in thepNext
chain must be unique src
must be a validAccelerationStructureKHR
handledst
must be a validAccelerationStructureKHR
handlemode
must be a validCopyAccelerationStructureModeKHR
value- Both of
dst
, andsrc
must have been created, allocated, or retrieved from the sameDevice
See Also
AccelerationStructureKHR
,
CopyAccelerationStructureModeKHR
,
StructureType
,
cmdCopyAccelerationStructureKHR
, copyAccelerationStructureKHR
CopyAccelerationStructureInfoKHR | |
|
Instances
data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) Source #
VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing an acceleration structure
Valid Usage
- The memory pointed to by
dst
must be at least as large as the serialization size ofsrc
, as reported byQUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
Valid Usage (Implicit)
pNext
must beNULL
or a pointer to a valid instance ofDeferredOperationInfoKHR
- The
sType
value of each struct in thepNext
chain must be unique src
must be a validAccelerationStructureKHR
handledst
must be a validDeviceOrHostAddressKHR
unionmode
must be a validCopyAccelerationStructureModeKHR
value
See Also
AccelerationStructureKHR
,
CopyAccelerationStructureModeKHR
, DeviceOrHostAddressKHR
,
StructureType
,
cmdCopyAccelerationStructureToMemoryKHR
,
copyAccelerationStructureToMemoryKHR
CopyAccelerationStructureToMemoryInfoKHR | |
|
Instances
data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) Source #
VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for deserializing an acceleration structure
Valid Usage
mode
must beCOPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
- The data in
pInfo->src
must have a format compatible with the destination physical device as returned bygetDeviceAccelerationStructureCompatibilityKHR
Valid Usage (Implicit)
pNext
must beNULL
or a pointer to a valid instance ofDeferredOperationInfoKHR
- The
sType
value of each struct in thepNext
chain must be unique src
must be a validDeviceOrHostAddressConstKHR
uniondst
must be a validAccelerationStructureKHR
handlemode
must be a validCopyAccelerationStructureModeKHR
value
See Also
AccelerationStructureKHR
,
CopyAccelerationStructureModeKHR
, DeviceOrHostAddressConstKHR
,
StructureType
,
cmdCopyMemoryToAccelerationStructureKHR
,
copyMemoryToAccelerationStructureKHR
CopyMemoryToAccelerationStructureInfoKHR | |
|
Instances
data RayTracingPipelineInterfaceCreateInfoKHR Source #
VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying additional interface information when using libraries
Description
maxPayloadSize
is calculated as the maximum number of bytes used by
any block declared in the RayPayloadKHR
or IncomingRayPayloadKHR
storage classes. maxAttributeSize
is calculated as the maximum number
of bytes used by any block declared in the HitAttributeKHR
storage
class. maxCallableSize
is calculated as the maximum number of bytes
used by any block declred in the CallableDataKHR
or
IncomingCallableDataKHR
. As variables in these storage classes do not
have explicit offsets, the size should be calculated as if each variable
has a
scalar alignment
equal to the largest scalar alignment of any of the block’s members.
Valid Usage (Implicit)
See Also
RayTracingPipelineInterfaceCreateInfoKHR | |
|
Instances
data DeviceOrHostAddressKHR Source #
Instances
Show DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing showsPrec :: Int -> DeviceOrHostAddressKHR -> ShowS # show :: DeviceOrHostAddressKHR -> String # showList :: [DeviceOrHostAddressKHR] -> ShowS # | |
ToCStruct DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing withCStruct :: DeviceOrHostAddressKHR -> (Ptr DeviceOrHostAddressKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero DeviceOrHostAddressKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing |
data DeviceOrHostAddressConstKHR Source #
Instances
Show DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing showsPrec :: Int -> DeviceOrHostAddressConstKHR -> ShowS # show :: DeviceOrHostAddressConstKHR -> String # showList :: [DeviceOrHostAddressConstKHR] -> ShowS # | |
ToCStruct DeviceOrHostAddressConstKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_ray_tracing withCStruct :: DeviceOrHostAddressConstKHR -> (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr DeviceOrHostAddressConstKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
Zero DeviceOrHostAddressConstKHR Source # | |
data AccelerationStructureGeometryDataKHR Source #
Triangles AccelerationStructureGeometryTrianglesDataKHR | |
Aabbs AccelerationStructureGeometryAabbsDataKHR | |
Instances AccelerationStructureGeometryInstancesDataKHR |
Instances
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
pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR :: GeometryInstanceFlagBitsKHR |
|
Instances
newtype GeometryFlagBitsKHR Source #
VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a geometry
See Also
pattern GEOMETRY_OPAQUE_BIT_KHR :: GeometryFlagBitsKHR |
|
pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR :: GeometryFlagBitsKHR |
|
Instances
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
Instances
newtype CopyAccelerationStructureModeKHR Source #
VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode
See Also
CopyAccelerationStructureInfoKHR
,
CopyAccelerationStructureToMemoryInfoKHR
,
CopyMemoryToAccelerationStructureInfoKHR
,
cmdCopyAccelerationStructureNV
pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR :: CopyAccelerationStructureModeKHR |
|
pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR :: CopyAccelerationStructureModeKHR |
|
pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR :: CopyAccelerationStructureModeKHR |
|
pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR |
|
Instances
newtype AccelerationStructureTypeKHR Source #
VkAccelerationStructureTypeKHR - Type of acceleration structure
See Also
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureCreateInfoKHR
pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR |
|
Instances
newtype GeometryTypeKHR Source #
VkGeometryTypeKHR - Enum specifying which type of geometry is provided
See Also
AccelerationStructureCreateGeometryTypeInfoKHR
,
AccelerationStructureGeometryKHR
,
GeometryNV
pattern GEOMETRY_TYPE_TRIANGLES_KHR :: GeometryTypeKHR |
|
pattern GEOMETRY_TYPE_AABBS_KHR :: GeometryTypeKHR |
|
pattern GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR |
|
Instances
newtype AccelerationStructureMemoryRequirementsTypeKHR Source #
VkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration structure memory requirement type
See Also
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR |
|
Instances
newtype AccelerationStructureBuildTypeKHR Source #
VkAccelerationStructureBuildTypeKHR - Acceleration structure build type
See Also
pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR :: AccelerationStructureBuildTypeKHR |
|
pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR :: AccelerationStructureBuildTypeKHR |
|
pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR |
|
Instances
newtype RayTracingShaderGroupTypeKHR Source #
VkRayTracingShaderGroupTypeKHR - Shader group types
Description
Note
For current group types, the hit group type could be inferred from the presence or absence of the intersection shader, but we provide the type explicitly for future hit groups that do not have that property.
See Also
RayTracingShaderGroupCreateInfoKHR
,
RayTracingShaderGroupCreateInfoNV
pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR :: RayTracingShaderGroupTypeKHR |
|
pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR |
|
pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR |
|
Instances
type KHR_RAY_TRACING_SPEC_VERSION = 8 Source #
pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing" Source #
pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype AccelerationStructureKHR Source #
VkAccelerationStructureKHR - Opaque handle to an acceleration structure object
See Also
AccelerationStructureBuildGeometryInfoKHR
,
AccelerationStructureDeviceAddressInfoKHR
,
AccelerationStructureMemoryRequirementsInfoKHR
,
BindAccelerationStructureMemoryInfoKHR
,
CopyAccelerationStructureInfoKHR
,
CopyAccelerationStructureToMemoryInfoKHR
,
CopyMemoryToAccelerationStructureInfoKHR
,
WriteDescriptorSetAccelerationStructureKHR
,
cmdBuildAccelerationStructureNV
,
cmdCopyAccelerationStructureNV
,
cmdWriteAccelerationStructuresPropertiesKHR
,
cmdWriteAccelerationStructuresPropertiesNV
,
createAccelerationStructureKHR
,
destroyAccelerationStructureKHR
,
destroyAccelerationStructureNV
,
getAccelerationStructureHandleNV
,
writeAccelerationStructuresPropertiesKHR
Instances
data PipelineLibraryCreateInfoKHR Source #
VkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries to use when creating a pipeline
Valid Usage
- Each element of
pLibraries
must have been created withPIPELINE_CREATE_LIBRARY_BIT_KHR
Valid Usage (Implicit)
sType
must beSTRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
pNext
must beNULL
- If
libraryCount
is not0
,pLibraries
must be a valid pointer to an array oflibraryCount
validPipeline
handles
See Also
Instances
newtype DebugReportObjectTypeEXT Source #
VkDebugReportObjectTypeEXT - Specify the type of an object handle
Description
'
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
DebugMarkerObjectNameInfoEXT
,
DebugMarkerObjectTagInfoEXT
,
debugReportMessageEXT
Instances
type SHADER_UNUSED_KHR = 4294967295 Source #
pattern SHADER_UNUSED_KHR :: Word32 Source #