Top Description Fields Constructors Methods
org.lwjgl.vulkan

public Class NVScissorExclusive

extends Object
Class Inheritance
Imports
java.nio.*, org.lwjgl.system.*

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.

VK_NV_scissor_exclusive
Name String
VK_NV_scissor_exclusive
Extension Type
Device extension
Registered Extension Number
206
Revision
2
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

Field Summary

Modifier and TypeField and Description
public static final int
public static final int
public static final String
public static final int
VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION

The extension specification version.

public static final int
public static final int

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static void
nvkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int
the number of exclusive scissor rectangles updated by the command.
exclusiveScissorCount
,
long pExclusiveScissorEnables)

Unsafe version of: CmdSetExclusiveScissorEnableNV

public static void
nvkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int
the number of exclusive scissor rectangles updated by the command.
exclusiveScissorCount
,
long pExclusiveScissors)

Unsafe version of: CmdSetExclusiveScissorNV

public static void
vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded.
commandBuffer
,
int
the index of the first exclusive scissor rectangle whose state is updated by the command.
firstExclusiveScissor
,
IntBuffer
a pointer to an array of VkBool32 values defining whether the exclusive scissor is enabled.
pExclusiveScissorEnables
)

Dynamically enable each exclusive scissor for a command buffer.

public static void
vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int[] pExclusiveScissorEnables)

Array version of: CmdSetExclusiveScissorEnableNV

public static void
vkCmdSetExclusiveScissorNV(VkCommandBuffer
the command buffer into which the command will be recorded.
commandBuffer
,
int
the index of the first exclusive scissor rectangle whose state is updated by the command.
firstExclusiveScissor
,
VkRect2D.Buffer
a pointer to an array of VkRect2D structures defining exclusive scissor rectangles.
pExclusiveScissors
)

Set exclusive scissor rectangles dynamically for a command buffer.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NVback to summary
public static final int VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV

Extends VkDynamicState.

Enum values:
VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NVback to summary
public static final int VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV

Extends VkDynamicState.

Enum values:
VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAMEback to summary
public static final String VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME

The extension name.

VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSIONback to summary
public static final int VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION

The extension specification version.

VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NVback to summary
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NVback to summary
public static final int VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV

Extends VkStructureType.

Enum values:

Constructor Detail

NVScissorExclusiveback to summary
protected NVScissorExclusive()

Method Detail

nvkCmdSetExclusiveScissorEnableNVback to summary
public static void nvkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int exclusiveScissorCount, long pExclusiveScissorEnables)

Unsafe version of: CmdSetExclusiveScissorEnableNV

Parameters
exclusiveScissorCount:int

the number of exclusive scissor rectangles updated by the command.

nvkCmdSetExclusiveScissorNVback to summary
public static void nvkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int exclusiveScissorCount, long pExclusiveScissors)

Unsafe version of: CmdSetExclusiveScissorNV

Parameters
exclusiveScissorCount:int

the number of exclusive scissor rectangles updated by the command.

vkCmdSetExclusiveScissorEnableNVback to summary
public static void vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, IntBuffer pExclusiveScissorEnables)

Dynamically enable each exclusive scissor for a command buffer.

C Specification

To dynamically set whether an exclusive scissor is enabled or not, call:


void vkCmdSetExclusiveScissorEnableNV(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    firstExclusiveScissor,
    uint32_t                                    exclusiveScissorCount,
    const VkBool32*                             pExclusiveScissorEnables);
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 VkPipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is implied by the VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount value used to create the currently active pipeline, where all exclusiveScissorCount exclusive scissors are implicitly enabled and the remainder up to VkPhysicalDeviceLimits::maxViewports are implicitly disabled.

Valid Usage
Valid Usage (Implicit)
  • commandBuffer must be a valid VkCommandBuffer handle
  • pExclusiveScissorEnables must be a valid pointer to an array of exclusiveScissorCount VkBool32 values
  • commandBuffer must be in the recording state
  • The VkCommandPool 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 VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBothOutsideGraphicsState
Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command will be recorded.

firstExclusiveScissor:int

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

pExclusiveScissorEnables:IntBuffer

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

vkCmdSetExclusiveScissorEnableNVback to summary
public static void vkCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int[] pExclusiveScissorEnables)

Array version of: CmdSetExclusiveScissorEnableNV

vkCmdSetExclusiveScissorNVback to summary
public static void vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, VkRect2D.Buffer pExclusiveScissors)

Set exclusive scissor rectangles dynamically for a command buffer.

C Specification

To dynamically set the exclusive scissor rectangles, call:


void vkCmdSetExclusiveScissorNV(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    firstExclusiveScissor,
    uint32_t                                    exclusiveScissorCount,
    const VkRect2D*                             pExclusiveScissors);
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 VkPipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the VkPipelineViewportExclusiveScissorStateCreateInfoNV::pExclusiveScissors values used to create the currently active pipeline.

Valid Usage
  • The exclusiveScissor feature must be enabled
  • The sum of firstExclusiveScissor and exclusiveScissorCount must be between 1 and VkPhysicalDeviceLimits::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)
  • commandBuffer must be a valid VkCommandBuffer handle
  • pExclusiveScissors must be a valid pointer to an array of exclusiveScissorCount VkRect2D structures
  • commandBuffer must be in the recording state
  • The VkCommandPool 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 VkCommandPool that commandBuffer was allocated from must be externally synchronized
Command Properties
Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBothOutsideGraphicsState
See Also

VkRect2D

Parameters
commandBuffer:VkCommandBuffer

the command buffer into which the command will be recorded.

firstExclusiveScissor:int

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

pExclusiveScissors:VkRect2D.Buffer

a pointer to an array of VkRect2D structures defining exclusive scissor rectangles.