HLSL: Add SampleLevel method
authorLoopDawg <nospam@nowhere.net>
Thu, 21 Jul 2016 21:02:16 +0000 (15:02 -0600)
committerLoopDawg <nospam@nowhere.net>
Thu, 21 Jul 2016 21:02:30 +0000 (15:02 -0600)
13 files changed:
Test/baseResults/hlsl.samplelevel.array.dx10.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out [new file with mode: 0644]
Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out [new file with mode: 0644]
Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out [new file with mode: 0644]
Test/hlsl.samplelevel.array.dx10.frag [new file with mode: 0644]
Test/hlsl.samplelevel.basic.dx10.frag [new file with mode: 0644]
Test/hlsl.samplelevel.basic.dx10.vert [new file with mode: 0644]
Test/hlsl.samplelevel.offset.dx10.frag [new file with mode: 0644]
Test/hlsl.samplelevel.offsetarray.dx10.frag [new file with mode: 0644]
gtests/Hlsl.FromFile.cpp
hlsl/hlslParseHelper.cpp
hlsl/hlslParseables.cpp

diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
new file mode 100644 (file)
index 0000000..f7a6903
--- /dev/null
@@ -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
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
new file mode 100644 (file)
index 0000000..38089d1
--- /dev/null
@@ -0,0 +1,589 @@
+hlsl.samplelevel.basic.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:53  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29    Function Parameters: 
+0:?     Sequence
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of float)
+0:32          'txval10' (temp 4-component vector of float)
+0:32          textureLod (global 4-component vector of float)
+0:32            Construct combined texture-sampler (temp sampler1D)
+0:32              'g_tTex1df4' (uniform texture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.100000
+0:32            Constant:
+0:32              0.750000
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of int)
+0:33          'txval11' (temp 4-component vector of int)
+0:33          textureLod (global 4-component vector of int)
+0:33            Construct combined texture-sampler (temp isampler1D)
+0:33              'g_tTex1di4' (uniform itexture1D)
+0:33              'g_sSamp' (uniform sampler)
+0:33            Constant:
+0:33              0.200000
+0:33            Constant:
+0:33              0.750000
+0:34      Sequence
+0:34        move second child to first child (temp 4-component vector of uint)
+0:34          'txval12' (temp 4-component vector of uint)
+0:34          textureLod (global 4-component vector of uint)
+0:34            Construct combined texture-sampler (temp usampler1D)
+0:34              'g_tTex1du4' (uniform utexture1D)
+0:34              'g_sSamp' (uniform sampler)
+0:34            Constant:
+0:34              0.300000
+0:34            Constant:
+0:34              0.750000
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of float)
+0:36          'txval20' (temp 4-component vector of float)
+0:36          textureLod (global 4-component vector of float)
+0:36            Construct combined texture-sampler (temp sampler2D)
+0:36              'g_tTex2df4' (uniform texture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:36            Constant:
+0:36              0.750000
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of int)
+0:37          'txval21' (temp 4-component vector of int)
+0:37          textureLod (global 4-component vector of int)
+0:37            Construct combined texture-sampler (temp isampler2D)
+0:37              'g_tTex2di4' (uniform itexture2D)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:37            Constant:
+0:37              0.750000
+0:38      Sequence
+0:38        move second child to first child (temp 4-component vector of uint)
+0:38          'txval22' (temp 4-component vector of uint)
+0:38          textureLod (global 4-component vector of uint)
+0:38            Construct combined texture-sampler (temp usampler2D)
+0:38              'g_tTex2du4' (uniform utexture2D)
+0:38              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:38            Constant:
+0:38              0.750000
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of float)
+0:40          'txval30' (temp 4-component vector of float)
+0:40          textureLod (global 4-component vector of float)
+0:40            Construct combined texture-sampler (temp sampler3D)
+0:40              'g_tTex3df4' (uniform texture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:40            Constant:
+0:40              0.750000
+0:41      Sequence
+0:41        move second child to first child (temp 4-component vector of int)
+0:41          'txval31' (temp 4-component vector of int)
+0:41          textureLod (global 4-component vector of int)
+0:41            Construct combined texture-sampler (temp isampler3D)
+0:41              'g_tTex3di4' (uniform itexture3D)
+0:41              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:41            Constant:
+0:41              0.750000
+0:42      Sequence
+0:42        move second child to first child (temp 4-component vector of uint)
+0:42          'txval32' (temp 4-component vector of uint)
+0:42          textureLod (global 4-component vector of uint)
+0:42            Construct combined texture-sampler (temp usampler3D)
+0:42              'g_tTex3du4' (uniform utexture3D)
+0:42              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:42            Constant:
+0:42              0.750000
+0:44      Sequence
+0:44        move second child to first child (temp 4-component vector of float)
+0:44          'txval40' (temp 4-component vector of float)
+0:44          textureLod (global 4-component vector of float)
+0:44            Construct combined texture-sampler (temp samplerCube)
+0:44              'g_tTexcdf4' (uniform textureCube)
+0:44              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:44            Constant:
+0:44              0.750000
+0:45      Sequence
+0:45        move second child to first child (temp 4-component vector of int)
+0:45          'txval41' (temp 4-component vector of int)
+0:45          textureLod (global 4-component vector of int)
+0:45            Construct combined texture-sampler (temp isamplerCube)
+0:45              'g_tTexcdi4' (uniform itextureCube)
+0:45              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:45            Constant:
+0:45              0.750000
+0:46      Sequence
+0:46        move second child to first child (temp 4-component vector of uint)
+0:46          'txval42' (temp 4-component vector of uint)
+0:46          textureLod (global 4-component vector of uint)
+0:46            Construct combined texture-sampler (temp usamplerCube)
+0:46              'g_tTexcdu4' (uniform utextureCube)
+0:46              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:46            Constant:
+0:46              0.750000
+0:49      move second child to first child (temp float)
+0:49        Depth: direct index for structure (temp float FragDepth)
+0:49          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:49          Constant:
+0:49            1 (const int)
+0:49        Constant:
+0:49          1.000000
+0:51      Branch: Return with expression
+0:51        'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_sSamp2d' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:53  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29    Function Parameters: 
+0:?     Sequence
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of float)
+0:32          'txval10' (temp 4-component vector of float)
+0:32          textureLod (global 4-component vector of float)
+0:32            Construct combined texture-sampler (temp sampler1D)
+0:32              'g_tTex1df4' (uniform texture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.100000
+0:32            Constant:
+0:32              0.750000
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of int)
+0:33          'txval11' (temp 4-component vector of int)
+0:33          textureLod (global 4-component vector of int)
+0:33            Construct combined texture-sampler (temp isampler1D)
+0:33              'g_tTex1di4' (uniform itexture1D)
+0:33              'g_sSamp' (uniform sampler)
+0:33            Constant:
+0:33              0.200000
+0:33            Constant:
+0:33              0.750000
+0:34      Sequence
+0:34        move second child to first child (temp 4-component vector of uint)
+0:34          'txval12' (temp 4-component vector of uint)
+0:34          textureLod (global 4-component vector of uint)
+0:34            Construct combined texture-sampler (temp usampler1D)
+0:34              'g_tTex1du4' (uniform utexture1D)
+0:34              'g_sSamp' (uniform sampler)
+0:34            Constant:
+0:34              0.300000
+0:34            Constant:
+0:34              0.750000
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of float)
+0:36          'txval20' (temp 4-component vector of float)
+0:36          textureLod (global 4-component vector of float)
+0:36            Construct combined texture-sampler (temp sampler2D)
+0:36              'g_tTex2df4' (uniform texture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:36            Constant:
+0:36              0.750000
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of int)
+0:37          'txval21' (temp 4-component vector of int)
+0:37          textureLod (global 4-component vector of int)
+0:37            Construct combined texture-sampler (temp isampler2D)
+0:37              'g_tTex2di4' (uniform itexture2D)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:37            Constant:
+0:37              0.750000
+0:38      Sequence
+0:38        move second child to first child (temp 4-component vector of uint)
+0:38          'txval22' (temp 4-component vector of uint)
+0:38          textureLod (global 4-component vector of uint)
+0:38            Construct combined texture-sampler (temp usampler2D)
+0:38              'g_tTex2du4' (uniform utexture2D)
+0:38              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:38            Constant:
+0:38              0.750000
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of float)
+0:40          'txval30' (temp 4-component vector of float)
+0:40          textureLod (global 4-component vector of float)
+0:40            Construct combined texture-sampler (temp sampler3D)
+0:40              'g_tTex3df4' (uniform texture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:40            Constant:
+0:40              0.750000
+0:41      Sequence
+0:41        move second child to first child (temp 4-component vector of int)
+0:41          'txval31' (temp 4-component vector of int)
+0:41          textureLod (global 4-component vector of int)
+0:41            Construct combined texture-sampler (temp isampler3D)
+0:41              'g_tTex3di4' (uniform itexture3D)
+0:41              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:41            Constant:
+0:41              0.750000
+0:42      Sequence
+0:42        move second child to first child (temp 4-component vector of uint)
+0:42          'txval32' (temp 4-component vector of uint)
+0:42          textureLod (global 4-component vector of uint)
+0:42            Construct combined texture-sampler (temp usampler3D)
+0:42              'g_tTex3du4' (uniform utexture3D)
+0:42              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:42            Constant:
+0:42              0.750000
+0:44      Sequence
+0:44        move second child to first child (temp 4-component vector of float)
+0:44          'txval40' (temp 4-component vector of float)
+0:44          textureLod (global 4-component vector of float)
+0:44            Construct combined texture-sampler (temp samplerCube)
+0:44              'g_tTexcdf4' (uniform textureCube)
+0:44              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:44            Constant:
+0:44              0.750000
+0:45      Sequence
+0:45        move second child to first child (temp 4-component vector of int)
+0:45          'txval41' (temp 4-component vector of int)
+0:45          textureLod (global 4-component vector of int)
+0:45            Construct combined texture-sampler (temp isamplerCube)
+0:45              'g_tTexcdi4' (uniform itextureCube)
+0:45              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:45            Constant:
+0:45              0.750000
+0:46      Sequence
+0:46        move second child to first child (temp 4-component vector of uint)
+0:46          'txval42' (temp 4-component vector of uint)
+0:46          textureLod (global 4-component vector of uint)
+0:46            Construct combined texture-sampler (temp usamplerCube)
+0:46              'g_tTexcdu4' (uniform utextureCube)
+0:46              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:46            Constant:
+0:46              0.750000
+0:49      move second child to first child (temp float)
+0:49        Depth: direct index for structure (temp float FragDepth)
+0:49          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:49          Constant:
+0:49            1 (const int)
+0:49        Constant:
+0:49          1.000000
+0:51      Branch: Return with expression
+0:51        'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_sSamp2d' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 155
+
+                              Capability Shader
+                              Capability Sampled1D
+               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 26  "txval11"
+                              Name 29  "g_tTex1di4"
+                              Name 39  "txval12"
+                              Name 42  "g_tTex1du4"
+                              Name 49  "txval20"
+                              Name 52  "g_tTex2df4"
+                              Name 60  "txval21"
+                              Name 63  "g_tTex2di4"
+                              Name 71  "txval22"
+                              Name 74  "g_tTex2du4"
+                              Name 83  "txval30"
+                              Name 86  "g_tTex3df4"
+                              Name 94  "txval31"
+                              Name 97  "g_tTex3di4"
+                              Name 104  "txval32"
+                              Name 107  "g_tTex3du4"
+                              Name 117  "txval40"
+                              Name 120  "g_tTexcdf4"
+                              Name 126  "txval41"
+                              Name 129  "g_tTexcdi4"
+                              Name 135  "txval42"
+                              Name 138  "g_tTexcdu4"
+                              Name 144  "PS_OUTPUT"
+                              MemberName 144(PS_OUTPUT) 0  "Color"
+                              MemberName 144(PS_OUTPUT) 1  "Depth"
+                              Name 146  "psout"
+                              Name 153  "g_sSamp2d"
+                              Name 154  "g_tTex1df4a"
+                              Decorate 12(g_tTex1df4) DescriptorSet 0
+                              Decorate 16(g_sSamp) DescriptorSet 0
+                              Decorate 29(g_tTex1di4) DescriptorSet 0
+                              Decorate 42(g_tTex1du4) DescriptorSet 0
+                              Decorate 52(g_tTex2df4) DescriptorSet 0
+                              Decorate 63(g_tTex2di4) DescriptorSet 0
+                              Decorate 74(g_tTex2du4) DescriptorSet 0
+                              Decorate 86(g_tTex3df4) DescriptorSet 0
+                              Decorate 97(g_tTex3di4) DescriptorSet 0
+                              Decorate 107(g_tTex3du4) DescriptorSet 0
+                              Decorate 120(g_tTexcdf4) DescriptorSet 0
+                              Decorate 129(g_tTexcdi4) DescriptorSet 0
+                              Decorate 138(g_tTexcdu4) DescriptorSet 0
+                              MemberDecorate 144(PS_OUTPUT) 1 BuiltIn FragDepth
+                              Decorate 153(g_sSamp2d) DescriptorSet 0
+                              Decorate 154(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 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:    6(float) Constant 1036831949
+              21:    6(float) Constant 1061158912
+              23:             TypeInt 32 1
+              24:             TypeVector 23(int) 4
+              25:             TypePointer Function 24(ivec4)
+              27:             TypeImage 23(int) 1D sampled format:Unknown
+              28:             TypePointer UniformConstant 27
+  29(g_tTex1di4):     28(ptr) Variable UniformConstant
+              32:             TypeSampledImage 27
+              34:    6(float) Constant 1045220557
+              36:             TypeInt 32 0
+              37:             TypeVector 36(int) 4
+              38:             TypePointer Function 37(ivec4)
+              40:             TypeImage 36(int) 1D sampled format:Unknown
+              41:             TypePointer UniformConstant 40
+  42(g_tTex1du4):     41(ptr) Variable UniformConstant
+              45:             TypeSampledImage 40
+              47:    6(float) Constant 1050253722
+              50:             TypeImage 6(float) 2D sampled format:Unknown
+              51:             TypePointer UniformConstant 50
+  52(g_tTex2df4):     51(ptr) Variable UniformConstant
+              55:             TypeSampledImage 50
+              57:             TypeVector 6(float) 2
+              58:   57(fvec2) ConstantComposite 20 34
+              61:             TypeImage 23(int) 2D sampled format:Unknown
+              62:             TypePointer UniformConstant 61
+  63(g_tTex2di4):     62(ptr) Variable UniformConstant
+              66:             TypeSampledImage 61
+              68:    6(float) Constant 1053609165
+              69:   57(fvec2) ConstantComposite 47 68
+              72:             TypeImage 36(int) 2D sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+  74(g_tTex2du4):     73(ptr) Variable UniformConstant
+              77:             TypeSampledImage 72
+              79:    6(float) Constant 1056964608
+              80:    6(float) Constant 1058642330
+              81:   57(fvec2) ConstantComposite 79 80
+              84:             TypeImage 6(float) 3D sampled format:Unknown
+              85:             TypePointer UniformConstant 84
+  86(g_tTex3df4):     85(ptr) Variable UniformConstant
+              89:             TypeSampledImage 84
+              91:             TypeVector 6(float) 3
+              92:   91(fvec3) ConstantComposite 20 34 47
+              95:             TypeImage 23(int) 3D sampled format:Unknown
+              96:             TypePointer UniformConstant 95
+  97(g_tTex3di4):     96(ptr) Variable UniformConstant
+             100:             TypeSampledImage 95
+             102:   91(fvec3) ConstantComposite 68 79 80
+             105:             TypeImage 36(int) 3D sampled format:Unknown
+             106:             TypePointer UniformConstant 105
+ 107(g_tTex3du4):    106(ptr) Variable UniformConstant
+             110:             TypeSampledImage 105
+             112:    6(float) Constant 1060320051
+             113:    6(float) Constant 1061997773
+             114:    6(float) Constant 1063675494
+             115:   91(fvec3) ConstantComposite 112 113 114
+             118:             TypeImage 6(float) Cube sampled format:Unknown
+             119:             TypePointer UniformConstant 118
+ 120(g_tTexcdf4):    119(ptr) Variable UniformConstant
+             123:             TypeSampledImage 118
+             127:             TypeImage 23(int) Cube sampled format:Unknown
+             128:             TypePointer UniformConstant 127
+ 129(g_tTexcdi4):    128(ptr) Variable UniformConstant
+             132:             TypeSampledImage 127
+             136:             TypeImage 36(int) Cube sampled format:Unknown
+             137:             TypePointer UniformConstant 136
+ 138(g_tTexcdu4):    137(ptr) Variable UniformConstant
+             141:             TypeSampledImage 136
+  144(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             145:             TypePointer Function 144(PS_OUTPUT)
+             147:     23(int) Constant 1
+             148:    6(float) Constant 1065353216
+             149:             TypePointer Function 6(float)
+  153(g_sSamp2d):     15(ptr) Variable UniformConstant
+154(g_tTex1df4a):     11(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+      9(txval10):      8(ptr) Variable Function
+     26(txval11):     25(ptr) Variable Function
+     39(txval12):     38(ptr) Variable Function
+     49(txval20):      8(ptr) Variable Function
+     60(txval21):     25(ptr) Variable Function
+     71(txval22):     38(ptr) Variable Function
+     83(txval30):      8(ptr) Variable Function
+     94(txval31):     25(ptr) Variable Function
+    104(txval32):     38(ptr) Variable Function
+    117(txval40):      8(ptr) Variable Function
+    126(txval41):     25(ptr) Variable Function
+    135(txval42):     38(ptr) Variable Function
+      146(psout):    145(ptr) Variable Function
+              13:          10 Load 12(g_tTex1df4)
+              17:          14 Load 16(g_sSamp)
+              19:          18 SampledImage 13 17
+              22:    7(fvec4) ImageSampleExplicitLod 19 20 Lod 21
+                              Store 9(txval10) 22
+              30:          27 Load 29(g_tTex1di4)
+              31:          14 Load 16(g_sSamp)
+              33:          32 SampledImage 30 31
+              35:   24(ivec4) ImageSampleExplicitLod 33 34 Lod 21
+                              Store 26(txval11) 35
+              43:          40 Load 42(g_tTex1du4)
+              44:          14 Load 16(g_sSamp)
+              46:          45 SampledImage 43 44
+              48:   37(ivec4) ImageSampleExplicitLod 46 47 Lod 21
+                              Store 39(txval12) 48
+              53:          50 Load 52(g_tTex2df4)
+              54:          14 Load 16(g_sSamp)
+              56:          55 SampledImage 53 54
+              59:    7(fvec4) ImageSampleExplicitLod 56 58 Lod 21
+                              Store 49(txval20) 59
+              64:          61 Load 63(g_tTex2di4)
+              65:          14 Load 16(g_sSamp)
+              67:          66 SampledImage 64 65
+              70:   24(ivec4) ImageSampleExplicitLod 67 69 Lod 21
+                              Store 60(txval21) 70
+              75:          72 Load 74(g_tTex2du4)
+              76:          14 Load 16(g_sSamp)
+              78:          77 SampledImage 75 76
+              82:   37(ivec4) ImageSampleExplicitLod 78 81 Lod 21
+                              Store 71(txval22) 82
+              87:          84 Load 86(g_tTex3df4)
+              88:          14 Load 16(g_sSamp)
+              90:          89 SampledImage 87 88
+              93:    7(fvec4) ImageSampleExplicitLod 90 92 Lod 21
+                              Store 83(txval30) 93
+              98:          95 Load 97(g_tTex3di4)
+              99:          14 Load 16(g_sSamp)
+             101:         100 SampledImage 98 99
+             103:   24(ivec4) ImageSampleExplicitLod 101 102 Lod 21
+                              Store 94(txval31) 103
+             108:         105 Load 107(g_tTex3du4)
+             109:          14 Load 16(g_sSamp)
+             111:         110 SampledImage 108 109
+             116:   37(ivec4) ImageSampleExplicitLod 111 115 Lod 21
+                              Store 104(txval32) 116
+             121:         118 Load 120(g_tTexcdf4)
+             122:          14 Load 16(g_sSamp)
+             124:         123 SampledImage 121 122
+             125:    7(fvec4) ImageSampleExplicitLod 124 92 Lod 21
+                              Store 117(txval40) 125
+             130:         127 Load 129(g_tTexcdi4)
+             131:          14 Load 16(g_sSamp)
+             133:         132 SampledImage 130 131
+             134:   24(ivec4) ImageSampleExplicitLod 133 102 Lod 21
+                              Store 126(txval41) 134
+             139:         136 Load 138(g_tTexcdu4)
+             140:          14 Load 16(g_sSamp)
+             142:         141 SampledImage 139 140
+             143:   37(ivec4) ImageSampleExplicitLod 142 115 Lod 21
+                              Store 135(txval42) 143
+             150:    149(ptr) AccessChain 146(psout) 147
+                              Store 150 148
+             151:144(PS_OUTPUT) Load 146(psout)
+                              ReturnValue 151
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
new file mode 100644 (file)
index 0000000..b8b5902
--- /dev/null
@@ -0,0 +1,586 @@
+hlsl.samplelevel.basic.dx10.vert
+Shader version: 450
+0:? Sequence
+0:50  Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27    Function Parameters: 
+0:?     Sequence
+0:30      Sequence
+0:30        move second child to first child (temp 4-component vector of float)
+0:30          'txval10' (temp 4-component vector of float)
+0:30          textureLod (global 4-component vector of float)
+0:30            Construct combined texture-sampler (temp sampler1D)
+0:30              'g_tTex1df4' (uniform texture1D)
+0:30              'g_sSamp' (uniform sampler)
+0:30            Constant:
+0:30              0.100000
+0:30            Constant:
+0:30              0.750000
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of int)
+0:31          'txval11' (temp 4-component vector of int)
+0:31          textureLod (global 4-component vector of int)
+0:31            Construct combined texture-sampler (temp isampler1D)
+0:31              'g_tTex1di4' (uniform itexture1D)
+0:31              'g_sSamp' (uniform sampler)
+0:31            Constant:
+0:31              0.200000
+0:31            Constant:
+0:31              0.750000
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of uint)
+0:32          'txval12' (temp 4-component vector of uint)
+0:32          textureLod (global 4-component vector of uint)
+0:32            Construct combined texture-sampler (temp usampler1D)
+0:32              'g_tTex1du4' (uniform utexture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.300000
+0:32            Constant:
+0:32              0.750000
+0:34      Sequence
+0:34        move second child to first child (temp 4-component vector of float)
+0:34          'txval20' (temp 4-component vector of float)
+0:34          textureLod (global 4-component vector of float)
+0:34            Construct combined texture-sampler (temp sampler2D)
+0:34              'g_tTex2df4' (uniform texture2D)
+0:34              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:34            Constant:
+0:34              0.750000
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of int)
+0:35          'txval21' (temp 4-component vector of int)
+0:35          textureLod (global 4-component vector of int)
+0:35            Construct combined texture-sampler (temp isampler2D)
+0:35              'g_tTex2di4' (uniform itexture2D)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+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 uint)
+0:36          'txval22' (temp 4-component vector of uint)
+0:36          textureLod (global 4-component vector of uint)
+0:36            Construct combined texture-sampler (temp usampler2D)
+0:36              'g_tTex2du4' (uniform utexture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:36            Constant:
+0:36              0.750000
+0:38      Sequence
+0:38        move second child to first child (temp 4-component vector of float)
+0:38          'txval30' (temp 4-component vector of float)
+0:38          textureLod (global 4-component vector of float)
+0:38            Construct combined texture-sampler (temp sampler3D)
+0:38              'g_tTex3df4' (uniform texture3D)
+0:38              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:38            Constant:
+0:38              0.750000
+0:39      Sequence
+0:39        move second child to first child (temp 4-component vector of int)
+0:39          'txval31' (temp 4-component vector of int)
+0:39          textureLod (global 4-component vector of int)
+0:39            Construct combined texture-sampler (temp isampler3D)
+0:39              'g_tTex3di4' (uniform itexture3D)
+0:39              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:39            Constant:
+0:39              0.750000
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of uint)
+0:40          'txval32' (temp 4-component vector of uint)
+0:40          textureLod (global 4-component vector of uint)
+0:40            Construct combined texture-sampler (temp usampler3D)
+0:40              'g_tTex3du4' (uniform utexture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:40            Constant:
+0:40              0.750000
+0:42      Sequence
+0:42        move second child to first child (temp 4-component vector of float)
+0:42          'txval40' (temp 4-component vector of float)
+0:42          textureLod (global 4-component vector of float)
+0:42            Construct combined texture-sampler (temp samplerCube)
+0:42              'g_tTexcdf4' (uniform textureCube)
+0:42              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:42            Constant:
+0:42              0.750000
+0:43      Sequence
+0:43        move second child to first child (temp 4-component vector of int)
+0:43          'txval41' (temp 4-component vector of int)
+0:43          textureLod (global 4-component vector of int)
+0:43            Construct combined texture-sampler (temp isamplerCube)
+0:43              'g_tTexcdi4' (uniform itextureCube)
+0:43              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:43            Constant:
+0:43              0.750000
+0:44      Sequence
+0:44        move second child to first child (temp 4-component vector of uint)
+0:44          'txval42' (temp 4-component vector of uint)
+0:44          textureLod (global 4-component vector of uint)
+0:44            Construct combined texture-sampler (temp usamplerCube)
+0:44              'g_tTexcdu4' (uniform utextureCube)
+0:44              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:44            Constant:
+0:44              0.750000
+0:46      move second child to first child (temp 4-component vector of float)
+0:46        Pos: direct index for structure (temp 4-component vector of float FragCoord)
+0:46          'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46          Constant:
+0:46            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:48      Branch: Return with expression
+0:48        'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+0:? Sequence
+0:50  Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27    Function Parameters: 
+0:?     Sequence
+0:30      Sequence
+0:30        move second child to first child (temp 4-component vector of float)
+0:30          'txval10' (temp 4-component vector of float)
+0:30          textureLod (global 4-component vector of float)
+0:30            Construct combined texture-sampler (temp sampler1D)
+0:30              'g_tTex1df4' (uniform texture1D)
+0:30              'g_sSamp' (uniform sampler)
+0:30            Constant:
+0:30              0.100000
+0:30            Constant:
+0:30              0.750000
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of int)
+0:31          'txval11' (temp 4-component vector of int)
+0:31          textureLod (global 4-component vector of int)
+0:31            Construct combined texture-sampler (temp isampler1D)
+0:31              'g_tTex1di4' (uniform itexture1D)
+0:31              'g_sSamp' (uniform sampler)
+0:31            Constant:
+0:31              0.200000
+0:31            Constant:
+0:31              0.750000
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of uint)
+0:32          'txval12' (temp 4-component vector of uint)
+0:32          textureLod (global 4-component vector of uint)
+0:32            Construct combined texture-sampler (temp usampler1D)
+0:32              'g_tTex1du4' (uniform utexture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.300000
+0:32            Constant:
+0:32              0.750000
+0:34      Sequence
+0:34        move second child to first child (temp 4-component vector of float)
+0:34          'txval20' (temp 4-component vector of float)
+0:34          textureLod (global 4-component vector of float)
+0:34            Construct combined texture-sampler (temp sampler2D)
+0:34              'g_tTex2df4' (uniform texture2D)
+0:34              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:34            Constant:
+0:34              0.750000
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of int)
+0:35          'txval21' (temp 4-component vector of int)
+0:35          textureLod (global 4-component vector of int)
+0:35            Construct combined texture-sampler (temp isampler2D)
+0:35              'g_tTex2di4' (uniform itexture2D)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+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 uint)
+0:36          'txval22' (temp 4-component vector of uint)
+0:36          textureLod (global 4-component vector of uint)
+0:36            Construct combined texture-sampler (temp usampler2D)
+0:36              'g_tTex2du4' (uniform utexture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:36            Constant:
+0:36              0.750000
+0:38      Sequence
+0:38        move second child to first child (temp 4-component vector of float)
+0:38          'txval30' (temp 4-component vector of float)
+0:38          textureLod (global 4-component vector of float)
+0:38            Construct combined texture-sampler (temp sampler3D)
+0:38              'g_tTex3df4' (uniform texture3D)
+0:38              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:38            Constant:
+0:38              0.750000
+0:39      Sequence
+0:39        move second child to first child (temp 4-component vector of int)
+0:39          'txval31' (temp 4-component vector of int)
+0:39          textureLod (global 4-component vector of int)
+0:39            Construct combined texture-sampler (temp isampler3D)
+0:39              'g_tTex3di4' (uniform itexture3D)
+0:39              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:39            Constant:
+0:39              0.750000
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of uint)
+0:40          'txval32' (temp 4-component vector of uint)
+0:40          textureLod (global 4-component vector of uint)
+0:40            Construct combined texture-sampler (temp usampler3D)
+0:40              'g_tTex3du4' (uniform utexture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:40            Constant:
+0:40              0.750000
+0:42      Sequence
+0:42        move second child to first child (temp 4-component vector of float)
+0:42          'txval40' (temp 4-component vector of float)
+0:42          textureLod (global 4-component vector of float)
+0:42            Construct combined texture-sampler (temp samplerCube)
+0:42              'g_tTexcdf4' (uniform textureCube)
+0:42              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:42            Constant:
+0:42              0.750000
+0:43      Sequence
+0:43        move second child to first child (temp 4-component vector of int)
+0:43          'txval41' (temp 4-component vector of int)
+0:43          textureLod (global 4-component vector of int)
+0:43            Construct combined texture-sampler (temp isamplerCube)
+0:43              'g_tTexcdi4' (uniform itextureCube)
+0:43              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:43            Constant:
+0:43              0.750000
+0:44      Sequence
+0:44        move second child to first child (temp 4-component vector of uint)
+0:44          'txval42' (temp 4-component vector of uint)
+0:44          textureLod (global 4-component vector of uint)
+0:44            Construct combined texture-sampler (temp usamplerCube)
+0:44              'g_tTexcdu4' (uniform utextureCube)
+0:44              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:44            Constant:
+0:44              0.750000
+0:46      move second child to first child (temp 4-component vector of float)
+0:46        Pos: direct index for structure (temp 4-component vector of float FragCoord)
+0:46          'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46          Constant:
+0:46            0 (const int)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:?           0.000000
+0:48      Branch: Return with expression
+0:48        'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:?   Linker Objects
+0:?     'g_sSamp' (uniform sampler)
+0:?     'g_tTex1df4a' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 154
+
+                              Capability Shader
+                              Capability Sampled1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main"
+                              Source HLSL 450
+                              Name 4  "main"
+                              Name 9  "txval10"
+                              Name 12  "g_tTex1df4"
+                              Name 16  "g_sSamp"
+                              Name 26  "txval11"
+                              Name 29  "g_tTex1di4"
+                              Name 39  "txval12"
+                              Name 42  "g_tTex1du4"
+                              Name 49  "txval20"
+                              Name 52  "g_tTex2df4"
+                              Name 60  "txval21"
+                              Name 63  "g_tTex2di4"
+                              Name 71  "txval22"
+                              Name 74  "g_tTex2du4"
+                              Name 83  "txval30"
+                              Name 86  "g_tTex3df4"
+                              Name 94  "txval31"
+                              Name 97  "g_tTex3di4"
+                              Name 104  "txval32"
+                              Name 107  "g_tTex3du4"
+                              Name 117  "txval40"
+                              Name 120  "g_tTexcdf4"
+                              Name 126  "txval41"
+                              Name 129  "g_tTexcdi4"
+                              Name 135  "txval42"
+                              Name 138  "g_tTexcdu4"
+                              Name 144  "VS_OUTPUT"
+                              MemberName 144(VS_OUTPUT) 0  "Pos"
+                              Name 146  "vsout"
+                              Name 153  "g_tTex1df4a"
+                              Decorate 12(g_tTex1df4) DescriptorSet 0
+                              Decorate 16(g_sSamp) DescriptorSet 0
+                              Decorate 29(g_tTex1di4) DescriptorSet 0
+                              Decorate 42(g_tTex1du4) DescriptorSet 0
+                              Decorate 52(g_tTex2df4) DescriptorSet 0
+                              Decorate 63(g_tTex2di4) DescriptorSet 0
+                              Decorate 74(g_tTex2du4) DescriptorSet 0
+                              Decorate 86(g_tTex3df4) DescriptorSet 0
+                              Decorate 97(g_tTex3di4) DescriptorSet 0
+                              Decorate 107(g_tTex3du4) DescriptorSet 0
+                              Decorate 120(g_tTexcdf4) DescriptorSet 0
+                              Decorate 129(g_tTexcdi4) DescriptorSet 0
+                              Decorate 138(g_tTexcdu4) DescriptorSet 0
+                              MemberDecorate 144(VS_OUTPUT) 0 BuiltIn FragCoord
+                              Decorate 153(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 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:    6(float) Constant 1036831949
+              21:    6(float) Constant 1061158912
+              23:             TypeInt 32 1
+              24:             TypeVector 23(int) 4
+              25:             TypePointer Function 24(ivec4)
+              27:             TypeImage 23(int) 1D sampled format:Unknown
+              28:             TypePointer UniformConstant 27
+  29(g_tTex1di4):     28(ptr) Variable UniformConstant
+              32:             TypeSampledImage 27
+              34:    6(float) Constant 1045220557
+              36:             TypeInt 32 0
+              37:             TypeVector 36(int) 4
+              38:             TypePointer Function 37(ivec4)
+              40:             TypeImage 36(int) 1D sampled format:Unknown
+              41:             TypePointer UniformConstant 40
+  42(g_tTex1du4):     41(ptr) Variable UniformConstant
+              45:             TypeSampledImage 40
+              47:    6(float) Constant 1050253722
+              50:             TypeImage 6(float) 2D sampled format:Unknown
+              51:             TypePointer UniformConstant 50
+  52(g_tTex2df4):     51(ptr) Variable UniformConstant
+              55:             TypeSampledImage 50
+              57:             TypeVector 6(float) 2
+              58:   57(fvec2) ConstantComposite 20 34
+              61:             TypeImage 23(int) 2D sampled format:Unknown
+              62:             TypePointer UniformConstant 61
+  63(g_tTex2di4):     62(ptr) Variable UniformConstant
+              66:             TypeSampledImage 61
+              68:    6(float) Constant 1053609165
+              69:   57(fvec2) ConstantComposite 47 68
+              72:             TypeImage 36(int) 2D sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+  74(g_tTex2du4):     73(ptr) Variable UniformConstant
+              77:             TypeSampledImage 72
+              79:    6(float) Constant 1056964608
+              80:    6(float) Constant 1058642330
+              81:   57(fvec2) ConstantComposite 79 80
+              84:             TypeImage 6(float) 3D sampled format:Unknown
+              85:             TypePointer UniformConstant 84
+  86(g_tTex3df4):     85(ptr) Variable UniformConstant
+              89:             TypeSampledImage 84
+              91:             TypeVector 6(float) 3
+              92:   91(fvec3) ConstantComposite 20 34 47
+              95:             TypeImage 23(int) 3D sampled format:Unknown
+              96:             TypePointer UniformConstant 95
+  97(g_tTex3di4):     96(ptr) Variable UniformConstant
+             100:             TypeSampledImage 95
+             102:   91(fvec3) ConstantComposite 68 79 80
+             105:             TypeImage 36(int) 3D sampled format:Unknown
+             106:             TypePointer UniformConstant 105
+ 107(g_tTex3du4):    106(ptr) Variable UniformConstant
+             110:             TypeSampledImage 105
+             112:    6(float) Constant 1060320051
+             113:    6(float) Constant 1061997773
+             114:    6(float) Constant 1063675494
+             115:   91(fvec3) ConstantComposite 112 113 114
+             118:             TypeImage 6(float) Cube sampled format:Unknown
+             119:             TypePointer UniformConstant 118
+ 120(g_tTexcdf4):    119(ptr) Variable UniformConstant
+             123:             TypeSampledImage 118
+             127:             TypeImage 23(int) Cube sampled format:Unknown
+             128:             TypePointer UniformConstant 127
+ 129(g_tTexcdi4):    128(ptr) Variable UniformConstant
+             132:             TypeSampledImage 127
+             136:             TypeImage 36(int) Cube sampled format:Unknown
+             137:             TypePointer UniformConstant 136
+ 138(g_tTexcdu4):    137(ptr) Variable UniformConstant
+             141:             TypeSampledImage 136
+  144(VS_OUTPUT):             TypeStruct 7(fvec4)
+             145:             TypePointer Function 144(VS_OUTPUT)
+             147:     23(int) Constant 0
+             148:    6(float) Constant 0
+             149:    7(fvec4) ConstantComposite 148 148 148 148
+153(g_tTex1df4a):     11(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+      9(txval10):      8(ptr) Variable Function
+     26(txval11):     25(ptr) Variable Function
+     39(txval12):     38(ptr) Variable Function
+     49(txval20):      8(ptr) Variable Function
+     60(txval21):     25(ptr) Variable Function
+     71(txval22):     38(ptr) Variable Function
+     83(txval30):      8(ptr) Variable Function
+     94(txval31):     25(ptr) Variable Function
+    104(txval32):     38(ptr) Variable Function
+    117(txval40):      8(ptr) Variable Function
+    126(txval41):     25(ptr) Variable Function
+    135(txval42):     38(ptr) Variable Function
+      146(vsout):    145(ptr) Variable Function
+              13:          10 Load 12(g_tTex1df4)
+              17:          14 Load 16(g_sSamp)
+              19:          18 SampledImage 13 17
+              22:    7(fvec4) ImageSampleExplicitLod 19 20 Lod 21
+                              Store 9(txval10) 22
+              30:          27 Load 29(g_tTex1di4)
+              31:          14 Load 16(g_sSamp)
+              33:          32 SampledImage 30 31
+              35:   24(ivec4) ImageSampleExplicitLod 33 34 Lod 21
+                              Store 26(txval11) 35
+              43:          40 Load 42(g_tTex1du4)
+              44:          14 Load 16(g_sSamp)
+              46:          45 SampledImage 43 44
+              48:   37(ivec4) ImageSampleExplicitLod 46 47 Lod 21
+                              Store 39(txval12) 48
+              53:          50 Load 52(g_tTex2df4)
+              54:          14 Load 16(g_sSamp)
+              56:          55 SampledImage 53 54
+              59:    7(fvec4) ImageSampleExplicitLod 56 58 Lod 21
+                              Store 49(txval20) 59
+              64:          61 Load 63(g_tTex2di4)
+              65:          14 Load 16(g_sSamp)
+              67:          66 SampledImage 64 65
+              70:   24(ivec4) ImageSampleExplicitLod 67 69 Lod 21
+                              Store 60(txval21) 70
+              75:          72 Load 74(g_tTex2du4)
+              76:          14 Load 16(g_sSamp)
+              78:          77 SampledImage 75 76
+              82:   37(ivec4) ImageSampleExplicitLod 78 81 Lod 21
+                              Store 71(txval22) 82
+              87:          84 Load 86(g_tTex3df4)
+              88:          14 Load 16(g_sSamp)
+              90:          89 SampledImage 87 88
+              93:    7(fvec4) ImageSampleExplicitLod 90 92 Lod 21
+                              Store 83(txval30) 93
+              98:          95 Load 97(g_tTex3di4)
+              99:          14 Load 16(g_sSamp)
+             101:         100 SampledImage 98 99
+             103:   24(ivec4) ImageSampleExplicitLod 101 102 Lod 21
+                              Store 94(txval31) 103
+             108:         105 Load 107(g_tTex3du4)
+             109:          14 Load 16(g_sSamp)
+             111:         110 SampledImage 108 109
+             116:   37(ivec4) ImageSampleExplicitLod 111 115 Lod 21
+                              Store 104(txval32) 116
+             121:         118 Load 120(g_tTexcdf4)
+             122:          14 Load 16(g_sSamp)
+             124:         123 SampledImage 121 122
+             125:    7(fvec4) ImageSampleExplicitLod 124 92 Lod 21
+                              Store 117(txval40) 125
+             130:         127 Load 129(g_tTexcdi4)
+             131:          14 Load 16(g_sSamp)
+             133:         132 SampledImage 130 131
+             134:   24(ivec4) ImageSampleExplicitLod 133 102 Lod 21
+                              Store 126(txval41) 134
+             139:         136 Load 138(g_tTexcdu4)
+             140:          14 Load 16(g_sSamp)
+             142:         141 SampledImage 139 140
+             143:   37(ivec4) ImageSampleExplicitLod 142 115 Lod 21
+                              Store 135(txval42) 143
+             150:      8(ptr) AccessChain 146(vsout) 147
+                              Store 150 149
+             151:144(VS_OUTPUT) Load 146(vsout)
+                              ReturnValue 151
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
new file mode 100644 (file)
index 0000000..f2ca5ad
--- /dev/null
@@ -0,0 +1,546 @@
+hlsl.samplelevel.offset.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:50  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28    Function Parameters: 
+0:?     Sequence
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of float)
+0:31          'txval10' (temp 4-component vector of float)
+0:31          textureLodOffset (global 4-component vector of float)
+0:31            Construct combined texture-sampler (temp sampler1D)
+0:31              'g_tTex1df4' (uniform texture1D)
+0:31              'g_sSamp' (uniform sampler)
+0:31            Constant:
+0:31              0.100000
+0:31            Constant:
+0:31              0.750000
+0:31            Constant:
+0:31              1 (const int)
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of int)
+0:32          'txval11' (temp 4-component vector of int)
+0:32          textureLodOffset (global 4-component vector of int)
+0:32            Construct combined texture-sampler (temp isampler1D)
+0:32              'g_tTex1di4' (uniform itexture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.200000
+0:32            Constant:
+0:32              0.750000
+0:32            Constant:
+0:32              1 (const int)
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of uint)
+0:33          'txval12' (temp 4-component vector of uint)
+0:33          textureLodOffset (global 4-component vector of uint)
+0:33            Construct combined texture-sampler (temp usampler1D)
+0:33              'g_tTex1du4' (uniform utexture1D)
+0:33              'g_sSamp' (uniform sampler)
+0:33            Constant:
+0:33              0.300000
+0:33            Constant:
+0:33              0.750000
+0:33            Constant:
+0:33              1 (const int)
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of float)
+0:35          'txval20' (temp 4-component vector of float)
+0:35          textureLodOffset (global 4-component vector of float)
+0:35            Construct combined texture-sampler (temp sampler2D)
+0:35              'g_tTex2df4' (uniform texture2D)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:35            Constant:
+0:35              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of int)
+0:36          'txval21' (temp 4-component vector of int)
+0:36          textureLodOffset (global 4-component vector of int)
+0:36            Construct combined texture-sampler (temp isampler2D)
+0:36              'g_tTex2di4' (uniform itexture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:36            Constant:
+0:36              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               1 (const int)
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of uint)
+0:37          'txval22' (temp 4-component vector of uint)
+0:37          textureLodOffset (global 4-component vector of uint)
+0:37            Construct combined texture-sampler (temp usampler2D)
+0:37              'g_tTex2du4' (uniform utexture2D)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:37            Constant:
+0:37              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               -1 (const int)
+0:39      Sequence
+0:39        move second child to first child (temp 4-component vector of float)
+0:39          'txval30' (temp 4-component vector of float)
+0:39          textureLodOffset (global 4-component vector of float)
+0:39            Construct combined texture-sampler (temp sampler3D)
+0:39              'g_tTex3df4' (uniform texture3D)
+0:39              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:39            Constant:
+0:39              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:?               1 (const int)
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of int)
+0:40          'txval31' (temp 4-component vector of int)
+0:40          textureLodOffset (global 4-component vector of int)
+0:40            Construct combined texture-sampler (temp isampler3D)
+0:40              'g_tTex3di4' (uniform itexture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:40            Constant:
+0:40              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               1 (const int)
+0:?               1 (const int)
+0:41      Sequence
+0:41        move second child to first child (temp 4-component vector of uint)
+0:41          'txval32' (temp 4-component vector of uint)
+0:41          textureLodOffset (global 4-component vector of uint)
+0:41            Construct combined texture-sampler (temp usampler3D)
+0:41              'g_tTex3du4' (uniform utexture3D)
+0:41              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:41            Constant:
+0:41              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:?               -1 (const int)
+0:46      move second child to first child (temp float)
+0:46        Depth: direct index for structure (temp float FragDepth)
+0:46          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46          Constant:
+0:46            1 (const int)
+0:46        Constant:
+0:46          1.000000
+0:48      Branch: Return with expression
+0:48        '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 texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:50  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28    Function Parameters: 
+0:?     Sequence
+0:31      Sequence
+0:31        move second child to first child (temp 4-component vector of float)
+0:31          'txval10' (temp 4-component vector of float)
+0:31          textureLodOffset (global 4-component vector of float)
+0:31            Construct combined texture-sampler (temp sampler1D)
+0:31              'g_tTex1df4' (uniform texture1D)
+0:31              'g_sSamp' (uniform sampler)
+0:31            Constant:
+0:31              0.100000
+0:31            Constant:
+0:31              0.750000
+0:31            Constant:
+0:31              1 (const int)
+0:32      Sequence
+0:32        move second child to first child (temp 4-component vector of int)
+0:32          'txval11' (temp 4-component vector of int)
+0:32          textureLodOffset (global 4-component vector of int)
+0:32            Construct combined texture-sampler (temp isampler1D)
+0:32              'g_tTex1di4' (uniform itexture1D)
+0:32              'g_sSamp' (uniform sampler)
+0:32            Constant:
+0:32              0.200000
+0:32            Constant:
+0:32              0.750000
+0:32            Constant:
+0:32              1 (const int)
+0:33      Sequence
+0:33        move second child to first child (temp 4-component vector of uint)
+0:33          'txval12' (temp 4-component vector of uint)
+0:33          textureLodOffset (global 4-component vector of uint)
+0:33            Construct combined texture-sampler (temp usampler1D)
+0:33              'g_tTex1du4' (uniform utexture1D)
+0:33              'g_sSamp' (uniform sampler)
+0:33            Constant:
+0:33              0.300000
+0:33            Constant:
+0:33              0.750000
+0:33            Constant:
+0:33              1 (const int)
+0:35      Sequence
+0:35        move second child to first child (temp 4-component vector of float)
+0:35          'txval20' (temp 4-component vector of float)
+0:35          textureLodOffset (global 4-component vector of float)
+0:35            Construct combined texture-sampler (temp sampler2D)
+0:35              'g_tTex2df4' (uniform texture2D)
+0:35              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:35            Constant:
+0:35              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:36      Sequence
+0:36        move second child to first child (temp 4-component vector of int)
+0:36          'txval21' (temp 4-component vector of int)
+0:36          textureLodOffset (global 4-component vector of int)
+0:36            Construct combined texture-sampler (temp isampler2D)
+0:36              'g_tTex2di4' (uniform itexture2D)
+0:36              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:36            Constant:
+0:36              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               1 (const int)
+0:37      Sequence
+0:37        move second child to first child (temp 4-component vector of uint)
+0:37          'txval22' (temp 4-component vector of uint)
+0:37          textureLodOffset (global 4-component vector of uint)
+0:37            Construct combined texture-sampler (temp usampler2D)
+0:37              'g_tTex2du4' (uniform utexture2D)
+0:37              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:37            Constant:
+0:37              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               -1 (const int)
+0:39      Sequence
+0:39        move second child to first child (temp 4-component vector of float)
+0:39          'txval30' (temp 4-component vector of float)
+0:39          textureLodOffset (global 4-component vector of float)
+0:39            Construct combined texture-sampler (temp sampler3D)
+0:39              'g_tTex3df4' (uniform texture3D)
+0:39              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:39            Constant:
+0:39              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:?               1 (const int)
+0:40      Sequence
+0:40        move second child to first child (temp 4-component vector of int)
+0:40          'txval31' (temp 4-component vector of int)
+0:40          textureLodOffset (global 4-component vector of int)
+0:40            Construct combined texture-sampler (temp isampler3D)
+0:40              'g_tTex3di4' (uniform itexture3D)
+0:40              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.400000
+0:?               0.500000
+0:?               0.600000
+0:40            Constant:
+0:40              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               1 (const int)
+0:?               1 (const int)
+0:41      Sequence
+0:41        move second child to first child (temp 4-component vector of uint)
+0:41          'txval32' (temp 4-component vector of uint)
+0:41          textureLodOffset (global 4-component vector of uint)
+0:41            Construct combined texture-sampler (temp usampler3D)
+0:41              'g_tTex3du4' (uniform utexture3D)
+0:41              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.700000
+0:?               0.800000
+0:?               0.900000
+0:41            Constant:
+0:41              0.750000
+0:?             Constant:
+0:?               1 (const int)
+0:?               0 (const int)
+0:?               -1 (const int)
+0:46      move second child to first child (temp float)
+0:46        Depth: direct index for structure (temp float FragDepth)
+0:46          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46          Constant:
+0:46            1 (const int)
+0:46        Constant:
+0:46          1.000000
+0:48      Branch: Return with expression
+0:48        '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 texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTexcdf4' (uniform textureCube)
+0:?     'g_tTexcdi4' (uniform itextureCube)
+0:?     'g_tTexcdu4' (uniform utextureCube)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 146
+
+                              Capability Shader
+                              Capability Sampled1D
+               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 27  "txval11"
+                              Name 30  "g_tTex1di4"
+                              Name 40  "txval12"
+                              Name 43  "g_tTex1du4"
+                              Name 50  "txval20"
+                              Name 53  "g_tTex2df4"
+                              Name 64  "txval21"
+                              Name 67  "g_tTex2di4"
+                              Name 76  "txval22"
+                              Name 79  "g_tTex2du4"
+                              Name 90  "txval30"
+                              Name 93  "g_tTex3df4"
+                              Name 103  "txval31"
+                              Name 106  "g_tTex3di4"
+                              Name 114  "txval32"
+                              Name 117  "g_tTex3du4"
+                              Name 128  "PS_OUTPUT"
+                              MemberName 128(PS_OUTPUT) 0  "Color"
+                              MemberName 128(PS_OUTPUT) 1  "Depth"
+                              Name 130  "psout"
+                              Name 136  "g_tTex1df4a"
+                              Name 139  "g_tTexcdf4"
+                              Name 142  "g_tTexcdi4"
+                              Name 145  "g_tTexcdu4"
+                              Decorate 12(g_tTex1df4) DescriptorSet 0
+                              Decorate 16(g_sSamp) DescriptorSet 0
+                              Decorate 30(g_tTex1di4) DescriptorSet 0
+                              Decorate 43(g_tTex1du4) DescriptorSet 0
+                              Decorate 53(g_tTex2df4) DescriptorSet 0
+                              Decorate 67(g_tTex2di4) DescriptorSet 0
+                              Decorate 79(g_tTex2du4) DescriptorSet 0
+                              Decorate 93(g_tTex3df4) DescriptorSet 0
+                              Decorate 106(g_tTex3di4) DescriptorSet 0
+                              Decorate 117(g_tTex3du4) DescriptorSet 0
+                              MemberDecorate 128(PS_OUTPUT) 1 BuiltIn FragDepth
+                              Decorate 136(g_tTex1df4a) DescriptorSet 0
+                              Decorate 139(g_tTexcdf4) DescriptorSet 0
+                              Decorate 142(g_tTexcdi4) DescriptorSet 0
+                              Decorate 145(g_tTexcdu4) 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 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:    6(float) Constant 1036831949
+              21:    6(float) Constant 1061158912
+              22:             TypeInt 32 1
+              23:     22(int) Constant 1
+              25:             TypeVector 22(int) 4
+              26:             TypePointer Function 25(ivec4)
+              28:             TypeImage 22(int) 1D sampled format:Unknown
+              29:             TypePointer UniformConstant 28
+  30(g_tTex1di4):     29(ptr) Variable UniformConstant
+              33:             TypeSampledImage 28
+              35:    6(float) Constant 1045220557
+              37:             TypeInt 32 0
+              38:             TypeVector 37(int) 4
+              39:             TypePointer Function 38(ivec4)
+              41:             TypeImage 37(int) 1D sampled format:Unknown
+              42:             TypePointer UniformConstant 41
+  43(g_tTex1du4):     42(ptr) Variable UniformConstant
+              46:             TypeSampledImage 41
+              48:    6(float) Constant 1050253722
+              51:             TypeImage 6(float) 2D sampled format:Unknown
+              52:             TypePointer UniformConstant 51
+  53(g_tTex2df4):     52(ptr) Variable UniformConstant
+              56:             TypeSampledImage 51
+              58:             TypeVector 6(float) 2
+              59:   58(fvec2) ConstantComposite 20 35
+              60:             TypeVector 22(int) 2
+              61:     22(int) Constant 0
+              62:   60(ivec2) ConstantComposite 23 61
+              65:             TypeImage 22(int) 2D sampled format:Unknown
+              66:             TypePointer UniformConstant 65
+  67(g_tTex2di4):     66(ptr) Variable UniformConstant
+              70:             TypeSampledImage 65
+              72:    6(float) Constant 1053609165
+              73:   58(fvec2) ConstantComposite 48 72
+              74:   60(ivec2) ConstantComposite 23 23
+              77:             TypeImage 37(int) 2D sampled format:Unknown
+              78:             TypePointer UniformConstant 77
+  79(g_tTex2du4):     78(ptr) Variable UniformConstant
+              82:             TypeSampledImage 77
+              84:    6(float) Constant 1056964608
+              85:    6(float) Constant 1058642330
+              86:   58(fvec2) ConstantComposite 84 85
+              87:     22(int) Constant 4294967295
+              88:   60(ivec2) ConstantComposite 23 87
+              91:             TypeImage 6(float) 3D sampled format:Unknown
+              92:             TypePointer UniformConstant 91
+  93(g_tTex3df4):     92(ptr) Variable UniformConstant
+              96:             TypeSampledImage 91
+              98:             TypeVector 6(float) 3
+              99:   98(fvec3) ConstantComposite 20 35 48
+             100:             TypeVector 22(int) 3
+             101:  100(ivec3) ConstantComposite 23 61 23
+             104:             TypeImage 22(int) 3D sampled format:Unknown
+             105:             TypePointer UniformConstant 104
+ 106(g_tTex3di4):    105(ptr) Variable UniformConstant
+             109:             TypeSampledImage 104
+             111:   98(fvec3) ConstantComposite 72 84 85
+             112:  100(ivec3) ConstantComposite 23 23 23
+             115:             TypeImage 37(int) 3D sampled format:Unknown
+             116:             TypePointer UniformConstant 115
+ 117(g_tTex3du4):    116(ptr) Variable UniformConstant
+             120:             TypeSampledImage 115
+             122:    6(float) Constant 1060320051
+             123:    6(float) Constant 1061997773
+             124:    6(float) Constant 1063675494
+             125:   98(fvec3) ConstantComposite 122 123 124
+             126:  100(ivec3) ConstantComposite 23 61 87
+  128(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+             129:             TypePointer Function 128(PS_OUTPUT)
+             131:    6(float) Constant 1065353216
+             132:             TypePointer Function 6(float)
+136(g_tTex1df4a):     11(ptr) Variable UniformConstant
+             137:             TypeImage 6(float) Cube sampled format:Unknown
+             138:             TypePointer UniformConstant 137
+ 139(g_tTexcdf4):    138(ptr) Variable UniformConstant
+             140:             TypeImage 22(int) Cube sampled format:Unknown
+             141:             TypePointer UniformConstant 140
+ 142(g_tTexcdi4):    141(ptr) Variable UniformConstant
+             143:             TypeImage 37(int) Cube sampled format:Unknown
+             144:             TypePointer UniformConstant 143
+ 145(g_tTexcdu4):    144(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+      9(txval10):      8(ptr) Variable Function
+     27(txval11):     26(ptr) Variable Function
+     40(txval12):     39(ptr) Variable Function
+     50(txval20):      8(ptr) Variable Function
+     64(txval21):     26(ptr) Variable Function
+     76(txval22):     39(ptr) Variable Function
+     90(txval30):      8(ptr) Variable Function
+    103(txval31):     26(ptr) Variable Function
+    114(txval32):     39(ptr) Variable Function
+      130(psout):    129(ptr) Variable Function
+              13:          10 Load 12(g_tTex1df4)
+              17:          14 Load 16(g_sSamp)
+              19:          18 SampledImage 13 17
+              24:    7(fvec4) ImageSampleExplicitLod 19 20 Lod ConstOffset 21 23
+                              Store 9(txval10) 24
+              31:          28 Load 30(g_tTex1di4)
+              32:          14 Load 16(g_sSamp)
+              34:          33 SampledImage 31 32
+              36:   25(ivec4) ImageSampleExplicitLod 34 35 Lod ConstOffset 21 23
+                              Store 27(txval11) 36
+              44:          41 Load 43(g_tTex1du4)
+              45:          14 Load 16(g_sSamp)
+              47:          46 SampledImage 44 45
+              49:   38(ivec4) ImageSampleExplicitLod 47 48 Lod ConstOffset 21 23
+                              Store 40(txval12) 49
+              54:          51 Load 53(g_tTex2df4)
+              55:          14 Load 16(g_sSamp)
+              57:          56 SampledImage 54 55
+              63:    7(fvec4) ImageSampleExplicitLod 57 59 Lod ConstOffset 21 62
+                              Store 50(txval20) 63
+              68:          65 Load 67(g_tTex2di4)
+              69:          14 Load 16(g_sSamp)
+              71:          70 SampledImage 68 69
+              75:   25(ivec4) ImageSampleExplicitLod 71 73 Lod ConstOffset 21 74
+                              Store 64(txval21) 75
+              80:          77 Load 79(g_tTex2du4)
+              81:          14 Load 16(g_sSamp)
+              83:          82 SampledImage 80 81
+              89:   38(ivec4) ImageSampleExplicitLod 83 86 Lod ConstOffset 21 88
+                              Store 76(txval22) 89
+              94:          91 Load 93(g_tTex3df4)
+              95:          14 Load 16(g_sSamp)
+              97:          96 SampledImage 94 95
+             102:    7(fvec4) ImageSampleExplicitLod 97 99 Lod ConstOffset 21 101
+                              Store 90(txval30) 102
+             107:         104 Load 106(g_tTex3di4)
+             108:          14 Load 16(g_sSamp)
+             110:         109 SampledImage 107 108
+             113:   25(ivec4) ImageSampleExplicitLod 110 111 Lod ConstOffset 21 112
+                              Store 103(txval31) 113
+             118:         115 Load 117(g_tTex3du4)
+             119:          14 Load 16(g_sSamp)
+             121:         120 SampledImage 118 119
+             127:   38(ivec4) ImageSampleExplicitLod 121 125 Lod ConstOffset 21 126
+                              Store 114(txval32) 127
+             133:    132(ptr) AccessChain 130(psout) 23
+                              Store 133 131
+             134:128(PS_OUTPUT) Load 130(psout)
+                              ReturnValue 134
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
new file mode 100644 (file)
index 0000000..9677209
--- /dev/null
@@ -0,0 +1,383 @@
+hlsl.samplelevel.offsetarray.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20    Function Parameters: 
+0:?     Sequence
+0:23      Sequence
+0:23        move second child to first child (temp 4-component vector of float)
+0:23          'txval10' (temp 4-component vector of float)
+0:23          textureLodOffset (global 4-component vector of float)
+0:23            Construct combined texture-sampler (temp sampler1DArray)
+0:23              'g_tTex1df4' (uniform texture1DArray)
+0:23              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:23            Constant:
+0:23              0.750000
+0:23            Constant:
+0:23              0 (const int)
+0:24      Sequence
+0:24        move second child to first child (temp 4-component vector of int)
+0:24          'txval11' (temp 4-component vector of int)
+0:24          textureLodOffset (global 4-component vector of int)
+0:24            Construct combined texture-sampler (temp isampler1DArray)
+0:24              'g_tTex1di4' (uniform itexture1DArray)
+0:24              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.200000
+0:?               0.300000
+0:24            Constant:
+0:24              0.750000
+0:24            Constant:
+0:24              1 (const int)
+0:25      Sequence
+0:25        move second child to first child (temp 4-component vector of uint)
+0:25          'txval12' (temp 4-component vector of uint)
+0:25          textureLodOffset (global 4-component vector of uint)
+0:25            Construct combined texture-sampler (temp usampler1DArray)
+0:25              'g_tTex1du4' (uniform utexture1DArray)
+0:25              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:25            Constant:
+0:25              0.750000
+0:25            Constant:
+0:25              2 (const int)
+0:27      Sequence
+0:27        move second child to first child (temp 4-component vector of float)
+0:27          'txval20' (temp 4-component vector of float)
+0:27          textureLodOffset (global 4-component vector of float)
+0:27            Construct combined texture-sampler (temp sampler2DArray)
+0:27              'g_tTex2df4' (uniform texture2DArray)
+0:27              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:27            Constant:
+0:27              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               0 (const int)
+0:28      Sequence
+0:28        move second child to first child (temp 4-component vector of int)
+0:28          'txval21' (temp 4-component vector of int)
+0:28          textureLodOffset (global 4-component vector of int)
+0:28            Construct combined texture-sampler (temp isampler2DArray)
+0:28              'g_tTex2di4' (uniform itexture2DArray)
+0:28              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:?               0.500000
+0:28            Constant:
+0:28              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               0 (const int)
+0:29      Sequence
+0:29        move second child to first child (temp 4-component vector of uint)
+0:29          'txval22' (temp 4-component vector of uint)
+0:29          textureLodOffset (global 4-component vector of uint)
+0:29            Construct combined texture-sampler (temp usampler2DArray)
+0:29              'g_tTex2du4' (uniform utexture2DArray)
+0:29              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:29            Constant:
+0:29              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               1 (const int)
+0:34      move second child to first child (temp float)
+0:34        Depth: direct index for structure (temp float FragDepth)
+0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34          Constant:
+0:34            1 (const int)
+0:34        Constant:
+0:34          1.000000
+0:36      Branch: Return with expression
+0:36        '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)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38  Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20    Function Parameters: 
+0:?     Sequence
+0:23      Sequence
+0:23        move second child to first child (temp 4-component vector of float)
+0:23          'txval10' (temp 4-component vector of float)
+0:23          textureLodOffset (global 4-component vector of float)
+0:23            Construct combined texture-sampler (temp sampler1DArray)
+0:23              'g_tTex1df4' (uniform texture1DArray)
+0:23              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:23            Constant:
+0:23              0.750000
+0:23            Constant:
+0:23              0 (const int)
+0:24      Sequence
+0:24        move second child to first child (temp 4-component vector of int)
+0:24          'txval11' (temp 4-component vector of int)
+0:24          textureLodOffset (global 4-component vector of int)
+0:24            Construct combined texture-sampler (temp isampler1DArray)
+0:24              'g_tTex1di4' (uniform itexture1DArray)
+0:24              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.200000
+0:?               0.300000
+0:24            Constant:
+0:24              0.750000
+0:24            Constant:
+0:24              1 (const int)
+0:25      Sequence
+0:25        move second child to first child (temp 4-component vector of uint)
+0:25          'txval12' (temp 4-component vector of uint)
+0:25          textureLodOffset (global 4-component vector of uint)
+0:25            Construct combined texture-sampler (temp usampler1DArray)
+0:25              'g_tTex1du4' (uniform utexture1DArray)
+0:25              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:25            Constant:
+0:25              0.750000
+0:25            Constant:
+0:25              2 (const int)
+0:27      Sequence
+0:27        move second child to first child (temp 4-component vector of float)
+0:27          'txval20' (temp 4-component vector of float)
+0:27          textureLodOffset (global 4-component vector of float)
+0:27            Construct combined texture-sampler (temp sampler2DArray)
+0:27              'g_tTex2df4' (uniform texture2DArray)
+0:27              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.100000
+0:?               0.200000
+0:?               0.300000
+0:27            Constant:
+0:27              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               0 (const int)
+0:28      Sequence
+0:28        move second child to first child (temp 4-component vector of int)
+0:28          'txval21' (temp 4-component vector of int)
+0:28          textureLodOffset (global 4-component vector of int)
+0:28            Construct combined texture-sampler (temp isampler2DArray)
+0:28              'g_tTex2di4' (uniform itexture2DArray)
+0:28              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.300000
+0:?               0.400000
+0:?               0.500000
+0:28            Constant:
+0:28              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               0 (const int)
+0:29      Sequence
+0:29        move second child to first child (temp 4-component vector of uint)
+0:29          'txval22' (temp 4-component vector of uint)
+0:29          textureLodOffset (global 4-component vector of uint)
+0:29            Construct combined texture-sampler (temp usampler2DArray)
+0:29              'g_tTex2du4' (uniform utexture2DArray)
+0:29              'g_sSamp' (uniform sampler)
+0:?             Constant:
+0:?               0.500000
+0:?               0.600000
+0:?               0.700000
+0:29            Constant:
+0:29              0.750000
+0:?             Constant:
+0:?               0 (const int)
+0:?               1 (const int)
+0:34      move second child to first child (temp float)
+0:34        Depth: direct index for structure (temp float FragDepth)
+0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34          Constant:
+0:34            1 (const int)
+0:34        Constant:
+0:34          1.000000
+0:36      Branch: Return with expression
+0:36        '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)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 103
+
+                              Capability Shader
+                              Capability Sampled1D
+               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 30  "txval11"
+                              Name 33  "g_tTex1di4"
+                              Name 45  "txval12"
+                              Name 48  "g_tTex1du4"
+                              Name 57  "txval20"
+                              Name 60  "g_tTex2df4"
+                              Name 70  "txval21"
+                              Name 73  "g_tTex2di4"
+                              Name 81  "txval22"
+                              Name 84  "g_tTex2du4"
+                              Name 94  "PS_OUTPUT"
+                              MemberName 94(PS_OUTPUT) 0  "Color"
+                              MemberName 94(PS_OUTPUT) 1  "Depth"
+                              Name 96  "psout"
+                              Name 102  "g_tTex1df4a"
+                              Decorate 12(g_tTex1df4) DescriptorSet 0
+                              Decorate 16(g_sSamp) DescriptorSet 0
+                              Decorate 33(g_tTex1di4) DescriptorSet 0
+                              Decorate 48(g_tTex1du4) DescriptorSet 0
+                              Decorate 60(g_tTex2df4) DescriptorSet 0
+                              Decorate 73(g_tTex2di4) DescriptorSet 0
+                              Decorate 84(g_tTex2du4) DescriptorSet 0
+                              MemberDecorate 94(PS_OUTPUT) 1 BuiltIn FragDepth
+                              Decorate 102(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
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              28:             TypeVector 25(int) 4
+              29:             TypePointer Function 28(ivec4)
+              31:             TypeImage 25(int) 1D array sampled format:Unknown
+              32:             TypePointer UniformConstant 31
+  33(g_tTex1di4):     32(ptr) Variable UniformConstant
+              36:             TypeSampledImage 31
+              38:    6(float) Constant 1050253722
+              39:   20(fvec2) ConstantComposite 22 38
+              40:     25(int) Constant 1
+              42:             TypeInt 32 0
+              43:             TypeVector 42(int) 4
+              44:             TypePointer Function 43(ivec4)
+              46:             TypeImage 42(int) 1D array sampled format:Unknown
+              47:             TypePointer UniformConstant 46
+  48(g_tTex1du4):     47(ptr) Variable UniformConstant
+              51:             TypeSampledImage 46
+              53:    6(float) Constant 1053609165
+              54:   20(fvec2) ConstantComposite 38 53
+              55:     25(int) Constant 2
+              58:             TypeImage 6(float) 2D array sampled format:Unknown
+              59:             TypePointer UniformConstant 58
+  60(g_tTex2df4):     59(ptr) Variable UniformConstant
+              63:             TypeSampledImage 58
+              65:             TypeVector 6(float) 3
+              66:   65(fvec3) ConstantComposite 21 22 38
+              67:             TypeVector 25(int) 2
+              68:   67(ivec2) ConstantComposite 26 26
+              71:             TypeImage 25(int) 2D array sampled format:Unknown
+              72:             TypePointer UniformConstant 71
+  73(g_tTex2di4):     72(ptr) Variable UniformConstant
+              76:             TypeSampledImage 71
+              78:    6(float) Constant 1056964608
+              79:   65(fvec3) ConstantComposite 38 53 78
+              82:             TypeImage 42(int) 2D array sampled format:Unknown
+              83:             TypePointer UniformConstant 82
+  84(g_tTex2du4):     83(ptr) Variable UniformConstant
+              87:             TypeSampledImage 82
+              89:    6(float) Constant 1058642330
+              90:    6(float) Constant 1060320051
+              91:   65(fvec3) ConstantComposite 78 89 90
+              92:   67(ivec2) ConstantComposite 26 40
+   94(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
+              95:             TypePointer Function 94(PS_OUTPUT)
+              97:    6(float) Constant 1065353216
+              98:             TypePointer Function 6(float)
+102(g_tTex1df4a):     11(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+      9(txval10):      8(ptr) Variable Function
+     30(txval11):     29(ptr) Variable Function
+     45(txval12):     44(ptr) Variable Function
+     57(txval20):      8(ptr) Variable Function
+     70(txval21):     29(ptr) Variable Function
+     81(txval22):     44(ptr) Variable Function
+       96(psout):     95(ptr) Variable Function
+              13:          10 Load 12(g_tTex1df4)
+              17:          14 Load 16(g_sSamp)
+              19:          18 SampledImage 13 17
+              27:    7(fvec4) ImageSampleExplicitLod 19 23 Lod ConstOffset 24 26
+                              Store 9(txval10) 27
+              34:          31 Load 33(g_tTex1di4)
+              35:          14 Load 16(g_sSamp)
+              37:          36 SampledImage 34 35
+              41:   28(ivec4) ImageSampleExplicitLod 37 39 Lod ConstOffset 24 40
+                              Store 30(txval11) 41
+              49:          46 Load 48(g_tTex1du4)
+              50:          14 Load 16(g_sSamp)
+              52:          51 SampledImage 49 50
+              56:   43(ivec4) ImageSampleExplicitLod 52 54 Lod ConstOffset 24 55
+                              Store 45(txval12) 56
+              61:          58 Load 60(g_tTex2df4)
+              62:          14 Load 16(g_sSamp)
+              64:          63 SampledImage 61 62
+              69:    7(fvec4) ImageSampleExplicitLod 64 66 Lod ConstOffset 24 68
+                              Store 57(txval20) 69
+              74:          71 Load 73(g_tTex2di4)
+              75:          14 Load 16(g_sSamp)
+              77:          76 SampledImage 74 75
+              80:   28(ivec4) ImageSampleExplicitLod 77 79 Lod ConstOffset 24 68
+                              Store 70(txval21) 80
+              85:          82 Load 84(g_tTex2du4)
+              86:          14 Load 16(g_sSamp)
+              88:          87 SampledImage 85 86
+              93:   43(ivec4) ImageSampleExplicitLod 88 91 Lod ConstOffset 24 92
+                              Store 81(txval22) 93
+              99:     98(ptr) AccessChain 96(psout) 40
+                              Store 99 97
+             100:94(PS_OUTPUT) Load 96(psout)
+                              ReturnValue 100
+                              FunctionEnd
diff --git a/Test/hlsl.samplelevel.array.dx10.frag b/Test/hlsl.samplelevel.array.dx10.frag
new file mode 100644 (file)
index 0000000..68dbdde
--- /dev/null
@@ -0,0 +1,43 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1DArray          g_tTex1df4a : register(t1);
+
+uniform Texture1DArray <float4> g_tTex1df4 : register(t0);
+Texture1DArray <int4>   g_tTex1di4;
+Texture1DArray <uint4>  g_tTex1du4;
+
+Texture2DArray <float4> g_tTex2df4;
+Texture2DArray <int4>   g_tTex2di4;
+Texture2DArray <uint4>  g_tTex2du4;
+
+TextureCubeArray <float4> g_tTexcdf4;
+TextureCubeArray <int4>   g_tTexcdi4;
+TextureCubeArray <uint4>  g_tTexcdu4;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+    float  Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75);
+   int4   txval11 = g_tTex1di4 . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75);
+   uint4  txval12 = g_tTex1du4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75);
+
+   float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
+   int4   txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75);
+   uint4  txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75);
+
+   float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75);
+   int4   txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.75);
+   uint4  txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.75);
+
+   psout.Color = 1.0;
+   psout.Depth = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.samplelevel.basic.dx10.frag b/Test/hlsl.samplelevel.basic.dx10.frag
new file mode 100644 (file)
index 0000000..fb363ae
--- /dev/null
@@ -0,0 +1,52 @@
+SamplerState       g_sSamp : register(s0);
+uniform sampler2D          g_sSamp2d;
+
+Texture1D          g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4>   g_tTex1di4;
+Texture1D <uint4>  g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4>   g_tTex2di4;
+Texture2D <uint4>  g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4>   g_tTex3di4;
+Texture3D <uint4>  g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4>   g_tTexcdi4;
+TextureCube <uint4>  g_tTexcdu4;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+    float  Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75);
+   int4   txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75);
+   uint4  txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75);
+
+   float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75);
+   int4   txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75);
+   uint4  txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75);
+
+   float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
+   int4   txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75);
+   uint4  txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75);
+
+   float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
+   int4   txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75);
+   uint4  txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75);
+
+   psout.Color = 1.0;
+   psout.Depth = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.samplelevel.basic.dx10.vert b/Test/hlsl.samplelevel.basic.dx10.vert
new file mode 100644 (file)
index 0000000..03febcf
--- /dev/null
@@ -0,0 +1,49 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1D          g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4>   g_tTex1di4;
+Texture1D <uint4>  g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4>   g_tTex2di4;
+Texture2D <uint4>  g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4>   g_tTex3di4;
+Texture3D <uint4>  g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4>   g_tTexcdi4;
+TextureCube <uint4>  g_tTexcdu4;
+
+struct VS_OUTPUT
+{
+    float4 Pos : SV_Position;
+};
+
+VS_OUTPUT main()
+{
+   VS_OUTPUT vsout;
+
+   float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75);
+   int4   txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75);
+   uint4  txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75);
+
+   float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75);
+   int4   txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75);
+   uint4  txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75);
+
+   float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
+   int4   txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75);
+   uint4  txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75);
+
+   float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75);
+   int4   txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75);
+   uint4  txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75);
+
+   vsout.Pos = float4(0,0,0,0);
+
+   return vsout;
+}
diff --git a/Test/hlsl.samplelevel.offset.dx10.frag b/Test/hlsl.samplelevel.offset.dx10.frag
new file mode 100644 (file)
index 0000000..1490611
--- /dev/null
@@ -0,0 +1,49 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1D          g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4>   g_tTex1di4;
+Texture1D <uint4>  g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4>   g_tTex2di4;
+Texture2D <uint4>  g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4>   g_tTex3di4;
+Texture3D <uint4>  g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4>   g_tTexcdi4;
+TextureCube <uint4>  g_tTexcdu4;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+    float  Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75, 1);
+   int4   txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75, 1);
+   uint4  txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75, 1);
+
+   float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, int2(1,0));
+   int4   txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, int2(1,1));
+   uint4  txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75, int2(1,-1));
+
+   float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(1,0,1));
+   int4   txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75, int3(1,1,1));
+   uint4  txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75, int3(1,0,-1));
+
+   // There are no offset forms of cube textures, so we do not test them.
+
+   psout.Color = 1.0;
+   psout.Depth = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.samplelevel.offsetarray.dx10.frag b/Test/hlsl.samplelevel.offsetarray.dx10.frag
new file mode 100644 (file)
index 0000000..5c7bd71
--- /dev/null
@@ -0,0 +1,37 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1DArray          g_tTex1df4a : register(t1);
+
+uniform Texture1DArray <float4> g_tTex1df4 : register(t0);
+Texture1DArray <int4>   g_tTex1di4;
+Texture1DArray <uint4>  g_tTex1du4;
+
+Texture2DArray <float4> g_tTex2df4;
+Texture2DArray <int4>   g_tTex2di4;
+Texture2DArray <uint4>  g_tTex2du4;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+    float  Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, 0);
+   int4   txval11 = g_tTex1di4 . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75, 1);
+   uint4  txval12 = g_tTex1du4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, 2);
+
+   float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(0,0));
+   int4   txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75, int2(0,0));
+   uint4  txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75, int2(0,1));
+
+   // No offset array forms for 3D or cube
+
+   psout.Color = 1.0;
+   psout.Depth = 1.0;
+
+   return psout;
+}
index 4e88eee..900aee7 100644 (file)
@@ -121,6 +121,11 @@ INSTANTIATE_TEST_CASE_P(
         {"hlsl.samplegrad.basic.dx10.vert", "main"},
         {"hlsl.samplegrad.offset.dx10.frag", "main"},
         {"hlsl.samplegrad.offsetarray.dx10.frag", "main"},
+        {"hlsl.samplelevel.array.dx10.frag", "main"},
+        {"hlsl.samplelevel.basic.dx10.frag", "main"},
+        {"hlsl.samplelevel.basic.dx10.vert", "main"},
+        {"hlsl.samplelevel.offset.dx10.frag", "main"},
+        {"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
         {"hlsl.intrinsics.vert", "VertexShaderFunction"},
         {"hlsl.matType.frag", "PixelShaderFunction"},
         {"hlsl.max.frag", "PixelShaderFunction"},
index af4a76b..83817ea 100755 (executable)
@@ -1189,6 +1189,38 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
             break;
         }
 
+    case EOpMethodSampleLevel:
+        {
+            TIntermTyped* argTex    = argAggregate->getSequence()[0]->getAsTyped();
+            TIntermTyped* argSamp   = argAggregate->getSequence()[1]->getAsTyped();
+            TIntermTyped* argCoord  = argAggregate->getSequence()[2]->getAsTyped();
+            TIntermTyped* argLod    = argAggregate->getSequence()[3]->getAsTyped();
+            TIntermTyped* argOffset = nullptr;
+
+            const int  numArgs = argAggregate->getSequence().size();
+
+            if (numArgs == 5) // offset, if present
+                argOffset = argAggregate->getSequence()[4]->getAsTyped();
+            
+            const TOperator textureOp = (argOffset == nullptr ? EOpTextureLod : EOpTextureLodOffset);
+            TIntermAggregate* txsample = new TIntermAggregate(textureOp);
+
+            TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp);
+
+            txsample->getSequence().push_back(txcombine);
+            txsample->getSequence().push_back(argCoord);
+            txsample->getSequence().push_back(argLod);
+
+            if (argOffset != nullptr)
+                txsample->getSequence().push_back(argOffset);
+
+            txsample->setType(node->getType());
+            txsample->setLoc(loc);
+            node = txsample;
+
+            break;
+        }
+
     default:
         break; // most pass through unchanged
     }
