vkCmdBeginCustomResolveEXT(3)

Name

vkCmdBeginCustomResolveEXT - Begins a shader resolve operation

C Specification

To begin resolving attachments using render pass draws, call:

// Provided by VK_EXT_custom_resolve with VK_KHR_dynamic_rendering or VK_VERSION_1_3
void vkCmdBeginCustomResolveEXT(
    VkCommandBuffer                             commandBuffer,
    const VkBeginCustomResolveInfoEXT*          pBeginCustomResolveInfo);

Parameters

  • commandBuffer is the command buffer in which to record the command.

  • pBeginCustomResolveInfo is an optional struct with which to extend functionality.

Description

Following this call, any resolveImageView with resolveMode set to VK_RESOLVE_MODE_CUSTOM_BIT_EXT will be written by outputs which would otherwise have written to the imageView image until the end of the current render pass instance.

Following this call, the fragment area may be reduced to (1,1) if a fragment density map is attached. If this occurs, reads of input attachments mapped to a color, depth, or stencil attachment return the value for the original larger fragment containing the smaller fragment. Reads of input attachments not mapped to a color, depth, or stencil attachment use the new fragment area.

Shader resolve operations allow for custom resolve operations, but overdrawing pixels may have a performance and/or power cost. Furthermore, since the content of any depth/stencil resolve attachment as well as any color resolve attachment is undefined at the beginning of a resolve operation, any depth testing, stencil testing, or blending operation which sources these undefined values also has undefined result value.

Valid Usage
  • VUID-vkCmdBeginCustomResolveEXT-commandBuffer-11517
    The current render pass instance must have been started or resumed by vkCmdBeginRendering in this commandBuffer

  • VUID-vkCmdBeginCustomResolveEXT-None-11518
    vkCmdBeginCustomResolveEXT must not have already been recorded in the current render pass instance

  • VUID-vkCmdBeginCustomResolveEXT-None-11519
    The current render pass instance must have specified VK_RENDERING_CUSTOM_RESOLVE_BIT_EXT

  • VUID-vkCmdBeginCustomResolveEXT-None-11520
    The current render pass instance must not have specified VK_RENDERING_SUSPENDING_BIT

Valid Usage (Implicit)
  • VUID-vkCmdBeginCustomResolveEXT-commandBuffer-parameter
    commandBuffer must be a valid VkCommandBuffer handle

  • VUID-vkCmdBeginCustomResolveEXT-pBeginCustomResolveInfo-parameter
    If pBeginCustomResolveInfo is not NULL, pBeginCustomResolveInfo must be a valid pointer to a valid VkBeginCustomResolveInfoEXT structure

  • VUID-vkCmdBeginCustomResolveEXT-commandBuffer-recording
    commandBuffer must be in the recording state

  • VUID-vkCmdBeginCustomResolveEXT-commandBuffer-cmdpool
    The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_GRAPHICS_BIT operations

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

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

  • VUID-vkCmdBeginCustomResolveEXT-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

Conditional Rendering

vkCmdBeginCustomResolveEXT is affected by conditional rendering

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.