Reverse the sense of the GL_ARB_shader_ballot subgroup mask built-in variables
diff --git a/extensions/ARB/ARB_shader_ballot.txt b/extensions/ARB/ARB_shader_ballot.txt
old mode 100644
new mode 100755
index 7beecbb..e9fc57c
--- a/extensions/ARB/ARB_shader_ballot.txt
+++ b/extensions/ARB/ARB_shader_ballot.txt
@@ -19,6 +19,7 @@
Pat Brown, NVIDIA
Eric Werness, NVIDIA
Mark Kilgard, NVIDIA
+ Jeff Bolz, NVIDIA
Notice
@@ -32,7 +33,7 @@
Version
- Last Modified Date: 08/25/2015
+ Last Modified Date: 03/18/2017
Revision: 7
Number
@@ -118,11 +119,11 @@
variable equation for bit values
-------------------- ------------------------------------
- gl_SubGroupEqMaskARB gl_SubGroupInvocationARB == bit index
- gl_SubGroupGeMaskARB gl_SubGroupInvocationARB >= bit index
- gl_SubGroupGtMaskARB gl_SubGroupInvocationARB > bit index
- gl_SubGroupLeMaskARB gl_SubGroupInvocationARB <= bit index
- gl_SubGroupLtMaskARB gl_SubGroupInvocationARB < bit index
+ gl_SubGroupEqMaskARB bit index == gl_SubGroupInvocationARB
+ gl_SubGroupGeMaskARB bit index >= gl_SubGroupInvocationARB
+ gl_SubGroupGtMaskARB bit index > gl_SubGroupInvocationARB
+ gl_SubGroupLeMaskARB bit index <= gl_SubGroupInvocationARB
+ gl_SubGroupLtMaskARB bit index < gl_SubGroupInvocationARB
Additions to Chapter 8 of the OpenGL Shading Language Specification
(Built-in Functions)
@@ -169,10 +170,27 @@
The function readFirstInvocationARB() returns the <value> from the first
active invocation to all active invocations in the sub-group.
+Issues
+
+ 1) How are the values of gl_SubGroup??MaskARB defined?
+
+ RESOLVED. Earlier versions of this specification defined a bitmask
+ such as "LtMask" ("less than mask") as having bits set if
+ "bit index < gl_SubGroupInvocationARB". However, this was reversed
+ from the definition in GL_NV_shader_thread_group that these built-ins
+ were derived from, and also mismatched a recent Vulkan/SPIR-V extension.
+
+ Fortunately, all known implementations of this extension had implemented
+ "wrong" behavior (matching the sense of the original built-ins in
+ GL_NV_shader_thread_group), so the best thing to do is change the
+ definition in the spec.
+
Revision History
Rev Date Author Changes
--- ---------- -------- ---------------------------------------------
+ 8 03/18/2017 jbolz Reversed the sense of the comparison in the
+ definition of gl_SubGroup??MaskARB.
7 08/25/2015 nhenning Add ARB suffix on documentation for
readInvocation and readFirstInvocation
functions.