vulkan
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_device_generated_commands

Description

Name

VK_EXT_device_generated_commands - device extension

VK_EXT_device_generated_commands

Name String
VK_EXT_device_generated_commands
Extension Type
Device extension
Registered Extension Number
573
Revision
1
Ratification Status
Ratified
Extension and Version Dependencies
VK_KHR_buffer_device_address and VK_KHR_maintenance5
API Interactions
  • Interacts with VK_EXT_shader_object
Contact
Extension Proposal
VK_EXT_device_generated_commands

Other Extension Metadata

Last Modified Date
2024-02-23
Interactions and External Dependencies
  • This extension requires Vulkan 1.1
  • This extension requires VK_EXT_buffer_device_address or VK_KHR_buffer_device_address or Vulkan 1.2 for the ability to bind vertex and index buffers on the device.
  • This extension requires VK_KHR_maintenance5 for the ability to use VkPipelineCreateFlags2KHR.
  • This extension interacts with VK_NV_mesh_shader. If the latter extension is not supported, remove the command tokens to initiate NV mesh tasks drawing in this extension.
  • This extension interacts with VK_EXT_mesh_shader. If the latter extension is not supported, remove the command tokens to initiate EXT mesh tasks drawing in this extension.
  • This extension interacts with VK_KHR_ray_tracing_pipeline. If the latter extension is not supported, remove the command tokens to initiate ray tracing in this extension.
  • This extension interacts with VK_EXT_shader_object. If the latter extension is not supported, remove references to shader objects in this extension.
Contributors
  • Mike Blumenkrantz, VALVE
  • Hans-Kristian Arntzen, VALVE
  • Jan-Harald Fredriksen, ARM
  • Spencer Fricke, LunarG
  • Ricardo Garcia, Igalia
  • Tobias Hector, AMD
  • Baldur Karlsson, VALVE
  • Christoph Kubisch, NVIDIA
  • Lionel Landwerlin, INTEL
  • Jon Leech, Khronos
  • Ting Wei, ARM
  • Ken Shanyi Zhang, AMD
  • Faith Ekstrand, Collabora
  • Vikram Kushwaha, NVIDIA
  • Connor Abbott, VALVE
  • Samuel Pitoiset, VALVE

Description

This extension allows the device to generate a number of commands for command buffers. It provides a subset of functionality from both VK_NV_device_generated_commands and VK_NV_device_generated_commands_compute as well as some new features.

When rendering a large number of objects, the device can be leveraged to implement a number of critical functions, like updating matrices, or implementing occlusion culling, frustum culling, front to back sorting, etc. Implementing those on the device does not require any special extension, since an application is free to define its own data structures, and just process them using shaders.

To render objects which have been processed on the device, Vulkan has several ways to perform indirect rendering, from the most basic cmdDrawIndirect with one indirect draw to cmdDrawIndirectCount which supports multiple indirect draws batched together, with a way to determine number of draws at device execution time.

However, if rendering state needs to change between the indirect draws, then unextended Vulkan forces the application to speculatively record a prohibitive number of redundant indirect commands covering all possible state combinations - which could end up processing nothing after culling - or read back the processed stream and issue graphics command from the host. For very large scenes, the synchronization overhead and cost to generate the command buffer can become the bottleneck. This extension allows an application to generate a device side stream of state changes and commands, and convert it efficiently into a command buffer without having to read it back to the host.

Furthermore, it allows incremental changes to such command buffers by manipulating only partial sections of a command stream — for example pipeline and shader object bindings. Unextended Vulkan requires re-creation of entire command buffers in such a scenario, or updates synchronized on the host.

The intended usage for this extension is for the application to:

For each draw in a sequence, the following can be specified:

  • a number of vertex buffer bindings
  • a different index buffer, with an optional dynamic offset and index type
  • a number of different push constants
  • updates to bound shader stages

For each dispatch in a sequence, the following can be specified:

  • a number of different push constants
  • updates to bound shader stages

For each trace rays in a sequence, the following can be specified:

  • a number of different push constants
  • updates to bound shader stages

While the GPU can be faster than a CPU to generate the commands, it will not happen asynchronously to the device, therefore the primary use case is generating “less” total work (occlusion culling, classification to use specialized shaders, etc.).

New Object Types

New Commands

New Structures

If VK_EXT_shader_object is supported:

New Unions

New Enums

New Bitmasks

New Enum Constants

Example Code

TODO

Version History

  • Revision 1, 2024-02-23 (Mike Blumenkrantz)

    • Initial version

See Also

No cross-references are available

Document Notes

For more information, see the Vulkan Specification

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

Synopsis

Documentation

cmdExecuteGeneratedCommandsEXT Source #

Arguments

:: forall a io. (Extendss GeneratedCommandsInfoEXT a, PokeChain a, MonadIO io) 
=> CommandBuffer

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

-> ("isPreprocessed" ::: Bool)

isPreprocessed represents whether the input data has already been preprocessed on the device. If it is FALSE this command will implicitly trigger the preprocessing step, otherwise not.

-> GeneratedCommandsInfoEXT a

pGeneratedCommandsInfo is a pointer to a GeneratedCommandsInfoEXT structure containing parameters affecting the generation of commands.

-> io () 

vkCmdExecuteGeneratedCommandsEXT - Generate and execute commands on the device

