// Copyright 2018-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_conditional_rendering.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2018-05-21
*IP Status*::
    No known IP claims.
*Contributors*::
  - Vikram Kushwaha, NVIDIA
  - Daniel Rakos, AMD
  - Jesse Hall, Google
  - Jeff Bolz, NVIDIA
  - Piers Daniell, NVIDIA
  - Stuart Smith, Imagination Technologies

=== Description

This extension allows the execution of one or more rendering commands to be
conditional on a value in buffer memory.
This may help an application reduce the latency by conditionally discarding
rendering commands without application intervention.
The conditional rendering commands are limited to draws, compute dispatches
and clearing attachments within a conditional rendering block.

include::{generated}/interfaces/VK_EXT_conditional_rendering.txt[]

=== Issues

1) Should conditional rendering affect copy and blit commands?

*RESOLVED*: Conditional rendering should not affect copies and blits.

2) Should secondary command buffers be allowed to execute while conditional
rendering is active in the primary command buffer?

*RESOLVED*: The rendering commands in secondary command buffer will be
affected by an active conditional rendering in primary command buffer if the
pname:conditionalRenderingEnable is set to ename:VK_TRUE.
Conditional rendering must: not be active in the primary command buffer if
pname:conditionalRenderingEnable is ename:VK_FALSE.

=== Examples

None.

=== Version History

  * Revision 1, 2018-04-19 (Vikram Kushwaha)
    - First Version

  * Revision 2, 2018-05-21 (Vikram Kushwaha)
    - Add new pipeline stage, access flags and limit conditional rendering
      to a subpass or entire render pass.
