vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

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

Documentation

cmdSetExclusiveScissorNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstExclusiveScissor" ::: Word32)

firstExclusiveScissor is the index of the first exclusive scissor rectangle whose state is updated by the command.

-> ("exclusiveScissors" ::: Vector Rect2D)

pExclusiveScissors is a pointer to an array of Rect2D structures defining exclusive scissor rectangles.

-> 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 sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and PhysicalDeviceLimits::maxViewports, inclusive
  • If the multiViewport feature is not enabled, firstExclusiveScissor must be 0
  • If the multiViewport feature is not enabled, exclusiveScissorCount must be 1
  • The x and y members of offset in each member of pExclusiveScissors must be greater than or equal to 0
  • Evaluation of (offset.x + extent.width) for each member of pExclusiveScissors must not cause a signed integer addition overflow
  • Evaluation of (offset.y + extent.height) for each member of pExclusiveScissors must not cause a signed integer addition overflow

Valid Usage (Implicit)

  • pExclusiveScissors must be a valid pointer to an array of exclusiveScissorCount Rect2D structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • exclusiveScissorCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_NV_scissor_exclusive, CommandBuffer, Rect2D

cmdSetExclusiveScissorEnableNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstExclusiveScissor" ::: Word32)

firstExclusiveScissor is the index of the first exclusive scissor rectangle whose state is updated by the command.

-> ("exclusiveScissorEnables" ::: Vector Bool)

pExclusiveScissorEnables is a pointer to an array of Bool32 values defining whether the exclusive scissor is enabled.

-> 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 the VK_NV_scissor_exclusive extension

Valid Usage (Implicit)

  • pExclusiveScissorEnables must be a valid pointer to an array of exclusiveScissorCount Bool32 values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • exclusiveScissorCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_NV_scissor_exclusive, Bool32, CommandBuffer

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

VK_NV_scissor_exclusive, Bool32, StructureType

Constructors

PhysicalDeviceExclusiveScissorFeaturesNV 

Fields

  • exclusiveScissor :: Bool

    exclusiveScissor indicates that the implementation supports the exclusive scissor test.

Instances

Instances details
Storable PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

Show PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

Eq PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

FromCStruct PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

ToCStruct PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

Zero PhysicalDeviceExclusiveScissorFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

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 be 0 or 1

Valid Usage (Implicit)

See Also

VK_NV_scissor_exclusive, Rect2D, StructureType

Constructors

PipelineViewportExclusiveScissorStateCreateInfoNV 

Fields

Instances

Instances details
Show PipelineViewportExclusiveScissorStateCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

FromCStruct PipelineViewportExclusiveScissorStateCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

ToCStruct PipelineViewportExclusiveScissorStateCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

Zero PipelineViewportExclusiveScissorStateCreateInfoNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_scissor_exclusive

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 #