vkCmdEndRendering2KHR(3)

# vkCmdEndRendering2KHR(3) Manual Page

## Name

vkCmdEndRendering2KHR - End a dynamic render pass instance

Loading… please wait.

## C Specification

To end a render pass instance, call:

    // Provided by VK_KHR_maintenance10
    void vkCmdEndRendering2KHR(
        VkCommandBuffer                             commandBuffer,
        const VkRenderingEndInfoKHR*                pRenderingEndInfo);

    // Provided by VK_EXT_fragment_density_map_offset
    // Equivalent to vkCmdEndRendering2KHR
    void vkCmdEndRendering2EXT(
        VkCommandBuffer                             commandBuffer,
        const VkRenderingEndInfoKHR*                pRenderingEndInfo);

## Parameters

- `commandBuffer` is the command buffer in which to record the command.

- `pRenderingEndInfo` is `NULL` or a pointer to a VkRenderingEndInfoKHR structure containing information about how the render pass will be ended.

## Description

If the value of `pRenderingInfo->flags` used to begin this render pass instance included VK_RENDERING_SUSPENDING_BIT, then this render pass is suspended and will be resumed later in submission order.

Note | There is no implicit ordering between separate render passes, even in the same command buffer, and even when the attachments match. Some applications rely on the continuation of rasterization order between multiple render passes with attachments defined in the same way, in order to perform non-rendering operations (such as copies or compute operations) between draw calls, but this has never been required by the specification. There is also no explicit barrier currently in the API that provides the guarantee that applications rely on without additional performance penalties. New applications should avoid relying on this ordering until an appropriate barrier is added to the API. Implementations where applications are performing this splitting are encouraged to continue supporting this guarantee until a suitable barrier is added to the API. Existing applications relying on this ordering should expect that it will continue working on platforms where it currently does. Once a new extension adds support for a new barrier, developers are encouraged to adapt their applications to use this when available.

Valid Usage

- VUID-vkCmdEndRendering2KHR-None-10610
  The current render pass instance must have been begun with vkCmdBeginRendering

- VUID-vkCmdEndRendering2KHR-commandBuffer-10611
  The current render pass instance must have been begun in `commandBuffer`

- VUID-vkCmdEndRendering2KHR-None-10612
  This command must not be recorded when transform feedback is active

- VUID-vkCmdEndRendering2KHR-None-10613
  If `vkCmdBeginQuery`* was called within the render pass, the corresponding `vkCmdEndQuery`* must have been called subsequently within the same subpass

Valid Usage (Implicit)

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

- VUID-vkCmdEndRendering2KHR-pRenderingEndInfo-parameter
  If `pRenderingEndInfo` is not `NULL`, `pRenderingEndInfo` must be a valid pointer to a valid VkRenderingEndInfoKHR structure

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

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

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

- VUID-vkCmdEndRendering2KHR-suspended
  This command must not be called between suspended render pass instances

- VUID-vkCmdEndRendering2KHR-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 | Action State

Conditional Rendering

vkCmdEndRendering2KHR is not affected by conditional rendering

## See Also

VK_EXT_fragment_density_map_offset, VK_KHR_maintenance10, VkCommandBuffer, VkRenderingEndInfoKHR

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