HLSL: Implement half matrices, and map all half* -> float*.

This commit is contained in:
John Kessenich 2017-06-06 23:35:25 -06:00
parent f6deacd579
commit 96f65521b4
7 changed files with 311 additions and 75 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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()
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:

View File

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