index 0a1051e..a3bc329 100755 (executable)
@@ -588,15 +588,15 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c
         { "SampleGrad",         /*!O  A*/     "V4",    nullptr,   "@V,S,V,V,V",   "FIU,S,F,F,F",   EShLangAll },
         { "SampleGrad",         /* O  A*/     "V4",    nullptr,   "@V,S,V,V,V,V", "FIU,S,F,F,F,I", EShLangAll },
 
-        // { "SampleLevel",        /*!O !A*/     "V4",    nullptr,   "%V,S,V,S",   "FIU,S,F,F",       EShLangAll },
-        // { "SampleLevel",        /* O !A*/     "V4",    nullptr,   "%V,S,V,S,V", "FIU,S,F,F,I",     EShLangAll },
-        // { "SampleLevel",        /*!O  A*/     "V4",    nullptr,   "@V,S,V,S",   "FIU,S,F,F",       EShLangAll },
-        // { "SampleLevel",        /* O  A*/     "V4",    nullptr,   "@V,S,V,S,V", "FIU,S,F,F,I",     EShLangAll },
-
-        { "Load",               /*!O !A*/     "V4",    nullptr,   "%V,V",               "FIU,I",           EShLangAll },
-        { "Load",               /*!O  A*/     "V4",    nullptr,   "@V,V",               "FIU,I",           EShLangAll },
-        { "Load",               /* O !A*/     "V4",    nullptr,   "%V,V,V",             "FIU,I,I",         EShLangAll },
-        { "Load",               /* O  A*/     "V4",    nullptr,   "@V,V,V",             "FIU,I,I",         EShLangAll },
+        { "SampleLevel",        /*!O !A*/     "V4",    nullptr,   "%V,S,V,S",           "FIU,S,F,F",     EShLangAll },
+        { "SampleLevel",        /* O !A*/     "V4",    nullptr,   "%V,S,V,S,V",         "FIU,S,F,F,I",   EShLangAll },
+        { "SampleLevel",        /*!O  A*/     "V4",    nullptr,   "@V,S,V,S",           "FIU,S,F,F",     EShLangAll },
+        { "SampleLevel",        /* O  A*/     "V4",    nullptr,   "@V,S,V,S,V",         "FIU,S,F,F,I",   EShLangAll },
+
+        { "Load",               /*!O !A*/     "V4",    nullptr,   "%V,V",               "FIU,I",         EShLangAll },
+        { "Load",               /*!O  A*/     "V4",    nullptr,   "@V,V",               "FIU,I",         EShLangAll },
+        { "Load",               /* O !A*/     "V4",    nullptr,   "%V,V,V",             "FIU,I,I",       EShLangAll },
+        { "Load",               /* O  A*/     "V4",    nullptr,   "@V,V,V",             "FIU,I,I",       EShLangAll },
         // TODO: MS variants of Load
         // { "Load", /* +sampleidex*/            "V4",    nullptr,   "$V,V,S",          "FIU,I,I",         EShLangAll },
         // { "Load", /* +samplindex, offset*/    "V4",    nullptr,   "$V,V,S,V",        "FIU,I,I,I",       EShLangAll },
@@ -943,7 +943,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil
     symbolTable.relateToOperator("SampleCmp",                   EOpMethodSampleCmp);
     symbolTable.relateToOperator("SampleCmpLevelZero",          EOpMethodSampleCmpLevelZero);
     symbolTable.relateToOperator("SampleGrad",                  EOpMethodSampleGrad);
-    // symbolTable.relateToOperator("SampleLevel",                 EOpMethodSampleLevel);
+    symbolTable.relateToOperator("SampleLevel",                 EOpMethodSampleLevel);
     symbolTable.relateToOperator("Load",                        EOpMethodLoad);
     symbolTable.relateToOperator("GetDimensions",               EOpMethodGetDimensions);
 }