Description

If the INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT flag was used to create the GeneratedCommandsInfoEXT::indirectCommandsLayout then the execution of sequences through this command may use implementation-defined ordering which is not guaranteed to be coherent using the same input data. It does not affect the order of token processing within a sequence. This is the implied ordering with INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT.

After a call to cmdExecuteGeneratedCommandsEXT, command buffer state will become undefined according to the tokens executed. This table specifies the relationship between tokens used and state invalidation.

Common Tokens __States Invalidated__
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT Bound shaders and pipelines
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT Push constant data
INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT Push constant data
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXTIndex buffer
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXTVertex buffer

Indirect Execution State Invalidation

Valid Usage

Valid Usage (Implicit)

  • pGeneratedCommandsInfo must be a valid pointer to a valid GeneratedCommandsInfoEXT structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
  • commandBuffer must be a primary CommandBuffer

Host Synchronization

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

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary Both Outside Graphics ComputeAction Indirection

See Also

VK_EXT_device_generated_commands, Bool32, CommandBuffer, GeneratedCommandsInfoEXT

cmdPreprocessGeneratedCommandsEXT Source #

Arguments

:: forall a io. (Extendss GeneratedCommandsInfoEXT a, PokeChain a, MonadIO io) 
=> CommandBuffer

commandBuffer is the command buffer which does the preprocessing.

-> GeneratedCommandsInfoEXT a

pGeneratedCommandsInfo is a pointer to a GeneratedCommandsInfoEXT structure containing parameters affecting the preprocessing step.

-> ("stateCommandBuffer" ::: CommandBuffer)

stateCommandBuffer is a command buffer from which to snapshot current states affecting the preprocessing step. When a graphics command action token is used, graphics state is snapshotted. When a compute action command token is used, compute state is snapshotted. When a ray tracing action command token is used, ray tracing state is snapshotted. It can be deleted at any time after this command has been recorded.

-> io () 

vkCmdPreprocessGeneratedCommandsEXT - Performs preprocessing for generated commands

Description

Note

stateCommandBuffer access is not synchronized by the driver, meaning that this command buffer must not be modified between threads in an unsafe manner.

Valid Usage

  • commandBuffer must not be a protected command buffer

Valid Usage (Implicit)

  • pGeneratedCommandsInfo must be a valid pointer to a valid GeneratedCommandsInfoEXT structure
  • stateCommandBuffer must be a valid CommandBuffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a render pass instance
  • This command must only be called outside of a video coding scope
  • commandBuffer must be a primary CommandBuffer
  • Both of commandBuffer, and stateCommandBuffer must have been created, allocated, or retrieved from the same Device

Host Synchronization

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

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary Outside Outside Graphics ComputeAction

See Also

VK_EXT_device_generated_commands, CommandBuffer, GeneratedCommandsInfoEXT

getGeneratedCommandsMemoryRequirementsEXT Source #

Arguments

:: forall a b io. (Extendss GeneratedCommandsMemoryRequirementsInfoEXT a, PokeChain a, Extendss MemoryRequirements2 b, PokeChain b, PeekChain b, MonadIO io) 
=> Device

device is the logical device that owns the buffer.

device must be a valid Device handle

-> GeneratedCommandsMemoryRequirementsInfoEXT a

pInfo is a pointer to a GeneratedCommandsMemoryRequirementsInfoEXT structure containing parameters required for the memory requirements query.

pInfo must be a valid pointer to a valid GeneratedCommandsMemoryRequirementsInfoEXT structure

-> io (MemoryRequirements2 b) 

vkGetGeneratedCommandsMemoryRequirementsEXT - Retrieve the buffer allocation requirements for generated commands

Description

If the size returned is zero, the preprocessing step can be skipped for this layout.

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, Device, GeneratedCommandsMemoryRequirementsInfoEXT, MemoryRequirements2

createIndirectCommandsLayoutEXT Source #

Arguments

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

device is the logical device that creates the indirect command layout.

-> IndirectCommandsLayoutCreateInfoEXT a

pCreateInfo is a pointer to a IndirectCommandsLayoutCreateInfoEXT structure containing parameters affecting creation of the indirect command layout.

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

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

-> io IndirectCommandsLayoutEXT 

vkCreateIndirectCommandsLayoutEXT - Create an indirect command layout object

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_device_generated_commands, AllocationCallbacks, Device, IndirectCommandsLayoutCreateInfoEXT, IndirectCommandsLayoutEXT

