[[VK_EXT_shader_subgroup_ballot]] == VK_EXT_shader_subgroup_ballot *Name String*:: VK_EXT_shader_subgroup_ballot *Extension Type*:: Device extension *Registered Extension Number*:: 65 *Status*:: Draft *Last Modified Date*:: 2016-11-28 *Revision*:: 1 *IP Status*:: No known IP claims. *Dependencies*:: - This extension is written against version 1.0 of the Vulkan API. - This extension requires Vulkan 1.0. - This extension requires the https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_shader_ballot.html[+SPV_KHR_shader_ballot+] SPIR-V extension. - This extension requires the https://www.opengl.org/registry/specs/ARB/shader_ballot.txt[+GL_ARB_shader_ballot+] extension for GLSL source languages. *Contributors*:: - Jeff Bolz, NVIDIA - Neil Henning, Codeplay - Daniel Koch, NVIDIA Corporation *Contact*:: - Daniel Koch (dkoch 'at' nvidia.com) *Overview*:: + -- 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: * 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: * in uint64_t gl_SubGroupEqMaskARB; -> code:SubgroupEqMaskKHR, * in uint64_t gl_SubGroupGeMaskARB; -> code:SubgroupGeMaskKHR, * in uint64_t gl_SubGroupGtMaskARB; -> code:SubgroupGtMaskKHR, * in uint64_t gl_SubGroupLeMaskARB; -> code:SubgroupLeMaskKHR, * in uint64_t gl_SubGroupLtMaskARB; -> code:SubgroupLtMaskKHR, * in uint gl_SubGroupInvocationARB; -> code:SubgroupLocalInvocationId, * uniform uint gl_SubGroupSizeARB; -> code:SubgroupSize, * ballotARB() -> code:OpSubgroupBallotKHR, * readFirstInvocationARB() -> code:OpSubgroupFirstInvocationKHR, and * readInvocationARB() -> code:OpSubgroupReadInvocationKHR. -- === New Object Types None. === New Enum Constants None. === New Enums None. === New Structures None. === New Functions None. === New Built-In Variables * <> * <> * <> * <> * <> * <> * <> === New SPIR-V Capabilities * <> === Issues None. === Version History * Revision 1, 2016-11-28 (Daniel Koch) - Initial draft