VkMemoryMarkerInfoAMD(3)

# VkMemoryMarkerInfoAMD(3) Manual Page

## Name

VkMemoryMarkerInfoAMD - Memory marker write info

## C Specification

`VkMemoryMarkerInfoAMD` is defined as:

    // Provided by VK_KHR_device_address_commands with VK_AMD_buffer_marker
    typedef struct VkMemoryMarkerInfoAMD {
        VkStructureType             sType;
        const void*                 pNext;
        VkPipelineStageFlags2KHR    stage;
        VkDeviceAddressRangeKHR     dstRange;
        VkAddressCommandFlagsKHR    dstFlags;
        uint32_t                    marker;
    } VkMemoryMarkerInfoAMD;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `stage` specifies the pipeline stage whose completion triggers the marker write.

- `dstRange` is the VkDeviceAddressRangeKHR where the marker will be written.

- `dstFlags` is a VkAddressCommandFlagsKHR value defining the copy flags for the destination address range.

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

## Description

Valid Usage

- VUID-VkMemoryMarkerInfoAMD-dstRange-13097
  If the range specified by `dstRange` is not bound completely to memory when accessed, `dstFlags` must not include VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13098
  If the buffer from which the range specified by `dstRange` was created with VK_BUFFER_CREATE_PROTECTED_BIT, and `protectedNoFault` is not supported, `dstFlags` must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13099
  If the buffer from which the range specified by `dstRange` was created without VK_BUFFER_CREATE_PROTECTED_BIT, and `protectedNoFault` is not supported, `dstFlags` must not include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstFlags-13100
  `dstFlags` must not include both VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13122
  If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing `dstRange`, was created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, `dstFlags` must include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13123
  If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing `dstRange`, was created without VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, `dstFlags` must not include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstFlags-13101
  `dstFlags` must not include both VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13124
  If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing `dstRange`, was created with VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, `dstFlags` must include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-dstRange-13125
  If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing `dstRange`, was created without VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, `dstFlags` must not include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-stage-03929
  If the `geometryShader` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT

- VUID-VkMemoryMarkerInfoAMD-stage-03930
  If the `tessellationShader` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT

- VUID-VkMemoryMarkerInfoAMD-stage-03931
  If the `conditionalRendering` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-03932
  If the `fragmentDensityMap` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-03933
  If the `transformFeedback` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-03934
  If the `meshShader` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-03935
  If the `taskShader` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-07316
  If neither of the `shadingRateImage` or the `attachmentFragmentShadingRate` features are enabled, `stage` must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-stage-04957
  If the `subpassShading` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI

- VUID-VkMemoryMarkerInfoAMD-stage-04995
  If the `invocationMask` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI

- VUID-VkMemoryMarkerInfoAMD-stage-07946
  If neither the VK_NV_ray_tracing extension or the `rayTracingPipeline` feature are enabled, `stage` must not contain VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-stage-10751
  If the `accelerationStructure` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-stage-10752
  If the `rayTracingMaintenance1` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR

- VUID-VkMemoryMarkerInfoAMD-stage-11541
  If the `VkPhysicalDeviceOpacityMicromapFeaturesEXT`::`micromap` feature is not enabled, `stage` must not contain VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT

- VUID-VkMemoryMarkerInfoAMD-stage-13038
  `stage` must include only a single pipeline stage

- VUID-VkMemoryMarkerInfoAMD-dstRange-13039
  The buffer from which `dstRange` was queried must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag

- VUID-VkMemoryMarkerInfoAMD-dstRange-13040
  `dstRange.address` must be a multiple of 4

- VUID-VkMemoryMarkerInfoAMD-dstRange-13041
  `dstRange.size` must be greater than or equal to 4

Valid Usage (Implicit)

- VUID-VkMemoryMarkerInfoAMD-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD

- VUID-VkMemoryMarkerInfoAMD-pNext-pNext
  `pNext` must be `NULL`

- VUID-VkMemoryMarkerInfoAMD-stage-parameter
  `stage` must be a valid combination of VkPipelineStageFlagBits2KHR values

- VUID-VkMemoryMarkerInfoAMD-stage-requiredbitmask
  `stage` must not be `0`

- VUID-VkMemoryMarkerInfoAMD-dstFlags-parameter
  `dstFlags` must be a valid combination of VkAddressCommandFlagBitsKHR values

## See Also

VK_AMD_buffer_marker, VK_KHR_device_address_commands, VkAddressCommandFlagsKHR, VkDeviceAddressRangeKHR, VkPipelineStageFlags2, VkStructureType, vkCmdWriteMarkerToMemoryAMD

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