glslang/Test/baseResults/hlsl.array.implicit-size.frag.out
steve-lunarg 265c0618b1 HLSL: allow implicit array sizing.
In HLSL array sizes need not be provided explicitly in all circumstances.
For example, this is valid (note no number between the [ ]):

  // no explicit array size
  uniform float g_array[] = { 1, 2, 3, 4, 5 };

This PR does not attempt to validate most invalid cases.

A new test is added to verify the resulting linker objects.
2016-09-27 14:28:26 -06:00

265 lines
11 KiB
Plaintext

hlsl.array.implicit-size.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void)
0:26 Function Parameters:
0:26 'ps_output' (out structure{temp 4-component vector of float color})
0:? Sequence
0:28 Sequence
0:28 move second child to first child (temp 3-element array of float)
0:28 'l_array' (temp 3-element array of float)
0:28 Constant:
0:28 1.000000
0:28 2.000000
0:28 3.000000
0:30 move second child to first child (temp 4-component vector of float)
0:30 color: direct index for structure (temp 4-component vector of float)
0:30 'ps_output' (out structure{temp 4-component vector of float color})
0:30 Constant:
0:30 0 (const int)
0:30 Construct vec4 (temp 4-component vector of float)
0:30 add (temp float)
0:30 add (temp float)
0:30 add (temp float)
0:30 add (temp float)
0:30 direct index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 Constant:
0:30 0 (const int)
0:30 direct index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 Constant:
0:30 4 (const int)
0:30 direct index (temp float)
0:30 'l_array' (temp 3-element array of float)
0:30 Constant:
0:30 1 (const int)
0:30 f: direct index for structure (temp float)
0:30 direct index (temp structure{temp int i, temp float f})
0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f})
0:30 1 (const int)
0:30 2.000000
0:30 3 (const int)
0:30 4.000000
0:30 Constant:
0:30 0 (const int)
0:30 Constant:
0:30 1 (const int)
0:30 indirect index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 'idx' (temp void)
0:? Linker Objects
0:? 'g_array' (uniform 5-element array of float)
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 'g_array_unused' (uniform 7-element array of float)
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f})
0:? 1 (const int)
0:? 2.000000
0:? 3 (const int)
0:? 4.000000
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (global void)
0:26 Function Parameters:
0:26 'ps_output' (out structure{temp 4-component vector of float color})
0:? Sequence
0:28 Sequence
0:28 move second child to first child (temp 3-element array of float)
0:28 'l_array' (temp 3-element array of float)
0:28 Constant:
0:28 1.000000
0:28 2.000000
0:28 3.000000
0:30 move second child to first child (temp 4-component vector of float)
0:30 color: direct index for structure (temp 4-component vector of float)
0:30 'ps_output' (out structure{temp 4-component vector of float color})
0:30 Constant:
0:30 0 (const int)
0:30 Construct vec4 (temp 4-component vector of float)
0:30 add (temp float)
0:30 add (temp float)
0:30 add (temp float)
0:30 add (temp float)
0:30 direct index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 Constant:
0:30 0 (const int)
0:30 direct index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 Constant:
0:30 4 (const int)
0:30 direct index (temp float)
0:30 'l_array' (temp 3-element array of float)
0:30 Constant:
0:30 1 (const int)
0:30 f: direct index for structure (temp float)
0:30 direct index (temp structure{temp int i, temp float f})
0:30 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f})
0:30 1 (const int)
0:30 2.000000
0:30 3 (const int)
0:30 4.000000
0:30 Constant:
0:30 0 (const int)
0:30 Constant:
0:30 1 (const int)
0:30 indirect index (temp float)
0:30 'g_array' (uniform 5-element array of float)
0:30 1.000000
0:30 2.000000
0:30 3.000000
0:30 4.000000
0:30 5.000000
0:30 'idx' (temp void)
0:? Linker Objects
0:? 'g_array' (uniform 5-element array of float)
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 'g_array_unused' (uniform 7-element array of float)
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:? 5.000000
0:? 6.000000
0:? 7.000000
0:? 'g_mystruct' (uniform 2-element array of structure{temp int i, temp float f})
0:? 1 (const int)
0:? 2.000000
0:? 3 (const int)
0:? 4.000000
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 62
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
Name 4 "PixelShaderFunction"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "color"
Name 12 "main(struct-PS_OUTPUT-vf41;"
Name 11 "ps_output"
Name 18 "l_array"
Name 28 "g_array"
Name 41 "mystruct"
MemberName 41(mystruct) 0 "i"
MemberName 41(mystruct) 1 "f"
Name 45 "g_mystruct"
Name 50 "idx"
Name 61 "g_array_unused"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4)
9: TypePointer Function 8(PS_OUTPUT)
10: TypeFunction 2 9(ptr)
14: TypeInt 32 0
15: 14(int) Constant 3
16: TypeArray 6(float) 15
17: TypePointer Function 16
19: 6(float) Constant 1065353216
20: 6(float) Constant 1073741824
21: 6(float) Constant 1077936128
22: 16 ConstantComposite 19 20 21
23: TypeInt 32 1
24: 23(int) Constant 0
25: 14(int) Constant 5
26: TypeArray 6(float) 25
27: TypePointer UniformConstant 26
28(g_array): 27(ptr) Variable UniformConstant
29: TypePointer UniformConstant 6(float)
32: 23(int) Constant 4
36: 23(int) Constant 1
37: TypePointer Function 6(float)
41(mystruct): TypeStruct 23(int) 6(float)
42: 14(int) Constant 2
43: TypeArray 41(mystruct) 42
44: TypePointer UniformConstant 43
45(g_mystruct): 44(ptr) Variable UniformConstant
49: TypePointer Function 2
56: TypePointer Function 7(fvec4)
58: 14(int) Constant 7
59: TypeArray 6(float) 58
60: TypePointer UniformConstant 59
61(g_array_unused): 60(ptr) Variable UniformConstant
4(PixelShaderFunction): 2 Function None 3
5: Label
FunctionEnd
12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10
11(ps_output): 9(ptr) FunctionParameter
13: Label
18(l_array): 17(ptr) Variable Function
50(idx): 49(ptr) Variable Function
Store 18(l_array) 22
30: 29(ptr) AccessChain 28(g_array) 24
31: 6(float) Load 30
33: 29(ptr) AccessChain 28(g_array) 32
34: 6(float) Load 33
35: 6(float) FAdd 31 34
38: 37(ptr) AccessChain 18(l_array) 36
39: 6(float) Load 38
40: 6(float) FAdd 35 39
46: 29(ptr) AccessChain 45(g_mystruct) 24 36
47: 6(float) Load 46
48: 6(float) FAdd 40 47
51: 2 Load 50(idx)
52: 29(ptr) AccessChain 28(g_array) 51
53: 6(float) Load 52
54: 6(float) FAdd 48 53
55: 7(fvec4) CompositeConstruct 54 54 54 54
57: 56(ptr) AccessChain 11(ps_output) 24
Store 57 55
Return
FunctionEnd