# vkCmdBindPipelineShaderGroupNV(3) Manual Page

## Name

vkCmdBindPipelineShaderGroupNV - Bind a pipeline object

## C Specification

For pipelines that were created with the support of multiple shader groups (see Graphics Pipeline Shader Groups), the regular `vkCmdBindPipeline` command will bind Shader Group `0`. To explicitly bind a shader group use:

    void vkCmdBindPipelineShaderGroupNV(
        VkCommandBuffer                             commandBuffer,
        VkPipelineBindPoint                         pipelineBindPoint,
        VkPipeline                                  pipeline,
        uint32_t                                    groupIndex);

## Parameters

- `commandBuffer` is the command buffer that the pipeline will be bound to.

- `pipelineBindPoint` is a VkPipelineBindPoint value specifying to which bind point the pipeline is bound.

- `pipeline` is the pipeline to be bound.

- `groupIndex` is the shader group to be bound.

## Description

Valid Usage

- `groupIndex` must be `0` or less than the effective VkGraphicsPipelineShaderGroupsCreateInfoNV::`groupCount` including the referenced pipelines.

- The `pipelineBindPoint` must be `VK_PIPELINE_BIND_POINT_GRAPHICS`

- The same restrictions as vkCmdBindPipeline apply as if the bound pipeline was created only with the Shader Group from the `groupIndex` information.

- The `VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV`→`deviceGeneratedCommands` feature must be enabled

Valid Usage (Implicit)

- `commandBuffer` must be a valid VkCommandBuffer handle

- `pipelineBindPoint` must be a valid VkPipelineBindPoint value

- `pipeline` must be a valid VkPipeline handle

- `commandBuffer` must be in the recording state

- The `VkCommandPool` that `commandBuffer` was allocated from must support graphics, or compute operations

- Both of `commandBuffer`, and `pipeline` must have been created, allocated, or retrieved from the same VkDevice

Host Synchronization

- Host access to `commandBuffer` must be externally synchronized

- Host access to the `VkCommandPool` that `commandBuffer` was allocated from must be externally synchronized

Command Properties

Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type
--- | --- | --- | ---
Primary Secondary | Both | Graphics Compute |

## See Also

VkCommandBuffer, VkPipeline, VkPipelineBindPoint

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