| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_scissor_exclusive
Description
Name
VK_NV_scissor_exclusive - device extension
VK_NV_scissor_exclusive
- Name String
VK_NV_scissor_exclusive
- Extension Type
- Device extension
- Registered Extension Number
- 206
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2
- Contact
Other Extension Metadata
- Last Modified Date
- 2023-01-18
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- None
- Contributors
- Pat Brown, NVIDIA
- Jeff Bolz, NVIDIA
- Piers Daniell, NVIDIA
- Daniel Koch, NVIDIA
Description
This extension adds support for an exclusive scissor test to Vulkan. The exclusive scissor test behaves like the scissor test, except that the exclusive scissor test fails for pixels inside the corresponding rectangle and passes for pixels outside the rectangle. If the same rectangle is used for both the scissor and exclusive scissor tests, the exclusive scissor test will pass if and only if the scissor test fails.
Version 2 of this extension introduces
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
and cmdSetExclusiveScissorEnableNV. Applications that use this dynamic
state must ensure the implementation advertises at least specVersion
2 of this extension.
New Commands
New Structures
New Enum Constants
NV_SCISSOR_EXCLUSIVE_SPEC_VERSIONExtending
DynamicState:Extending
StructureType:
Issues
1) For the scissor test, the viewport state must be created with a matching number of scissor and viewport rectangles. Should we have the same requirement for exclusive scissors?
RESOLVED: For exclusive scissors, we relax this requirement and allow an exclusive scissor rectangle count that is either zero or equal to the number of viewport rectangles. If you pass in an exclusive scissor count of zero, the exclusive scissor test is treated as disabled.
Version History
Revision 2, 2023-01-18 (Piers Daniell)
- Add dynamic state for explicit exclusive scissor enables
Revision 1, 2018-07-31 (Pat Brown)
- Internal revisions
See Also
PhysicalDeviceExclusiveScissorFeaturesNV,
PipelineViewportExclusiveScissorStateCreateInfoNV,
cmdSetExclusiveScissorEnableNV, cmdSetExclusiveScissorNV
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
- cmdSetExclusiveScissorNV :: forall io. MonadIO io => CommandBuffer -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissors" ::: Vector Rect2D) -> io ()
- cmdSetExclusiveScissorEnableNV :: forall io. MonadIO io => CommandBuffer -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissorEnables" ::: Vector Bool) -> io ()
- data PhysicalDeviceExclusiveScissorFeaturesNV = PhysicalDeviceExclusiveScissorFeaturesNV {}
- data PipelineViewportExclusiveScissorStateCreateInfoNV = PipelineViewportExclusiveScissorStateCreateInfoNV {}
- type NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2
- pattern NV_SCISSOR_EXCLUSIVE_SPEC_VERSION :: forall a. Integral a => a
- type NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive"
- pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
cmdSetExclusiveScissorNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("firstExclusiveScissor" ::: Word32) |
|
| -> ("exclusiveScissors" ::: Vector Rect2D) |
|
| -> io () |
vkCmdSetExclusiveScissorNV - Set exclusive scissor rectangles dynamically for a command buffer
Description
The scissor rectangles taken from element i of pExclusiveScissors
replace the current state for the scissor index firstExclusiveScissor
+ i, for i in [0, exclusiveScissorCount).
This command sets the exclusive scissor rectangles for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportExclusiveScissorStateCreateInfoNV::pExclusiveScissors
values used to create the currently active pipeline.
Valid Usage
- The exclusiveScissor feature must be enabled
- The
sum of
firstExclusiveScissorandexclusiveScissorCountmust be between1andPhysicalDeviceLimits::maxViewports, inclusive - If the
multiViewport
feature is not enabled,
firstExclusiveScissormust be0 - If the
multiViewport
feature is not enabled,
exclusiveScissorCountmust be1 - The
xandymembers ofoffsetin each member ofpExclusiveScissorsmust be greater than or equal to0 - Evaluation of
(
offset.x+extent.width) for each member ofpExclusiveScissorsmust not cause a signed integer addition overflow - Evaluation of
(
offset.y+extent.height) for each member ofpExclusiveScissorsmust not cause a signed integer addition overflow
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pExclusiveScissorsmust be a valid pointer to an array ofexclusiveScissorCountRect2Dstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
exclusiveScissorCountmust be greater than0
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 | Graphics | State |
See Also
cmdSetExclusiveScissorEnableNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("firstExclusiveScissor" ::: Word32) |
|
| -> ("exclusiveScissorEnables" ::: Vector Bool) |
|
| -> io () |
vkCmdSetExclusiveScissorEnableNV - Dynamically enable each exclusive scissor for a command buffer
Description
The exclusive scissor enables taken from element i of
pExclusiveScissorEnables replace the current state for the scissor
index firstExclusiveScissor + i, for i in [0,
exclusiveScissorCount).
This command sets the exclusive scissor enable for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is implied by the
PipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
value used to create the currently active pipeline, where all
exclusiveScissorCount exclusive scissors are implicitly enabled and
the remainder up to
PhysicalDeviceLimits::maxViewports
are implicitly disabled.
Valid Usage
- The
exclusiveScissor
feature must be enabled, and the implementation must support at
least
specVersion2of theVK_NV_scissor_exclusiveextension
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pExclusiveScissorEnablesmust be a valid pointer to an array ofexclusiveScissorCountBool32values -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
exclusiveScissorCountmust be greater than0
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 | Graphics | State |
See Also
data PhysicalDeviceExclusiveScissorFeaturesNV Source #
VkPhysicalDeviceExclusiveScissorFeaturesNV - Structure describing exclusive scissor features that can be supported by an implementation
Members
This structure describes the following feature:
Description
See Exclusive Scissor Test for more information.
If the PhysicalDeviceExclusiveScissorFeaturesNV 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. PhysicalDeviceExclusiveScissorFeaturesNV can also be used
in the pNext chain of DeviceCreateInfo to
selectively enable these features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceExclusiveScissorFeaturesNV | |
Fields | |
Instances
data PipelineViewportExclusiveScissorStateCreateInfoNV Source #
VkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure specifying parameters controlling exclusive scissor testing
Description
If the
DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
dynamic state is enabled for a pipeline, the pExclusiveScissors member
is ignored.
When this structure is included in the pNext chain of
GraphicsPipelineCreateInfo, it defines
parameters of the exclusive scissor test. If this structure is not
included in the pNext chain, it is equivalent to specifying this
structure with a exclusiveScissorCount of 0.
Valid Usage
-
If the
multiViewport
feature is not enabled,
exclusiveScissorCountmust be0or1
-
exclusiveScissorCountmust be less than or equal toPhysicalDeviceLimits::maxViewports -
exclusiveScissorCountmust be0or greater than or equal to theviewportCountmember ofPipelineViewportStateCreateInfo
Valid Usage (Implicit)
See Also
Constructors
| PipelineViewportExclusiveScissorStateCreateInfoNV | |
Fields
| |
Instances
type NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 2 Source #
pattern NV_SCISSOR_EXCLUSIVE_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" Source #
pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #