org.lwjgl.vulkan.NVScissorExclusive Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lwjgl-vulkan Show documentation
Show all versions of lwjgl-vulkan Show documentation
A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.vulkan;
import org.lwjgl.system.*;
import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;
/**
* 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.
*
* VK_NV_scissor_exclusive
*
*
* - Name String
* - {@code VK_NV_scissor_exclusive}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 206
* - Revision
* - 1
* - Extension and Version Dependencies
*
* - Requires Vulkan 1.0
* - Requires {@link KHRGetPhysicalDeviceProperties2 VK_KHR_get_physical_device_properties2}
*
* - Contact
*
* - Pat Brown nvpbrown
*
*
*
* Other Extension Metadata
*
*
* - Last Modified Date
* - 2018-07-31
* - IP Status
* - No known IP claims.
* - Interactions and External Dependencies
* - None
* - Contributors
*
* - Pat Brown, NVIDIA
* - Jeff Bolz, NVIDIA
* - Piers Daniell, NVIDIA
* - Daniel Koch, NVIDIA
*
*
*/
public class NVScissorExclusive {
/** The extension specification version. */
public static final int VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1;
/** The extension name. */
public static final String VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive";
/**
* Extends {@code VkStructureType}.
*
* Enum values:
*
*
* - {@link #VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV}
* - {@link #VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV}
*
*/
public static final int
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002;
/** Extends {@code VkDynamicState}. */
public static final int VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001;
protected NVScissorExclusive() {
throw new UnsupportedOperationException();
}
// --- [ vkCmdSetExclusiveScissorNV ] ---
/**
* Unsafe version of: {@link #vkCmdSetExclusiveScissorNV CmdSetExclusiveScissorNV}
*
* @param exclusiveScissorCount the number of exclusive scissor rectangles updated by the command.
*/
public static void nvkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, int firstExclusiveScissor, int exclusiveScissorCount, long pExclusiveScissors) {
long __functionAddress = commandBuffer.getCapabilities().vkCmdSetExclusiveScissorNV;
if (CHECKS) {
check(__functionAddress);
}
callPPV(commandBuffer.address(), firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, __functionAddress);
}
/**
* 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 {@code 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 the graphics pipeline is created with {@link #VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV} set in {@link VkPipelineDynamicStateCreateInfo}{@code ::pDynamicStates}. Otherwise, this state is specified by the {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV}{@code ::pExclusiveScissors} values used to create the currently active pipeline.
*
* Valid Usage
*
*
* - The exclusive scissor feature must be enabled
* - The sum of {@code firstExclusiveScissor} and {@code exclusiveScissorCount} must be between 1 and {@link VkPhysicalDeviceLimits}{@code ::maxViewports}, inclusive
* - If the multiple viewports feature is not enabled, {@code firstExclusiveScissor} must be 0
* - If the multiple viewports feature is not enabled, {@code exclusiveScissorCount} must be 1
* - The {@code x} and {@code y} members of {@code offset} in each member of {@code pExclusiveScissors} must be greater than or equal to 0
* - Evaluation of
(offset.x + extent.width)
for each member of {@code pExclusiveScissors} must not cause a signed integer addition overflow
* - Evaluation of
(offset.y + extent.height)
for each member of {@code pExclusiveScissors} must not cause a signed integer addition overflow
*
*
* Valid Usage (Implicit)
*
*
* - {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
* - {@code pExclusiveScissors} must be a valid pointer to an array of {@code exclusiveScissorCount} {@link VkRect2D} structures
* - {@code commandBuffer} must be in the recording state
* - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
* - {@code exclusiveScissorCount} must be greater than 0
*
*
* Host Synchronization
*
*
* - Host access to {@code commandBuffer} must be externally synchronized
* - Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
*
*
* Command Properties
*
*
* Command Buffer Levels Render Pass Scope Supported Queue Types
* Primary Secondary Both Graphics
*
*
* See Also
*
* {@link VkRect2D}
*
* @param commandBuffer the command buffer into which the command will be recorded.
* @param firstExclusiveScissor the index of the first exclusive scissor rectangle whose state is updated by the command.
* @param pExclusiveScissors a pointer to an array of {@link VkRect2D} structures defining exclusive scissor rectangles.
*/
public static void vkCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, @NativeType("uint32_t") int firstExclusiveScissor, @NativeType("VkRect2D const *") VkRect2D.Buffer pExclusiveScissors) {
nvkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, pExclusiveScissors.remaining(), pExclusiveScissors.address());
}
}