VkIndirectCommandsLayoutTokenEXT(3)

# VkIndirectCommandsLayoutTokenEXT(3) Manual Page

## Name

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

## C Specification

The `VkIndirectCommandsLayoutTokenEXT` structure specifies details to the function arguments that need to be known at layout creation time:

    // Provided by VK_EXT_device_generated_commands
    typedef struct VkIndirectCommandsLayoutTokenEXT {
        VkStructureType                   sType;
        const void*                       pNext;
        VkIndirectCommandsTokenTypeEXT    type;
        VkIndirectCommandsTokenDataEXT    data;
        uint32_t                          offset;
    } VkIndirectCommandsLayoutTokenEXT;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `type` specifies the VkIndirectCommandsTokenTypeEXT for `data`.

- `data` specifies a VkIndirectCommandsTokenDataEXT containing token-specific details for command execution. It is ignored if `type` does not match any member of the VkIndirectCommandsTokenDataEXT union.

- `offset` is the relative byte offset for the token within one sequence of the indirect buffer. The data stored at that offset is the command data for the token, e.g. `VkDispatchIndirectCommand`.

## Description

Valid Usage

- VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124
  `offset` must be less than or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::`maxIndirectCommandsTokenOffset`

- VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125
  `offset` must be aligned to `4`

- VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126
  If `meshShader` or `taskShader` are not enabled, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT or VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128
  If the `rayTracingMaintenance1` feature is not enabled, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129
  If VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::`deviceGeneratedCommandsMultiDrawIndirectCount` is not supported, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT or VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130
  If VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::`deviceGeneratedCommandsMultiDrawIndirectCount` is not supported, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131
  If VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT::`deviceGeneratedCommandsMultiDrawIndirectCount` is not supported, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-descriptorHeap-11332
  If the `descriptorHeap` feature is not enabled, `type` must not be VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT or VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-type-11333
  If `type` is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT or VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT VkIndirectCommandsPushConstantTokenEXT::`updateRange.shaderStages` must be VK_SHADER_STAGE_ALL

Valid Usage (Implicit)

- VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT

- VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter
  `type` must be a valid VkIndirectCommandsTokenTypeEXT value

- VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter
  If `type` is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT, VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT, VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT, or VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT, the `pPushConstant` member of `data` must be a valid pointer to a valid VkIndirectCommandsPushConstantTokenEXT structure

- VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter
  If `type` is VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT, the `pVertexBuffer` member of `data` must be a valid pointer to a valid VkIndirectCommandsVertexBufferTokenEXT structure

- VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter
  If `type` is VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT, the `pIndexBuffer` member of `data` must be a valid pointer to a valid VkIndirectCommandsIndexBufferTokenEXT structure

- VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter
  If `type` is VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT, the `pExecutionSet` member of `data` must be a valid pointer to a valid VkIndirectCommandsExecutionSetTokenEXT structure

## See Also

VK_EXT_device_generated_commands, VkIndirectCommandsLayoutCreateInfoEXT, VkIndirectCommandsTokenDataEXT, VkIndirectCommandsTokenTypeEXT, VkStructureType

## 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

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0