withIndirectCommandsLayoutEXT :: forall a io r. (Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a, MonadIO io) => Device -> IndirectCommandsLayoutCreateInfoEXT a -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutEXT -> (IndirectCommandsLayoutEXT -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createIndirectCommandsLayoutEXT and destroyIndirectCommandsLayoutEXT

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

destroyIndirectCommandsLayoutEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the layout.

-> IndirectCommandsLayoutEXT

indirectCommandsLayout is the layout to destroy.

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

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

-> io () 

vkDestroyIndirectCommandsLayoutEXT - Destroy an indirect commands layout

Valid Usage

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

Valid Usage (Implicit)

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

Host Synchronization

  • Host access to indirectCommandsLayout must be externally synchronized

See Also

VK_EXT_device_generated_commands, AllocationCallbacks, Device, IndirectCommandsLayoutEXT

createIndirectExecutionSetEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the indirect execution set.

-> IndirectExecutionSetCreateInfoEXT

pCreateInfo is a pointer to a IndirectExecutionSetCreateInfoEXT structure containing parameters affecting creation of the indirect execution set.

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

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

-> io IndirectExecutionSetEXT 

vkCreateIndirectExecutionSetEXT - Create an indirect execution set

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_EXT_device_generated_commands, AllocationCallbacks, Device, IndirectExecutionSetCreateInfoEXT, IndirectExecutionSetEXT

withIndirectExecutionSetEXT :: forall io r. MonadIO io => Device -> IndirectExecutionSetCreateInfoEXT -> Maybe AllocationCallbacks -> (io IndirectExecutionSetEXT -> (IndirectExecutionSetEXT -> io ()) -> r) -> r Source #

A convenience wrapper to make a compatible pair of calls to createIndirectExecutionSetEXT and destroyIndirectExecutionSetEXT

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

destroyIndirectExecutionSetEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the indirect execution set.

-> IndirectExecutionSetEXT

indirectExecutionSet is the indirect execution set to destroy.

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

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

-> io () 

vkDestroyIndirectExecutionSetEXT - Destroy an indirect execution set

Valid Usage

  • All submitted commands that refer to indirectExecutionSet must have completed execution

Valid Usage (Implicit)

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

Host Synchronization

  • Host access to indirectExecutionSet must be externally synchronized

See Also

VK_EXT_device_generated_commands, AllocationCallbacks, Device, IndirectExecutionSetEXT

updateIndirectExecutionSetPipelineEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the indirect execution set.

-> IndirectExecutionSetEXT

indirectExecutionSet is the indirect execution set being updated.

-> ("executionSetWrites" ::: Vector WriteIndirectExecutionSetPipelineEXT)

pExecutionSetWrites is a pointer to an array of WriteIndirectExecutionSetPipelineEXT structures describing the elements to update.

-> io () 

vkUpdateIndirectExecutionSetPipelineEXT - Update the contents of an indirect execution set

Valid Usage

  • executionSetWriteCount must be less than or equal to IndirectExecutionSetPipelineInfoEXT::maxPipelineCount
  • Each element in the pExecutionSetWrites array must have a unique WriteIndirectExecutionSetPipelineEXT::index
  • Each member of the Indirect Execution Set referenced by the update command must not be in use by the device
  • The layout of each pipeline in pExecutionSetWrites must be compatible with the initialPipeline used to create the Indirect Execution Set
  • Each pipeline in the Indirect Execution Set must have identically defined static and dynamic state values to the initialPipeline used to create the Indirect Execution Set
  • Each pipeline in the Indirect Execution Set must have identically defined fragment outputs interface to the initialPipeline used to create the Indirect Execution Set
  • Each pipeline in the Indirect Execution Set must match the initialPipeline used to create the Indirect Execution Set in its included shader stages
  • Each pipeline in the Indirect Execution Set must match the initialPipeline used to create the Indirect Execution Set in its use of FragDepth
  • Each pipeline in the Indirect Execution Set must match the initialPipeline used to create the Indirect Execution Set in its use of SampleMask
  • Each pipeline in the Indirect Execution Set must match the initialPipeline used to create the Indirect Execution Set in its use of StencilExportEXT

Valid Usage (Implicit)

  • device must be a valid Device handle
  • indirectExecutionSet must be a valid IndirectExecutionSetEXT handle
  • pExecutionSetWrites must be a valid pointer to an array of executionSetWriteCount valid WriteIndirectExecutionSetPipelineEXT structures
  • executionSetWriteCount must be greater than 0
  • indirectExecutionSet must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to indirectExecutionSet must be externally synchronized

See Also

VK_EXT_device_generated_commands, Device, IndirectExecutionSetEXT, WriteIndirectExecutionSetPipelineEXT

updateIndirectExecutionSetShaderEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that owns the indirect execution set.

-> IndirectExecutionSetEXT

indirectExecutionSet is the indirect execution set being updated.

-> ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT)

pExecutionSetWrites is a pointer to an array of WriteIndirectExecutionSetShaderEXT structures describing the elements to update.

-> io () 

vkUpdateIndirectExecutionSetShaderEXT - Update the contents of an indirect execution set

Valid Usage

  • Each element in the pExecutionSetWrites array must have a unique WriteIndirectExecutionSetShaderEXT::index
  • Each member of the Indirect Execution Set referenced by the update command must not be in use by the device
  • The descriptor layout of each shader in pExecutionSetWrites must be compatible with the initial layout info used to create the Indirect Execution Set
  • Each fragment shader element in the Indirect Execution Set must have identically defined fragment outputs interface to the initial shader state used to create the Indirect Execution Set
  • Each fragment shader element in the Indirect Execution Set must match the initial shader state used to create the Indirect Execution Set in its use of FragDepth
  • Each fragment shader element in the Indirect Execution Set must match the initial shader state used to create the Indirect Execution Set in its use of SampleMask
  • Each fragment shader element in the Indirect Execution Set must match the initial shader state used to create the Indirect Execution Set in its use of StencilExportEXT

