Structures

VkConditionalRenderingBeginInfo2EXT

Structure specifying conditional rendering begin information

The VkConditionalRenderingBeginInfo2EXT structure is defined as:

typedef struct VkConditionalRenderingBeginInfo2EXT {
    VkStructureType sType;
    const void* pNext;
    VkDeviceAddressRangeKHR addressRange;
    VkAddressCommandFlagsKHR addressFlags;
    VkConditionalRenderingFlagsEXT flags;
} VkConditionalRenderingBeginInfo2EXT;

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)