VkConditionalRenderingBeginInfo2EXT(3)

# VkConditionalRenderingBeginInfo2EXT(3) Manual Page

## Name

VkConditionalRenderingBeginInfo2EXT - Structure specifying conditional rendering begin information

## C Specification

The `VkConditionalRenderingBeginInfo2EXT` structure is defined as:

    // Provided by VK_KHR_device_address_commands with VK_EXT_conditional_rendering
    typedef struct VkConditionalRenderingBeginInfo2EXT {
        VkStructureType                   sType;
        const void*                       pNext;
        VkDeviceAddressRangeKHR           addressRange;
        VkAddressCommandFlagsKHR          addressFlags;
        VkConditionalRenderingFlagsEXT    flags;
    } VkConditionalRenderingBeginInfo2EXT;

## Members

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

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

- `addressRange` is the VkDeviceAddressRangeKHR containing the predicate for conditional rendering.

- `addressFlags` is a VkAddressCommandFlagsKHR value defining the flags for the address range.

- `flags` is a bitmask of VkConditionalRenderingFlagsEXT specifying the behavior of conditional rendering.

## Description

If the 32-bit value at `addressRange.address` is zero, then the rendering commands are discarded, otherwise they are executed as normal. If the value of the predicate in memory changes while conditional rendering is active, the rendering commands may be discarded in an implementation-dependent way. Some implementations may latch the value of the predicate upon beginning conditional rendering while others may read it before every rendering command.

Valid Usage

- VUID-VkConditionalRenderingBeginInfo2EXT-addressRange-13097
  If the range specified by `addressRange` is not bound completely to memory when accessed, `addressFlags` must not include VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR

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

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

- VUID-VkConditionalRenderingBeginInfo2EXT-addressFlags-13100
  `addressFlags` must not include both VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR

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

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

- VUID-VkConditionalRenderingBeginInfo2EXT-addressFlags-13101
  `addressFlags` 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-VkConditionalRenderingBeginInfo2EXT-addressRange-13124
  If any buffer, which is bound to a range of VkDeviceMemory that overlaps the range backing `addressRange`, was created with VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, `addressFlags` must include VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR

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

- VUID-VkConditionalRenderingBeginInfo2EXT-addressRange-13064
  The VkBuffer that `addressRange` was queried from must have been created with VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT

- VUID-VkConditionalRenderingBeginInfo2EXT-addressRange-13065
  `addressRange.address` must be a multiple of 4

- VUID-VkConditionalRenderingBeginInfo2EXT-addressRange-13066
  `addressRange.size` must be greater than or equal to 4

Valid Usage (Implicit)

- VUID-VkConditionalRenderingBeginInfo2EXT-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT

- VUID-VkConditionalRenderingBeginInfo2EXT-pNext-pNext
  `pNext` must be `NULL`

- VUID-VkConditionalRenderingBeginInfo2EXT-addressFlags-parameter
  `addressFlags` must be a valid combination of VkAddressCommandFlagBitsKHR values

- VUID-VkConditionalRenderingBeginInfo2EXT-flags-parameter
  `flags` must be a valid combination of VkConditionalRenderingFlagBitsEXT values

## See Also

VK_EXT_conditional_rendering, VK_KHR_device_address_commands, VkAddressCommandFlagsKHR, VkConditionalRenderingFlagsEXT, VkDeviceAddressRangeKHR, VkStructureType, vkCmdBeginConditionalRendering2EXT

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