Valid Usage (Implicit)

  • device must be a valid Device handle
  • indirectExecutionSet must be a valid IndirectExecutionSetEXT handle
  • pExecutionSetWrites must be a valid pointer to an array of executionSetWriteCount valid WriteIndirectExecutionSetShaderEXT structures
  • executionSetWriteCount must be greater than 0
  • indirectExecutionSet must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to indirectExecutionSet must be externally synchronized

See Also

VK_EXT_device_generated_commands, Device, IndirectExecutionSetEXT, WriteIndirectExecutionSetShaderEXT

data PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source #

VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT - Structure describing the device-generated compute features that can be supported by an implementation

Members

This structure describes the following features:

Description

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

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, Bool32, StructureType

Constructors

PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source #

VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT - Structure describing push descriptor limits that can be supported by an implementation

Description

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

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, Bool32, IndirectCommandsInputModeFlagsEXT, ShaderStageFlags, StructureType

Constructors

PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data GeneratedCommandsPipelineInfoEXT Source #

VkGeneratedCommandsPipelineInfoEXT - Structure specifying a pipeline for use with indirect command preprocessing

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, Pipeline, StructureType

Constructors

GeneratedCommandsPipelineInfoEXT 

Fields

Instances

Instances details
Storable GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero GeneratedCommandsPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data GeneratedCommandsShaderInfoEXT Source #

VkGeneratedCommandsShaderInfoEXT - Structure specifying shader objects for use with indirect command preprocessing

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, ShaderEXT, StructureType

Constructors

GeneratedCommandsShaderInfoEXT 

Fields

  • shaders :: Vector ShaderEXT

    pShaders is a pointer to an array of shader objects.

    pShaders must not contain more than one shader object for a given ShaderStageFlagBits stage

    pShaders must be a valid pointer to an array of shaderCount valid ShaderEXT handles

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

VkGeneratedCommandsMemoryRequirementsInfoEXT - Structure specifying parameters for the reservation of preprocess buffer space

Description

If the action command token for the layout is not a COUNT-type multi-draw indirect token, maxDrawCount is ignored.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutEXT, IndirectExecutionSetEXT, StructureType, getGeneratedCommandsMemoryRequirementsEXT

Constructors

GeneratedCommandsMemoryRequirementsInfoEXT 

Fields

Instances

Instances details
Extensible GeneratedCommandsMemoryRequirementsInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectExecutionSetPipelineInfoEXT Source #

VkIndirectExecutionSetPipelineInfoEXT - Struct specifying parameters of a newly created indirect execution set containing only pipelines

Description

The characteristics of initialPipeline will be used to validate all pipelines added to the set even if they are removed from the set or destroyed.

When an Indirect Execution Set created with pipelines is used, initialPipeline constitutes the initial shader state.

Valid Usage

Valid Usage (Implicit)

  • initialPipeline must be a valid Pipeline handle

See Also

VK_EXT_device_generated_commands, IndirectExecutionSetInfoEXT, Pipeline, StructureType

Constructors

IndirectExecutionSetPipelineInfoEXT 

Fields

  • initialPipeline :: Pipeline

    initialPipeline is the initial pipeline for the set. This pipeline will be automatically added to the set at index 0.

  • maxPipelineCount :: Word32

    maxPipelineCount is the maximum number of pipelines stored in the set.

Instances

Instances details
Storable IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectExecutionSetPipelineInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectExecutionSetShaderLayoutInfoEXT Source #

VkIndirectExecutionSetShaderLayoutInfoEXT - Struct specifying descriptor layout parameters of a newly created indirect execution set containing only shader objects

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, DescriptorSetLayout, IndirectExecutionSetShaderInfoEXT, StructureType

Constructors

IndirectExecutionSetShaderLayoutInfoEXT 

Fields

data IndirectExecutionSetShaderInfoEXT Source #

VkIndirectExecutionSetShaderInfoEXT - Struct specifying parameters of a newly created indirect execution set containing only shader objects

Description

The characteristics of pInitialShaders will be used to validate all shaders added to the set even if they are removed from the set or destroyed.

When an Indirect Execution Set created with shader objects is used, pInitialShaders constitutes the initial shader state.

Valid Usage

Valid Usage (Implicit)

  • pInitialShaders must be a valid pointer to an array of shaderCount valid ShaderEXT handles
  • If pSetLayoutInfos is not NULL, pSetLayoutInfos must be a valid pointer to an array of shaderCount valid IndirectExecutionSetShaderLayoutInfoEXT structures
  • If pushConstantRangeCount is not 0, pPushConstantRanges must be a valid pointer to an array of pushConstantRangeCount valid PushConstantRange structures
  • shaderCount must be greater than 0

See Also

VK_EXT_device_generated_commands, IndirectExecutionSetInfoEXT, IndirectExecutionSetShaderLayoutInfoEXT, PushConstantRange, ShaderEXT, StructureType

Constructors

IndirectExecutionSetShaderInfoEXT 

Fields

data IndirectExecutionSetCreateInfoEXT Source #

VkIndirectExecutionSetCreateInfoEXT - Structure specifying parameters of a newly created indirect execution set

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectExecutionSetInfoEXT, IndirectExecutionSetInfoTypeEXT, StructureType, createIndirectExecutionSetEXT

Constructors

IndirectExecutionSetCreateInfoEXT 

Fields

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

VkGeneratedCommandsInfoEXT - Structure specifying parameters for the generation of commands

Description

