Class EXTDeviceGeneratedCommands
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 vkCmdDrawIndirect with one indirect draw to vkCmdDrawIndirectCount 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:
- create
VkBufferobjects and retrieve physical addresses from them viaGetBufferDeviceAddress - create a
VkIndirectExecutionSetEXTfor the ability to change shaders on the device. - create a
VkIndirectCommandsLayoutEXT, which lists theVkIndirectCommandsTokenTypeEXTit wants to dynamically execute as an atomic command sequence. This step likely involves some internal device code compilation, since the intent is for the GPU to generate the command buffer based on the layout. - fill the input stream buffers with the data for each of the inputs it needs. Each input is an array that will be filled with token-dependent data.
- set up a preprocess
VkBufferthat uses memory according to the information retrieved viaGetGeneratedCommandsMemoryRequirementsEXT. - optionally preprocess the generated content using
CmdPreprocessGeneratedCommandsEXT, for example on an asynchronous compute queue, or for the purpose of re-using the data in multiple executions. - call
CmdExecuteGeneratedCommandsEXTto create and execute the actual device commands for all sequences based on the inputs provided.
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.).
Example Code
TODO
- Name String
VK_EXT_device_generated_commands- Extension Type
- Device extension
- Registered Extension Number
- 573
- Revision
- 1
- Extension and Version Dependencies
VK_KHR_buffer_device_addressandVK_KHR_maintenance5- API Interactions
- Interacts with VK_EXT_shader_object
- Contact
- Mike Blumenkrantz zmike
- 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_addressorVK_KHR_buffer_device_addressor Vulkan 1.2 for the ability to bind vertex and index buffers on the device. - This extension requires
VK_KHR_maintenance5for 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
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intExtendsVkAccessFlagBits.static final intExtendsVkAccessFlagBits.static final longExtendsVkBufferUsageFlagBits2.static final StringThe extension name.static final intThe extension specification version.static final intVkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutstatic final intVkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutstatic final intVkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutstatic final intVkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsstatic final intVkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution setstatic final intVkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution setstatic final intExtendsVkObjectType.static final intExtendsVkObjectType.static final longExtendsVkPipelineCreateFlagBits2.static final intExtendsVkPipelineStageFlagBits.static final intExtendsVkShaderCreateFlagBitsEXT.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidnvkCmdExecuteGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int isPreprocessed, long pGeneratedCommandsInfo) Unsafe version of:CmdExecuteGeneratedCommandsEXTstatic voidnvkCmdPreprocessGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long pGeneratedCommandsInfo, org.lwjgl.vulkan.VkCommandBuffer stateCommandBuffer) Unsafe version of:CmdPreprocessGeneratedCommandsEXTstatic intnvkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pIndirectCommandsLayout) Unsafe version of:CreateIndirectCommandsLayoutEXTstatic intnvkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pIndirectExecutionSet) Unsafe version of:CreateIndirectExecutionSetEXTstatic voidnvkDestroyIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long indirectCommandsLayout, long pAllocator) Unsafe version of:DestroyIndirectCommandsLayoutEXTstatic voidnvkDestroyIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, long pAllocator) Unsafe version of:DestroyIndirectExecutionSetEXTstatic voidnvkGetGeneratedCommandsMemoryRequirementsEXT(org.lwjgl.vulkan.VkDevice device, long pInfo, long pMemoryRequirements) Unsafe version of:GetGeneratedCommandsMemoryRequirementsEXTstatic voidnvkUpdateIndirectExecutionSetPipelineEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, int executionSetWriteCount, long pExecutionSetWrites) Unsafe version of:UpdateIndirectExecutionSetPipelineEXTstatic voidnvkUpdateIndirectExecutionSetShaderEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, int executionSetWriteCount, long pExecutionSetWrites) Unsafe version of:UpdateIndirectExecutionSetShaderEXTstatic voidvkCmdExecuteGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, boolean isPreprocessed, VkGeneratedCommandsInfoEXT pGeneratedCommandsInfo) Generate and execute commands on the device.static voidvkCmdPreprocessGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkGeneratedCommandsInfoEXT pGeneratedCommandsInfo, org.lwjgl.vulkan.VkCommandBuffer stateCommandBuffer) Performs preprocessing for generated commands.static intvkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectCommandsLayoutCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pIndirectCommandsLayout) Array version of:CreateIndirectCommandsLayoutEXTstatic intvkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectCommandsLayoutCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pIndirectCommandsLayout) Create an indirect command layout object.static intvkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectExecutionSetCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pIndirectExecutionSet) Array version of:CreateIndirectExecutionSetEXTstatic intvkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectExecutionSetCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pIndirectExecutionSet) Create an indirect execution set.static voidvkDestroyIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long indirectCommandsLayout, @Nullable VkAllocationCallbacks pAllocator) Destroy an indirect commands layout.static voidvkDestroyIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, @Nullable VkAllocationCallbacks pAllocator) Destroy an indirect execution set.static voidvkGetGeneratedCommandsMemoryRequirementsEXT(org.lwjgl.vulkan.VkDevice device, VkGeneratedCommandsMemoryRequirementsInfoEXT pInfo, VkMemoryRequirements2 pMemoryRequirements) Retrieve the buffer allocation requirements for generated commands.static voidvkUpdateIndirectExecutionSetPipelineEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, VkWriteIndirectExecutionSetPipelineEXT.Buffer pExecutionSetWrites) Update the contents of an indirect execution set.static voidvkUpdateIndirectExecutionSetShaderEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, VkWriteIndirectExecutionSetShaderEXT.Buffer pExecutionSetWrites) Update the contents of an indirect execution set.
-
Field Details
-
VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
public static final int VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
The extension name.- See Also:
-
VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT
public static final int VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXTExtendsVkShaderCreateFlagBitsEXT.- See Also:
-
VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT
public static final long VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXTExtendsVkBufferUsageFlagBits2.- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT
public static final int VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT
public static final int VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT
public static final int VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT
public static final int VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT
public static final int VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
public static final int VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXTSTRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXTSTRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXTSTRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT
- See Also:
-
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT
public static final int VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXTExtendsVkObjectType.Enum values:
- See Also:
-
VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT
public static final int VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXTExtendsVkObjectType.Enum values:
- See Also:
-
VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT
public static final long VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXTExtendsVkPipelineCreateFlagBits2.- See Also:
-
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
public static final int VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXTExtendsVkPipelineStageFlagBits.- See Also:
-
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
public static final int VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXTExtendsVkAccessFlagBits.Enum values:
- See Also:
-
VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT
public static final int VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXTExtendsVkAccessFlagBits.Enum values:
- See Also:
-
VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
public static final int VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXTVkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutDescription
INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXTspecifies that the indirect buffer containsVkBindIndexBufferIndirectCommandEXT.INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXTspecifies that the indirect buffer containsD3D12_INDEX_BUFFER_VIEW.
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
public static final int VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXTVkIndirectCommandsInputModeFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutDescription
INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXTspecifies that the indirect buffer containsVkBindIndexBufferIndirectCommandEXT.INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXTspecifies that the indirect buffer containsD3D12_INDEX_BUFFER_VIEW.
See Also
- See Also:
-
VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
public static final int VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXTVkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution setDescription
INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXTspecifies that the indirect execution set containsVkPipelineobjects.INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXTspecifies that the indirect execution set containsVkShaderEXTobjects.
See Also
VkIndirectCommandsExecutionSetTokenEXT,VkIndirectExecutionSetCreateInfoEXT- See Also:
-
VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
public static final int VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXTVkIndirectExecutionSetInfoTypeEXT - Enum specifying allowed usage of an indirect execution setDescription
INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXTspecifies that the indirect execution set containsVkPipelineobjects.INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXTspecifies that the indirect execution set containsVkShaderEXTobjects.
See Also
VkIndirectCommandsExecutionSetTokenEXT,VkIndirectExecutionSetCreateInfoEXT- See Also:
-
VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
public static final int VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTVkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutDescription
INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTspecifies that the layout is always used with the manual preprocessing step through callingCmdPreprocessGeneratedCommandsEXTand executed byCmdExecuteGeneratedCommandsEXTwithisPreprocessedset toTRUE.INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXTspecifies 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 theshaderStagesisSHADER_STAGE_COMPUTE_BITas it is implied that the dispatch sequence is always unordered.
- See Also:
-
VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
public static final int VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXTVkIndirectCommandsLayoutUsageFlagBitsEXT - Bitmask specifying allowed usage of an indirect commands layoutDescription
INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTspecifies that the layout is always used with the manual preprocessing step through callingCmdPreprocessGeneratedCommandsEXTand executed byCmdExecuteGeneratedCommandsEXTwithisPreprocessedset toTRUE.INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXTspecifies 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 theshaderStagesisSHADER_STAGE_COMPUTE_BITas it is implied that the dispatch sequence is always unordered.
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
public static final int VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXTVkIndirectCommandsTokenTypeEXT - Enum specifying token commandsDescription
Supported Indirect Command Tokens
See Also
- See Also:
-
-
Method Details
-
nvkGetGeneratedCommandsMemoryRequirementsEXT
public static void nvkGetGeneratedCommandsMemoryRequirementsEXT(org.lwjgl.vulkan.VkDevice device, long pInfo, long pMemoryRequirements) Unsafe version of:GetGeneratedCommandsMemoryRequirementsEXT -
vkGetGeneratedCommandsMemoryRequirementsEXT
public static void vkGetGeneratedCommandsMemoryRequirementsEXT(org.lwjgl.vulkan.VkDevice device, VkGeneratedCommandsMemoryRequirementsInfoEXT pInfo, VkMemoryRequirements2 pMemoryRequirements) Retrieve the buffer allocation requirements for generated commands.C Specification
With
VK_EXT_device_generated_commands, to retrieve the memory size and alignment requirements of a particular execution state call:void vkGetGeneratedCommandsMemoryRequirementsEXT( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, VkMemoryRequirements2* pMemoryRequirements);Description
If the size returned is zero, the preprocessing step can be skipped for this layout.
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepInfomust be a valid pointer to a validVkGeneratedCommandsMemoryRequirementsInfoEXTstructurepMemoryRequirementsmust be a valid pointer to aVkMemoryRequirements2structure
See Also
VkGeneratedCommandsMemoryRequirementsInfoEXT,VkMemoryRequirements2- Parameters:
device- the logical device that owns the buffer.pInfo- a pointer to aVkGeneratedCommandsMemoryRequirementsInfoEXTstructure containing parameters required for the memory requirements query.pMemoryRequirements- a pointer to aVkMemoryRequirements2structure in which the memory requirements of the buffer object are returned.
-
nvkCmdPreprocessGeneratedCommandsEXT
public static void nvkCmdPreprocessGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, long pGeneratedCommandsInfo, org.lwjgl.vulkan.VkCommandBuffer stateCommandBuffer) Unsafe version of:CmdPreprocessGeneratedCommandsEXT -
vkCmdPreprocessGeneratedCommandsEXT
public static void vkCmdPreprocessGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, VkGeneratedCommandsInfoEXT pGeneratedCommandsInfo, org.lwjgl.vulkan.VkCommandBuffer stateCommandBuffer) Performs preprocessing for generated commands.C Specification
Commands can be preprocessed prior execution using the following command:
void vkCmdPreprocessGeneratedCommandsEXT( VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, VkCommandBuffer stateCommandBuffer);Description
Note
stateCommandBufferaccess is not synchronized by the driver, meaning that this command buffer must not be modified between threads in an unsafe manner.Valid Usage
commandBuffermust not be a protected command bufferpGeneratedCommandsInfo’sindirectCommandsLayoutmust have been created with theINDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTbit set- If the token sequence of the passed
VkGeneratedCommandsInfoEXT::indirectCommandsLayoutcontains aINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTtoken, the initial shader state ofVkGeneratedCommandsInfoEXT::indirectExecutionSetmust be bound onstateCommandBuffer stateCommandBuffermust be in the recording state- The
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommandsfeature must be enabled - Only stages specified in
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::supportedIndirectCommandsShaderStagescan be set inpGeneratedCommandsInfo→shaderStages
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlepGeneratedCommandsInfomust be a valid pointer to a validVkGeneratedCommandsInfoEXTstructurestateCommandBuffermust be a validVkCommandBufferhandlecommandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas 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
commandBuffermust be a primaryVkCommandBuffer- Both of
commandBuffer, andstateCommandBuffermust have been created, allocated, or retrieved from the sameVkDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to
stateCommandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type Primary Outside Outside Graphics Compute Action See Also
- Parameters:
commandBuffer- the command buffer which does the preprocessing.pGeneratedCommandsInfo- a pointer to aVkGeneratedCommandsInfoEXTstructure containing parameters affecting the preprocessing step.stateCommandBuffer- 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.
-
nvkCmdExecuteGeneratedCommandsEXT
public static void nvkCmdExecuteGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, int isPreprocessed, long pGeneratedCommandsInfo) Unsafe version of:CmdExecuteGeneratedCommandsEXT -
vkCmdExecuteGeneratedCommandsEXT
public static void vkCmdExecuteGeneratedCommandsEXT(org.lwjgl.vulkan.VkCommandBuffer commandBuffer, boolean isPreprocessed, VkGeneratedCommandsInfoEXT pGeneratedCommandsInfo) Generate and execute commands on the device.C Specification
With
VK_EXT_device_generated_commands, the actual generation of commands as well as their execution on the device is handled as single action with:void vkCmdExecuteGeneratedCommandsEXT( VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo);Description
If the
INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXTflag was used to create theVkGeneratedCommandsInfoEXT::indirectCommandsLayoutthen 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 withINDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT.After a call to
vkCmdExecuteGeneratedCommandsEXT, command buffer state will become undefined according to the tokens executed. This table specifies the relationship between tokens used and state invalidation.Indirect Execution State Invalidation
Common Tokens States Invalidated INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTBound shaders and pipelines INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXTPush constant data INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXTPush constant data INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXTIndex buffer INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXTVertex buffer Valid Usage
- If a
VkSamplercreated withmagFilterorminFilterequal toFILTER_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
VkSamplercreated withmagFilterorminFilterequal toFILTER_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
VkSamplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal toFALSEis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT - If a
VkSamplercreated withmipmapModeequal toSAMPLER_MIPMAP_MODE_LINEARandreductionModeequal to eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT - If a
VkSamplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aVkImageViewas a result of this command, then the image view’slevelCountandlayerCountmust be 1 - If a
VkSamplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aVkImageViewas a result of this command, then the image view’sviewTypemust beIMAGE_VIEW_TYPE_1DorIMAGE_VIEW_TYPE_2D - If a
VkSamplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aVkImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name - If a
VkSamplercreated withunnormalizedCoordinatesequal toTRUEis used to sample aVkImageViewas a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values - If a
VkImageViewis sampled with depth comparison, the image view’s format features must containFORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT - If a
VkImageViewis 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
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must containFORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT - If a
VkImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT - If the
VK_EXT_filter_cubicextension is not enabled and anyVkImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, it must not have aVkImageViewTypeofIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE, orIMAGE_VIEW_TYPE_CUBE_ARRAY - Any
VkImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aVkImageViewTypeand format that supports cubic filtering, as specified byVkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned byGetPhysicalDeviceImageFormatProperties2 - Any
VkImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aVkImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byVkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned byGetPhysicalDeviceImageFormatProperties2 - If the
cubicRangeClampfeature is not enabled, then anyVkImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must not have aVkSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM - Any
VkImageViewbeing sampled with aVkSamplerReductionModeCreateInfo::reductionModeequal toSAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOMas a result of this command must sample withFILTER_CUBIC_EXT - If the
selectableCubicWeightsfeature is not enabled, then anyVkImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must haveVkSamplerCubicWeightsCreateInfoQCOM::cubicWeightsequal toCUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM - Any
VkImagecreated with aVkImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aVkSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE - For any
VkImageViewbeing written as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - For any
VkImageViewbeing read as a storage image where the image format field of theOpTypeImageisUnknown, the view’s format features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For any
VkBufferViewbeing written as a storage texel buffer where the image format field of theOpTypeImageisUnknown, the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT - Any
VkBufferViewbeing read as a storage texel buffer where the image format field of theOpTypeImageisUnknownthen the view’s buffer features must containFORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT - For each set n that is statically used by a bound shader, a descriptor set must have been bound to n at the same pipeline bind point, with a
VkPipelineLayoutthat is compatible for set n, with theVkPipelineLayoutused to create the currentVkPipelineor theVkDescriptorSetLayoutarray used to create the currentVkShaderEXT, as described in Pipeline Layout Compatibility - For each push constant that is statically used by a bound shader, a push constant value must have been set for the same pipeline bind point, with a
VkPipelineLayoutthat is compatible for push constants, with theVkPipelineLayoutused to create the currentVkPipelineor theVkDescriptorSetLayoutarray used to create the currentVkShaderEXT, as described in Pipeline Layout Compatibility - For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command
- If the
maintenance4feature is not enabled, then for each push constant that is statically used by a bound shader, a push constant value must have been set for the same pipeline bind point, with aVkPipelineLayoutthat is compatible for push constants, with theVkPipelineLayoutused to create the currentVkPipelineor theVkDescriptorSetLayoutandVkPushConstantRangearrays used to create the currentVkShaderEXT, as described in Pipeline Layout Compatibility - Descriptors in each bound descriptor set, specified via
CmdBindDescriptorSets, must be valid as described by descriptor validity if they are statically used by theVkPipelinebound to the pipeline bind point used by this command and the boundVkPipelinewas not created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If the descriptors used by the
VkPipelinebound to the pipeline bind point were specified viaCmdBindDescriptorSets, the boundVkPipelinemust have been created withoutPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound descriptor buffers, specified via
CmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by theVkPipelinebound to the pipeline bind point used by this command and the boundVkPipelinewas created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - Descriptors in bound descriptor buffers, specified via
CmdSetDescriptorBufferOffsetsEXT, must be valid if they are dynamically used by anyVkShaderEXTbound to a stage corresponding to the pipeline bind point used by this command - If the descriptors used by the
VkPipelinebound to the pipeline bind point were specified viaCmdSetDescriptorBufferOffsetsEXT, the boundVkPipelinemust have been created withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT - If a descriptor is dynamically used with a
VkPipelinecreated withPIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If a descriptor is dynamically used with a
VkShaderEXTcreated with aVkDescriptorSetLayoutthat was created withDESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident - If the
shaderObjectfeature is not enabled, a valid pipeline must be bound to the pipeline bind point used by this command - If a pipeline is bound to the pipeline bind point used by this command, there must not have been any calls to dynamic state setting commands for any state specified statically in the
VkPipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound - If the
shaderObjectfeature is enabled, either a valid pipeline must be bound to the pipeline bind point used by this command, or a valid combination of valid andNULL_HANDLEshader objects must be bound to every supported shader stage corresponding to the pipeline bind point used by this command - If any stage of the
VkPipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2foruniformBuffers, and therobustBufferAccessfeature is not enabled, that stage 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
robustBufferAccessfeature is not enabled, and anyVkShaderEXTbound to a stage corresponding 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 any stage of the
VkPipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling eitherPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESSorPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2forstorageBuffers, and therobustBufferAccessfeature is not enabled, that stage 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
robustBufferAccessfeature is not enabled, and anyVkShaderEXTbound to a stage corresponding 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
commandBufferis an unprotected command buffer andprotectedNoFaultis not supported, any resource accessed by bound shaders must not be a protected resource - If a bound shader accesses a
VkSamplerorVkImageViewobject that enables sampler Y′CBCR conversion, that object must only be used withOpImageSample*orOpImageSparseSample*instructions - If a bound shader accesses a
VkSamplerorVkImageViewobject that enables sampler Y′CBCR conversion, that object must not use theConstOffsetandOffsetoperands - If a
VkImageViewis accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types - If a
VkImageViewis accessed as a result of this command, then the numeric type of the image view’sformatand theSampledTypeoperand of theOpTypeImagemust match - If a
VkImageViewcreated with a format other thanFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format - If a
VkImageViewcreated with the formatFORMAT_A8_UNORMis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have four components - If a
VkBufferViewis accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format - If a
VkImageViewwith aVkFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
VkImageViewwith aVkFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If a
VkBufferViewwith aVkFormatthat has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 - If a
VkBufferViewwith aVkFormatthat has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 - If the
sparseImageInt64Atomicsfeature is not enabled,VkImageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If the
sparseImageInt64Atomicsfeature is not enabled,VkBufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command - If
OpImageWeightedSampleQCOMis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM - If
OpImageWeightedSampleQCOMuses aVkImageViewas a sample weight image as a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM - If
OpImageBoxFilterQCOMis used to sample aVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM - If
OpImageBlockMatchSSDQCOMis used to read from anVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMis used to read from anVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If
OpImageBlockMatchSADQCOMor OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - If
OpImageWeightedSampleQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aVkSampleras a result of this command, then the sampler must have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If any command other than
OpImageWeightedSampleQCOM,OpImageBoxFilterQCOM,OpImageBlockMatchWindowSSDQCOM,OpImageBlockMatchWindowSADQCOM,OpImageBlockMatchGatherSSDQCOM,OpImageBlockMatchGatherSADQCOM,OpImageBlockMatchSSDQCOM, orOpImageBlockMatchSADQCOMuses aVkSampleras a result of this command, then the sampler must not have been created withSAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anVkImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMinstruction is used to read from anVkImageViewas a result of this command, then the image view’s format must be a single-component format - If a
OpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMread from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation - Any shader invocation executed by this command must terminate
- If a descriptor with type equal to any of
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,DESCRIPTOR_TYPE_SAMPLED_IMAGE,DESCRIPTOR_TYPE_STORAGE_IMAGE, orDESCRIPTOR_TYPE_INPUT_ATTACHMENTis accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written - The current render pass must be compatible with the
renderPassmember of theVkGraphicsPipelineCreateInfostructure specified when creating theVkPipelinebound toPIPELINE_BIND_POINT_GRAPHICS - The subpass index of the current render pass must be equal to the
subpassmember of theVkGraphicsPipelineCreateInfostructure specified when creating theVkPipelinebound toPIPELINE_BIND_POINT_GRAPHICS - If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set
- If any shader executed by this pipeline accesses an
OpTypeImagevariable with aDimoperand ofSubpassData, it must be decorated with anInputAttachmentIndexthat corresponds to a valid input attachment in the current subpass - Input attachment views accessed in a subpass must be created with the same
VkFormatas the corresponding subpass definition, and be created with aVkImageViewthat is compatible with the attachment referenced by the subpass'pInputAttachments[InputAttachmentIndex] in the boundVkFramebufferas specified by Fragment Input Attachment Compatibility - Input attachment views accessed in a dynamic render pass with a
InputAttachmentIndexreferenced byVkRenderingInputAttachmentIndexInfo, or noInputAttachmentIndexifVkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexorVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexareNULL, must be created with aVkImageViewthat is compatible with the corresponding color, depth, or stencil attachment inVkRenderingInfo - Input attachment views accessed in a dynamic render pass via a shader object must have an
InputAttachmentIndexif bothVkRenderingInputAttachmentIndexInfo:pDepthInputAttachmentIndexandVkRenderingInputAttachmentIndexInfo:pStencilInputAttachmentIndexare non-NULL - If an input attachment view accessed in a dynamic render pass via a shader object has an
InputAttachmentIndex, theInputAttachmentIndexmust match an index inVkRenderingInputAttachmentIndexInfo - Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
- If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTimage layout, and either:- the
PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTis set on the bound pipeline or - the last call to
CmdSetAttachmentFeedbackLoopEnableEXTincludedIMAGE_ASPECT_COLOR_BITand- there is no bound graphics pipeline or
- the bound graphics pipeline was created with
DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
it must not be accessed in any way other than as an attachment by this command
- the
- If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTimage layout, and either:- the
PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTis set on the bound pipeline or - the last call to
CmdSetAttachmentFeedbackLoopEnableEXTincludedIMAGE_ASPECT_DEPTH_BITand- there is no bound graphics pipeline or
- the bound graphics pipeline was created with
DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
it must not be accessed in any way other than as an attachment by this command
- the
- If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTimage layout, and either:- the
PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTis set on the bound pipeline or - the last call to
CmdSetAttachmentFeedbackLoopEnableEXTincludedIMAGE_ASPECT_STENCIL_BITand- there is no bound graphics pipeline or
- the bound graphics pipeline was created with
DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT
it must not be accessed in any way other than as an attachment by this command
- the
- If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it must not be accessed in any way other than as an attachment, storage image, or sampled image by this command
- If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back
writeMaskare not zero, and stencil test is enabled, all stencil ops must beSTENCIL_OP_KEEP - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORTdynamic state enabled thenCmdSetViewportmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SCISSORdynamic state enabled thenCmdSetScissormust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_WIDTHdynamic state enabled thenCmdSetLineWidthmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage, and the most recent call to
CmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPolygonModeEXTin the current command buffer setpolygonModetoPOLYGON_MODE_LINE,CmdSetLineWidthmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage, and the most recent call to
CmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPrimitiveTopologyin the current command buffer setprimitiveTopologyto any line topology,CmdSetLineWidthmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object that outputs line primitives is bound to the
SHADER_STAGE_TESSELLATION_EVALUATION_BITorSHADER_STAGE_GEOMETRY_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE,CmdSetLineWidthmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_BIASdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofdepthBiasEnableisTRUE, thenCmdSetDepthBiasorCmdSetDepthBias2EXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_BLEND_CONSTANTSdynamic state enabled thenCmdSetBlendConstantsmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetColorBlendEnableEXTin the current command buffer set any element ofpColorBlendEnablestoTRUE, and the most recent call toCmdSetColorBlendEquationEXTin the current command buffer set the same element ofpColorBlendEquationsto aVkColorBlendEquationEXTstructure with anyVkBlendFactormember with a value ofBLEND_FACTOR_CONSTANT_COLOR,BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,BLEND_FACTOR_CONSTANT_ALPHA, orBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,CmdSetBlendConstantsmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_BOUNDSdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofdepthBoundsTestEnableisTRUE, thenCmdSetDepthBoundsmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_STENCIL_COMPARE_MASKdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofstencilTestEnableisTRUE, thenCmdSetStencilCompareMaskmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_STENCIL_WRITE_MASKdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofstencilTestEnableisTRUE, thenCmdSetStencilWriteMaskmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_STENCIL_REFERENCEdynamic state enabled, the current value of andrasterizerDiscardEnableisFALSE, the current value ofstencilTestEnableisTRUE, thenCmdSetStencilReferencemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to
VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex - If the bound graphics pipeline was created with
VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableset toTRUEand the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTbit set - If the
VK_EXT_sample_locationsextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetSampleLocationsEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_sample_locationsextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_EXTdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofsampleLocationsEnableisTRUE, thenCmdSetSampleLocationsEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_CULL_MODEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetCullModemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_FRONT_FACEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetFrontFacemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_TEST_ENABLEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE,CmdSetDepthTestEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_WRITE_ENABLEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetDepthWriteEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_COMPARE_OPdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofdepthTestEnableisTRUE, thenCmdSetDepthCompareOpmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
depthBoundsfeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetDepthBoundsTestEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_STENCIL_TEST_ENABLEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetStencilTestEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_STENCIL_OPdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, the current value ofstencilTestEnableisTRUE, thenCmdSetStencilOpmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled, and the state is not inherited, thenCmdSetViewportWithCountmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_SCISSOR_WITH_COUNTdynamic state enabled, and the state is not inherited, thenCmdSetScissorWithCountmust have been called and not subsequently invalidated in the current command buffer prior to this drawing - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with both the
DYNAMIC_STATE_SCISSOR_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic states enabled, and the state is not inherited, then theviewportCountparameter ofvkCmdSetViewportWithCountmust match thescissorCountparameter ofvkCmdSetScissorWithCount - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, then the bound graphics pipeline must have been created withVkPipelineViewportWScalingStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, the current value ofviewportWScalingEnableisTRUE, thenCmdSetViewportWScalingNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, the current value ofviewportWScalingEnableisTRUE, then theviewportCountparameter in the last call toCmdSetViewportWScalingNVmust be greater than or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, then the bound graphics pipeline must have been created withVkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the
shadingRateImagefeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NVand the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetCoarseSampleOrderNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
shadingRateImagefeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofshadingRateImageEnableisTRUE, thenCmdSetViewportShadingRatePaletteNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
shadingRateImagefeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofshadingRateImageEnableisTRUE, then theviewportCountparameter in the last call toCmdSetViewportShadingRatePaletteNVmust be greater than or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled and aVkPipelineViewportSwizzleStateCreateInfoNVstructure chained fromVkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created withVkPipelineViewportSwizzleStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled and aVkPipelineViewportExclusiveScissorStateCreateInfoNVstructure chained fromVkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created withVkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCountgreater or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the
exclusiveScissorfeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NVdynamic state enabled, thenCmdSetExclusiveScissorEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
exclusiveScissorfeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_EXCLUSIVE_SCISSOR_NVdynamic state enabled, and the most recent call toCmdSetExclusiveScissorEnableNVin the current command buffer set any element ofpExclusiveScissorEnablestoTRUE, thenCmdSetExclusiveScissorNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLEdynamic state enabled, thenCmdSetRasterizerDiscardEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_DEPTH_BIAS_ENABLEdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetDepthBiasEnablemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITor a graphics pipeline is bound which was created with theDYNAMIC_STATE_LOGIC_OP_EXTdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value oflogicOpEnableisTRUE, thenCmdSetLogicOpEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
primitiveFragmentShadingRateWithMultipleViewportslimit is not supported, the bound graphics pipeline was created with theDYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled, and any of the shader stages of the bound graphics pipeline write to thePrimitiveShadingRateKHRbuilt-in, thenCmdSetViewportWithCountmust have been called in the current command buffer prior to this drawing command, and theviewportCountparameter ofvkCmdSetViewportWithCountmust be 1 - If the
primitiveFragmentShadingRateWithMultipleViewportslimit is not supported, and any shader object bound to a graphics stage writes to thePrimitiveShadingRateKHRbuilt-in, thenCmdSetViewportWithCountmust have been called in the current command buffer prior to this drawing command, and theviewportCountparameter ofvkCmdSetViewportWithCountmust be 1 - If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain
FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then theblendEnablemember of the corresponding element of thepAttachmentsmember ofpColorBlendStatemust beFALSE - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not containFORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member ofpColorBlendEnablesin the most recent call tovkCmdSetColorBlendEnableEXTin the current command buffer that affected that attachment index must have beenFALSE - If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:
- the
VK_AMD_mixed_attachment_samplesextension - the
VK_NV_framebuffer_mixed_samplesextension - the
multisampledRenderToSingleSampledfeature
then
rasterizationSamplesfor the bound graphics pipeline must be the same as the current subpass color and/or depth/stencil attachments - the
- If a shader object is bound to any graphics stage, and the most recent call to
CmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and none of the following is enabled:- the
VK_AMD_mixed_attachment_samplesextension - the
VK_NV_framebuffer_mixed_samplesextension - the
multisampledRenderToSingleSampledfeature
then the most recent call to
CmdSetRasterizationSamplesEXTin the current command buffer must have setrasterizationSamplesto be the same as the number of samples for the current render pass color and/or depth/stencil attachments - the
- If a shader object is bound to any graphics stage, the current render pass instance must have been begun with
CmdBeginRendering - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpDepthAttachmentis notNULL_HANDLE, and thelayoutmember ofpDepthAttachmentisIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpStencilAttachmentis notNULL_HANDLE, and thelayoutmember ofpStencilAttachmentisIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpDepthAttachmentis notNULL_HANDLE, and thelayoutmember ofpDepthAttachmentisIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpStencilAttachmentis notNULL_HANDLE, and thelayoutmember ofpStencilAttachmentisIMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpDepthAttachmentis notNULL_HANDLE, and thelayoutmember ofpDepthAttachmentisIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment - If the current render pass instance was begun with
CmdBeginRendering, theimageViewmember ofpStencilAttachmentis notNULL_HANDLE, and thelayoutmember ofpStencilAttachmentisIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment - If the current render pass instance was begun with
CmdBeginRendering, the bound graphics pipeline must have been created with aVkPipelineRenderingCreateInfo::viewMaskequal toVkRenderingInfo::viewMask - If the
dynamicRenderingUnusedAttachmentsfeature is not enabled and the current render pass instance was begun withCmdBeginRendering, the bound graphics pipeline must have been created with aVkPipelineRenderingCreateInfo::colorAttachmentCountequal toVkRenderingInfo::colorAttachmentCount - If the
dynamicRenderingUnusedAttachmentsfeature is not enabled, and the current render pass instance was begun withCmdBeginRenderingandVkRenderingInfo::colorAttachmentCountgreater than 0, then each element of theVkRenderingInfo::pColorAttachmentsarray with animageViewnot equal toNULL_HANDLEmust have been created with aVkFormatequal to the corresponding element ofVkPipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound graphics pipeline - If the
dynamicRenderingUnusedAttachmentsfeature is not enabled, and the current render pass instance was begun withCmdBeginRenderingandVkRenderingInfo::colorAttachmentCountgreater than 0, then each element of theVkRenderingInfo::pColorAttachmentsarray with animageViewequal toNULL_HANDLEmust have the corresponding element ofVkPipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound pipeline equal toFORMAT_UNDEFINED - If the
dynamicRenderingUnusedAttachmentsfeature is enabled, and the current render pass instance was begun withCmdBeginRenderingandVkRenderingInfo::colorAttachmentCountgreater than 0, then each element of theVkRenderingInfo::pColorAttachmentsarray with animageViewnot equal toNULL_HANDLEmust have been created with aVkFormatequal to the corresponding element ofVkPipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the bound graphics pipeline, or the corresponding element ofVkPipelineRenderingCreateInfo::pColorAttachmentFormats, if it exists, must beFORMAT_UNDEFINED - If the current render pass instance was begun with
CmdBeginRendering, with aVkRenderingInfo::colorAttachmentCountequal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode ofRESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of theVkRenderingInfo::pColorAttachmentsarray with aresolveImageViewnot equal toNULL_HANDLEmust have been created with an image created with aVkExternalFormatANDROID::externalFormatvalue equal to theVkExternalFormatANDROID::externalFormatvalue used to create the bound graphics pipeline - If there is no shader object bound to any graphics stage, the current render pass instance was begun with
CmdBeginRenderingand aVkRenderingInfo::colorAttachmentCountequal to 1, and a color attachment with a resolve mode ofRESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of theVkRenderingInfo::pColorAttachmentsarray with aimageViewnot equal toNULL_HANDLEmust have been created with an image created with aVkExternalFormatANDROID::externalFormatvalue equal to theVkExternalFormatANDROID::externalFormatvalue used to create the bound graphics pipeline - If the current render pass instance was begun with
CmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zeroVkExternalFormatANDROID::externalFormatvalue and with theDYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTdynamic state enabled, thenCmdSetColorBlendEnableEXTmust have set the blend enable toFALSEprior to this drawing command - If the current render pass instance was begun with
CmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zeroVkExternalFormatANDROID::externalFormatvalue and with theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTdynamic state enabled, thenCmdSetRasterizationSamplesEXTmust have setrasterizationSamplestoSAMPLE_COUNT_1_BITprior to this drawing command - If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the
RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROIDresolve mode, thenCmdSetColorBlendEnableEXTmust have set blend enable toFALSEprior to this drawing command - If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the
RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROIDresolve mode, thenCmdSetRasterizationSamplesEXTmust have setrasterizationSamplestoSAMPLE_COUNT_1_BITprior to this drawing command - If the current render pass instance was begun with
CmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zeroVkExternalFormatANDROID::externalFormatvalue and with theDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRdynamic state enabled, thenCmdSetFragmentShadingRateKHRmust have setpFragmentSize→widthto 1 prior to this drawing command - If the current render pass instance was begun with
CmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zeroVkExternalFormatANDROID::externalFormatvalue and with theDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRdynamic state enabled, thenCmdSetFragmentShadingRateKHRmust have setpFragmentSize→heightto 1 prior to this drawing command - If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the
RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROIDresolve mode, thenCmdSetFragmentShadingRateKHRmust have setpFragmentSize→widthto 1 prior to this drawing command - If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the
RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROIDresolve mode, thenCmdSetFragmentShadingRateKHRmust have setpFragmentSize→heightto 1 prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXTdynamic state enabled thenCmdSetColorWriteEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
colorWriteEnablefeature is enabled, and a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, thenCmdSetColorWriteEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXTdynamic state enabled then theattachmentCountparameter ofvkCmdSetColorWriteEnableEXTmust be greater than or equal to theVkPipelineColorBlendStateCreateInfo::attachmentCountof the bound graphics pipeline - If the
colorWriteEnablefeature is enabled, and a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, then theattachmentCountparameter of most recent call tovkCmdSetColorWriteEnableEXTin the current command buffer must be greater than or equal to the number of color attachments in the current render pass instance - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_DISCARD_RECTANGLE_EXTdynamic state enabled thenCmdSetDiscardRectangleEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle inVkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount - If the
VK_EXT_discard_rectanglesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXTdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetDiscardRectangleEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_discard_rectanglesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXTdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofdiscardRectangleEnableisTRUE, thenCmdSetDiscardRectangleModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_discard_rectanglesextension is enabled, and a shader object is bound to any graphics stage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetDiscardRectangleEnableEXTin the current command buffer setdiscardRectangleEnabletoTRUE, thenCmdSetDiscardRectangleEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is not enabled, andVkRenderingInfo::pDepthAttachment→imageViewwasNULL_HANDLE, the value ofVkPipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline must be equal toFORMAT_UNDEFINED - If current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is not enabled, andVkRenderingInfo::pDepthAttachment→imageViewwas notNULL_HANDLE, the value ofVkPipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline must be equal to theVkFormatused to createVkRenderingInfo::pDepthAttachment→imageView - If the current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is enabled,VkRenderingInfo::pDepthAttachment→imageViewwas notNULL_HANDLE, and the value ofVkPipelineRenderingCreateInfo::depthAttachmentFormatused to create the bound graphics pipeline was not equal to theVkFormatused to createVkRenderingInfo::pDepthAttachment→imageView, the value of the format must beFORMAT_UNDEFINED - If the current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is not enabled, andVkRenderingInfo::pStencilAttachment→imageViewwasNULL_HANDLE, the value ofVkPipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline must be equal toFORMAT_UNDEFINED - If current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is not enabled, andVkRenderingInfo::pStencilAttachment→imageViewwas notNULL_HANDLE, the value ofVkPipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline must be equal to theVkFormatused to createVkRenderingInfo::pStencilAttachment→imageView - If the current render pass instance was begun with
CmdBeginRendering, thedynamicRenderingUnusedAttachmentsfeature is enabled,VkRenderingInfo::pStencilAttachment→imageViewwas notNULL_HANDLE, and the value ofVkPipelineRenderingCreateInfo::stencilAttachmentFormatused to create the bound graphics pipeline was not equal to theVkFormatused to createVkRenderingInfo::pStencilAttachment→imageView, the value of the format must beFORMAT_UNDEFINED - If the current render pass instance was begun with
CmdBeginRenderingandVkRenderingFragmentShadingRateAttachmentInfoKHR::imageViewwas notNULL_HANDLE, the bound graphics pipeline must have been created withPIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR - If the current render pass instance was begun with
CmdBeginRenderingandVkRenderingFragmentDensityMapAttachmentInfoEXT::imageViewwas notNULL_HANDLE, the bound graphics pipeline must have been created withPIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT - If the bound pipeline was created with a
VkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, and the current render pass instance was begun withCmdBeginRenderingwith aVkRenderingInfo::colorAttachmentCountparameter greater than 0, then each element of theVkRenderingInfo::pColorAttachmentsarray with aimageViewnot equal toNULL_HANDLEmust have been created with a sample count equal to the corresponding element of thepColorAttachmentSamplesmember ofVkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVused to create the bound graphics pipeline - If the current render pass instance was begun with
CmdBeginRendering, the bound pipeline was created with aVkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, andVkRenderingInfo::pDepthAttachment→imageViewwas notNULL_HANDLE, the value of thedepthStencilAttachmentSamplesmember ofVkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVused to create the bound graphics pipeline must be equal to the sample count used to createVkRenderingInfo::pDepthAttachment→imageView - If the current render pass instance was begun with
CmdBeginRendering, the bound pipeline was created with aVkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, andVkRenderingInfo::pStencilAttachment→imageViewwas notNULL_HANDLE, the value of thedepthStencilAttachmentSamplesmember ofVkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVused to create the bound graphics pipeline must be equal to the sample count used to createVkRenderingInfo::pStencilAttachment→imageView - If the bound pipeline was created without a
VkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, and themultisampledRenderToSingleSampledfeature is not enabled, and the current render pass instance was begun withCmdBeginRenderingwith aVkRenderingInfo::colorAttachmentCountparameter greater than 0, then each element of theVkRenderingInfo::pColorAttachmentsarray with aimageViewnot equal toNULL_HANDLEmust have been created with a sample count equal to the value ofrasterizationSamplesfor the bound graphics pipeline - If the bound pipeline was created without a
VkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, and themultisampledRenderToSingleSampledfeature is not enabled, andVkRenderingInfo::pDepthAttachment→imageViewwas notNULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to createVkRenderingInfo::pDepthAttachment→imageView - If the bound pipeline was created without a
VkAttachmentSampleCountInfoAMDorVkAttachmentSampleCountInfoNVstructure, and themultisampledRenderToSingleSampledfeature is not enabled, andVkRenderingInfo::pStencilAttachment→imageViewwas notNULL_HANDLE, the value ofrasterizationSamplesfor the bound graphics pipeline must be equal to the sample count used to createVkRenderingInfo::pStencilAttachment→imageView - If this command has been called inside a render pass instance started with
CmdBeginRendering, and thepNextchain ofVkRenderingInfoincludes aVkMultisampledRenderToSingleSampledInfoEXTstructure withmultisampledRenderToSingleSampledEnableequal toTRUE, then the value ofrasterizationSamplesfor the bound graphics pipeline must be equal toVkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples - If the current render pass instance was begun with
CmdBeginRendering, the bound pipeline must have been created with aVkGraphicsPipelineCreateInfo::renderPassequal toNULL_HANDLE - If the current render pass instance was begun with
CmdBeginRendering, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of theVkRenderingInfo::pColorAttachments→imageViewwas notNULL_HANDLE, then the corresponding element ofVkPipelineRenderingCreateInfo::pColorAttachmentFormatsused to create the pipeline must not beFORMAT_UNDEFINED - If the current render pass instance was begun with
CmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and theVkRenderingInfo::pDepthAttachment→imageViewwas notNULL_HANDLE, then theVkPipelineRenderingCreateInfo::depthAttachmentFormatused to create the pipeline must not beFORMAT_UNDEFINED - If the current render pass instance was begun with
CmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and theVkRenderingInfo::pStencilAttachment→imageViewwas notNULL_HANDLE, then theVkPipelineRenderingCreateInfo::stencilAttachmentFormatused to create the pipeline must not beFORMAT_UNDEFINED - If the
primitivesGeneratedQueryWithRasterizerDiscardfeature is not enabled and theQUERY_TYPE_PRIMITIVES_GENERATED_EXTquery is active, rasterization discard must not be enabled - If the
primitivesGeneratedQueryWithNonZeroStreamsfeature is not enabled and theQUERY_TYPE_PRIMITIVES_GENERATED_EXTquery is active, the bound graphics pipeline must not have been created with a non-zero value inVkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream - If the
depthClampfeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetDepthClampEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_POLYGON_MODE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetPolygonModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetRasterizationSamplesEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_SAMPLE_MASK_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetSampleMaskEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTdynamic state enabled, andalphaToCoverageEnablewasTRUEin the last call toCmdSetAlphaToCoverageEnableEXT, then the Fragment Output Interface must contain a variable for the alphaComponentword inLocation0 atIndex0 - If a shader object is bound to any graphics stage, and the most recent call to
CmdSetAlphaToCoverageEnableEXTin the current command buffer setalphaToCoverageEnabletoTRUE, then the Fragment Output Interface must contain a variable for the alphaComponentword inLocation0 atIndex0 - If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetAlphaToCoverageEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
alphaToOnefeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetAlphaToOneEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
logicOpfeature is enabled, a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_LOGIC_OP_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetLogicOpEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTdynamic state enabled thenCmdSetColorBlendEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and both the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSEand there are color attachments bound, thenCmdSetColorBlendEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXTdynamic state enabled thenCmdSetColorBlendEquationEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetColorBlendEnableEXTfor any attachment set that attachment’s value inpColorBlendEnablestoTRUE, thenCmdSetColorBlendEquationEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_WRITE_MASK_EXTdynamic state enabled thenCmdSetColorWriteMaskEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and both the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSEand there are color attachments bound, thenCmdSetColorWriteMaskEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
geometryStreamsfeature is enabled, and a shader object is bound to theSHADER_STAGE_GEOMETRY_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_RASTERIZATION_STREAM_EXTdynamic state enabled, thenCmdSetRasterizationStreamEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_conservative_rasterizationextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetConservativeRasterizationModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_conservative_rasterizationextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXTdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofconservativeRasterizationModeisCONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, thenCmdSetExtraPrimitiveOverestimationSizeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
depthClipEnablefeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXTdynamic state, thenCmdSetDepthClipEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTdynamic state enabled thenCmdSetColorBlendAdvancedEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_blend_operation_advancedextension is enabled, and a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, then at least one ofCmdSetColorBlendEquationEXTandCmdSetColorBlendAdvancedEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_EXT_provoking_vertexextension is enabled, a shader object is bound to theSHADER_STAGE_VERTEX_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetProvokingVertexModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTdynamic state enabled thenCmdSetLineRasterizationModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object is bound to any graphics stage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPolygonModeEXTin the current command buffer setpolygonModetoPOLYGON_MODE_LINE, thenCmdSetLineRasterizationModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object is bound to theSHADER_STAGE_VERTEX_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPrimitiveTopologyin the current command buffer setprimitiveTopologyto any line topology, thenCmdSetLineRasterizationModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object that outputs line primitives is bound to theSHADER_STAGE_TESSELLATION_EVALUATION_BITorSHADER_STAGE_GEOMETRY_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, thenCmdSetLineRasterizationModeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTdynamic state enabled thenCmdSetLineStippleEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object is bound to any graphics stage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPolygonModeEXTin the current command buffer setpolygonModetoPOLYGON_MODE_LINE, thenCmdSetLineStippleEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object is bound to theSHADER_STAGE_VERTEX_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the most recent call toCmdSetPrimitiveTopologyin the current command buffer setprimitiveTopologyto any line topology, thenCmdSetLineStippleEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled, and a shader object that outputs line primitives is bound to theSHADER_STAGE_TESSELLATION_EVALUATION_BITorSHADER_STAGE_GEOMETRY_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, thenCmdSetLineStippleEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If any of the
stippledRectangularLines,stippledBresenhamLinesorstippledSmoothLinesfeatures are enabled and a shader object is bound to any graphics stage, or a bound graphics pipeline state was created with theDYNAMIC_STATE_LINE_STIPPLEdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofstippledLineEnableisTRUE, thenCmdSetLineStipplemust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
depthClipControlfeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXTdynamic state enabled, thenCmdSetDepthClipNegativeOneToOneEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
depthClampControlfeature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXTdynamic state enabled, and the current value ofdepthClampEnableisTRUE, thenCmdSetDepthClampRangeEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_clip_space_w_scalingextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NVdynamic state enabled, thenCmdSetViewportWScalingEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_viewport_swizzleextension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_VIEWPORT_SWIZZLE_NVdynamic state enabled, thenCmdSetViewportSwizzleNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_fragment_coverage_to_colorextension is enabled, a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetCoverageToColorEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_fragment_coverage_to_colorextension is enabled, a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NVdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofcoverageToColorEnableisTRUE, thenCmdSetCoverageToColorLocationNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_MODULATION_MODE_NVdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetCoverageModulationModeNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NVdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofcoverageModulationModeis any value other thanCOVERAGE_MODULATION_MODE_NONE_NV, thenCmdSetCoverageModulationTableEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NVdynamic state enabled, the current value ofrasterizerDiscardEnableisFALSE, and the current value ofcoverageModulationTableEnableisTRUE, thenCmdSetCoverageModulationTableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
shadingRateImagefeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NVdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetShadingRateImageEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
pipelineFragmentShadingRatefeature is enabled, a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHRdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetFragmentShadingRateKHRmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
representativeFragmentTestfeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NVdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetRepresentativeFragmentTestEnableNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the
coverageReductionModefeature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NVdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetCoverageReductionModeNVmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTstate enabled and the last call toCmdSetColorBlendEnableEXTsetpColorBlendEnablesfor any attachment toTRUE, then for those attachments in the subpass the corresponding image view’s format features must containFORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and the current subpass does not use any color and/or depth/stencil attachments, then therasterizationSamplesin the last call toCmdSetRasterizationSamplesEXTmust follow the rules for a zero-attachment subpass - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_MASK_EXTstate enabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate disabled, then thesamplesparameter in the last call toCmdSetSampleMaskEXTmust be greater or equal to theVkPipelineMultisampleStateCreateInfo::rasterizationSamplesparameter used to create the bound graphics pipeline - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_MASK_EXTstate andDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstates enabled, then thesamplesparameter in the last call toCmdSetSampleMaskEXTmust be greater or equal to therasterizationSamplesparameter in the last call toCmdSetRasterizationSamplesEXT - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and themultisampledRenderToSingleSampledfeature is not enabled, and neither theVK_AMD_mixed_attachment_samplesnor theVK_NV_framebuffer_mixed_samplesextensions are enabled, then therasterizationSamplesin the last call toCmdSetRasterizationSamplesEXTmust be the same as the current subpass color and/or depth/stencil attachments - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes aVkMultisampledRenderToSingleSampledInfoEXTstructure withmultisampledRenderToSingleSampledEnableequal toTRUE, then therasterizationSamplesin the last call toCmdSetRasterizationSamplesEXTmust be the same as therasterizationSamplesmember of that structure - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTdynamic state enabled thenCmdSetColorBlendEnableEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorBlendEnableEXTcalls must specify an enable for all active color attachments in the current subpass - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, thenCmdSetColorBlendEnableEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorBlendEnableEXTcalls must specify an enable for all active color attachments in the current subpass - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXTdynamic state enabled thenCmdSetColorBlendEquationEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorBlendEquationEXTcalls must specify the blend equations for all active color attachments in the current subpass where blending is enabled - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and both the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSEand there are color attachments bound, thenCmdSetColorBlendEquationEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorBlendEquationEXTcalls must specify the blend equations for all active color attachments in the current subpass where blending is enabled - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_WRITE_MASK_EXTdynamic state enabled thenCmdSetColorWriteMaskEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorWriteMaskEXTcalls must specify the color write mask for all active color attachments in the current subpass - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, thenCmdSetColorWriteMaskEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorWriteMaskEXTcalls must specify the color write mask for all active color attachments in the current subpass - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTdynamic state enabled thenCmdSetColorBlendAdvancedEXTmust have been called in the current command buffer prior to this drawing command, and the attachments specified by thefirstAttachmentandattachmentCountparameters ofvkCmdSetColorBlendAdvancedEXTcalls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXTandDYNAMIC_STATE_COLOR_BLEND_ENABLE_EXTdynamic states enabled and the last calls toCmdSetColorBlendEnableEXTandCmdSetColorBlendAdvancedEXThave enabled advanced blending, then the number of active color attachments in the current subpass must not exceedadvancedBlendMaxColorAttachments - If the
primitivesGeneratedQueryWithNonZeroStreamsfeature is not enabled and theQUERY_TYPE_PRIMITIVES_GENERATED_EXTquery is active, and the bound graphics pipeline was created withDYNAMIC_STATE_RASTERIZATION_STREAM_EXTstate enabled, the last call toCmdSetRasterizationStreamEXTmust have set therasterizationStreamto zero - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate enabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate disabled, and the current value ofsampleLocationsEnableisTRUE, then thesampleLocationsPerPixelmember ofpSampleLocationsInfoin the last call toCmdSetSampleLocationsEXTmust equal therasterizationSamplesmember of theVkPipelineMultisampleStateCreateInfostructure the bound graphics pipeline has been created with - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate enabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and the current value ofsampleLocationsEnableisTRUE, then thesampleLocationsPerPixelmember ofpSampleLocationsInfoin the last call toCmdSetSampleLocationsEXTmust equal therasterizationSamplesparameter of the last call toCmdSetRasterizationSamplesEXT - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, or the bound graphics pipeline was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTstate enabled, andsampleLocationsEnablewasTRUEin the last call toCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTbit set - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, or the bound graphics pipeline state was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate enabled and theDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTstate enabled, and ifsampleLocationsEnablewasTRUEin the last call toCmdSetSampleLocationsEnableEXT, then thesampleLocationsInfo.sampleLocationGridSize.widthin the last call toCmdSetSampleLocationsEXTmust evenly divideVkMultisamplePropertiesEXT::sampleLocationGridSize.widthas returned byGetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, or the bound graphics pipeline state was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate enabled and theDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTstate enabled, and ifsampleLocationsEnablewasTRUEin the last call toCmdSetSampleLocationsEnableEXT, then thesampleLocationsInfo.sampleLocationGridSize.heightin the last call toCmdSetSampleLocationsEXTmust evenly divideVkMultisamplePropertiesEXT::sampleLocationGridSize.heightas returned byGetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equalingrasterizationSamples - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage, or the bound graphics pipeline state was created with theDYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXTstate enabled, and ifsampleLocationsEnablewasTRUEin the last call toCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instructionInterpolateAtSample - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate disabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and the current value ofsampleLocationsEnableisTRUE, thensampleLocationsInfo.sampleLocationGridSize.widthmust evenly divideVkMultisamplePropertiesEXT::sampleLocationGridSize.widthas returned byGetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equaling the value ofrasterizationSamplesin the last call toCmdSetRasterizationSamplesEXT - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate disabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and the current value ofsampleLocationsEnableisTRUE, thensampleLocationsInfo.sampleLocationGridSize.heightmust evenly divideVkMultisamplePropertiesEXT::sampleLocationGridSize.heightas returned byGetPhysicalDeviceMultisamplePropertiesEXTwith asamplesparameter equaling the value ofrasterizationSamplesin the last call toCmdSetRasterizationSamplesEXT - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXTstate disabled and theDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstate enabled, and the current value ofsampleLocationsEnableisTRUE, thensampleLocationsInfo.sampleLocationsPerPixelmust equalrasterizationSamplesin the last call toCmdSetRasterizationSamplesEXT - If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the
DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NVstate enabled, and the last call toCmdSetCoverageModulationTableEnableNVsetcoverageModulationTableEnabletoTRUE, then thecoverageModulationTableCountparameter in the last call toCmdSetCoverageModulationTableNVmust equal the currentrasterizationSamplesdivided by the number of color samples in the current subpass - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the currentrasterizationSamplesmust be the same as the sample count of the depth/stencil attachment - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVstate enabled and the last call toCmdSetCoverageToColorEnableNVset thecoverageToColorEnabletoTRUE, then the current subpass must have a color attachment at the location selected by the last call toCmdSetCoverageToColorLocationNVcoverageToColorLocation, with aVkFormatofFORMAT_R8_UINT,FORMAT_R8_SINT,FORMAT_R16_UINT,FORMAT_R16_SINT,FORMAT_R32_UINT, orFORMAT_R32_SINT - If the
VK_NV_fragment_coverage_to_colorextension is enabled, and a shader object is bound to theSHADER_STAGE_FRAGMENT_BITstage, and the most recent call toCmdSetRasterizerDiscardEnablein the current command buffer setrasterizerDiscardEnabletoFALSE, and the last call toCmdSetCoverageToColorEnableNVset thecoverageToColorEnabletoTRUE, then the current subpass must have a color attachment at the location selected by the last call toCmdSetCoverageToColorLocationNVcoverageToColorLocation, with aVkFormatofFORMAT_R8_UINT,FORMAT_R8_SINT,FORMAT_R16_UINT,FORMAT_R16_SINT,FORMAT_R32_UINT, orFORMAT_R32_SINT - If this
VK_NV_coverage_reduction_modeextension is enabled, the bound graphics pipeline state was created with theDYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NVandDYNAMIC_STATE_RASTERIZATION_SAMPLES_EXTstates enabled, the current coverage reduction modecoverageReductionMode, then the currentrasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned byGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_SWIZZLE_NVdynamic state enabled, then the bound graphics pipeline must have been created withVkPipelineViewportSwizzleStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_VIEWPORT_WITH_COUNTandDYNAMIC_STATE_VIEWPORT_SWIZZLE_NVdynamic states enabled then theviewportCountparameter in the last call toCmdSetViewportSwizzleNVmust be greater than or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the
VK_NV_viewport_swizzleextension is enabled, and a shader object is bound to any graphics stage, then theviewportCountparameter in the last call toCmdSetViewportSwizzleNVmust be greater than or equal to theviewportCountparameter in the last call toCmdSetViewportWithCount - If the
VK_NV_framebuffer_mixed_samplesextension is enabled, and if the current subpass has any color attachments andrasterizationSamplesof the last call toCmdSetRasterizationSamplesEXTis greater than the number of color samples, then the pipelinesampleShadingEnablemust beFALSE - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTorDYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTdynamic states enabled, and if the currentstippledLineEnablestate isTRUEand the currentlineRasterizationModestate isLINE_RASTERIZATION_MODE_RECTANGULAR, then thestippledRectangularLinesfeature must be enabled - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTorDYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTdynamic states enabled, and if the currentstippledLineEnablestate isTRUEand the currentlineRasterizationModestate isLINE_RASTERIZATION_MODE_BRESENHAM, then thestippledBresenhamLinesfeature must be enabled - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTorDYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTdynamic states enabled, and if the currentstippledLineEnablestate isTRUEand the currentlineRasterizationModestate isLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, then thestippledSmoothLinesfeature must be enabled - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXTorDYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXTdynamic states enabled, and if the currentstippledLineEnablestate isTRUEand the currentlineRasterizationModestate isLINE_RASTERIZATION_MODE_DEFAULT, then thestippledRectangularLinesfeature must be enabled andVkPhysicalDeviceLimits::strictLinesmust beTRUE - If the bound graphics pipeline state was created with the
DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXTdynamic state enabled,conservativePointAndLineRasterizationis not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then theconservativeRasterizationModeset by the last call toCmdSetConservativeRasterizationModeEXTmust beCONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT - If the bound pipeline was created with the
VkPipelineShaderStageCreateInfo::stagemember of an element ofVkGraphicsPipelineCreateInfo::pStagesset toSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BITorSHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active - If a shader object is bound to the
SHADER_STAGE_FRAGMENT_BITstage or a graphics pipeline is bound which was created with theDYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXTdynamic state enabled, and the current value ofrasterizerDiscardEnableisFALSE, thenCmdSetAttachmentFeedbackLoopEnableEXTmust have been called and not subsequently invalidated in the current command buffer prior to this drawing command - If dynamic state was inherited from
VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command - If there is no bound graphics pipeline,
vkCmdBindShadersEXTmust have been called in the current command buffer withpStageswith an element ofSHADER_STAGE_FRAGMENT_BIT - If there is no bound graphics pipeline, and the
taskShaderfeature is enabled,vkCmdBindShadersEXTmust have been called in the current command buffer withpStageswith an element ofSHADER_STAGE_TASK_BIT_EXT - If there is no bound graphics pipeline, and the
meshShaderfeature is enabled,vkCmdBindShadersEXTmust have been called in the current command buffer withpStageswith an element ofSHADER_STAGE_MESH_BIT_EXT - If there is no bound graphics pipeline, and at least one of the
taskShaderandmeshShaderfeatures is enabled, one of theSHADER_STAGE_VERTEX_BITorSHADER_STAGE_MESH_BIT_EXTstages must have a validVkShaderEXTbound, and the other must have noVkShaderEXTbound - If there is no bound graphics pipeline, and both the
taskShaderandmeshShaderfeatures are enabled, and a validVkShaderEXTis bound the to theSHADER_STAGE_MESH_BIT_EXTstage, and thatVkShaderEXTwas created without theSHADER_CREATE_NO_TASK_SHADER_BIT_EXTflag, a validVkShaderEXTmust be bound to theSHADER_STAGE_TASK_BIT_EXTstage - If there is no bound graphics pipeline, and both the
taskShaderandmeshShaderfeatures are enabled, and a validVkShaderEXTis bound the to theSHADER_STAGE_MESH_BIT_EXTstage, and thatVkShaderEXTwas created with theSHADER_CREATE_NO_TASK_SHADER_BIT_EXTflag, there must be noVkShaderEXTbound to theSHADER_STAGE_TASK_BIT_EXTstage - If there is no bound graphics pipeline, and a valid
VkShaderEXTis bound to theSHADER_STAGE_VERTEX_BITstage, there must be noVkShaderEXTbound to either theSHADER_STAGE_TASK_BIT_EXTstage or theSHADER_STAGE_MESH_BIT_EXTstage - If any graphics shader is bound which was created with the
SHADER_CREATE_LINK_STAGE_BIT_EXTflag, then all shaders created with theSHADER_CREATE_LINK_STAGE_BIT_EXTflag in the sameCreateShadersEXTcall must also be bound - If any graphics shader is bound which was created with the
SHADER_CREATE_LINK_STAGE_BIT_EXTflag, any stages in between stages whose shaders which did not create a shader with theSHADER_CREATE_LINK_STAGE_BIT_EXTflag as part of the sameCreateShadersEXTcall must not have anyVkShaderEXTbound - All bound graphics shader objects must have been created with identical or identically defined push constant ranges
- All bound graphics shader objects must have been created with identical or identically defined arrays of descriptor set layouts
- If the current render pass instance was begun with
CmdBeginRenderingand aVkRenderingInfo::colorAttachmentCountequal to 1, a color attachment with a resolve mode ofRESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare theDepthReplacingorStencilRefReplacingEXTexecution modes - If the bound graphics pipeline state includes a fragment shader stage, was created with
DYNAMIC_STATE_DEPTH_WRITE_ENABLEset inVkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpDepthAttachmentReadEXT, thedepthWriteEnableparameter in the last call toCmdSetDepthWriteEnablemust beFALSE - If the bound graphics pipeline state includes a fragment shader stage, was created with
DYNAMIC_STATE_STENCIL_WRITE_MASKset inVkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares theEarlyFragmentTestsexecution mode and usesOpStencilAttachmentReadEXT, thewriteMaskparameter in the last call toCmdSetStencilWriteMaskmust be 0 - If a shader object is bound to any graphics stage or the bound graphics pipeline was created with
DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and the format of any color attachment isFORMAT_E5B9G9R9_UFLOAT_PACK32, the corresponding element of thepColorWriteMasksparameter ofCmdSetColorWriteMaskEXTmust either include all ofCOLOR_COMPONENT_R_BIT,COLOR_COMPONENT_G_BIT, andCOLOR_COMPONENT_B_BIT, or none of them - If blending is enabled for any attachment where either the source or destination blend factors for that attachment use the secondary color input, the maximum value of
Locationfor any output attachment statically used in theFragmentExecutionModelexecuted by this command must be less thanmaxFragmentDualSrcAttachments - If the current render pass was begun with
CmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element ofVkRenderingAttachmentLocationInfo::pColorAttachmentLocationsset byCmdSetRenderingAttachmentLocationsmust match the value set for the corresponding element in the bound pipeline - If the current render pass was begun with
CmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance viaVkRenderingInputAttachmentIndexInfo - If the current render pass was begun with
CmdBeginRenderingwith theRENDERING_ENABLE_LEGACY_DITHERING_BIT_EXTflag, the bound graphics pipeline must have been created withPIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT - If the bound graphics pipeline was created with
PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun withCmdBeginRenderingwith theRENDERING_ENABLE_LEGACY_DITHERING_BIT_EXTflag
commandBuffermust not be a protected command buffer- If
isPreprocessedisTRUEandGetGeneratedCommandsMemoryRequirementsEXTdid not return a required size of zero thenCmdPreprocessGeneratedCommandsEXTmust have already been executed on the device before this command executes, and the preprocessing command must have used the samepGeneratedCommandsInfocontent as well as the content of the input buffers it references (all exceptVkGeneratedCommandsInfoEXT::preprocessBuffer) - If
isPreprocessedisTRUEthen theindirectCommandsLayoutmember ofpGeneratedCommandsInfomust have been created with theINDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTbit set - If the
indirectCommandsLayoutmember ofpGeneratedCommandsInfowas created with theINDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXTbit set, thenisPreprocessedmust beTRUE - The contents of the
preprocessAddressmember ofpGeneratedCommandsInfomust not have been previously used to record anotherCmdExecuteGeneratedCommandsEXT - If
isPreprocessedisTRUEthen the bound descriptor sets and push constants must match identically with those bound during recording of the corresponding call toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUEthen the conditional render state and its predicate value must match identically with the state and value set during execution of the corresponding call toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUEand theindirectCommandsLayoutmember ofpGeneratedCommandsInfocontains a draw token, then the graphics state bound oncommandBuffermust match identically with the graphics state bound on thestateCommandBufferpassed toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUE, then the queue family index ofcommandBuffermust be the same as the queue family index used to allocate thestateCommandBufferpassed toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUEand theindirectCommandsLayoutmember ofpGeneratedCommandsInfocontains a dispatch token, then the compute state bound oncommandBuffermust match identically with the compute state bound on thestateCommandBufferpassed toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUEand theindirectCommandsLayoutmember ofpGeneratedCommandsInfocontains a ray tracing token, then the ray tracing state bound oncommandBuffermust match identically with the ray tracing state bound on thestateCommandBufferpassed toCmdPreprocessGeneratedCommandsEXT - If
isPreprocessedisTRUEand theindirectCommandsLayoutmember ofpGeneratedCommandsInfocontains a ray tracing token, the queue family indexcommandBufferwas allocated from must be the same queue family index used to allocate thestateCommandBufferpassed toCmdPreprocessGeneratedCommandsEXT - If the token sequence of the passed
VkGeneratedCommandsInfoEXT::indirectCommandsLayoutcontains aINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTtoken, the initial shader state ofVkGeneratedCommandsInfoEXT::indirectExecutionSetmust be bound oncommandBuffer - If
indirectCommandsLayoutwas created with a token sequence that contained theINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTtoken andindirectExecutionSetwas created usingINDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT, every executedINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTtoken must bind all the shader stages set in theVkIndirectCommandsExecutionSetTokenEXT::shaderStagesused to createindirectCommandsLayout - If
isPreprocessedisTRUEand the token sequence of the passedVkGeneratedCommandsInfoEXT::indirectCommandsLayoutcontains aINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXTtoken, the members ofVkGeneratedCommandsInfoEXT::indirectExecutionSetaccessed by this command must not have been modified since the preprocess buffer was generated - If the
indirectCommandsLayoutmember ofpGeneratedCommandsInfocontains a draw token, then the active render pass must not have a specified fragment density map - If
deviceGeneratedCommandsTransformFeedbackis not supported on device, transform feedback must not be active - If transform feedback is active,
VkGeneratedCommandsInfoEXT::indirectExecutionSetmust beNULL_HANDLE - The
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommandsfeature must be enabled - The bound shader stages must be supported by
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::supportedIndirectCommandsShaderStages - Only stages specified in
VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::supportedIndirectCommandsShaderStagescan be set inpGeneratedCommandsInfo→shaderStages - If a rendering pass is currently active, the view mask must be 0
commandBuffermust not have been created withCOMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandlepGeneratedCommandsInfomust be a valid pointer to a validVkGeneratedCommandsInfoEXTstructurecommandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a video coding scope
commandBuffermust be a primaryVkCommandBuffer
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type Primary Both Outside Graphics Compute Action Indirection See Also
- Parameters:
commandBuffer- the command buffer into which the command is recorded.isPreprocessed- represents whether the input data has already been preprocessed on the device. If it isFALSEthis command will implicitly trigger the preprocessing step, otherwise not.pGeneratedCommandsInfo- a pointer to aVkGeneratedCommandsInfoEXTstructure containing parameters affecting the generation of commands.
- If a
-
nvkCreateIndirectCommandsLayoutEXT
public static int nvkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pIndirectCommandsLayout) Unsafe version of:CreateIndirectCommandsLayoutEXT -
vkCreateIndirectCommandsLayoutEXT
public static int vkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectCommandsLayoutCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pIndirectCommandsLayout) Create an indirect command layout object.C Specification
Indirect command layouts for
VK_EXT_device_generated_commandsare created by:VkResult vkCreateIndirectCommandsLayoutEXT( VkDevice device, const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout);Valid Usage
- The
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommandsfeature must be enabled
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepCreateInfomust be a valid pointer to a validVkIndirectCommandsLayoutCreateInfoEXTstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure pIndirectCommandsLayoutmust be a valid pointer to aVkIndirectCommandsLayoutEXThandle
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
VkAllocationCallbacks,VkIndirectCommandsLayoutCreateInfoEXT- Parameters:
device- the logical device that creates the indirect command layout.pCreateInfo- a pointer to aVkIndirectCommandsLayoutCreateInfoEXTstructure containing parameters affecting creation of the indirect command layout.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.pIndirectCommandsLayout- a pointer to aVkIndirectCommandsLayoutEXThandle in which the resulting indirect command layout is returned.
- The
-
nvkDestroyIndirectCommandsLayoutEXT
public static void nvkDestroyIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long indirectCommandsLayout, long pAllocator) Unsafe version of:DestroyIndirectCommandsLayoutEXT -
vkDestroyIndirectCommandsLayoutEXT
public static void vkDestroyIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, long indirectCommandsLayout, @Nullable VkAllocationCallbacks pAllocator) Destroy an indirect commands layout.C Specification
Indirect command layouts for
VK_EXT_device_generated_commandsare destroyed by:void vkDestroyIndirectCommandsLayoutEXT( VkDevice device, VkIndirectCommandsLayoutEXT indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);Valid Usage
- All submitted commands that refer to
indirectCommandsLayoutmust have completed execution - If
VkAllocationCallbackswere provided whenindirectCommandsLayoutwas created, a compatible set of callbacks must be provided here - If no
VkAllocationCallbackswere provided whenindirectCommandsLayoutwas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validVkDevicehandle- If
indirectCommandsLayoutis notNULL_HANDLE,indirectCommandsLayoutmust be a validVkIndirectCommandsLayoutEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure - If
indirectCommandsLayoutis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
indirectCommandsLayoutmust be externally synchronized
See Also
- Parameters:
device- the logical device that destroys the layout.indirectCommandsLayout- the layout to destroy.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.
- All submitted commands that refer to
-
nvkCreateIndirectExecutionSetEXT
public static int nvkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pIndirectExecutionSet) Unsafe version of:CreateIndirectExecutionSetEXT -
vkCreateIndirectExecutionSetEXT
public static int vkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectExecutionSetCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pIndirectExecutionSet) Create an indirect execution set.C Specification
Indirect Execution Sets are created by calling:
VkResult vkCreateIndirectExecutionSetEXT( VkDevice device, const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectExecutionSetEXT* pIndirectExecutionSet);Valid Usage
- The
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommandsfeature must be enabled
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepCreateInfomust be a valid pointer to a validVkIndirectExecutionSetCreateInfoEXTstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure pIndirectExecutionSetmust be a valid pointer to aVkIndirectExecutionSetEXThandle
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
- Parameters:
device- the logical device that creates the indirect execution set.pCreateInfo- a pointer to aVkIndirectExecutionSetCreateInfoEXTstructure containing parameters affecting creation of the indirect execution set.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.pIndirectExecutionSet- a pointer to aVkIndirectExecutionSetEXThandle in which the resulting indirect execution set is returned.
- The
-
nvkDestroyIndirectExecutionSetEXT
public static void nvkDestroyIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, long pAllocator) Unsafe version of:DestroyIndirectExecutionSetEXT -
vkDestroyIndirectExecutionSetEXT
public static void vkDestroyIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, @Nullable VkAllocationCallbacks pAllocator) Destroy an indirect execution set.C Specification
Destroy an Indirect Execution Set by calling:
void vkDestroyIndirectExecutionSetEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, const VkAllocationCallbacks* pAllocator);Valid Usage
- All submitted commands that refer to
indirectExecutionSetmust have completed execution
Valid Usage (Implicit)
devicemust be a validVkDevicehandle- If
indirectExecutionSetis notNULL_HANDLE,indirectExecutionSetmust be a validVkIndirectExecutionSetEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure - If
indirectExecutionSetis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
indirectExecutionSetmust be externally synchronized
See Also
- Parameters:
device- the logical device that owns the indirect execution set.indirectExecutionSet- the indirect execution set to destroy.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.
- All submitted commands that refer to
-
nvkUpdateIndirectExecutionSetPipelineEXT
public static void nvkUpdateIndirectExecutionSetPipelineEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, int executionSetWriteCount, long pExecutionSetWrites) Unsafe version of:UpdateIndirectExecutionSetPipelineEXT- Parameters:
executionSetWriteCount- the number of elements in thepExecutionSetWritesarray.
-
vkUpdateIndirectExecutionSetPipelineEXT
public static void vkUpdateIndirectExecutionSetPipelineEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, VkWriteIndirectExecutionSetPipelineEXT.Buffer pExecutionSetWrites) Update the contents of an indirect execution set.C Specification
Pipeline elements in an Indirect Execution Set can be updated by calling:
void vkUpdateIndirectExecutionSetPipelineEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites);Valid Usage
indirectExecutionSetmust have been created with typeINDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXTexecutionSetWriteCountmust be less than or equal toVkIndirectExecutionSetPipelineInfoEXT::maxPipelineCount- Each element in the
pExecutionSetWritesarray must have a uniqueVkWriteIndirectExecutionSetPipelineEXT::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
pExecutionSetWritesmust be compatible with theinitialPipelineused to create the Indirect Execution Set - Each pipeline in the Indirect Execution Set must have identically defined static and dynamic state values to the
initialPipelineused to create the Indirect Execution Set - Each pipeline in the Indirect Execution Set must have identically defined fragment outputs interface to the
initialPipelineused to create the Indirect Execution Set - Each pipeline in the Indirect Execution Set must match the
initialPipelineused to create the Indirect Execution Set in its included shader stages - Each pipeline in the Indirect Execution Set must match the
initialPipelineused to create the Indirect Execution Set in its use ofFragDepth - Each pipeline in the Indirect Execution Set must match the
initialPipelineused to create the Indirect Execution Set in its use ofSampleMask - Each pipeline in the Indirect Execution Set must match the
initialPipelineused to create the Indirect Execution Set in its use ofStencilExportEXT
Valid Usage (Implicit)
devicemust be a validVkDevicehandleindirectExecutionSetmust be a validVkIndirectExecutionSetEXThandlepExecutionSetWritesmust be a valid pointer to an array ofexecutionSetWriteCountvalidVkWriteIndirectExecutionSetPipelineEXTstructuresexecutionSetWriteCountmust be greater than 0indirectExecutionSetmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
indirectExecutionSetmust be externally synchronized
See Also
- Parameters:
device- the logical device that owns the indirect execution set.indirectExecutionSet- the indirect execution set being updated.pExecutionSetWrites- a pointer to an array ofVkWriteIndirectExecutionSetPipelineEXTstructures describing the elements to update.
-
nvkUpdateIndirectExecutionSetShaderEXT
public static void nvkUpdateIndirectExecutionSetShaderEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, int executionSetWriteCount, long pExecutionSetWrites) Unsafe version of:UpdateIndirectExecutionSetShaderEXT- Parameters:
executionSetWriteCount- the number of elements in thepExecutionSetWritesarray.
-
vkUpdateIndirectExecutionSetShaderEXT
public static void vkUpdateIndirectExecutionSetShaderEXT(org.lwjgl.vulkan.VkDevice device, long indirectExecutionSet, VkWriteIndirectExecutionSetShaderEXT.Buffer pExecutionSetWrites) Update the contents of an indirect execution set.C Specification
Shader object elements in an Indirect Execution Set can be updated by calling:
void vkUpdateIndirectExecutionSetShaderEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites);Valid Usage
indirectExecutionSetmust have been created with typeINDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT- Each element in the
pExecutionSetWritesarray must have a uniqueVkWriteIndirectExecutionSetShaderEXT::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
pExecutionSetWritesmust 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)
devicemust be a validVkDevicehandleindirectExecutionSetmust be a validVkIndirectExecutionSetEXThandlepExecutionSetWritesmust be a valid pointer to an array ofexecutionSetWriteCountvalidVkWriteIndirectExecutionSetShaderEXTstructuresexecutionSetWriteCountmust be greater than 0indirectExecutionSetmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
indirectExecutionSetmust be externally synchronized
See Also
- Parameters:
device- the logical device that owns the indirect execution set.indirectExecutionSet- the indirect execution set being updated.pExecutionSetWrites- a pointer to an array ofVkWriteIndirectExecutionSetShaderEXTstructures describing the elements to update.
-
vkCreateIndirectCommandsLayoutEXT
public static int vkCreateIndirectCommandsLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectCommandsLayoutCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pIndirectCommandsLayout) Array version of:CreateIndirectCommandsLayoutEXT -
vkCreateIndirectExecutionSetEXT
public static int vkCreateIndirectExecutionSetEXT(org.lwjgl.vulkan.VkDevice device, VkIndirectExecutionSetCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pIndirectExecutionSet) Array version of:CreateIndirectExecutionSetEXT
-