HLSL: Tests: Add subset of flattened opaque test to legalize results.

This commit is contained in:
John Kessenich 2017-10-06 21:01:07 -06:00
parent 908813c25d
commit 592e8f0441
4 changed files with 192 additions and 108 deletions

View File

@ -0,0 +1,48 @@
hlsl.flattenSubset.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 85
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 54 57
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 17 "samp"
Name 41 "tex"
Name 54 "vpos"
Name 57 "@entryPointOutput"
Decorate 17(samp) DescriptorSet 0
Decorate 41(tex) DescriptorSet 0
Decorate 54(vpos) Location 0
Decorate 57(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
13: TypeSampler
16: TypePointer UniformConstant 13
17(samp): 16(ptr) Variable UniformConstant
39: TypeImage 6(float) 2D sampled format:Unknown
40: TypePointer UniformConstant 39
41(tex): 40(ptr) Variable UniformConstant
44: TypeSampledImage 39
46: TypeVector 6(float) 2
47: 6(float) Constant 1056964608
48: 46(fvec2) ConstantComposite 47 47
53: TypePointer Input 7(fvec4)
54(vpos): 53(ptr) Variable Input
56: TypePointer Output 7(fvec4)
57(@entryPointOutput): 56(ptr) Variable Output
4(main): 2 Function None 3
5: Label
74: 13 Load 17(samp)
81: 39 Load 41(tex)
83: 44 SampledImage 81 74
84: 7(fvec4) ImageSampleImplicitLod 83 48
Store 57(@entryPointOutput) 84
Return
FunctionEnd

View File

@ -3,46 +3,53 @@ WARNING: AST will form illegal SPIR-V; need to transform to legalize
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:27 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:27 Function Parameters:
0:27 'vpos' ( in 4-component vector of float)
0:30 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:30 Function Parameters:
0:30 'vpos' ( in 4-component vector of float)
0:? Sequence
0:30 Sequence
0:30 move second child to first child ( temp float)
0:33 move second child to first child ( temp sampler)
0:? 's1.s0.ss' ( temp sampler)
0:33 'samp' ( uniform sampler)
0:34 Sequence
0:34 move second child to first child ( temp float)
0:? 's2.resources.b' ( temp float)
0:? 's1.b' ( temp float)
0:30 move second child to first child ( temp sampler)
0:34 move second child to first child ( temp sampler)
0:? 's2.resources.samplerState' ( temp sampler)
0:? 's1.samplerState' ( temp sampler)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.s0.x' ( temp int)
0:? 's1.s0.x' ( temp int)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.s0.y' ( temp int)
0:? 's1.s0.y' ( temp int)
0:30 move second child to first child ( temp sampler)
0:34 move second child to first child ( temp sampler)
0:? 's2.resources.s0.ss' ( temp sampler)
0:? 's1.s0.ss' ( temp sampler)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.a' ( temp int)
0:? 's1.a' ( temp int)
0:31 Branch: Return with expression
0:? Constant:
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:27 Function Definition: main( ( temp void)
0:27 Function Parameters:
0:35 Branch: Return with expression
0:35 texture ( temp 4-component vector of float)
0:35 Construct combined texture-sampler ( temp sampler2D)
0:35 'tex' ( uniform texture2D)
0:? 's2.resources.s0.ss' ( temp sampler)
0:35 Constant:
0:35 0.500000
0:35 0.500000
0:30 Function Definition: main( ( temp void)
0:30 Function Parameters:
0:? Sequence
0:27 move second child to first child ( temp 4-component vector of float)
0:30 move second child to first child ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? 'vpos' (layout( location=0) in 4-component vector of float)
0:27 move second child to first child ( temp 4-component vector of float)
0:30 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:27 Function Call: @main(vf4; ( temp 4-component vector of float)
0:30 Function Call: @main(vf4; ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'samp' ( uniform sampler)
0:? 'tex' ( uniform texture2D)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'vpos' (layout( location=0) in 4-component vector of float)
@ -53,135 +60,159 @@ Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:27 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:27 Function Parameters:
0:27 'vpos' ( in 4-component vector of float)
0:30 Function Definition: @main(vf4; ( temp 4-component vector of float)
0:30 Function Parameters:
0:30 'vpos' ( in 4-component vector of float)
0:? Sequence
0:30 Sequence
0:30 move second child to first child ( temp float)
0:33 move second child to first child ( temp sampler)
0:? 's1.s0.ss' ( temp sampler)
0:33 'samp' ( uniform sampler)
0:34 Sequence
0:34 move second child to first child ( temp float)
0:? 's2.resources.b' ( temp float)
0:? 's1.b' ( temp float)
0:30 move second child to first child ( temp sampler)
0:34 move second child to first child ( temp sampler)
0:? 's2.resources.samplerState' ( temp sampler)
0:? 's1.samplerState' ( temp sampler)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.s0.x' ( temp int)
0:? 's1.s0.x' ( temp int)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.s0.y' ( temp int)
0:? 's1.s0.y' ( temp int)
0:30 move second child to first child ( temp sampler)
0:34 move second child to first child ( temp sampler)
0:? 's2.resources.s0.ss' ( temp sampler)
0:? 's1.s0.ss' ( temp sampler)
0:30 move second child to first child ( temp int)
0:34 move second child to first child ( temp int)
0:? 's2.resources.a' ( temp int)
0:? 's1.a' ( temp int)
0:31 Branch: Return with expression
0:? Constant:
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:? 0.000000
0:27 Function Definition: main( ( temp void)
0:27 Function Parameters:
0:35 Branch: Return with expression
0:35 texture ( temp 4-component vector of float)
0:35 Construct combined texture-sampler ( temp sampler2D)
0:35 'tex' ( uniform texture2D)
0:? 's2.resources.s0.ss' ( temp sampler)
0:35 Constant:
0:35 0.500000
0:35 0.500000
0:30 Function Definition: main( ( temp void)
0:30 Function Parameters:
0:? Sequence
0:27 move second child to first child ( temp 4-component vector of float)
0:30 move second child to first child ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? 'vpos' (layout( location=0) in 4-component vector of float)
0:27 move second child to first child ( temp 4-component vector of float)
0:30 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:27 Function Call: @main(vf4; ( temp 4-component vector of float)
0:30 Function Call: @main(vf4; ( temp 4-component vector of float)
0:? 'vpos' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'samp' ( uniform sampler)
0:? 'tex' ( uniform texture2D)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'vpos' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 49
// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 42 45
EntryPoint Fragment 4 "main" 54 57
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 11 "@main(vf4;"
Name 10 "vpos"
Name 14 "s2.resources.b"
Name 15 "s1.b"
Name 19 "s2.resources.samplerState"
Name 20 "s1.samplerState"
Name 24 "s2.resources.s0.x"
Name 25 "s1.s0.x"
Name 27 "s2.resources.s0.y"
Name 28 "s1.s0.y"
Name 30 "s2.resources.s0.ss"
Name 31 "s1.s0.ss"
Name 33 "s2.resources.a"
Name 34 "s1.a"
Name 40 "vpos"
Name 42 "vpos"
Name 45 "@entryPointOutput"
Name 46 "param"
Decorate 42(vpos) Location 0
Decorate 45(@entryPointOutput) Location 0
Name 15 "s1.s0.ss"
Name 17 "samp"
Name 20 "s2.resources.b"
Name 21 "s1.b"
Name 23 "s2.resources.samplerState"
Name 24 "s1.samplerState"
Name 28 "s2.resources.s0.x"
Name 29 "s1.s0.x"
Name 31 "s2.resources.s0.y"
Name 32 "s1.s0.y"
Name 34 "s2.resources.s0.ss"
Name 36 "s2.resources.a"
Name 37 "s1.a"
Name 41 "tex"
Name 52 "vpos"
Name 54 "vpos"
Name 57 "@entryPointOutput"
Name 58 "param"
Decorate 17(samp) DescriptorSet 0
Decorate 41(tex) DescriptorSet 0
Decorate 54(vpos) Location 0
Decorate 57(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
13: TypePointer Function 6(float)
17: TypeSampler
18: TypePointer Function 17
22: TypeInt 32 1
23: TypePointer Function 22(int)
36: 6(float) Constant 0
37: 7(fvec4) ConstantComposite 36 36 36 36
41: TypePointer Input 7(fvec4)
42(vpos): 41(ptr) Variable Input
44: TypePointer Output 7(fvec4)
45(@entryPointOutput): 44(ptr) Variable Output
13: TypeSampler
14: TypePointer Function 13
16: TypePointer UniformConstant 13
17(samp): 16(ptr) Variable UniformConstant
19: TypePointer Function 6(float)
26: TypeInt 32 1
27: TypePointer Function 26(int)
39: TypeImage 6(float) 2D sampled format:Unknown
40: TypePointer UniformConstant 39
41(tex): 40(ptr) Variable UniformConstant
44: TypeSampledImage 39
46: TypeVector 6(float) 2
47: 6(float) Constant 1056964608
48: 46(fvec2) ConstantComposite 47 47
53: TypePointer Input 7(fvec4)
54(vpos): 53(ptr) Variable Input
56: TypePointer Output 7(fvec4)
57(@entryPointOutput): 56(ptr) Variable Output
4(main): 2 Function None 3
5: Label
40(vpos): 8(ptr) Variable Function
46(param): 8(ptr) Variable Function
43: 7(fvec4) Load 42(vpos)
Store 40(vpos) 43
47: 7(fvec4) Load 40(vpos)
Store 46(param) 47
48: 7(fvec4) FunctionCall 11(@main(vf4;) 46(param)
Store 45(@entryPointOutput) 48
52(vpos): 8(ptr) Variable Function
58(param): 8(ptr) Variable Function
55: 7(fvec4) Load 54(vpos)
Store 52(vpos) 55
59: 7(fvec4) Load 52(vpos)
Store 58(param) 59
60: 7(fvec4) FunctionCall 11(@main(vf4;) 58(param)
Store 57(@entryPointOutput) 60
Return
FunctionEnd
11(@main(vf4;): 7(fvec4) Function None 9
10(vpos): 8(ptr) FunctionParameter
12: Label
14(s2.resources.b): 13(ptr) Variable Function
15(s1.b): 13(ptr) Variable Function
19(s2.resources.samplerState): 18(ptr) Variable Function
20(s1.samplerState): 18(ptr) Variable Function
24(s2.resources.s0.x): 23(ptr) Variable Function
25(s1.s0.x): 23(ptr) Variable Function
27(s2.resources.s0.y): 23(ptr) Variable Function
28(s1.s0.y): 23(ptr) Variable Function
30(s2.resources.s0.ss): 18(ptr) Variable Function
31(s1.s0.ss): 18(ptr) Variable Function
33(s2.resources.a): 23(ptr) Variable Function
34(s1.a): 23(ptr) Variable Function
16: 6(float) Load 15(s1.b)
Store 14(s2.resources.b) 16
21: 17 Load 20(s1.samplerState)
Store 19(s2.resources.samplerState) 21
26: 22(int) Load 25(s1.s0.x)
Store 24(s2.resources.s0.x) 26
29: 22(int) Load 28(s1.s0.y)
Store 27(s2.resources.s0.y) 29
32: 17 Load 31(s1.s0.ss)
Store 30(s2.resources.s0.ss) 32
35: 22(int) Load 34(s1.a)
Store 33(s2.resources.a) 35
ReturnValue 37
15(s1.s0.ss): 14(ptr) Variable Function
20(s2.resources.b): 19(ptr) Variable Function
21(s1.b): 19(ptr) Variable Function
23(s2.resources.samplerState): 14(ptr) Variable Function
24(s1.samplerState): 14(ptr) Variable Function
28(s2.resources.s0.x): 27(ptr) Variable Function
29(s1.s0.x): 27(ptr) Variable Function
31(s2.resources.s0.y): 27(ptr) Variable Function
32(s1.s0.y): 27(ptr) Variable Function
34(s2.resources.s0.ss): 14(ptr) Variable Function
36(s2.resources.a): 27(ptr) Variable Function
37(s1.a): 27(ptr) Variable Function
18: 13 Load 17(samp)
Store 15(s1.s0.ss) 18
22: 6(float) Load 21(s1.b)
Store 20(s2.resources.b) 22
25: 13 Load 24(s1.samplerState)
Store 23(s2.resources.samplerState) 25
30: 26(int) Load 29(s1.s0.x)
Store 28(s2.resources.s0.x) 30
33: 26(int) Load 32(s1.s0.y)
Store 31(s2.resources.s0.y) 33
35: 13 Load 15(s1.s0.ss)
Store 34(s2.resources.s0.ss) 35
38: 26(int) Load 37(s1.a)
Store 36(s2.resources.a) 38
42: 39 Load 41(tex)
43: 13 Load 34(s2.resources.s0.ss)
45: 44 SampledImage 42 43
49: 7(fvec4) ImageSampleImplicitLod 45 48
ReturnValue 49
FunctionEnd

View File

@ -23,10 +23,14 @@ struct S2
S1 resources;
};
SamplerState samp;
Texture2D tex;
float4 main(float4 vpos : VPOS) : COLOR0
{
S1 s1;
S2 s2;
s1.s0.ss = samp;
s2.resources = s1;
return float4(0,0,0,0);
return tex.Sample(s2.resources.s0.ss, float2(0.5));
}

View File

@ -379,7 +379,8 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.aliasOpaque.frag", "main"},
{"hlsl.flattenOpaque.frag", "main"},
{"hlsl.flattenOpaqueInit.vert", "main"},
{"hlsl.flattenOpaqueInitMix.vert", "main"}
{"hlsl.flattenOpaqueInitMix.vert", "main"},
{"hlsl.flattenSubset.frag", "main"}
}),
FileNameAsCustomTestSuffix
);