If sequenceCountAddress is not NULL, then maxSequenceCount is the maximum number of sequences that can be executed. The actual number is min(maxSequenceCount, *sequenceCountAddress). If sequenceCountAddress is NULL, then maxSequenceCount is the exact number of sequences to execute.

If the action command token for the layout is not a COUNT-type multi-draw indirect token, maxDrawCount is ignored.

Valid Usage

Valid Usage (Implicit)

  • shaderStages must be a valid combination of ShaderStageFlagBits values
  • shaderStages must not be 0
  • If indirectExecutionSet is not NULL_HANDLE, indirectExecutionSet must be a valid IndirectExecutionSetEXT handle
  • indirectCommandsLayout must be a valid IndirectCommandsLayoutEXT handle
  • Both of indirectCommandsLayout, and indirectExecutionSet that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

See Also

VK_EXT_device_generated_commands, DeviceAddress, DeviceSize, IndirectCommandsLayoutEXT, IndirectExecutionSetEXT, ShaderStageFlags, StructureType, cmdExecuteGeneratedCommandsEXT, cmdPreprocessGeneratedCommandsEXT

Constructors

GeneratedCommandsInfoEXT 

Fields

Instances

Instances details
Extensible GeneratedCommandsInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). GeneratedCommandsInfoEXT es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [Type]). GeneratedCommandsInfoEXT ds -> Chain es -> GeneratedCommandsInfoEXT es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsInfoEXT e => b) -> Maybe b Source #

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data WriteIndirectExecutionSetPipelineEXT Source #

VkWriteIndirectExecutionSetPipelineEXT - Struct specifying pipeline update information for an indirect execution set

Valid Usage

Valid Usage (Implicit)

  • pipeline must be a valid Pipeline handle

See Also

VK_EXT_device_generated_commands, Pipeline, StructureType, updateIndirectExecutionSetPipelineEXT

Constructors

WriteIndirectExecutionSetPipelineEXT 

Fields

  • index :: Word32

    index is the element of the set to update

  • pipeline :: Pipeline

    pipeline is the pipeline to store in the indirect execution set

Instances

Instances details
Storable WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero WriteIndirectExecutionSetPipelineEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data WriteIndirectExecutionSetShaderEXT Source #

VkWriteIndirectExecutionSetShaderEXT - Struct specifying shader object update information for an indirect execution set

Description

Shaders need not be stored in the Indirect Execution Set according to their stage. The only restriction for shader indices within a set is that the value of the index must be less than the maximum number of shaders in the set.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, VK_EXT_shader_object, ShaderEXT, StructureType, updateIndirectExecutionSetShaderEXT

Constructors

WriteIndirectExecutionSetShaderEXT 

Fields

  • index :: Word32

    index is the element of the set to update

  • shader :: ShaderEXT

    shader is the shader to store in the indirect execution set

Instances

Instances details
Storable WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero WriteIndirectExecutionSetShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

VkIndirectCommandsLayoutCreateInfoEXT - Structure specifying the parameters of a newly created indirect commands layout object

Description

The following code illustrates some of the flags:

void cmdProcessAllSequences(cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sequencesCount)
{
  for (s = 0; s < sequencesCount; s++)
  {
    sUsed = s;

    if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT) {
      sUsed = incoherent_implementation_dependent_permutation[ sUsed ];
    }

    cmdProcessSequence( cmd, indirectExecutionSet, indirectCommandsLayout, indirectAddress, sUsed );
  }
}

When tokens are consumed, an offset is computed based on token offset and stream stride. The resulting offset is required to be aligned. The alignment for a specific token is equal to the scalar alignment of the data type as defined in Alignment Requirements, or 4, whichever is lower.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutTokenEXT, IndirectCommandsLayoutUsageFlagsEXT, PipelineLayout, ShaderStageFlags, StructureType, createIndirectCommandsLayoutEXT

Constructors

IndirectCommandsLayoutCreateInfoEXT 

Fields

Instances

Instances details
Extensible IndirectCommandsLayoutCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

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

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectCommandsLayoutTokenEXT Source #

VkIndirectCommandsLayoutTokenEXT - Struct specifying the details of an indirect command layout token

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutCreateInfoEXT, IndirectCommandsTokenDataEXT, IndirectCommandsTokenTypeEXT, StructureType

Constructors

IndirectCommandsLayoutTokenEXT 

Fields

data DrawIndirectCountIndirectCommandEXT Source #

VkDrawIndirectCountIndirectCommandEXT - Structure specifying input data for a single draw-type command token

Description

The corresponding indirect draw struct data will be read from the buffer address.

Valid Usage

  • Each element of the buffer from which the address was acquired and that is non-sparse must be bound completely and contiguously to a single DeviceMemory object

See Also

VK_EXT_device_generated_commands, DeviceAddress

Constructors

DrawIndirectCountIndirectCommandEXT 

Fields

Instances

Instances details
Storable DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero DrawIndirectCountIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectCommandsVertexBufferTokenEXT Source #

VkIndirectCommandsVertexBufferTokenEXT - Structure specifying layout token info for a single index buffer command token

Valid Usage

See Also

VK_EXT_device_generated_commands, IndirectCommandsTokenDataEXT

Constructors

IndirectCommandsVertexBufferTokenEXT 

