C Specification

To write a 32-bit marker value into a buffer as a pipelined operation, call:

// Provided by VK_AMD_buffer_marker with VK_VERSION_1_3 or VK_KHR_synchronization2
void vkCmdWriteBufferMarker2AMD(
    VkCommandBuffer                             commandBuffer,
    VkPipelineStageFlags2                       stage,
    VkBuffer                                    dstBuffer,
    VkDeviceSize                                dstOffset,
    uint32_t                                    marker);

Parameters

  • commandBuffer is the command buffer into which the command will be recorded.

  • stage specifies the pipeline stage whose completion triggers the marker write.

  • dstBuffer is the buffer where the marker will be written.

  • dstOffset is the byte offset into the buffer where the marker will be written.

  • marker is the 32-bit value of the marker.

Description

When vkCmdWriteBufferMarker2AMD is submitted to a queue, it defines an execution dependency between prior operations and writing the marker value, as well as a memory dependency from earlier buffer marker write commands.

The first synchronization scope includes operations performed by operations that occur earlier in submission order in the pipeline stage identified by pipelineStage. It additionally includes other buffer marker write commands that occur earlier in submission order that specified either the same pipelineStage or a stage that is logically earlier.

The second synchronization scope includes only the buffer marker write.

The first access scope includes only accesses performed by other buffer marker write commands.

The second access scope is empty.

The access scope for buffer marker writes falls under the VK_ACCESS_TRANSFER_WRITE_BIT flag, and is performed by either pipelineStage or VK_PIPELINE_STAGE_TRANSFER_BIT. Synchronization commands should specify this access flag and both pipeline stages when defining dependencies with this command.

Note

Similar to vkCmdWriteTimestamp2, if an implementation is unable to write a marker at any specific pipeline stage, it may instead do so at any logically later stage.

Note

Implementations may only support a limited number of pipelined marker write operations in flight at a given time. Thus an excessive number of marker write operations may degrade command execution performance.

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

  • VUID-vkCmdWriteBufferMarker2AMD-stage-parameter
    stage must be a valid combination of VkPipelineStageFlagBits2 values

  • VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter
    dstBuffer must be a valid VkBuffer handle

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

  • VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool
    The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT, VK_QUEUE_GRAPHICS_BIT, or VK_QUEUE_TRANSFER_BIT operations

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

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

  • VUID-vkCmdWriteBufferMarker2AMD-commonparent
    Both of commandBuffer, and dstBuffer 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 Video Coding Scope Supported Queue Types Command Type

Primary
Secondary

Both

Outside

VK_QUEUE_COMPUTE_BIT
VK_QUEUE_GRAPHICS_BIT
VK_QUEUE_TRANSFER_BIT

Action

Conditional Rendering

vkCmdWriteBufferMarker2AMD is not affected by conditional rendering

See Also

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 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0