HLSL: Add shape conversions for scalar -> vector assigments.

Also, this allows turning on the error check for a failed assigment
when parsing.

This makes 39 HLSL tests have a working assignment that was previously
silently dropped, due to lack of this functionality.
This commit is contained in:
John Kessenich 2016-07-28 17:53:56 -06:00
parent a26a5170a3
commit fea226ba43
46 changed files with 2571 additions and 1413 deletions

View file

@ -23,6 +23,16 @@ gl_FragCoord origin is upper left
0:30 textureFetch (global 4-component vector of uint)
0:30 'g_tTexbu4' (uniform usamplerBuffer)
0:30 'c1' (uniform int)
0:34 move second child to first child (temp 4-component vector of float)
0:34 Color: direct index for structure (temp 4-component vector of float)
0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1.000000
0:34 1.000000
0:34 1.000000
0:34 1.000000
0:35 move second child to first child (temp float)
0:35 Depth: direct index for structure (temp float FragDepth)
0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
@ -74,6 +84,16 @@ gl_FragCoord origin is upper left
0:30 textureFetch (global 4-component vector of uint)
0:30 'g_tTexbu4' (uniform usamplerBuffer)
0:30 'c1' (uniform int)
0:34 move second child to first child (temp 4-component vector of float)
0:34 Color: direct index for structure (temp 4-component vector of float)
0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1.000000
0:34 1.000000
0:34 1.000000
0:34 1.000000
0:35 move second child to first child (temp float)
0:35 Depth: direct index for structure (temp float FragDepth)
0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
@ -99,7 +119,7 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 66
// Id's are bound by 69
Capability Shader
Capability SampledBuffer
@ -120,19 +140,19 @@ gl_FragCoord origin is upper left
MemberName 44(PS_OUTPUT) 0 "Color"
MemberName 44(PS_OUTPUT) 1 "Depth"
Name 46 "psout"
Name 53 "g_tTexbf4_test"
Name 56 "c2"
Name 59 "c3"
Name 61 "c4"
Name 62 "o1"
Name 63 "o2"
Name 64 "o3"
Name 65 "o4"
Name 56 "g_tTexbf4_test"
Name 59 "c2"
Name 62 "c3"
Name 64 "c4"
Name 65 "o1"
Name 66 "o2"
Name 67 "o3"
Name 68 "o4"
Decorate 13(g_tTexbf4) DescriptorSet 0
Decorate 27(g_tTexbi4) DescriptorSet 0
Decorate 39(g_tTexbu4) DescriptorSet 0
MemberDecorate 44(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 53(g_tTexbf4_test) DescriptorSet 0
Decorate 56(g_tTexbf4_test) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -160,22 +180,24 @@ gl_FragCoord origin is upper left
39(g_tTexbu4): 38(ptr) Variable UniformConstant
44(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
45: TypePointer Function 44(PS_OUTPUT)
47: 15(int) Constant 1
47: 15(int) Constant 0
48: 6(float) Constant 1065353216
49: TypePointer Function 6(float)
53(g_tTexbf4_test): 12(ptr) Variable UniformConstant
54: TypeVector 15(int) 2
55: TypePointer UniformConstant 54(ivec2)
56(c2): 55(ptr) Variable UniformConstant
57: TypeVector 15(int) 3
58: TypePointer UniformConstant 57(ivec3)
59(c3): 58(ptr) Variable UniformConstant
60: TypePointer UniformConstant 21(ivec4)
61(c4): 60(ptr) Variable UniformConstant
62(o1): 16(ptr) Variable UniformConstant
63(o2): 55(ptr) Variable UniformConstant
64(o3): 58(ptr) Variable UniformConstant
65(o4): 60(ptr) Variable UniformConstant
49: 7(fvec4) ConstantComposite 48 48 48 48
51: 15(int) Constant 1
52: TypePointer Function 6(float)
56(g_tTexbf4_test): 12(ptr) Variable UniformConstant
57: TypeVector 15(int) 2
58: TypePointer UniformConstant 57(ivec2)
59(c2): 58(ptr) Variable UniformConstant
60: TypeVector 15(int) 3
61: TypePointer UniformConstant 60(ivec3)
62(c3): 61(ptr) Variable UniformConstant
63: TypePointer UniformConstant 21(ivec4)
64(c4): 63(ptr) Variable UniformConstant
65(o1): 16(ptr) Variable UniformConstant
66(o2): 58(ptr) Variable UniformConstant
67(o3): 61(ptr) Variable UniformConstant
68(o4): 63(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
@ -197,8 +219,10 @@ gl_FragCoord origin is upper left
42: 36 Image 40
43: 33(ivec4) ImageFetch 42 41
Store 35(r02) 43
50: 49(ptr) AccessChain 46(psout) 47
Store 50 48
51:44(PS_OUTPUT) Load 46(psout)
ReturnValue 51
50: 8(ptr) AccessChain 46(psout) 47
Store 50 49
53: 52(ptr) AccessChain 46(psout) 51
Store 53 48
54:44(PS_OUTPUT) Load 46(psout)
ReturnValue 54
FunctionEnd