Fields

  • vertexBindingUnit :: Word32

    vertexBindingUnit is the vertex input binding number to be bound.

    vertexBindingUnit must be less than the total number of vertex input bindings in use by the current graphics state

Instances

Instances details
Storable IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsVertexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data BindVertexBufferIndirectCommandEXT Source #

VkBindVertexBufferIndirectCommandEXT - Structure specifying input data for a single vertex buffer command token

Valid Usage

  • Each element of the buffer from which the address was acquired and that is non-sparse must be bound completely and contiguously to a single DeviceMemory object

See Also

VK_EXT_device_generated_commands, DeviceAddress

Constructors

BindVertexBufferIndirectCommandEXT 

Fields

Instances

Instances details
Storable BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero BindVertexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectCommandsIndexBufferTokenEXT Source #

VkIndirectCommandsIndexBufferTokenEXT - Structure specifying layout token info for a single index buffer command token

Description

This allows for easy layering of Vulkan atop other APIs. When INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT is specified, the indirect buffer can contain a D3D12_INDEX_BUFFER_VIEW instead of BindIndexBufferIndirectCommandEXT as D3D’s DXGI format value is mapped to the IndexType. It works as both structs are otherwise binary compatible.

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectCommandsInputModeFlagBitsEXT, IndirectCommandsTokenDataEXT

Constructors

IndirectCommandsIndexBufferTokenEXT 

Fields

Instances

Instances details
Storable IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsIndexBufferTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data BindIndexBufferIndirectCommandEXT Source #

VkBindIndexBufferIndirectCommandEXT - Structure specifying input data for a single index buffer command token

Valid Usage

  • The bufferAddress must be aligned to the IndexType of the indexType used
  • Each element of the buffer from which the address was acquired and that is non-sparse must be bound completely and contiguously to a single DeviceMemory object

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, DeviceAddress, IndexType

Constructors

BindIndexBufferIndirectCommandEXT 

Fields

Instances

Instances details
Storable BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero BindIndexBufferIndirectCommandEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectCommandsPushConstantTokenEXT Source #

VkIndirectCommandsPushConstantTokenEXT - Structure specifying layout token info for a single push constant command token

Description

The stageFlags member of updateRange is ignored.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_device_generated_commands, IndirectCommandsTokenDataEXT, PushConstantRange

Constructors

IndirectCommandsPushConstantTokenEXT 

Fields

Instances

Instances details
Storable IndirectCommandsPushConstantTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsPushConstantTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct IndirectCommandsPushConstantTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct IndirectCommandsPushConstantTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsPushConstantTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

data IndirectCommandsExecutionSetTokenEXT Source #

VkIndirectCommandsExecutionSetTokenEXT - Structure specifying input data for a single execution set command token

Valid Usage

Valid Usage (Implicit)

  • shaderStages must be a valid combination of ShaderStageFlagBits values
  • shaderStages must not be 0

See Also

VK_EXT_device_generated_commands, IndirectCommandsTokenDataEXT, IndirectExecutionSetInfoTypeEXT, ShaderStageFlags

Constructors

IndirectCommandsExecutionSetTokenEXT 

Fields

Instances

Instances details
Storable IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

FromCStruct IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

ToCStruct IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsExecutionSetTokenEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

newtype IndirectCommandsLayoutUsageFlagBitsEXT Source #

VkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layout

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutUsageFlagsEXT

Bundled Patterns

pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT :: IndirectCommandsLayoutUsageFlagBitsEXT

INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT specifies that the layout is always used with the manual preprocessing step through calling cmdPreprocessGeneratedCommandsEXT and executed by cmdExecuteGeneratedCommandsEXT with isPreprocessed set to TRUE.

pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT :: IndirectCommandsLayoutUsageFlagBitsEXT

INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT specifies that the processing of sequences will happen at an implementation-dependent order, which is not guaranteed to be deterministic using the same input data. This flag is ignored when the shaderStages is SHADER_STAGE_COMPUTE_BIT as it is implied that the dispatch sequence is always unordered.

Instances

Instances details
Storable IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Bits IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Methods

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

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

xor :: IndirectCommandsLayoutUsageFlagBitsEXT -> IndirectCommandsLayoutUsageFlagBitsEXT -> IndirectCommandsLayoutUsageFlagBitsEXT #

complement :: IndirectCommandsLayoutUsageFlagBitsEXT -> IndirectCommandsLayoutUsageFlagBitsEXT #

shift :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

rotate :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

zeroBits :: IndirectCommandsLayoutUsageFlagBitsEXT #

bit :: Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

setBit :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

clearBit :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

complementBit :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

testBit :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: IndirectCommandsLayoutUsageFlagBitsEXT -> Maybe Int #

bitSize :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int #

isSigned :: IndirectCommandsLayoutUsageFlagBitsEXT -> Bool #

shiftL :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

unsafeShiftL :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

shiftR :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

unsafeShiftR :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

rotateL :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

rotateR :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int -> IndirectCommandsLayoutUsageFlagBitsEXT #

popCount :: IndirectCommandsLayoutUsageFlagBitsEXT -> Int #

FiniteBits IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Read IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Ord IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsLayoutUsageFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

newtype IndirectExecutionSetInfoTypeEXT Source #

VkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution set

See Also

