From 592e8f0441dacb65cbf308ee858f64e8e5092e4e Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 6 Oct 2017 21:01:07 -0600 Subject: [PATCH] HLSL: Tests: Add subset of flattened opaque test to legalize results. --- .../hlsl.flattenSubset.frag.out | 48 ++++ Test/baseResults/hlsl.flattenSubset.frag.out | 243 ++++++++++-------- Test/hlsl.flattenSubset.frag | 6 +- gtests/Hlsl.FromFile.cpp | 3 +- 4 files changed, 192 insertions(+), 108 deletions(-) create mode 100755 Test/baseLegalResults/hlsl.flattenSubset.frag.out diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out new file mode 100755 index 00000000..e073d79d --- /dev/null +++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out @@ -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 diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out index 4bd8e63f..39f69998 100755 --- a/Test/baseResults/hlsl.flattenSubset.frag.out +++ b/Test/baseResults/hlsl.flattenSubset.frag.out @@ -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 diff --git a/Test/hlsl.flattenSubset.frag b/Test/hlsl.flattenSubset.frag index 97fd7e5f..c80e093c 100755 --- a/Test/hlsl.flattenSubset.frag +++ b/Test/hlsl.flattenSubset.frag @@ -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)); } diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 50b9bc14..d8ff03a5 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -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 );