Class EXTShaderSubgroupBallot

  • public final class EXTShaderSubgroupBallot
    extends java.lang.Object
    This extension adds support for the following SPIR-V extension in Vulkan:
    • 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:

    • SubgroupEqMaskKHR, which contains the subgroup mask of the current subgroup invocation,
    • SubgroupGeMaskKHR, which contains the subgroup mask of the invocations greater than or equal to the current invocation,
    • SubgroupGtMaskKHR, which contains the subgroup mask of the invocations greater than the current invocation,
    • SubgroupLeMaskKHR, which contains the subgroup mask of the invocations less than or equal to the current invocation,
    • SubgroupLtMaskKHR, which contains the subgroup mask of the invocations less than the current invocation,
    • SubgroupLocalInvocationId, which contains the index of an invocation within a subgroup, and
    • SubgroupSize, which contains the maximum number of invocations in a subgroup.

    Additionally, this extension provides access to the new SPIR-V instructions:

    • OpSubgroupBallotKHR,
    • OpSubgroupFirstInvocationKHR, and
    • 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:

    • in uint64_t gl_SubGroupEqMaskARB;SubgroupEqMaskKHR,
    • in uint64_t gl_SubGroupGeMaskARB;SubgroupGeMaskKHR,
    • in uint64_t gl_SubGroupGtMaskARB;SubgroupGtMaskKHR,
    • in uint64_t gl_SubGroupLeMaskARB;SubgroupLeMaskKHR,
    • in uint64_t gl_SubGroupLtMaskARB;SubgroupLtMaskKHR,
    • in uint gl_SubGroupInvocationARB;SubgroupLocalInvocationId,
    • uniform uint gl_SubGroupSizeARB;SubgroupSize,
    • ballotARB() → OpSubgroupBallotKHR,
    • readFirstInvocationARB() → OpSubgroupFirstInvocationKHR, and
    • readInvocationARB() → OpSubgroupReadInvocationKHR.
    Name String
    Extension Type
    Device extension
    Registered Extension Number
    Extension and Version Dependencies
    • Requires Vulkan 1.0
    Last Modified Date
    IP Status
    No known IP claims.
    Interactions and External Dependencies
    • Jeff Bolz, NVIDIA
    • Neil Henning, Codeplay
    • Daniel Koch, NVIDIA Corporation
    • Field Detail


        public static final int VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION
        The extension specification version.
        See Also:
        Constant Field Values

        public static final java.lang.String VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
        The extension name.
        See Also:
        Constant Field Values