VK_EXT_device_generated_commands, IndirectCommandsExecutionSetTokenEXT, IndirectExecutionSetCreateInfoEXT

Instances

Instances details
Storable IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Read IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Ord IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectExecutionSetInfoTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

newtype IndirectCommandsInputModeFlagBitsEXT Source #

VkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layout

See Also

VK_EXT_device_generated_commands, IndirectCommandsIndexBufferTokenEXT, IndirectCommandsInputModeFlagsEXT

Instances

Instances details
Storable IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Bits IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Methods

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

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

xor :: IndirectCommandsInputModeFlagBitsEXT -> IndirectCommandsInputModeFlagBitsEXT -> IndirectCommandsInputModeFlagBitsEXT #

complement :: IndirectCommandsInputModeFlagBitsEXT -> IndirectCommandsInputModeFlagBitsEXT #

shift :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

rotate :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

zeroBits :: IndirectCommandsInputModeFlagBitsEXT #

bit :: Int -> IndirectCommandsInputModeFlagBitsEXT #

setBit :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

clearBit :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

complementBit :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

testBit :: IndirectCommandsInputModeFlagBitsEXT -> Int -> Bool #

bitSizeMaybe :: IndirectCommandsInputModeFlagBitsEXT -> Maybe Int #

bitSize :: IndirectCommandsInputModeFlagBitsEXT -> Int #

isSigned :: IndirectCommandsInputModeFlagBitsEXT -> Bool #

shiftL :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

unsafeShiftL :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

shiftR :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

unsafeShiftR :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

rotateL :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

rotateR :: IndirectCommandsInputModeFlagBitsEXT -> Int -> IndirectCommandsInputModeFlagBitsEXT #

popCount :: IndirectCommandsInputModeFlagBitsEXT -> Int #

FiniteBits IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Read IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Ord IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsInputModeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

newtype IndirectCommandsTokenTypeEXT Source #

VkIndirectCommandsTokenTypeEXT - Enum specifying token commands

Description

'

Common TokensCommand Data
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTu32[] array of indices into the indirect execution set
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXTu32[] raw data
INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXTu32 placeholder data (not accessed by shader)
Compute Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXTDispatchIndirectCommand
Ray Tracing Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXTTraceRaysIndirectCommand2KHR
Graphics State Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXTBindIndexBufferIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXTBindVertexBufferIndirectCommandEXT
Graphics Draw Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXTDrawIndexedIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXTDrawIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXTDrawMeshTasksIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXTDrawMeshTasksIndirectCommandNV
Graphics Draw Count Tokens
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawIndexedIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawIndirectCommand
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXTDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXTDrawIndirectCountIndirectCommandEXT with VkDrawMeshTasksIndirectCommandNV

Supported Indirect Command Tokens

See Also

VK_EXT_device_generated_commands, IndirectCommandsLayoutTokenEXT

Instances

Instances details
Storable IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Read IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Show IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Eq IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Ord IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

Zero IndirectCommandsTokenTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_device_generated_commands

type EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands" Source #

newtype IndirectCommandsLayoutEXT Source #

Instances

Instances details
Storable IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero IndirectCommandsLayoutEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype IndirectExecutionSetEXT Source #

Instances

Instances details
Storable IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero IndirectExecutionSetEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype ShaderEXT Source #

Constructors

ShaderEXT Word64 

Instances

Instances details
Storable ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype BufferUsageFlagBits2KHR Source #

VkBufferUsageFlagBits2KHR - Bitmask controlling how a pipeline is created

See Also

VK_KHR_maintenance5, BufferUsageFlags2KHR

Bundled Patterns

pattern BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR specifies that the buffer can be used as the source of a transfer command (see the definition of https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer).

pattern BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR specifies that the buffer can be used as the destination of a transfer command.

pattern BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR specifies that the buffer can be used to create a BufferView suitable for occupying a DescriptorSet slot of type DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.

pattern BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR specifies that the buffer can be used to create a BufferView suitable for occupying a DescriptorSet slot of type DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.

pattern BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR specifies that the buffer can be used in a DescriptorBufferInfo suitable for occupying a DescriptorSet slot either of type DESCRIPTOR_TYPE_UNIFORM_BUFFER or DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC.

pattern BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR specifies that the buffer can be used in a DescriptorBufferInfo suitable for occupying a DescriptorSet slot either of type DESCRIPTOR_TYPE_STORAGE_BUFFER or DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC.

pattern BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR specifies that the buffer is suitable for passing as the buffer parameter to cmdBindIndexBuffer2KHR and cmdBindIndexBuffer.

pattern BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR specifies that the buffer is suitable for passing as an element of the pBuffers array to cmdBindVertexBuffers.

pattern BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR specifies that the buffer is suitable for passing as the buffer parameter to cmdDrawIndirect, cmdDrawIndexedIndirect, cmdDrawMeshTasksIndirectNV, cmdDrawMeshTasksIndirectCountNV, cmdDrawMeshTasksIndirectEXT, cmdDrawMeshTasksIndirectCountEXT, cmdDrawClusterIndirectHUAWEI, or cmdDispatchIndirect. It is also suitable for passing as the buffer member of IndirectCommandsStreamNV, or sequencesCountBuffer or sequencesIndexBuffer or preprocessedBuffer member of GeneratedCommandsInfoNV. It is also suitable for passing as the underlying buffer of either the preprocessAddress or sequenceCountAddress members of GeneratedCommandsInfoEXT.

