org.lwjgl.vulkan.EXTShaderSubgroupBallot Maven / Gradle / Ivy
Show all versions of lwjgl-vulkan Show documentation
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.vulkan;
/**
* This extension adds support for the following SPIR-V extension in Vulkan:
*
*
* - {@code SPV_KHR_shader_ballot}
*
*
* This extension provides the ability for a group of invocations, which execute in parallel, to do limited forms of cross-invocation communication via a group broadcast of a invocation value, or broadcast of a bitarray representing a predicate value from each invocation in the group.
*
* This extension provides access to a number of additional built-in shader variables in Vulkan:
*
*
* - {@code SubgroupEqMaskKHR}, which contains the subgroup mask of the current subgroup invocation,
* - {@code SubgroupGeMaskKHR}, which contains the subgroup mask of the invocations greater than or equal to the current invocation,
* - {@code SubgroupGtMaskKHR}, which contains the subgroup mask of the invocations greater than the current invocation,
* - {@code SubgroupLeMaskKHR}, which contains the subgroup mask of the invocations less than or equal to the current invocation,
* - {@code SubgroupLtMaskKHR}, which contains the subgroup mask of the invocations less than the current invocation,
* - {@code SubgroupLocalInvocationId}, which contains the index of an invocation within a subgroup, and
* - {@code SubgroupSize}, which contains the maximum number of invocations in a subgroup.
*
*
* Additionally, this extension provides access to the new SPIR-V instructions:
*
*
* - {@code OpSubgroupBallotKHR},
* - {@code OpSubgroupFirstInvocationKHR}, and
* - {@code OpSubgroupReadInvocationKHR},
*
*
* When using GLSL source-based shader languages, the following variables and shader functions from GL_ARB_shader_ballot can map to these SPIR-V built-in decorations and instructions:
*
*
* - {@code in uint64_t gl_SubGroupEqMaskARB;} → {@code SubgroupEqMaskKHR},
* - {@code in uint64_t gl_SubGroupGeMaskARB;} → {@code SubgroupGeMaskKHR},
* - {@code in uint64_t gl_SubGroupGtMaskARB;} → {@code SubgroupGtMaskKHR},
* - {@code in uint64_t gl_SubGroupLeMaskARB;} → {@code SubgroupLeMaskKHR},
* - {@code in uint64_t gl_SubGroupLtMaskARB;} → {@code SubgroupLtMaskKHR},
* - {@code in uint gl_SubGroupInvocationARB;} → {@code SubgroupLocalInvocationId},
* - {@code uniform uint gl_SubGroupSizeARB;} → {@code SubgroupSize},
* - {@code ballotARB}() → {@code OpSubgroupBallotKHR},
* - {@code readFirstInvocationARB}() → {@code OpSubgroupFirstInvocationKHR}, and
* - {@code readInvocationARB}() → {@code OpSubgroupReadInvocationKHR}.
*
*
* Deprecated by Vulkan 1.2
*
* Most of the functionality in this extension is superseded by the core Vulkan 1.1 subgroup operations. However, Vulkan 1.1 required the {@code OpGroupNonUniformBroadcast} “{@code Id}” to be constant. This restriction was removed in Vulkan 1.2 with the addition of the subgroupBroadcastDynamicId feature.
*
* VK_EXT_shader_subgroup_ballot
*
*
* - Name String
* - {@code VK_EXT_shader_subgroup_ballot}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 65
* - Revision
* - 1
* - Extension and Version Dependencies
*
* - Requires Vulkan 1.0
*
* - Deprecation state
*
* - Deprecated by Vulkan 1.2
*
* - Contact
*
* - Daniel Koch dgkoch
*
*
*
* Other Extension Metadata
*
*
* - Last Modified Date
* - 2016-11-28
* - IP Status
* - No known IP claims.
* - Interactions and External Dependencies
*
* - This extension requires {@code SPV_KHR_shader_ballot}
* - This extension provides API support for {@code GL_ARB_shader_ballot}
*
* - Contributors
*
* - Jeff Bolz, NVIDIA
* - Neil Henning, Codeplay
* - Daniel Koch, NVIDIA Corporation
*
*
*/
public final class EXTShaderSubgroupBallot {
/** The extension specification version. */
public static final int VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1;
/** The extension name. */
public static final String VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot";
private EXTShaderSubgroupBallot() {}
}