| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_conditional_rendering
Description
Name
VK_EXT_conditional_rendering - device extension
VK_EXT_conditional_rendering
- Name String
VK_EXT_conditional_rendering
- Extension Type
- Device extension
- Registered Extension Number
- 82
- Revision
- 2
- Ratification Status
- Ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 or Vulkan Version 1.1
- Contact
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.
New Commands
New Structures
Extending
CommandBufferInheritanceInfo:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:
New Enums
New Bitmasks
New Enum Constants
EXT_CONDITIONAL_RENDERING_SPEC_VERSIONExtending
AccessFlagBits:Extending
BufferUsageFlagBits:Extending
PipelineStageFlagBits:Extending
StructureType:
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 conditionalRenderingEnable is set to
TRUE. Conditional rendering must not
be active in the primary command buffer if conditionalRenderingEnable
is 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.
See Also
No cross-references are available
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- cmdBeginConditionalRenderingEXT :: MonadIO io => CommandBuffer -> ConditionalRenderingBeginInfoEXT -> io ()
- cmdUseConditionalRenderingEXT :: MonadIO io => CommandBuffer -> ConditionalRenderingBeginInfoEXT -> io r -> io r
- cmdEndConditionalRenderingEXT :: MonadIO io => CommandBuffer -> io ()
- data ConditionalRenderingBeginInfoEXT = ConditionalRenderingBeginInfoEXT {}
- data CommandBufferInheritanceConditionalRenderingInfoEXT = CommandBufferInheritanceConditionalRenderingInfoEXT {}
- data PhysicalDeviceConditionalRenderingFeaturesEXT = PhysicalDeviceConditionalRenderingFeaturesEXT {}
- type ConditionalRenderingFlagsEXT = ConditionalRenderingFlagBitsEXT
- newtype ConditionalRenderingFlagBitsEXT where
- type EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2
- pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION :: Integral a => a
- type EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering"
- pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME :: (Eq a, IsString a) => a
Documentation
cmdBeginConditionalRenderingEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ConditionalRenderingBeginInfoEXT |
|
| -> io () |
vkCmdBeginConditionalRenderingEXT - Define the beginning of a conditional rendering block
Valid Usage
- Conditional rendering must not already be active
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pConditionalRenderingBeginmust be a valid pointer to a validConditionalRenderingBeginInfoEXTstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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 | Action State |
Conditional Rendering
vkCmdBeginConditionalRenderingEXT is not affected by conditional rendering
See Also
VK_EXT_conditional_rendering,
CommandBuffer,
ConditionalRenderingBeginInfoEXT
cmdUseConditionalRenderingEXT :: MonadIO io => CommandBuffer -> ConditionalRenderingBeginInfoEXT -> io r -> io r Source #
This function will call the supplied action between calls to
cmdBeginConditionalRenderingEXT and cmdEndConditionalRenderingEXT
Note that cmdEndConditionalRenderingEXT is *not* called if an
exception is thrown by the inner action.
cmdEndConditionalRenderingEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> io () |
vkCmdEndConditionalRenderingEXT - Define the end of a conditional rendering block
Description
Once ended, conditional rendering becomes inactive.
Valid Usage
- Conditional rendering must be active
- If conditional rendering was made active outside of a render pass instance, it must not be ended inside a render pass instance
- If conditional rendering was made active within a subpass it must be ended in the same subpass
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas 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 | Action State |
Conditional Rendering
vkCmdEndConditionalRenderingEXT is not affected by conditional rendering
See Also
data ConditionalRenderingBeginInfoEXT Source #
VkConditionalRenderingBeginInfoEXT - Structure specifying conditional rendering begin information
Description
If the 32-bit value at offset in buffer memory is zero, then the
rendering commands are discarded, otherwise they are executed as normal.
If the value of the predicate in buffer 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
- If
bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
-
buffermust have been created with theBUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXTusage flag set -
offsetmust be less than the size ofbufferby at least 32 bits -
offsetmust be a multiple of 4
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
-
pNextmust beNULL -
buffermust be a validBufferhandle -
flagsmust be a valid combination ofConditionalRenderingFlagBitsEXTvalues
See Also
VK_EXT_conditional_rendering,
Buffer, ConditionalRenderingFlagsEXT,
DeviceSize,
StructureType,
cmdBeginConditionalRenderingEXT
Constructors
| ConditionalRenderingBeginInfoEXT | |
Fields
| |
Instances
data CommandBufferInheritanceConditionalRenderingInfoEXT Source #
VkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure specifying command buffer inheritance information
Description
If this structure is not present, the behavior is as if
conditionalRenderingEnable is FALSE.
Valid Usage
-
If the
inheritedConditionalRendering
feature is not enabled,
conditionalRenderingEnablemust beFALSE
Valid Usage (Implicit)
See Also
Constructors
| CommandBufferInheritanceConditionalRenderingInfoEXT | |
Fields
| |
Instances
data PhysicalDeviceConditionalRenderingFeaturesEXT Source #
VkPhysicalDeviceConditionalRenderingFeaturesEXT - Structure describing if a secondary command buffer can be executed if conditional rendering is active in the primary command buffer
Members
This structure describes the following features:
Description
If the PhysicalDeviceConditionalRenderingFeaturesEXT structure is
included in the pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceConditionalRenderingFeaturesEXT, it must add an
instance of the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceConditionalRenderingFeaturesEXT | |
Fields | |
Instances
newtype ConditionalRenderingFlagBitsEXT Source #
VkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional rendering
Description
CONDITIONAL_RENDERING_INVERTED_BIT_EXTspecifies the condition used to determine whether to discard rendering commands or not. That is, if the 32-bit predicate read frombuffermemory atoffsetis zero, the rendering commands are not discarded, and if non zero, then they are discarded.
See Also
Constructors
| ConditionalRenderingFlagBitsEXT Flags |
Bundled Patterns
| pattern CONDITIONAL_RENDERING_INVERTED_BIT_EXT :: ConditionalRenderingFlagBitsEXT |
Instances
pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION :: Integral a => a Source #
type EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" Source #
pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME :: (Eq a, IsString a) => a Source #