HLSL: Fix issue #646: map SV_DispatchThreadID -> GlobalInvocationID.
authorJohn Kessenich <cepheus@frii.com>
Mon, 2 Jan 2017 21:59:19 +0000 (14:59 -0700)
committerJohn Kessenich <cepheus@frii.com>
Mon, 2 Jan 2017 21:59:19 +0000 (14:59 -0700)
Test/baseResults/hlsl.basic.comp.out
Test/baseResults/hlsl.numthreads.comp.out
Test/hlsl.basic.comp
glslang/Include/revision.h
hlsl/hlslParseHelper.cpp

index 9101e22..b6557ef 100755 (executable)
@@ -2,13 +2,17 @@ hlsl.basic.comp
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:4  Function Definition: main(i1; (temp void)
+0:4  Function Definition: main(i1;i1; (temp void)
 0:4    Function Parameters: 
-0:4      'dti' (in int LocalInvocationID)
+0:4      'dti' (in int GlobalInvocationID)
+0:4      'gti' (in int LocalInvocationID)
 0:?     Sequence
-0:5      'dti' (in int LocalInvocationID)
+0:5      subtract (temp int)
+0:5        'dti' (in int GlobalInvocationID)
+0:5        'gti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'dti' (in int LocalInvocationID)
+0:?     'dti' (in int GlobalInvocationID)
+0:?     'gti' (in int LocalInvocationID)
 0:?     'a' (shared 100-element array of 4-component vector of float)
 
 
@@ -18,41 +22,51 @@ Linked compute stage:
 Shader version: 450
 local_size = (1, 1, 1)
 0:? Sequence
-0:4  Function Definition: main(i1; (temp void)
+0:4  Function Definition: main(i1;i1; (temp void)
 0:4    Function Parameters: 
-0:4      'dti' (in int LocalInvocationID)
+0:4      'dti' (in int GlobalInvocationID)
+0:4      'gti' (in int LocalInvocationID)
 0:?     Sequence
-0:5      'dti' (in int LocalInvocationID)
+0:5      subtract (temp int)
+0:5        'dti' (in int GlobalInvocationID)
+0:5        'gti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'dti' (in int LocalInvocationID)
+0:?     'dti' (in int GlobalInvocationID)
+0:?     'gti' (in int LocalInvocationID)
 0:?     'a' (shared 100-element array of 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 16
+// Id's are bound by 20
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 8
+                              EntryPoint GLCompute 4  "main" 8 10
                               ExecutionMode 4 LocalSize 1 1 1
                               Name 4  "main"
                               Name 8  "dti"
-                              Name 15  "a"
-                              Decorate 8(dti) BuiltIn LocalInvocationId
+                              Name 10  "gti"
+                              Name 19  "a"
+                              Decorate 8(dti) BuiltIn GlobalInvocationId
+                              Decorate 10(gti) BuiltIn LocalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
                7:             TypePointer Input 6(int)
           8(dti):      7(ptr) Variable Input
-               9:             TypeFloat 32
-              10:             TypeVector 9(float) 4
-              11:             TypeInt 32 0
-              12:     11(int) Constant 100
-              13:             TypeArray 10(fvec4) 12
-              14:             TypePointer Workgroup 13
-           15(a):     14(ptr) Variable Workgroup
+         10(gti):      7(ptr) Variable Input
+              13:             TypeFloat 32
+              14:             TypeVector 13(float) 4
+              15:             TypeInt 32 0
+              16:     15(int) Constant 100
+              17:             TypeArray 14(fvec4) 16
+              18:             TypePointer Workgroup 17
+           19(a):     18(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
+               9:      6(int) Load 8(dti)
+              11:      6(int) Load 10(gti)
+              12:      6(int) ISub 9 11
                               Return
                               FunctionEnd
index 76e95c8..8ac76a9 100644 (file)
@@ -7,9 +7,9 @@ local_size = (4, 4, 2)
 0:4      'tid' (in 3-component vector of uint)
 0:9  Function Definition: main_aux1(vu3; (temp void)
 0:9    Function Parameters: 
-0:9      'tid' (in 3-component vector of uint LocalInvocationID)
+0:9      'tid' (in 3-component vector of uint GlobalInvocationID)
 0:?   Linker Objects
-0:?     'tid' (in 3-component vector of uint LocalInvocationID)
+0:?     'tid' (in 3-component vector of uint GlobalInvocationID)
 
 
 Linked compute stage:
@@ -23,9 +23,9 @@ local_size = (4, 4, 2)
 0:4      'tid' (in 3-component vector of uint)
 0:9  Function Definition: main_aux1(vu3; (temp void)
 0:9    Function Parameters: 
-0:9      'tid' (in 3-component vector of uint LocalInvocationID)
+0:9      'tid' (in 3-component vector of uint GlobalInvocationID)
 0:?   Linker Objects
-0:?     'tid' (in 3-component vector of uint LocalInvocationID)
+0:?     'tid' (in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
 // Generated by (magic number): 80001
@@ -40,7 +40,7 @@ local_size = (4, 4, 2)
                               Name 11  "main(vu3;"
                               Name 10  "tid"
                               Name 14  "tid"
-                              Decorate 14(tid) BuiltIn LocalInvocationId
+                              Decorate 14(tid) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index 8a65a59..1d95239 100644 (file)
@@ -1,6 +1,6 @@
 groupshared float4 a[100];\r
 \r
-void main(int dti : SV_DispatchThreadID)\r
+void main(int dti : SV_DispatchThreadID, int gti : SV_GroupThreadID)\r
 {\r
-    dti;\r
+    dti - gti;\r
 }\r
index f4c35bc..f99e69a 100644 (file)
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "Overload400-PrecQual.1725"
-#define GLSLANG_DATE "30-Dec-2016"
+#define GLSLANG_REVISION "Overload400-PrecQual.1726"
+#define GLSLANG_DATE "02-Jan-2017"
index 893cbfc..5978ae3 100755 (executable)
@@ -3195,7 +3195,7 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, con
     else if (semanticUpperCase == "SV_GSINSTANCEID")
         qualifier.builtIn = EbvInvocationId;
     else if (semanticUpperCase == "SV_DISPATCHTHREADID")
-        qualifier.builtIn = EbvLocalInvocationId;
+        qualifier.builtIn = EbvGlobalInvocationId;
     else if (semanticUpperCase == "SV_GROUPTHREADID")
         qualifier.builtIn = EbvLocalInvocationId;
     else if (semanticUpperCase == "SV_GROUPID")