HLSL: Add SampleLevel method
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
new file mode 100644
index 0000000..f7a6903
--- /dev/null
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -0,0 +1,483 @@
+hlsl.samplelevel.array.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Parameters:
+0:? Sequence
+0:27 Sequence
+0:27 move second child to first child (temp 4-component vector of float)
+0:27 'txval10' (temp 4-component vector of float)
+0:27 textureLod (global 4-component vector of float)
+0:27 Construct combined texture-sampler (temp sampler1DArray)
+0:27 'g_tTex1df4' (uniform texture1DArray)
+0:27 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:27 Constant:
+0:27 0.750000
+0:28 Sequence
+0:28 move second child to first child (temp 4-component vector of int)
+0:28 'txval11' (temp 4-component vector of int)
+0:28 textureLod (global 4-component vector of int)
+0:28 Construct combined texture-sampler (temp isampler1DArray)
+0:28 'g_tTex1di4' (uniform itexture1DArray)
+0:28 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:28 Constant:
+0:28 0.750000
+0:29 Sequence
+0:29 move second child to first child (temp 4-component vector of uint)
+0:29 'txval12' (temp 4-component vector of uint)
+0:29 textureLod (global 4-component vector of uint)
+0:29 Construct combined texture-sampler (temp usampler1DArray)
+0:29 'g_tTex1du4' (uniform utexture1DArray)
+0:29 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:29 Constant:
+0:29 0.750000
+0:31 Sequence
+0:31 move second child to first child (temp 4-component vector of float)
+0:31 'txval20' (temp 4-component vector of float)
+0:31 textureLod (global 4-component vector of float)
+0:31 Construct combined texture-sampler (temp sampler2DArray)
+0:31 'g_tTex2df4' (uniform texture2DArray)
+0:31 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:? 0.300000
+0:31 Constant:
+0:31 0.750000
+0:32 Sequence
+0:32 move second child to first child (temp 4-component vector of int)
+0:32 'txval21' (temp 4-component vector of int)
+0:32 textureLod (global 4-component vector of int)
+0:32 Construct combined texture-sampler (temp isampler2DArray)
+0:32 'g_tTex2di4' (uniform itexture2DArray)
+0:32 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:? 0.500000
+0:32 Constant:
+0:32 0.750000
+0:33 Sequence
+0:33 move second child to first child (temp 4-component vector of uint)
+0:33 'txval22' (temp 4-component vector of uint)
+0:33 textureLod (global 4-component vector of uint)
+0:33 Construct combined texture-sampler (temp usampler2DArray)
+0:33 'g_tTex2du4' (uniform utexture2DArray)
+0:33 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.500000
+0:? 0.600000
+0:? 0.700000
+0:33 Constant:
+0:33 0.750000
+0:35 Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:35 'txval40' (temp 4-component vector of float)
+0:35 textureLod (global 4-component vector of float)
+0:35 Construct combined texture-sampler (temp samplerCubeArray)
+0:35 'g_tTexcdf4' (uniform textureCubeArray)
+0:35 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:? 0.300000
+0:? 0.400000
+0:35 Constant:
+0:35 0.750000
+0:36 Sequence
+0:36 move second child to first child (temp 4-component vector of int)
+0:36 'txval41' (temp 4-component vector of int)
+0:36 textureLod (global 4-component vector of int)
+0:36 Construct combined texture-sampler (temp isamplerCubeArray)
+0:36 'g_tTexcdi4' (uniform itextureCubeArray)
+0:36 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.400000
+0:? 0.500000
+0:? 0.600000
+0:? 0.700000
+0:36 Constant:
+0:36 0.750000
+0:37 Sequence
+0:37 move second child to first child (temp 4-component vector of uint)
+0:37 'txval42' (temp 4-component vector of uint)
+0:37 textureLod (global 4-component vector of uint)
+0:37 Construct combined texture-sampler (temp usamplerCubeArray)
+0:37 'g_tTexcdu4' (uniform utextureCubeArray)
+0:37 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.700000
+0:? 0.800000
+0:? 0.900000
+0:? 1.000000
+0:37 Constant:
+0:37 0.750000
+0:40 move second child to first child (temp float)
+0:40 Depth: direct index for structure (temp float FragDepth)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 1.000000
+0:42 Branch: Return with expression
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Linker Objects
+0:? 'g_sSamp' (uniform sampler)
+0:? 'g_tTex1df4a' (uniform texture1DArray)
+0:? 'g_tTex1df4' (uniform texture1DArray)
+0:? 'g_tTex1di4' (uniform itexture1DArray)
+0:? 'g_tTex1du4' (uniform utexture1DArray)
+0:? 'g_tTex2df4' (uniform texture2DArray)
+0:? 'g_tTex2di4' (uniform itexture2DArray)
+0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'g_tTexcdf4' (uniform textureCubeArray)
+0:? 'g_tTexcdi4' (uniform itextureCubeArray)
+0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Parameters:
+0:? Sequence
+0:27 Sequence
+0:27 move second child to first child (temp 4-component vector of float)
+0:27 'txval10' (temp 4-component vector of float)
+0:27 textureLod (global 4-component vector of float)
+0:27 Construct combined texture-sampler (temp sampler1DArray)
+0:27 'g_tTex1df4' (uniform texture1DArray)
+0:27 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:27 Constant:
+0:27 0.750000
+0:28 Sequence
+0:28 move second child to first child (temp 4-component vector of int)
+0:28 'txval11' (temp 4-component vector of int)
+0:28 textureLod (global 4-component vector of int)
+0:28 Construct combined texture-sampler (temp isampler1DArray)
+0:28 'g_tTex1di4' (uniform itexture1DArray)
+0:28 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.200000
+0:? 0.300000
+0:28 Constant:
+0:28 0.750000
+0:29 Sequence
+0:29 move second child to first child (temp 4-component vector of uint)
+0:29 'txval12' (temp 4-component vector of uint)
+0:29 textureLod (global 4-component vector of uint)
+0:29 Construct combined texture-sampler (temp usampler1DArray)
+0:29 'g_tTex1du4' (uniform utexture1DArray)
+0:29 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:29 Constant:
+0:29 0.750000
+0:31 Sequence
+0:31 move second child to first child (temp 4-component vector of float)
+0:31 'txval20' (temp 4-component vector of float)
+0:31 textureLod (global 4-component vector of float)
+0:31 Construct combined texture-sampler (temp sampler2DArray)
+0:31 'g_tTex2df4' (uniform texture2DArray)
+0:31 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:? 0.300000
+0:31 Constant:
+0:31 0.750000
+0:32 Sequence
+0:32 move second child to first child (temp 4-component vector of int)
+0:32 'txval21' (temp 4-component vector of int)
+0:32 textureLod (global 4-component vector of int)
+0:32 Construct combined texture-sampler (temp isampler2DArray)
+0:32 'g_tTex2di4' (uniform itexture2DArray)
+0:32 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.300000
+0:? 0.400000
+0:? 0.500000
+0:32 Constant:
+0:32 0.750000
+0:33 Sequence
+0:33 move second child to first child (temp 4-component vector of uint)
+0:33 'txval22' (temp 4-component vector of uint)
+0:33 textureLod (global 4-component vector of uint)
+0:33 Construct combined texture-sampler (temp usampler2DArray)
+0:33 'g_tTex2du4' (uniform utexture2DArray)
+0:33 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.500000
+0:? 0.600000
+0:? 0.700000
+0:33 Constant:
+0:33 0.750000
+0:35 Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:35 'txval40' (temp 4-component vector of float)
+0:35 textureLod (global 4-component vector of float)
+0:35 Construct combined texture-sampler (temp samplerCubeArray)
+0:35 'g_tTexcdf4' (uniform textureCubeArray)
+0:35 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.100000
+0:? 0.200000
+0:? 0.300000
+0:? 0.400000
+0:35 Constant:
+0:35 0.750000
+0:36 Sequence
+0:36 move second child to first child (temp 4-component vector of int)
+0:36 'txval41' (temp 4-component vector of int)
+0:36 textureLod (global 4-component vector of int)
+0:36 Construct combined texture-sampler (temp isamplerCubeArray)
+0:36 'g_tTexcdi4' (uniform itextureCubeArray)
+0:36 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.400000
+0:? 0.500000
+0:? 0.600000
+0:? 0.700000
+0:36 Constant:
+0:36 0.750000
+0:37 Sequence
+0:37 move second child to first child (temp 4-component vector of uint)
+0:37 'txval42' (temp 4-component vector of uint)
+0:37 textureLod (global 4-component vector of uint)
+0:37 Construct combined texture-sampler (temp usamplerCubeArray)
+0:37 'g_tTexcdu4' (uniform utextureCubeArray)
+0:37 'g_sSamp' (uniform sampler)
+0:? Constant:
+0:? 0.700000
+0:? 0.800000
+0:? 0.900000
+0:? 1.000000
+0:37 Constant:
+0:37 0.750000
+0:40 move second child to first child (temp float)
+0:40 Depth: direct index for structure (temp float FragDepth)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 1.000000
+0:42 Branch: Return with expression
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Linker Objects
+0:? 'g_sSamp' (uniform sampler)
+0:? 'g_tTex1df4a' (uniform texture1DArray)
+0:? 'g_tTex1df4' (uniform texture1DArray)
+0:? 'g_tTex1di4' (uniform itexture1DArray)
+0:? 'g_tTex1du4' (uniform utexture1DArray)
+0:? 'g_tTex2df4' (uniform texture2DArray)
+0:? 'g_tTex2di4' (uniform itexture2DArray)
+0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'g_tTexcdf4' (uniform textureCubeArray)
+0:? 'g_tTexcdi4' (uniform itextureCubeArray)
+0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 130
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledCubeArray
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 9 "txval10"
+ Name 12 "g_tTex1df4"
+ Name 16 "g_sSamp"
+ Name 29 "txval11"
+ Name 32 "g_tTex1di4"
+ Name 43 "txval12"
+ Name 46 "g_tTex1du4"
+ Name 54 "txval20"
+ Name 57 "g_tTex2df4"
+ Name 65 "txval21"
+ Name 68 "g_tTex2di4"
+ Name 76 "txval22"
+ Name 79 "g_tTex2du4"
+ Name 88 "txval40"
+ Name 91 "g_tTexcdf4"
+ Name 98 "txval41"
+ Name 101 "g_tTexcdi4"
+ Name 108 "txval42"
+ Name 111 "g_tTexcdu4"
+ Name 121 "PS_OUTPUT"
+ MemberName 121(PS_OUTPUT) 0 "Color"
+ MemberName 121(PS_OUTPUT) 1 "Depth"
+ Name 123 "psout"
+ Name 129 "g_tTex1df4a"
+ Decorate 12(g_tTex1df4) DescriptorSet 0
+ Decorate 16(g_sSamp) DescriptorSet 0
+ Decorate 32(g_tTex1di4) DescriptorSet 0
+ Decorate 46(g_tTex1du4) DescriptorSet 0
+ Decorate 57(g_tTex2df4) DescriptorSet 0
+ Decorate 68(g_tTex2di4) DescriptorSet 0
+ Decorate 79(g_tTex2du4) DescriptorSet 0
+ Decorate 91(g_tTexcdf4) DescriptorSet 0
+ Decorate 101(g_tTexcdi4) DescriptorSet 0
+ Decorate 111(g_tTexcdu4) DescriptorSet 0
+ MemberDecorate 121(PS_OUTPUT) 1 BuiltIn FragDepth
+ Decorate 129(g_tTex1df4a) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: TypeImage 6(float) 1D array sampled format:Unknown
+ 11: TypePointer UniformConstant 10
+ 12(g_tTex1df4): 11(ptr) Variable UniformConstant
+ 14: TypeSampler
+ 15: TypePointer UniformConstant 14
+ 16(g_sSamp): 15(ptr) Variable UniformConstant
+ 18: TypeSampledImage 10
+ 20: TypeVector 6(float) 2
+ 21: 6(float) Constant 1036831949
+ 22: 6(float) Constant 1045220557
+ 23: 20(fvec2) ConstantComposite 21 22
+ 24: 6(float) Constant 1061158912
+ 26: TypeInt 32 1
+ 27: TypeVector 26(int) 4
+ 28: TypePointer Function 27(ivec4)
+ 30: TypeImage 26(int) 1D array sampled format:Unknown
+ 31: TypePointer UniformConstant 30
+ 32(g_tTex1di4): 31(ptr) Variable UniformConstant
+ 35: TypeSampledImage 30
+ 37: 6(float) Constant 1050253722
+ 38: 20(fvec2) ConstantComposite 22 37
+ 40: TypeInt 32 0
+ 41: TypeVector 40(int) 4
+ 42: TypePointer Function 41(ivec4)
+ 44: TypeImage 40(int) 1D array sampled format:Unknown
+ 45: TypePointer UniformConstant 44
+ 46(g_tTex1du4): 45(ptr) Variable UniformConstant
+ 49: TypeSampledImage 44
+ 51: 6(float) Constant 1053609165
+ 52: 20(fvec2) ConstantComposite 37 51
+ 55: TypeImage 6(float) 2D array sampled format:Unknown
+ 56: TypePointer UniformConstant 55
+ 57(g_tTex2df4): 56(ptr) Variable UniformConstant
+ 60: TypeSampledImage 55
+ 62: TypeVector 6(float) 3
+ 63: 62(fvec3) ConstantComposite 21 22 37
+ 66: TypeImage 26(int) 2D array sampled format:Unknown
+ 67: TypePointer UniformConstant 66
+ 68(g_tTex2di4): 67(ptr) Variable UniformConstant
+ 71: TypeSampledImage 66
+ 73: 6(float) Constant 1056964608
+ 74: 62(fvec3) ConstantComposite 37 51 73
+ 77: TypeImage 40(int) 2D array sampled format:Unknown
+ 78: TypePointer UniformConstant 77
+ 79(g_tTex2du4): 78(ptr) Variable UniformConstant
+ 82: TypeSampledImage 77
+ 84: 6(float) Constant 1058642330
+ 85: 6(float) Constant 1060320051
+ 86: 62(fvec3) ConstantComposite 73 84 85
+ 89: TypeImage 6(float) Cube array sampled format:Unknown
+ 90: TypePointer UniformConstant 89
+ 91(g_tTexcdf4): 90(ptr) Variable UniformConstant
+ 94: TypeSampledImage 89
+ 96: 7(fvec4) ConstantComposite 21 22 37 51
+ 99: TypeImage 26(int) Cube array sampled format:Unknown
+ 100: TypePointer UniformConstant 99
+ 101(g_tTexcdi4): 100(ptr) Variable UniformConstant
+ 104: TypeSampledImage 99
+ 106: 7(fvec4) ConstantComposite 51 73 84 85
+ 109: TypeImage 40(int) Cube array sampled format:Unknown
+ 110: TypePointer UniformConstant 109
+ 111(g_tTexcdu4): 110(ptr) Variable UniformConstant
+ 114: TypeSampledImage 109
+ 116: 6(float) Constant 1061997773
+ 117: 6(float) Constant 1063675494
+ 118: 6(float) Constant 1065353216
+ 119: 7(fvec4) ConstantComposite 85 116 117 118
+ 121(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
+ 122: TypePointer Function 121(PS_OUTPUT)
+ 124: 26(int) Constant 1
+ 125: TypePointer Function 6(float)
+129(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(txval10): 8(ptr) Variable Function
+ 29(txval11): 28(ptr) Variable Function
+ 43(txval12): 42(ptr) Variable Function
+ 54(txval20): 8(ptr) Variable Function
+ 65(txval21): 28(ptr) Variable Function
+ 76(txval22): 42(ptr) Variable Function
+ 88(txval40): 8(ptr) Variable Function
+ 98(txval41): 28(ptr) Variable Function
+ 108(txval42): 42(ptr) Variable Function
+ 123(psout): 122(ptr) Variable Function
+ 13: 10 Load 12(g_tTex1df4)
+ 17: 14 Load 16(g_sSamp)
+ 19: 18 SampledImage 13 17
+ 25: 7(fvec4) ImageSampleExplicitLod 19 23 Lod 24
+ Store 9(txval10) 25
+ 33: 30 Load 32(g_tTex1di4)
+ 34: 14 Load 16(g_sSamp)
+ 36: 35 SampledImage 33 34
+ 39: 27(ivec4) ImageSampleExplicitLod 36 38 Lod 24
+ Store 29(txval11) 39
+ 47: 44 Load 46(g_tTex1du4)
+ 48: 14 Load 16(g_sSamp)
+ 50: 49 SampledImage 47 48
+ 53: 41(ivec4) ImageSampleExplicitLod 50 52 Lod 24
+ Store 43(txval12) 53
+ 58: 55 Load 57(g_tTex2df4)
+ 59: 14 Load 16(g_sSamp)
+ 61: 60 SampledImage 58 59
+ 64: 7(fvec4) ImageSampleExplicitLod 61 63 Lod 24
+ Store 54(txval20) 64
+ 69: 66 Load 68(g_tTex2di4)
+ 70: 14 Load 16(g_sSamp)
+ 72: 71 SampledImage 69 70
+ 75: 27(ivec4) ImageSampleExplicitLod 72 74 Lod 24
+ Store 65(txval21) 75
+ 80: 77 Load 79(g_tTex2du4)
+ 81: 14 Load 16(g_sSamp)
+ 83: 82 SampledImage 80 81
+ 87: 41(ivec4) ImageSampleExplicitLod 83 86 Lod 24
+ Store 76(txval22) 87
+ 92: 89 Load 91(g_tTexcdf4)
+ 93: 14 Load 16(g_sSamp)
+ 95: 94 SampledImage 92 93
+ 97: 7(fvec4) ImageSampleExplicitLod 95 96 Lod 24
+ Store 88(txval40) 97
+ 102: 99 Load 101(g_tTexcdi4)
+ 103: 14 Load 16(g_sSamp)
+ 105: 104 SampledImage 102 103
+ 107: 27(ivec4) ImageSampleExplicitLod 105 106 Lod 24
+ Store 98(txval41) 107
+ 112: 109 Load 111(g_tTexcdu4)
+ 113: 14 Load 16(g_sSamp)
+ 115: 114 SampledImage 112 113
+ 120: 41(ivec4) ImageSampleExplicitLod 115 119 Lod 24
+ Store 108(txval42) 120
+ 126: 125(ptr) AccessChain 123(psout) 124
+ Store 126 118
+ 127:121(PS_OUTPUT) Load 123(psout)
+ ReturnValue 127
+ FunctionEnd