VkCmdProcessCommandsInfoNVX(3)

# VkCmdProcessCommandsInfoNVX(3) Manual Page

## Name

VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the generation of commands

## C Specification

    typedef struct VkCmdProcessCommandsInfoNVX {
        VkStructureType                      sType;
        const void*                          pNext;
        VkObjectTableNVX                     objectTable;
        VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
        uint32_t                             indirectCommandsTokenCount;
        const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
        uint32_t                             maxSequencesCount;
        VkCommandBuffer                      targetCommandBuffer;
        VkBuffer                             sequencesCountBuffer;
        VkDeviceSize                         sequencesCountOffset;
        VkBuffer                             sequencesIndexBuffer;
        VkDeviceSize                         sequencesIndexOffset;
    } VkCmdProcessCommandsInfoNVX;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `objectTable` is the VkObjectTableNVX to be used for the generation process. Only registered objects at the time vkCmdReserveSpaceForCommandsNVX is called, will be taken into account for the reservation.

- `indirectCommandsLayout` is the VkIndirectCommandsLayoutNVX that provides the command sequence to generate.

- `indirectCommandsTokenCount` defines the number of input tokens used.

- `pIndirectCommandsTokens` provides an array of VkIndirectCommandsTokenNVX that reference the input data for each token command.

- `maxSequencesCount` is the maximum number of sequences for which command buffer space will be reserved. If `sequencesCountBuffer` is VK_NULL_HANDLE, this is also the actual number of sequences generated.

- `targetCommandBuffer` can be the secondary VkCommandBuffer in which the commands should be recorded. If `targetCommandBuffer` is `NULL` an implicit reservation as well as execution takes place on the processing `VkCommandBuffer`.

- `sequencesCountBuffer` can be VkBuffer from which the actual amount of sequences is sourced from as `uint32_t` value.

- `sequencesCountOffset` is the byte offset into `sequencesCountBuffer` where the count value is stored.

- `sequencesIndexBuffer` must be set if `indirectCommandsLayout`’s `VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX` is set and provides the used sequence indices as `uint32_t` array. Otherwise it must be VK_NULL_HANDLE.

- `sequencesIndexOffset` is the byte offset into `sequencesIndexBuffer` where the index values start.

## Description

Valid Usage

- The provided `objectTable` must include all objects referenced by the generation process

- `indirectCommandsTokenCount` must match the `indirectCommandsLayout`’s `tokenCount`

- The `tokenType` member of each entry in the `pIndirectCommandsTokens` array must match the values used at creation time of `indirectCommandsLayout`

- If `targetCommandBuffer` is provided, it must have reserved command space

- If `targetCommandBuffer` is provided, the `objectTable` must match the reservation’s `objectTable` and must have had all referenced objects registered at reservation time

- If `targetCommandBuffer` is provided, the `indirectCommandsLayout` must match the reservation’s `indirectCommandsLayout`

- If `targetCommandBuffer` is provided, the `maxSequencesCount` must not exceed the reservation’s `maxSequencesCount`

- If `sequencesCountBuffer` is used, its usage flag must have the `VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT` bit set

- If `sequencesCountBuffer` is used, `sequencesCountOffset` must be aligned to `VkDeviceGeneratedCommandsLimitsNVX`::`minSequenceCountBufferOffsetAlignment`

- If `sequencesIndexBuffer` is used, its usage flag must have the `VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT` bit set

- If `sequencesIndexBuffer` is used, `sequencesIndexOffset` must be aligned to `VkDeviceGeneratedCommandsLimitsNVX`::`minSequenceIndexBufferOffsetAlignment`

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX`

- `pNext` must be `NULL`

- `objectTable` must be a valid `VkObjectTableNVX` handle

- `indirectCommandsLayout` must be a valid `VkIndirectCommandsLayoutNVX` handle

- `pIndirectCommandsTokens` must be a valid pointer to an array of `indirectCommandsTokenCount` valid `VkIndirectCommandsTokenNVX` structures

- If `targetCommandBuffer` is not `NULL`, `targetCommandBuffer` must be a valid `VkCommandBuffer` handle

- If `sequencesCountBuffer` is not VK_NULL_HANDLE, `sequencesCountBuffer` must be a valid `VkBuffer` handle

- If `sequencesIndexBuffer` is not VK_NULL_HANDLE, `sequencesIndexBuffer` must be a valid `VkBuffer` handle

- `indirectCommandsTokenCount` must be greater than `0`

- Each of `indirectCommandsLayout`, `objectTable`, `sequencesCountBuffer`, `sequencesIndexBuffer`, and `targetCommandBuffer` that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same `VkDevice`

Host Synchronization

- Host access to `objectTable` must be externally synchronized

- Host access to `targetCommandBuffer` must be externally synchronized

## See Also

VkBuffer, VkCommandBuffer, `VkDeviceSize`, VkIndirectCommandsLayoutNVX, VkIndirectCommandsTokenNVX, VkObjectTableNVX, VkStructureType, vkCmdProcessCommandsNVX

## 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 (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.