C Specification

The VkGeneratedCommandsInfoEXT is defined as:

// Provided by VK_EXT_device_generated_commands
typedef struct VkGeneratedCommandsInfoEXT {
    VkStructureType                sType;
    const void*                    pNext;
    VkShaderStageFlags             shaderStages;
    VkIndirectExecutionSetEXT      indirectExecutionSet;
    VkIndirectCommandsLayoutEXT    indirectCommandsLayout;
    VkDeviceAddress                indirectAddress;
    VkDeviceSize                   indirectAddressSize;
    VkDeviceAddress                preprocessAddress;
    VkDeviceSize                   preprocessSize;
    uint32_t                       maxSequenceCount;
    VkDeviceAddress                sequenceCountAddress;
    uint32_t                       maxDrawCount;
} VkGeneratedCommandsInfoEXT;

Members

  • sType is a VkStructureType value identifying this structure.

  • pNext is NULL or a pointer to a structure extending this structure.

  • shaderStages is the mask of shader stages used by the commands.

  • indirectExecutionSet is the indirect execution set to be used for binding shaders.

  • indirectCommandsLayout is the VkIndirectCommandsLayoutEXT that specifies the command sequence data.

  • indirectAddress is an address that holds the indirect buffer data.

  • indirectAddressSize is the size in bytes of indirect buffer data starting at indirectAddress.

  • preprocessAddress specifies a physical address of the VkBuffer used for preprocessing the input data for execution. If this structure is used with vkCmdExecuteGeneratedCommandsEXT with its isPreprocessed set to VK_TRUE, then the preprocessing step is skipped but data in this address may still be modified. The contents and the layout of this address are opaque to applications and must not be modified outside functions related to device-generated commands or copied to another buffer for reuse.

  • preprocessSize is the maximum byte size within preprocessAddress that is available for preprocessing.

  • maxSequenceCount is used to determine the number of sequences to execute.

  • sequenceCountAddress specifies an optional physical address of a single uint32_t value containing the requested number of sequences to execute.

  • maxDrawCount is the maximum number of indirect draws that can be executed by any COUNT-type multi-draw indirect tokens. The draw count in the indirect buffer is clamped to this value for these token types.

Description

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

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

Valid Usage
Valid Usage (Implicit)
  • VUID-VkGeneratedCommandsInfoEXT-sType-sType
    sType must be VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT

  • VUID-VkGeneratedCommandsInfoEXT-shaderStages-parameter
    shaderStages must be a valid combination of VkShaderStageFlagBits values

  • VUID-VkGeneratedCommandsInfoEXT-shaderStages-requiredbitmask
    shaderStages must not be 0

  • VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-parameter
    If indirectExecutionSet is not VK_NULL_HANDLE, indirectExecutionSet must be a valid VkIndirectExecutionSetEXT handle

  • VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-parameter
    indirectCommandsLayout must be a valid VkIndirectCommandsLayoutEXT handle

  • VUID-VkGeneratedCommandsInfoEXT-indirectAddress-parameter
    indirectAddress must be a valid VkDeviceAddress value

  • VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-parameter
    If preprocessAddress is not 0, preprocessAddress must be a valid VkDeviceAddress value

  • VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-parameter
    If sequenceCountAddress is not 0, sequenceCountAddress must be a valid VkDeviceAddress value

  • VUID-VkGeneratedCommandsInfoEXT-commonparent
    Both of indirectCommandsLayout, and indirectExecutionSet that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice

See Also

Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0