Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
96f65521
Commit
96f65521
authored
Jun 06, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HLSL: Implement half matrices, and map all half* -> float*.
parent
f6deacd5
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
311 additions
and
75 deletions
+311
-75
hlsl.type.half.frag.out
Test/baseResults/hlsl.type.half.frag.out
+127
-47
hlsl.type.identifier.frag.out
Test/baseResults/hlsl.type.identifier.frag.out
+45
-21
hlsl.type.half.frag
Test/hlsl.type.half.frag
+18
-1
hlsl.type.identifier.frag
Test/hlsl.type.identifier.frag
+3
-1
hlslGrammar.cpp
hlsl/hlslGrammar.cpp
+70
-5
hlslScanContext.cpp
hlsl/hlslScanContext.cpp
+32
-0
hlslTokens.h
hlsl/hlslTokens.h
+16
-0
No files found.
Test/baseResults/hlsl.type.half.frag.out
View file @
96f65521
...
@@ -6,42 +6,70 @@ gl_FragCoord origin is upper left
...
@@ -6,42 +6,70 @@ gl_FragCoord origin is upper left
0:3 Function Parameters:
0:3 Function Parameters:
0:? Sequence
0:? Sequence
0:4 Sequence
0:4 Sequence
0:4 move second child to first child ( temp
mediump
float)
0:4 move second child to first child ( temp float)
0:4 'h0' ( temp
mediump
float)
0:4 'h0' ( temp float)
0:4 Constant:
0:4 Constant:
0:4 0.000000
0:4 0.000000
0:5 Sequence
0:5 Sequence
0:5 move second child to first child ( temp
mediump
1-component vector of float)
0:5 move second child to first child ( temp 1-component vector of float)
0:5 'h1' ( temp
mediump
1-component vector of float)
0:5 'h1' ( temp 1-component vector of float)
0:5 Constant:
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:6 Sequence
0:6 Sequence
0:6 move second child to first child ( temp
mediump
2-component vector of float)
0:6 move second child to first child ( temp 2-component vector of float)
0:6 'h2' ( temp
mediump
2-component vector of float)
0:6 'h2' ( temp 2-component vector of float)
0:6 Constant:
0:6 Constant:
0:6 2.000000
0:6 2.000000
0:6 2.000000
0:6 2.000000
0:7 Sequence
0:7 Sequence
0:7 move second child to first child ( temp
mediump
3-component vector of float)
0:7 move second child to first child ( temp 3-component vector of float)
0:7 'h3' ( temp
mediump
3-component vector of float)
0:7 'h3' ( temp 3-component vector of float)
0:7 Constant:
0:7 Constant:
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:8 Sequence
0:8 Sequence
0:8 move second child to first child ( temp
mediump
4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'h4' ( temp
mediump
4-component vector of float)
0:8 'h4' ( temp 4-component vector of float)
0:8 Constant:
0:8 Constant:
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:10 Branch: Return with expression
0:15 Sequence
0:10 Constant:
0:15 move second child to first child ( temp 2X2 matrix of float)
0:10 0.000000
0:15 'h22' ( temp 2X2 matrix of float)
0:10 0.000000
0:? Constant:
0:10 0.000000
0:? 1.000000
0:10 0.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:16 Sequence
0:16 move second child to first child ( temp 2X3 matrix of float)
0:16 'h23' ( temp 2X3 matrix of float)
0:16 Constant:
0:16 4.900000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 4.900000
0:16 0.000000
0:27 Branch: Return with expression
0:27 Construct vec4 ( temp 4-component vector of float)
0:27 add ( temp float)
0:27 add ( temp float)
0:27 direct index ( temp float)
0:27 direct index ( temp 3-component vector of float)
0:27 'h23' ( temp 2X3 matrix of float)
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index ( temp float)
0:27 'h4' ( temp 4-component vector of float)
0:27 Constant:
0:27 1 (const int)
0:27 'h0' ( temp float)
0:3 Function Definition: main( ( temp void)
0:3 Function Definition: main( ( temp void)
0:3 Function Parameters:
0:3 Function Parameters:
0:? Sequence
0:? Sequence
...
@@ -62,42 +90,70 @@ gl_FragCoord origin is upper left
...
@@ -62,42 +90,70 @@ gl_FragCoord origin is upper left
0:3 Function Parameters:
0:3 Function Parameters:
0:? Sequence
0:? Sequence
0:4 Sequence
0:4 Sequence
0:4 move second child to first child ( temp
mediump
float)
0:4 move second child to first child ( temp float)
0:4 'h0' ( temp
mediump
float)
0:4 'h0' ( temp float)
0:4 Constant:
0:4 Constant:
0:4 0.000000
0:4 0.000000
0:5 Sequence
0:5 Sequence
0:5 move second child to first child ( temp
mediump
1-component vector of float)
0:5 move second child to first child ( temp 1-component vector of float)
0:5 'h1' ( temp
mediump
1-component vector of float)
0:5 'h1' ( temp 1-component vector of float)
0:5 Constant:
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:6 Sequence
0:6 Sequence
0:6 move second child to first child ( temp
mediump
2-component vector of float)
0:6 move second child to first child ( temp 2-component vector of float)
0:6 'h2' ( temp
mediump
2-component vector of float)
0:6 'h2' ( temp 2-component vector of float)
0:6 Constant:
0:6 Constant:
0:6 2.000000
0:6 2.000000
0:6 2.000000
0:6 2.000000
0:7 Sequence
0:7 Sequence
0:7 move second child to first child ( temp
mediump
3-component vector of float)
0:7 move second child to first child ( temp 3-component vector of float)
0:7 'h3' ( temp
mediump
3-component vector of float)
0:7 'h3' ( temp 3-component vector of float)
0:7 Constant:
0:7 Constant:
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:7 3.000000
0:8 Sequence
0:8 Sequence
0:8 move second child to first child ( temp
mediump
4-component vector of float)
0:8 move second child to first child ( temp 4-component vector of float)
0:8 'h4' ( temp
mediump
4-component vector of float)
0:8 'h4' ( temp 4-component vector of float)
0:8 Constant:
0:8 Constant:
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:8 4.000000
0:10 Branch: Return with expression
0:15 Sequence
0:10 Constant:
0:15 move second child to first child ( temp 2X2 matrix of float)
0:10 0.000000
0:15 'h22' ( temp 2X2 matrix of float)
0:10 0.000000
0:? Constant:
0:10 0.000000
0:? 1.000000
0:10 0.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:16 Sequence
0:16 move second child to first child ( temp 2X3 matrix of float)
0:16 'h23' ( temp 2X3 matrix of float)
0:16 Constant:
0:16 4.900000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 4.900000
0:16 0.000000
0:27 Branch: Return with expression
0:27 Construct vec4 ( temp 4-component vector of float)
0:27 add ( temp float)
0:27 add ( temp float)
0:27 direct index ( temp float)
0:27 direct index ( temp 3-component vector of float)
0:27 'h23' ( temp 2X3 matrix of float)
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index ( temp float)
0:27 'h4' ( temp 4-component vector of float)
0:27 Constant:
0:27 1 (const int)
0:27 'h0' ( temp float)
0:3 Function Definition: main( ( temp void)
0:3 Function Definition: main( ( temp void)
0:3 Function Parameters:
0:3 Function Parameters:
0:? Sequence
0:? Sequence
...
@@ -109,12 +165,12 @@ gl_FragCoord origin is upper left
...
@@ -109,12 +165,12 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by
36
// Id's are bound by
61
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
34
EntryPoint Fragment 4 "main"
59
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Source HLSL 500
Name 4 "main"
Name 4 "main"
...
@@ -124,13 +180,10 @@ gl_FragCoord origin is upper left
...
@@ -124,13 +180,10 @@ gl_FragCoord origin is upper left
Name 18 "h2"
Name 18 "h2"
Name 23 "h3"
Name 23 "h3"
Name 27 "h4"
Name 27 "h4"
Name 34 "@entryPointOutput"
Name 32 "h22"
Decorate 12(h0) RelaxedPrecision
Name 38 "h23"
Decorate 14(h1) RelaxedPrecision
Name 59 "@entryPointOutput"
Decorate 18(h2) RelaxedPrecision
Decorate 59(@entryPointOutput) Location 0
Decorate 23(h3) RelaxedPrecision
Decorate 27(h4) RelaxedPrecision
Decorate 34(@entryPointOutput) Location 0
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeFloat 32
6: TypeFloat 32
...
@@ -150,13 +203,28 @@ gl_FragCoord origin is upper left
...
@@ -150,13 +203,28 @@ gl_FragCoord origin is upper left
26: TypePointer Function 7(fvec4)
26: TypePointer Function 7(fvec4)
28: 6(float) Constant 1082130432
28: 6(float) Constant 1082130432
29: 7(fvec4) ConstantComposite 28 28 28 28
29: 7(fvec4) ConstantComposite 28 28 28 28
30: 7(fvec4) ConstantComposite 13 13 13 13
30: TypeMatrix 16(fvec2) 2
33: TypePointer Output 7(fvec4)
31: TypePointer Function 30
34(@entryPointOutput): 33(ptr) Variable Output
33: 16(fvec2) ConstantComposite 15 19
34: 16(fvec2) ConstantComposite 24 28
35: 30 ConstantComposite 33 34
36: TypeMatrix 21(fvec3) 2
37: TypePointer Function 36
39: 6(float) Constant 1084017869
40: 21(fvec3) ConstantComposite 39 13 13
41: 21(fvec3) ConstantComposite 13 39 13
42: 36 ConstantComposite 40 41
43: TypeInt 32 1
44: 43(int) Constant 0
45: TypeInt 32 0
46: 45(int) Constant 0
49: 45(int) Constant 1
58: TypePointer Output 7(fvec4)
59(@entryPointOutput): 58(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
35
: 7(fvec4) FunctionCall 9(@main()
60
: 7(fvec4) FunctionCall 9(@main()
Store
34(@entryPointOutput) 35
Store
59(@entryPointOutput) 60
Return
Return
FunctionEnd
FunctionEnd
9(@main(): 7(fvec4) Function None 8
9(@main(): 7(fvec4) Function None 8
...
@@ -166,10 +234,22 @@ gl_FragCoord origin is upper left
...
@@ -166,10 +234,22 @@ gl_FragCoord origin is upper left
18(h2): 17(ptr) Variable Function
18(h2): 17(ptr) Variable Function
23(h3): 22(ptr) Variable Function
23(h3): 22(ptr) Variable Function
27(h4): 26(ptr) Variable Function
27(h4): 26(ptr) Variable Function
32(h22): 31(ptr) Variable Function
38(h23): 37(ptr) Variable Function
Store 12(h0) 13
Store 12(h0) 13
Store 14(h1) 15
Store 14(h1) 15
Store 18(h2) 20
Store 18(h2) 20
Store 23(h3) 25
Store 23(h3) 25
Store 27(h4) 29
Store 27(h4) 29
ReturnValue 30
Store 32(h22) 35
Store 38(h23) 42
47: 11(ptr) AccessChain 38(h23) 44 46
48: 6(float) Load 47
50: 11(ptr) AccessChain 27(h4) 49
51: 6(float) Load 50
52: 6(float) FAdd 48 51
53: 6(float) Load 12(h0)
54: 6(float) FAdd 52 53
55: 7(fvec4) CompositeConstruct 54 54 54 54
ReturnValue 55
FunctionEnd
FunctionEnd
Test/baseResults/hlsl.type.identifier.frag.out
View file @
96f65521
...
@@ -50,8 +50,8 @@ gl_FragCoord origin is upper left
...
@@ -50,8 +50,8 @@ gl_FragCoord origin is upper left
0:15 'min10float' ( temp mediump float)
0:15 'min10float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp
mediump
float)
0:16 move second child to first child ( temp float)
0:16 'half' ( temp
mediump
float)
0:16 'half' ( temp float)
0:16 Constant:
0:16 Constant:
0:16 0.500000
0:16 0.500000
0:? Sequence
0:? Sequence
...
@@ -99,9 +99,17 @@ gl_FragCoord origin is upper left
...
@@ -99,9 +99,17 @@ gl_FragCoord origin is upper left
0:25 'float' ( temp mediump float)
0:25 'float' ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 'float' ( temp mediump float)
0:25 'float' ( temp mediump float)
0:27 Branch: Return with expression
0:29 Branch: Return with expression
0:27 Construct vec4 ( temp 4-component vector of float)
0:29 Construct vec4 ( temp 4-component vector of float)
0:27 'float' ( temp float)
0:29 add ( temp float)
0:29 'float' ( temp float)
0:29 direct index ( temp float)
0:29 direct index ( temp 3-component vector of float)
0:29 'half2x3' ( temp 2X3 matrix of float)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:9 Function Definition: main( ( temp void)
0:9 Function Definition: main( ( temp void)
0:9 Function Parameters:
0:9 Function Parameters:
0:? Sequence
0:? Sequence
...
@@ -166,8 +174,8 @@ gl_FragCoord origin is upper left
...
@@ -166,8 +174,8 @@ gl_FragCoord origin is upper left
0:15 'min10float' ( temp mediump float)
0:15 'min10float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:15 'min16float' ( temp mediump float)
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp
mediump
float)
0:16 move second child to first child ( temp float)
0:16 'half' ( temp
mediump
float)
0:16 'half' ( temp float)
0:16 Constant:
0:16 Constant:
0:16 0.500000
0:16 0.500000
0:? Sequence
0:? Sequence
...
@@ -215,9 +223,17 @@ gl_FragCoord origin is upper left
...
@@ -215,9 +223,17 @@ gl_FragCoord origin is upper left
0:25 'float' ( temp mediump float)
0:25 'float' ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 Function Call: fn(f1; ( temp mediump float)
0:25 'float' ( temp mediump float)
0:25 'float' ( temp mediump float)
0:27 Branch: Return with expression
0:29 Branch: Return with expression
0:27 Construct vec4 ( temp 4-component vector of float)
0:29 Construct vec4 ( temp 4-component vector of float)
0:27 'float' ( temp float)
0:29 add ( temp float)
0:29 'float' ( temp float)
0:29 direct index ( temp float)
0:29 direct index ( temp 3-component vector of float)
0:29 'half2x3' ( temp 2X3 matrix of float)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:9 Function Definition: main( ( temp void)
0:9 Function Definition: main( ( temp void)
0:9 Function Parameters:
0:9 Function Parameters:
0:? Sequence
0:? Sequence
...
@@ -229,12 +245,12 @@ gl_FragCoord origin is upper left
...
@@ -229,12 +245,12 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80001
// Generated by (magic number): 80001
// Id's are bound by
97
// Id's are bound by
105
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
95
EntryPoint Fragment 4 "main"
103
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Source HLSL 500
Name 4 "main"
Name 4 "main"
...
@@ -252,13 +268,13 @@ gl_FragCoord origin is upper left
...
@@ -252,13 +268,13 @@ gl_FragCoord origin is upper left
MemberName 56(foo_t) 0 "float"
MemberName 56(foo_t) 0 "float"
Name 58 "float"
Name 58 "float"
Name 86 "param"
Name 86 "param"
Name 95 "@entryPointOutput"
Name 94 "half2x3"
Name 103 "@entryPointOutput"
Decorate 49(min16float) RelaxedPrecision
Decorate 49(min16float) RelaxedPrecision
Decorate 50 RelaxedPrecision
Decorate 50 RelaxedPrecision
Decorate 51 RelaxedPrecision
Decorate 51 RelaxedPrecision
Decorate 52(min10float) RelaxedPrecision
Decorate 52(min10float) RelaxedPrecision
Decorate 53 RelaxedPrecision
Decorate 53 RelaxedPrecision
Decorate 54(half) RelaxedPrecision
Decorate 64 RelaxedPrecision
Decorate 64 RelaxedPrecision
Decorate 65 RelaxedPrecision
Decorate 65 RelaxedPrecision
Decorate 66 RelaxedPrecision
Decorate 66 RelaxedPrecision
...
@@ -278,7 +294,7 @@ gl_FragCoord origin is upper left
...
@@ -278,7 +294,7 @@ gl_FragCoord origin is upper left
Decorate 87 RelaxedPrecision
Decorate 87 RelaxedPrecision
Decorate 88 RelaxedPrecision
Decorate 88 RelaxedPrecision
Decorate 89 RelaxedPrecision
Decorate 89 RelaxedPrecision
Decorate
95
(@entryPointOutput) Location 0
Decorate
103
(@entryPointOutput) Location 0
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeFloat 32
6: TypeFloat 32
...
@@ -303,12 +319,16 @@ gl_FragCoord origin is upper left
...
@@ -303,12 +319,16 @@ gl_FragCoord origin is upper left
56(foo_t): TypeStruct 6(float)
56(foo_t): TypeStruct 6(float)
57: TypePointer Function 56(foo_t)
57: TypePointer Function 56(foo_t)
59: 6(float) Constant 1109917696
59: 6(float) Constant 1109917696
94: TypePointer Output 12(fvec4)
91: TypeVector 6(float) 3
95(@entryPointOutput): 94(ptr) Variable Output
92: TypeMatrix 91(fvec3) 2
93: TypePointer Function 92
95: 22(int) Constant 0
102: TypePointer Output 12(fvec4)
103(@entryPointOutput): 102(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
96
: 12(fvec4) FunctionCall 14(@main()
104
: 12(fvec4) FunctionCall 14(@main()
Store
95(@entryPointOutput) 96
Store
103(@entryPointOutput) 104
Return
Return
FunctionEnd
FunctionEnd
10(fn(f1;): 6(float) Function None 8
10(fn(f1;): 6(float) Function None 8
...
@@ -329,6 +349,7 @@ gl_FragCoord origin is upper left
...
@@ -329,6 +349,7 @@ gl_FragCoord origin is upper left
58(float): 57(ptr) Variable Function
58(float): 57(ptr) Variable Function
75: 7(ptr) Variable Function
75: 7(ptr) Variable Function
86(param): 7(ptr) Variable Function
86(param): 7(ptr) Variable Function
94(half2x3): 93(ptr) Variable Function
Store 19(float) 20
Store 19(float) 20
27: 6(float) Load 19(float)
27: 6(float) Load 19(float)
29: 21(bool) FOrdNotEqual 27 28
29: 21(bool) FOrdNotEqual 27 28
...
@@ -391,6 +412,9 @@ gl_FragCoord origin is upper left
...
@@ -391,6 +412,9 @@ gl_FragCoord origin is upper left
89: 6(float) FAdd 85 88
89: 6(float) FAdd 85 88
Store 19(float) 89
Store 19(float) 89
90: 6(float) Load 19(float)
90: 6(float) Load 19(float)
91: 12(fvec4) CompositeConstruct 90 90 90 90
96: 7(ptr) AccessChain 94(half2x3) 40 95
ReturnValue 91
97: 6(float) Load 96
98: 6(float) FAdd 90 97
99: 12(fvec4) CompositeConstruct 98 98 98 98
ReturnValue 99
FunctionEnd
FunctionEnd
Test/hlsl.type.half.frag
View file @
96f65521
...
@@ -7,5 +7,22 @@ float4 main() : SV_Target0
...
@@ -7,5 +7,22 @@ float4 main() : SV_Target0
half3
h3
=
3
;
half3
h3
=
3
;
half4
h4
=
4
;
half4
h4
=
4
;
return
0
.
0
;
half1x1
h11
;
half1x2
h12
;
half1x3
h13
;
half1x4
h14
;
half2x1
h21
;
half2x2
h22
=
half2x2
(
1
,
2
,
3
,
4
);
half2x3
h23
=
(
half2x3
)
4
.
9
;
half2x4
h24
;
half3x1
h31
;
half3x2
h32
;
half3x3
h33
;
half3x4
h34
;
half4x1
h41
;
half4x2
h42
;
half4x3
h43
;
half4x4
h44
;
return
h23
.
_11
+
h4
.
y
+
h0
;
}
}
Test/hlsl.type.identifier.frag
View file @
96f65521
...
@@ -24,5 +24,7 @@ float4 main() : SV_Target0
...
@@ -24,5 +24,7 @@ float4 main() : SV_Target0
float
=
float
+
int
+
uint
+
min16float
+
min10float
+
(
bool
[
0
]
?
int
:
float
)
+
fn
(
float
);
float
=
float
+
int
+
uint
+
min16float
+
min10float
+
(
bool
[
0
]
?
int
:
float
)
+
fn
(
float
);
return
float
;
half2x3
half2x3
;
return
float
+
half2x3
.
_11
;
}
}
hlsl/hlslGrammar.cpp
View file @
96f65521
...
@@ -111,6 +111,22 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
...
@@ -111,6 +111,22 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken)
switch
(
peek
())
{
switch
(
peek
())
{
case
EHTokSample
:
idString
=
NewPoolTString
(
"sample"
);
break
;
case
EHTokSample
:
idString
=
NewPoolTString
(
"sample"
);
break
;
case
EHTokHalf
:
idString
=
NewPoolTString
(
"half"
);
break
;
case
EHTokHalf
:
idString
=
NewPoolTString
(
"half"
);
break
;
case
EHTokHalf1x1
:
idString
=
NewPoolTString
(
"half1x1"
);
break
;
case
EHTokHalf1x2
:
idString
=
NewPoolTString
(
"half1x2"
);
break
;
case
EHTokHalf1x3
:
idString
=
NewPoolTString
(
"half1x3"
);
break
;
case
EHTokHalf1x4
:
idString
=
NewPoolTString
(
"half1x4"
);
break
;
case
EHTokHalf2x1
:
idString
=
NewPoolTString
(
"half2x1"
);
break
;
case
EHTokHalf2x2
:
idString
=
NewPoolTString
(
"half2x2"
);
break
;
case
EHTokHalf2x3
:
idString
=
NewPoolTString
(
"half2x3"
);
break
;
case
EHTokHalf2x4
:
idString
=
NewPoolTString
(
"half2x4"
);
break
;
case
EHTokHalf3x1
:
idString
=
NewPoolTString
(
"half3x1"
);
break
;
case
EHTokHalf3x2
:
idString
=
NewPoolTString
(
"half3x2"
);
break
;
case
EHTokHalf3x3
:
idString
=
NewPoolTString
(
"half3x3"
);
break
;
case
EHTokHalf3x4
:
idString
=
NewPoolTString
(
"half3x4"
);
break
;
case
EHTokHalf4x1
:
idString
=
NewPoolTString
(
"half4x1"
);
break
;
case
EHTokHalf4x2
:
idString
=
NewPoolTString
(
"half4x2"
);
break
;
case
EHTokHalf4x3
:
idString
=
NewPoolTString
(
"half4x3"
);
break
;
case
EHTokHalf4x4
:
idString
=
NewPoolTString
(
"half4x4"
);
break
;
case
EHTokBool
:
idString
=
NewPoolTString
(
"bool"
);
break
;
case
EHTokBool
:
idString
=
NewPoolTString
(
"bool"
);
break
;
case
EHTokFloat
:
idString
=
NewPoolTString
(
"float"
);
break
;
case
EHTokFloat
:
idString
=
NewPoolTString
(
"float"
);
break
;
case
EHTokDouble
:
idString
=
NewPoolTString
(
"double"
);
break
;
case
EHTokDouble
:
idString
=
NewPoolTString
(
"double"
);
break
;
...
@@ -1479,20 +1495,20 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
...
@@ -1479,20 +1495,20 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
break
;
break
;
case
EHTokHalf
:
case
EHTokHalf
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
EpqMedium
);
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
);
break
;
break
;
case
EHTokHalf1
:
case
EHTokHalf1
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
EpqMedium
);
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
);
type
.
makeVector
();
type
.
makeVector
();
break
;
break
;
case
EHTokHalf2
:
case
EHTokHalf2
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
EpqMedium
,
2
);
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
2
);
break
;
break
;
case
EHTokHalf3
:
case
EHTokHalf3
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
EpqMedium
,
3
);
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
3
);
break
;
break
;
case
EHTokHalf4
:
case
EHTokHalf4
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
EpqMedium
,
4
);
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
4
);
break
;
break
;
case
EHTokMin16float
:
case
EHTokMin16float
:
...
@@ -1776,6 +1792,55 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
...
@@ -1776,6 +1792,55 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList)
new
(
&
type
)
TType
(
EbtFloat
,
EvqTemporary
,
0
,
4
,
4
);
new
(
&
type
)
TType
(
EbtFloat
,
EvqTemporary
,
0
,
4
,
4
);
break
;
break
;
case
EHTokHalf1x1
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
1
,
1
);
break
;
case
EHTokHalf1x2
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
1
,
2
);
break
;
case
EHTokHalf1x3
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
1
,
3
);
break
;
case
EHTokHalf1x4
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
1
,
4
);
break
;
case
EHTokHalf2x1
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
2
,
1
);
break
;
case
EHTokHalf2x2
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
2
,
2
);
break
;
case
EHTokHalf2x3
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
2
,
3
);
break
;
case
EHTokHalf2x4
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
2
,
4
);
break
;
case
EHTokHalf3x1
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
3
,
1
);
break
;
case
EHTokHalf3x2
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
3
,
2
);
break
;
case
EHTokHalf3x3
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
3
,
3
);
break
;
case
EHTokHalf3x4
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
3
,
4
);
break
;
case
EHTokHalf4x1
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
4
,
1
);
break
;
case
EHTokHalf4x2
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
4
,
2
);
break
;
case
EHTokHalf4x3
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
4
,
3
);
break
;
case
EHTokHalf4x4
:
new
(
&
type
)
TType
(
half_bt
,
EvqTemporary
,
0
,
4
,
4
);
break
;
case
EHTokDouble1x1
:
case
EHTokDouble1x1
:
new
(
&
type
)
TType
(
EbtDouble
,
EvqTemporary
,
0
,
1
,
1
);
new
(
&
type
)
TType
(
EbtDouble
,
EvqTemporary
,
0
,
1
,
1
);
break
;
break
;
...
...
hlsl/hlslScanContext.cpp
View file @
96f65521
...
@@ -279,6 +279,22 @@ void HlslScanContext::fillInKeywordMap()
...
@@ -279,6 +279,22 @@ void HlslScanContext::fillInKeywordMap()
(
*
KeywordMap
)[
"float4x2"
]
=
EHTokFloat4x2
;
(
*
KeywordMap
)[
"float4x2"
]
=
EHTokFloat4x2
;
(
*
KeywordMap
)[
"float4x3"
]
=
EHTokFloat4x3
;
(
*
KeywordMap
)[
"float4x3"
]
=
EHTokFloat4x3
;
(
*
KeywordMap
)[
"float4x4"
]
=
EHTokFloat4x4
;
(
*
KeywordMap
)[
"float4x4"
]
=
EHTokFloat4x4
;
(
*
KeywordMap
)[
"half1x1"
]
=
EHTokHalf1x1
;
(
*
KeywordMap
)[
"half1x2"
]
=
EHTokHalf1x2
;
(
*
KeywordMap
)[
"half1x3"
]
=
EHTokHalf1x3
;
(
*
KeywordMap
)[
"half1x4"
]
=
EHTokHalf1x4
;
(
*
KeywordMap
)[
"half2x1"
]
=
EHTokHalf2x1
;
(
*
KeywordMap
)[
"half2x2"
]
=
EHTokHalf2x2
;
(
*
KeywordMap
)[
"half2x3"
]
=
EHTokHalf2x3
;
(
*
KeywordMap
)[
"half2x4"
]
=
EHTokHalf2x4
;
(
*
KeywordMap
)[
"half3x1"
]
=
EHTokHalf3x1
;
(
*
KeywordMap
)[
"half3x2"
]
=
EHTokHalf3x2
;
(
*
KeywordMap
)[
"half3x3"
]
=
EHTokHalf3x3
;
(
*
KeywordMap
)[
"half3x4"
]
=
EHTokHalf3x4
;
(
*
KeywordMap
)[
"half4x1"
]
=
EHTokHalf4x1
;
(
*
KeywordMap
)[
"half4x2"
]
=
EHTokHalf4x2
;
(
*
KeywordMap
)[
"half4x3"
]
=
EHTokHalf4x3
;
(
*
KeywordMap
)[
"half4x4"
]
=
EHTokHalf4x4
;
(
*
KeywordMap
)[
"double1x1"
]
=
EHTokDouble1x1
;
(
*
KeywordMap
)[
"double1x1"
]
=
EHTokDouble1x1
;
(
*
KeywordMap
)[
"double1x2"
]
=
EHTokDouble1x2
;
(
*
KeywordMap
)[
"double1x2"
]
=
EHTokDouble1x2
;
(
*
KeywordMap
)[
"double1x3"
]
=
EHTokDouble1x3
;
(
*
KeywordMap
)[
"double1x3"
]
=
EHTokDouble1x3
;
...
@@ -773,6 +789,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
...
@@ -773,6 +789,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
case
EHTokFloat4x2
:
case
EHTokFloat4x2
:
case
EHTokFloat4x3
:
case
EHTokFloat4x3
:
case
EHTokFloat4x4
:
case
EHTokFloat4x4
:
case
EHTokHalf1x1
:
case
EHTokHalf1x2
:
case
EHTokHalf1x3
:
case
EHTokHalf1x4
:
case
EHTokHalf2x1
:
case
EHTokHalf2x2
:
case
EHTokHalf2x3
:
case
EHTokHalf2x4
:
case
EHTokHalf3x1
:
case
EHTokHalf3x2
:
case
EHTokHalf3x3
:
case
EHTokHalf3x4
:
case
EHTokHalf4x1
:
case
EHTokHalf4x2
:
case
EHTokHalf4x3
:
case
EHTokHalf4x4
:
case
EHTokDouble1x1
:
case
EHTokDouble1x1
:
case
EHTokDouble1x2
:
case
EHTokDouble1x2
:
case
EHTokDouble1x3
:
case
EHTokDouble1x3
:
...
...
hlsl/hlslTokens.h
View file @
96f65521
...
@@ -216,6 +216,22 @@ enum EHlslTokenClass {
...
@@ -216,6 +216,22 @@ enum EHlslTokenClass {
EHTokFloat4x2
,
EHTokFloat4x2
,
EHTokFloat4x3
,
EHTokFloat4x3
,
EHTokFloat4x4
,
EHTokFloat4x4
,
EHTokHalf1x1
,
EHTokHalf1x2
,
EHTokHalf1x3
,
EHTokHalf1x4
,
EHTokHalf2x1
,
EHTokHalf2x2
,
EHTokHalf2x3
,
EHTokHalf2x4
,
EHTokHalf3x1
,
EHTokHalf3x2
,
EHTokHalf3x3
,
EHTokHalf3x4
,
EHTokHalf4x1
,
EHTokHalf4x2
,
EHTokHalf4x3
,
EHTokHalf4x4
,
EHTokDouble1x1
,
EHTokDouble1x1
,
EHTokDouble1x2
,
EHTokDouble1x2
,
EHTokDouble1x3
,
EHTokDouble1x3
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment