vkCmdSetRenderingAttachmentLocations(3)

# vkCmdSetRenderingAttachmentLocations(3) Manual Page

## Name

vkCmdSetRenderingAttachmentLocations - Set color attachment location mappings for a command buffer

## C Specification

To set the fragment output location mappings during rendering, call:

    // Provided by VK_VERSION_1_4
    void vkCmdSetRenderingAttachmentLocations(
        VkCommandBuffer                             commandBuffer,
        const VkRenderingAttachmentLocationInfo*    pLocationInfo);

    // Provided by VK_KHR_dynamic_rendering_local_read
    // Equivalent to vkCmdSetRenderingAttachmentLocations
    void vkCmdSetRenderingAttachmentLocationsKHR(
        VkCommandBuffer                             commandBuffer,
        const VkRenderingAttachmentLocationInfo*    pLocationInfo);

## Parameters

- `commandBuffer` is the command buffer into which the command will be recorded.

- `pLocationInfo` is a VkRenderingAttachmentLocationInfo structure indicating the new mappings.

## Description

This command sets the attachment location mappings for subsequent drawing commands, and must match the mappings provided to the bound pipeline, if one is bound, which can be set by chaining VkRenderingAttachmentLocationInfo to VkGraphicsPipelineCreateInfo.

Until this command is called, mappings in the command buffer state are treated as each color attachment specified in vkCmdBeginRendering having a location equal to its index in VkRenderingInfo::`pColorAttachments`. This state is reset whenever vkCmdBeginRendering is called.

Valid Usage

- VUID-vkCmdSetRenderingAttachmentLocations-dynamicRenderingLocalRead-09509
  `dynamicRenderingLocalRead` must be enabled

- VUID-vkCmdSetRenderingAttachmentLocations-pLocationInfo-09510
  `pLocationInfo->colorAttachmentCount` must be equal to the value of VkRenderingInfo::`colorAttachmentCount` used to begin the current render pass instance

- VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-09511
  The current render pass instance must have been started or resumed by vkCmdBeginRendering in this `commandBuffer`

Valid Usage (Implicit)

- VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-parameter
  `commandBuffer` must be a valid VkCommandBuffer handle

- VUID-vkCmdSetRenderingAttachmentLocations-pLocationInfo-parameter
  `pLocationInfo` must be a valid pointer to a valid VkRenderingAttachmentLocationInfo structure

- VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-recording
  `commandBuffer` must be in the recording state

- VUID-vkCmdSetRenderingAttachmentLocations-commandBuffer-cmdpool
  The `VkCommandPool` that `commandBuffer` was allocated from must support VK_QUEUE_GRAPHICS_BIT operations

- VUID-vkCmdSetRenderingAttachmentLocations-renderpass
  This command must only be called inside of a render pass instance

- VUID-vkCmdSetRenderingAttachmentLocations-videocoding
  This command must only be called outside of a video coding scope

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 | Video Coding Scope | Supported Queue Types | Command Type
--- | --- | --- | --- | ---
Primary Secondary | Inside | Outside | VK_QUEUE_GRAPHICS_BIT | State

Conditional Rendering

vkCmdSetRenderingAttachmentLocations is not affected by conditional rendering

## See Also

VK_KHR_dynamic_rendering_local_read, VK_VERSION_1_4, VkCommandBuffer, VkRenderingAttachmentLocationInfo

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