Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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_VERSION
Extending
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 #
:: 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
firstExclusiveScissor
andexclusiveScissorCount
must be between1
andPhysicalDeviceLimits
::maxViewports
, inclusive - If the
multiViewport
feature is not enabled,
firstExclusiveScissor
must be0
- If the
multiViewport
feature is not enabled,
exclusiveScissorCount
must be1
- The
x
andy
members ofoffset
in each member ofpExclusiveScissors
must be greater than or equal to0
- Evaluation of
(
offset.x
+extent.width
) for each member ofpExclusiveScissors
must not cause a signed integer addition overflow - Evaluation of
(
offset.y
+extent.height
) for each member ofpExclusiveScissors
must not cause a signed integer addition overflow
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pExclusiveScissors
must be a valid pointer to an array ofexclusiveScissorCount
Rect2D
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
exclusiveScissorCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 #
:: 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
specVersion
2
of theVK_NV_scissor_exclusive
extension
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pExclusiveScissorEnables
must be a valid pointer to an array ofexclusiveScissorCount
Bool32
values -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
exclusiveScissorCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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
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,
exclusiveScissorCount
must be0
or1
-
exclusiveScissorCount
must be less than or equal toPhysicalDeviceLimits
::maxViewports
-
exclusiveScissorCount
must be0
or greater than or equal to theviewportCount
member ofPipelineViewportStateCreateInfo
Valid Usage (Implicit)
See Also
PipelineViewportExclusiveScissorStateCreateInfoNV | |
|
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 #