HLSL: Fix issue #646: map SV_DispatchThreadID -> GlobalInvocationID.

This commit is contained in:
John Kessenich 2017-01-02 14:59:19 -07:00
parent aa6d56298d
commit f37f4d23fc
5 changed files with 43 additions and 29 deletions

View File

@ -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

View 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

View File

@ -1,6 +1,6 @@
groupshared float4 a[100];
void main(int dti : SV_DispatchThreadID)
void main(int dti : SV_DispatchThreadID, int gti : SV_GroupThreadID)
{
dti;
dti - gti;
}

View 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"

View File

@ -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")