pattern BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT specifies that the buffer can be used as a preprocess buffer for Device-Generated Commands.

pattern BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT :: BufferUsageFlagBits2KHR 
pattern BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT :: BufferUsageFlagBits2KHR 
pattern BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT specifies that the buffer, when bound, can be used by the implementation to support push descriptors when using descriptor buffers.

pattern BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT specifies that the buffer is suitable to contain resource descriptors when bound as a descriptor buffer.

pattern BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT specifies that the buffer is suitable to contain sampler and combined image sampler descriptors when bound as a descriptor buffer. Buffers containing combined image sampler descriptors must also specify BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT.

pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR specifies that the buffer is suitable for storage space for a AccelerationStructureKHR.

pattern BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR specifies that the buffer is suitable for use as a read-only input to an acceleration structure build.

pattern BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR specifies that the buffer can be used to retrieve a buffer device address via getBufferDeviceAddress and use that address to access the buffer’s memory from a shader.

pattern BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR is reserved for future use.

pattern BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR specifies that the buffer can be used as the destination video bitstream buffer in a video encode operation.

pattern BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR is reserved for future use.

pattern BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR specifies that the buffer can be used as the source video bitstream buffer in a video decode operation.

pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT specifies that the buffer is suitable for using as a counter buffer with cmdBeginTransformFeedbackEXT and cmdEndTransformFeedbackEXT.

pattern BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT specifies that the buffer is suitable for using for binding as a transform feedback buffer with cmdBindTransformFeedbackBuffersEXT.

pattern BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR specifies that the buffer is suitable for use as a Shader Binding Table.

pattern BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT specifies that the buffer is suitable for passing as the buffer parameter to cmdBeginConditionalRenderingEXT.

pattern BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX :: BufferUsageFlagBits2KHR

BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX specifies that the buffer can be used for as scratch memory for execution graph dispatch.

Instances

Instances details
Storable BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Bits BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

FiniteBits BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Read BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Show BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Eq BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Ord BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Zero BufferUsageFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

newtype PipelineCreateFlagBits2KHR Source #

VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is created

Description

It is valid to set both PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR and PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR. This allows a pipeline to be both a parent and possibly a child in a pipeline hierarchy. See Pipeline Derivatives for more information.

When an implementation is looking up a pipeline in a pipeline cache, if that pipeline is being created using linked libraries, implementations should always return an equivalent pipeline created with PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT if available, whether or not that bit was specified.

Using PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) when linking pipeline libraries is intended as a performance tradeoff between host and device. If the bit is omitted, linking should be faster and produce a pipeline more rapidly, but performance of the pipeline on the target device may be reduced. If the bit is included, linking may be slower but should produce a pipeline with device performance comparable to a monolithically created pipeline. Using both options can allow latency-sensitive applications to generate a suboptimal but usable pipeline quickly, and then perform an optimal link in the background, substituting the result for the suboptimally linked pipeline as soon as it is available.

See Also

VK_KHR_maintenance5, PipelineCreateFlags2KHR

Bundled Patterns

pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX :: PipelineCreateFlagBits2KHR 

Instances

Instances details
Storable PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Bits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Methods

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

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

xor :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

complement :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

shift :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotate :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

zeroBits :: PipelineCreateFlagBits2KHR #

bit :: Int -> PipelineCreateFlagBits2KHR #

setBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

clearBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

complementBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

testBit :: PipelineCreateFlagBits2KHR -> Int -> Bool #

bitSizeMaybe :: PipelineCreateFlagBits2KHR -> Maybe Int #

bitSize :: PipelineCreateFlagBits2KHR -> Int #

isSigned :: PipelineCreateFlagBits2KHR -> Bool #

shiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

shiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

popCount :: PipelineCreateFlagBits2KHR -> Int #

FiniteBits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Read PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Show PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Eq PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Ord PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Zero PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

newtype ShaderCreateFlagBitsEXT Source #

VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created

See Also

VK_EXT_shader_object, ShaderCreateFlagsEXT

Bundled Patterns

pattern SHADER_CREATE_LINK_STAGE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_LINK_STAGE_BIT_EXT specifies that a shader is linked to all other shaders created in the same createShadersEXT call whose ShaderCreateInfoEXT structures' flags include SHADER_CREATE_LINK_STAGE_BIT_EXT.

pattern SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT specifies that the shader can be used in combination with https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands.

pattern SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT specifies that a fragment shader can be used with a fragment density map attachment.

pattern SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT specifies that a fragment shader can be used with a fragment shading rate attachment.

pattern SHADER_CREATE_DISPATCH_BASE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_DISPATCH_BASE_BIT_EXT specifies that a compute shader can be used with cmdDispatchBase with a non-zero base workgroup.

pattern SHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_NO_TASK_SHADER_BIT_EXT specifies that a mesh shader must only be used without a task shader. Otherwise, the mesh shader must only be used with a task shader.

pattern SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT specifies that the subgroup sizes must be launched with all invocations active in a task, mesh, or compute shader.

pattern SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT specifies that the SubgroupSize may vary in a task, mesh, or compute shader.

Instances

Instances details
Storable ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Bits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

FiniteBits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Read ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Eq ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Ord ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object