HLSL: Pass opaques by local copy, instead of by interface original.
authorJohn Kessenich <cepheus@frii.com>
Fri, 8 Sep 2017 08:38:07 +0000 (02:38 -0600)
committerGregF <greg@LunarG.com>
Fri, 29 Sep 2017 15:57:00 +0000 (09:57 -0600)
Also, remove assumption that if something is opaque that it
must be in the UniformConstant storage class.

This allows function declarations to know all parameters will
be in the Function storage class.

12 files changed:
SPIRV/GlslangToSpv.cpp
Test/baseResults/hlsl.aliasOpaque.frag.out
Test/baseResults/hlsl.array.flatten.frag.out
Test/baseResults/hlsl.flattenOpaque.frag.out
Test/baseResults/hlsl.flattenOpaqueInit.vert.out
Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
Test/baseResults/hlsl.opaque-type-bug.frag.out
Test/baseResults/hlsl.structbuffer.append.fn.frag.out
Test/baseResults/hlsl.structbuffer.fn.frag.out
Test/baseResults/hlsl.structbuffer.fn2.comp.out
Test/baseResults/hlsl.texture.struct.frag.out
Test/baseResults/hlsl.tx.overload.frag.out

index a0a1c83..576607d 100755 (executable)
@@ -771,33 +771,41 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
 {
     if (type.getQualifier().isPipeInput())
         return spv::StorageClassInput;
-    else if (type.getQualifier().isPipeOutput())
+    if (type.getQualifier().isPipeOutput())
         return spv::StorageClassOutput;
-    else if (type.getBasicType() == glslang::EbtAtomicUint)
-        return spv::StorageClassAtomicCounter;
-    else if (type.containsOpaque())
-        return spv::StorageClassUniformConstant;
-    else if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) {
+
+    if (glslangIntermediate->getSource() != glslang::EShSourceHlsl ||
+        type.getQualifier().storage == glslang::EvqUniform) {
+        if (type.getBasicType() == glslang::EbtAtomicUint)
+            return spv::StorageClassAtomicCounter;
+        if (type.containsOpaque())
+            return spv::StorageClassUniformConstant;
+    }
+
+    if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) {
         builder.addExtension(spv::E_SPV_KHR_storage_buffer_storage_class);
         return spv::StorageClassStorageBuffer;
-    } else if (type.getQualifier().isUniformOrBuffer()) {
+    }
+
+    if (type.getQualifier().isUniformOrBuffer()) {
         if (type.getQualifier().layoutPushConstant)
             return spv::StorageClassPushConstant;
         if (type.getBasicType() == glslang::EbtBlock)
             return spv::StorageClassUniform;
-        else
-            return spv::StorageClassUniformConstant;
-    } else {
-        switch (type.getQualifier().storage) {
-        case glslang::EvqShared:        return spv::StorageClassWorkgroup;  break;
-        case glslang::EvqGlobal:        return spv::StorageClassPrivate;
-        case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
-        case glslang::EvqTemporary:     return spv::StorageClassFunction;
-        default:
-            assert(0);
-            return spv::StorageClassFunction;
-        }
+        return spv::StorageClassUniformConstant;
+    }
+
+    switch (type.getQualifier().storage) {
+    case glslang::EvqShared:        return spv::StorageClassWorkgroup;
+    case glslang::EvqGlobal:        return spv::StorageClassPrivate;
+    case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
+    case glslang::EvqTemporary:     return spv::StorageClassFunction;
+    default:
+        assert(0);
+        break;
     }
+
+    return spv::StorageClassFunction;
 }
 
 // Return whether or not the given type is something that should be tied to a
@@ -2997,15 +3005,21 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
         bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() ==
                                                           glslangIntermediate->implicitThisName;
 
+        const auto canPassOriginal = [&](const glslang::TType& paramType, bool firstParam) -> bool {
+            if (glslangIntermediate->getSource() == glslang::EShSourceHlsl)
+                return firstParam && implicitThis;
+            else
+                return paramType.containsOpaque() ||                                // sampler, etc.
+                       (paramType.getBasicType() == glslang::EbtBlock &&
+                        paramType.getQualifier().storage == glslang::EvqBuffer) ||  // SSBO
+                       (firstParam && implicitThis);                                // implicit 'this'
+        };
+
         paramDecorations.resize(parameters.size());
         for (int p = 0; p < (int)parameters.size(); ++p) {
             const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
             spv::Id typeId = convertGlslangToSpvType(paramType);
-            // can we pass by reference?
-            if (paramType.containsOpaque() ||                                // sampler, etc.
-                (paramType.getBasicType() == glslang::EbtBlock &&
-                 paramType.getQualifier().storage == glslang::EvqBuffer) ||  // SSBO
-                (p == 0 && implicitThis))                                    // implicit 'this'
+            if (canPassOriginal(paramType, p == 0))
                 typeId = builder.makePointer(TranslateStorageClass(paramType), typeId);
             else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
                 typeId = builder.makePointer(spv::StorageClassFunction, typeId);
@@ -3567,8 +3581,10 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
     const glslang::TIntermSequence& glslangArgs = node->getSequence();
     const glslang::TQualifierList& qualifiers = node->getQualifierList();
 
-    // Encapsulate lvalue logic, used in several places below, for safety.
-    const auto isLValue = [](int qualifier, const glslang::TType& paramType) -> bool {
+    // Encapsulate lvalue logic, used in multiple places below, for safety.
+    const auto isLValue = [&](int qualifier, const glslang::TType& paramType) -> bool {
+        if (glslangIntermediate->getSource() == glslang::EShSourceHlsl)
+            return qualifier != glslang::EvqConstReadOnly;
         return qualifier != glslang::EvqConstReadOnly || paramType.containsOpaque();
     };
 
@@ -3610,9 +3626,10 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg
     for (int a = 0; a < (int)glslangArgs.size(); ++a) {
         const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
         spv::Id arg;
-        if (paramType.containsOpaque() ||
-            (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer) ||
-            (a == 0 && function->hasImplicitThis())) {
+        if ((a == 0 && function->hasImplicitThis()) ||
+            (glslangIntermediate->getSource() != glslang::EShSourceHlsl &&
+             (paramType.containsOpaque() ||
+             (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer)))) {
             builder.setAccessChain(lValues[lValueCount]);
             arg = builder.accessChainGetLValue();
             ++lValueCount;
index aa40170..2ec2678 100755 (executable)
@@ -110,12 +110,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 53
+// Id's are bound by 59
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 51
+                              EntryPoint Fragment 4  "main" 57
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -125,25 +125,27 @@ gl_FragCoord origin is upper left
                               Name 16  "s.tex"
                               Name 20  "@main("
                               Name 35  "os.ss"
-                              Name 36  "gss2"
-                              Name 38  "gss"
-                              Name 40  "os.tex"
-                              Name 41  "gtex"
-                              Name 43  "os.a"
-                              Name 45  "param"
-                              Name 51  "@entryPointOutput"
-                              Decorate 36(gss2) DescriptorSet 0
-                              Decorate 38(gss) DescriptorSet 0
-                              Decorate 41(gtex) DescriptorSet 0
-                              Decorate 51(@entryPointOutput) Location 0
+                              Name 37  "gss2"
+                              Name 39  "gss"
+                              Name 41  "os.tex"
+                              Name 43  "gtex"
+                              Name 45  "os.a"
+                              Name 47  "param"
+                              Name 49  "param"
+                              Name 51  "param"
+                              Name 57  "@entryPointOutput"
+                              Decorate 37(gss2) DescriptorSet 0
+                              Decorate 39(gss) DescriptorSet 0
+                              Decorate 43(gtex) DescriptorSet 0
+                              Decorate 57(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeSampler
-               7:             TypePointer UniformConstant 6
+               7:             TypePointer Function 6
                8:             TypeFloat 32
                9:             TypePointer Function 8(float)
               10:             TypeImage 8(float) 2D sampled format:Unknown
-              11:             TypePointer UniformConstant 10
+              11:             TypePointer Function 10
               12:             TypeVector 8(float) 4
               13:             TypeFunction 12(fvec4) 7(ptr) 9(ptr) 11(ptr)
               19:             TypeFunction 12(fvec4)
@@ -152,18 +154,18 @@ gl_FragCoord origin is upper left
               28:    8(float) Constant 1045220557
               29:    8(float) Constant 1050253722
               30:   27(fvec2) ConstantComposite 28 29
-       35(os.ss):      7(ptr) Variable UniformConstant
-        36(gss2):      7(ptr) Variable UniformConstant
-         38(gss):      7(ptr) Variable UniformConstant
-      40(os.tex):     11(ptr) Variable UniformConstant
-        41(gtex):     11(ptr) Variable UniformConstant
-              44:    8(float) Constant 1077936128
-              50:             TypePointer Output 12(fvec4)
-51(@entryPointOutput):     50(ptr) Variable Output
+              36:             TypePointer UniformConstant 6
+        37(gss2):     36(ptr) Variable UniformConstant
+         39(gss):     36(ptr) Variable UniformConstant
+              42:             TypePointer UniformConstant 10
+        43(gtex):     42(ptr) Variable UniformConstant
+              46:    8(float) Constant 1077936128
+              56:             TypePointer Output 12(fvec4)
+57(@entryPointOutput):     56(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              52:   12(fvec4) FunctionCall 20(@main()
-                              Store 51(@entryPointOutput) 52
+              58:   12(fvec4) FunctionCall 20(@main()
+                              Store 57(@entryPointOutput) 58
                               Return
                               FunctionEnd
 17(osCall(struct-OS-p1-f1-t211;):   12(fvec4) Function None 13
@@ -181,17 +183,25 @@ gl_FragCoord origin is upper left
                               FunctionEnd
       20(@main():   12(fvec4) Function None 19
               21:             Label
-        43(os.a):      9(ptr) Variable Function
-       45(param):      9(ptr) Variable Function
-              37:           6 Load 36(gss2)
-                              Store 35(os.ss) 37
-              39:           6 Load 38(gss)
-                              Store 35(os.ss) 39
-              42:          10 Load 41(gtex)
-                              Store 40(os.tex) 42
-                              Store 43(os.a) 44
-              46:    8(float) Load 43(os.a)
-                              Store 45(param) 46
-              47:   12(fvec4) FunctionCall 17(osCall(struct-OS-p1-f1-t211;) 35(os.ss) 45(param) 40(os.tex)
-                              ReturnValue 47
+       35(os.ss):      7(ptr) Variable Function
+      41(os.tex):     11(ptr) Variable Function
+        45(os.a):      9(ptr) Variable Function
+       47(param):      7(ptr) Variable Function
+       49(param):      9(ptr) Variable Function
+       51(param):     11(ptr) Variable Function
+              38:           6 Load 37(gss2)
+                              Store 35(os.ss) 38
+              40:           6 Load 39(gss)
+                              Store 35(os.ss) 40
+              44:          10 Load 43(gtex)
+                              Store 41(os.tex) 44
+                              Store 45(os.a) 46
+              48:           6 Load 35(os.ss)
+                              Store 47(param) 48
+              50:    8(float) Load 45(os.a)
+                              Store 49(param) 50
+              52:          10 Load 41(os.tex)
+                              Store 51(param) 52
+              53:   12(fvec4) FunctionCall 17(osCall(struct-OS-p1-f1-t211;) 47(param) 49(param) 51(param)
+                              ReturnValue 53
                               FunctionEnd
index 7479027..974ca12 100644 (file)
@@ -346,13 +346,13 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 137
+// Id's are bound by 143
 
                               Capability Shader
                               Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 128
+                              EntryPoint Fragment 4  "main" 134
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -367,60 +367,62 @@ gl_FragCoord origin is upper left
                               Name 34  "not_flattened_a"
                               Name 42  "g_tex[1]"
                               Name 45  "g_samp[1]"
-                              Name 61  "local_sampler_array"
-                              Name 63  "g_samp[0]"
-                              Name 68  "g_samp[2]"
-                              Name 71  "local_texture_array"
-                              Name 72  "g_tex[0]"
-                              Name 77  "g_tex[2]"
-                              Name 83  "local_float_array"
-                              Name 89  "$Global"
-                              MemberName 89($Global) 0  "g_mats"
-                              MemberName 89($Global) 1  "g_mats_explicit"
-                              MemberName 89($Global) 2  "g_floats"
-                              Name 91  ""
-                              Name 105  "aggShadow"
-                              Name 112  "aggShadow"
-                              Name 123  "ps_output"
-                              Name 124  "param"
-                              Name 128  "ps_output.color"
-                              Name 131  "g_tex_explicit[0]"
-                              Name 132  "g_tex_explicit[1]"
-                              Name 133  "g_tex_explicit[2]"
-                              Name 134  "g_samp_explicit[0]"
-                              Name 135  "g_samp_explicit[1]"
-                              Name 136  "g_samp_explicit[2]"
+                              Name 63  "local_sampler_array"
+                              Name 65  "g_samp[0]"
+                              Name 70  "g_samp[2]"
+                              Name 73  "local_texture_array"
+                              Name 74  "g_tex[0]"
+                              Name 79  "g_tex[2]"
+                              Name 85  "local_float_array"
+                              Name 91  "$Global"
+                              MemberName 91($Global) 0  "g_mats"
+                              MemberName 91($Global) 1  "g_mats_explicit"
+                              MemberName 91($Global) 2  "g_floats"
+                              Name 93  ""
+                              Name 107  "aggShadow"
+                              Name 114  "aggShadow"
+                              Name 121  "param"
+                              Name 123  "param"
+                              Name 129  "ps_output"
+                              Name 130  "param"
+                              Name 134  "ps_output.color"
+                              Name 137  "g_tex_explicit[0]"
+                              Name 138  "g_tex_explicit[1]"
+                              Name 139  "g_tex_explicit[2]"
+                              Name 140  "g_samp_explicit[0]"
+                              Name 141  "g_samp_explicit[1]"
+                              Name 142  "g_samp_explicit[2]"
                               Decorate 42(g_tex[1]) DescriptorSet 0
                               Decorate 45(g_samp[1]) DescriptorSet 0
-                              Decorate 63(g_samp[0]) DescriptorSet 0
-                              Decorate 68(g_samp[2]) DescriptorSet 0
-                              Decorate 72(g_tex[0]) DescriptorSet 0
-                              Decorate 77(g_tex[2]) DescriptorSet 0
-                              Decorate 86 ArrayStride 48
-                              Decorate 87 ArrayStride 48
-                              Decorate 88 ArrayStride 16
-                              MemberDecorate 89($Global) 0 RowMajor
-                              MemberDecorate 89($Global) 0 Offset 0
-                              MemberDecorate 89($Global) 0 MatrixStride 16
-                              MemberDecorate 89($Global) 1 RowMajor
-                              MemberDecorate 89($Global) 1 Offset 192
-                              MemberDecorate 89($Global) 1 MatrixStride 16
-                              MemberDecorate 89($Global) 2 Offset 384
-                              Decorate 89($Global) Block
-                              Decorate 91 DescriptorSet 0
-                              Decorate 128(ps_output.color) Location 0
-                              Decorate 131(g_tex_explicit[0]) DescriptorSet 0
-                              Decorate 131(g_tex_explicit[0]) Binding 1
-                              Decorate 132(g_tex_explicit[1]) DescriptorSet 0
-                              Decorate 132(g_tex_explicit[1]) Binding 2
-                              Decorate 133(g_tex_explicit[2]) DescriptorSet 0
-                              Decorate 133(g_tex_explicit[2]) Binding 3
-                              Decorate 134(g_samp_explicit[0]) DescriptorSet 0
-                              Decorate 134(g_samp_explicit[0]) Binding 5
-                              Decorate 135(g_samp_explicit[1]) DescriptorSet 0
-                              Decorate 135(g_samp_explicit[1]) Binding 6
-                              Decorate 136(g_samp_explicit[2]) DescriptorSet 0
-                              Decorate 136(g_samp_explicit[2]) Binding 7
+                              Decorate 65(g_samp[0]) DescriptorSet 0
+                              Decorate 70(g_samp[2]) DescriptorSet 0
+                              Decorate 74(g_tex[0]) DescriptorSet 0
+                              Decorate 79(g_tex[2]) DescriptorSet 0
+                              Decorate 88 ArrayStride 48
+                              Decorate 89 ArrayStride 48
+                              Decorate 90 ArrayStride 16
+                              MemberDecorate 91($Global) 0 RowMajor
+                              MemberDecorate 91($Global) 0 Offset 0
+                              MemberDecorate 91($Global) 0 MatrixStride 16
+                              MemberDecorate 91($Global) 1 RowMajor
+                              MemberDecorate 91($Global) 1 Offset 192
+                              MemberDecorate 91($Global) 1 MatrixStride 16
+                              MemberDecorate 91($Global) 2 Offset 384
+                              Decorate 91($Global) Block
+                              Decorate 93 DescriptorSet 0
+                              Decorate 134(ps_output.color) Location 0
+                              Decorate 137(g_tex_explicit[0]) DescriptorSet 0
+                              Decorate 137(g_tex_explicit[0]) Binding 1
+                              Decorate 138(g_tex_explicit[1]) DescriptorSet 0
+                              Decorate 138(g_tex_explicit[1]) Binding 2
+                              Decorate 139(g_tex_explicit[2]) DescriptorSet 0
+                              Decorate 139(g_tex_explicit[2]) Binding 3
+                              Decorate 140(g_samp_explicit[0]) DescriptorSet 0
+                              Decorate 140(g_samp_explicit[0]) Binding 5
+                              Decorate 141(g_samp_explicit[1]) DescriptorSet 0
+                              Decorate 141(g_samp_explicit[1]) Binding 6
+                              Decorate 142(g_samp_explicit[2]) DescriptorSet 0
+                              Decorate 142(g_samp_explicit[2]) Binding 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -430,10 +432,10 @@ gl_FragCoord origin is upper left
               12:             TypeInt 32 0
               13:     12(int) Constant 3
               14:             TypeArray 11 13
-              15:             TypePointer UniformConstant 14
+              15:             TypePointer Function 14
               16:             TypeSampler
               17:             TypeArray 16 13
-              18:             TypePointer UniformConstant 17
+              18:             TypePointer Function 17
               19:             TypeFunction 7(fvec4) 15(ptr) 18(ptr)
    24(PS_OUTPUT):             TypeStruct 7(fvec4)
               25:             TypePointer Function 24(PS_OUTPUT)
@@ -455,48 +457,46 @@ gl_FragCoord origin is upper left
    45(g_samp[1]):     44(ptr) Variable UniformConstant
               47:             TypeSampledImage 11
               49:    6(float) Constant 1045220557
-61(local_sampler_array):     18(ptr) Variable UniformConstant
-              62:     30(int) Constant 0
-   63(g_samp[0]):     44(ptr) Variable UniformConstant
-   68(g_samp[2]):     44(ptr) Variable UniformConstant
-71(local_texture_array):     15(ptr) Variable UniformConstant
-    72(g_tex[0]):     41(ptr) Variable UniformConstant
-    77(g_tex[2]):     41(ptr) Variable UniformConstant
-              80:     12(int) Constant 4
-              81:             TypeArray 6(float) 80
-              82:             TypePointer Function 81
-              84:             TypeVector 6(float) 3
-              85:             TypeMatrix 84(fvec3) 3
-              86:             TypeArray 85 80
-              87:             TypeArray 85 80
-              88:             TypeArray 6(float) 80
-     89($Global):             TypeStruct 86 87 88
-              90:             TypePointer Uniform 89($Global)
-              91:     90(ptr) Variable Uniform
-              92:             TypePointer Uniform 88
-              96:             TypePointer Function 6(float)
-  105(aggShadow):     15(ptr) Variable UniformConstant
-  112(aggShadow):     18(ptr) Variable UniformConstant
-             121:             TypePointer Function 7(fvec4)
-             127:             TypePointer Output 7(fvec4)
-128(ps_output.color):    127(ptr) Variable Output
-131(g_tex_explicit[0]):     41(ptr) Variable UniformConstant
-132(g_tex_explicit[1]):     41(ptr) Variable UniformConstant
-133(g_tex_explicit[2]):     41(ptr) Variable UniformConstant
-134(g_samp_explicit[0]):     44(ptr) Variable UniformConstant
-135(g_samp_explicit[1]):     44(ptr) Variable UniformConstant
-136(g_samp_explicit[2]):     44(ptr) Variable UniformConstant
+              53:             TypePointer Function 11
+              56:             TypePointer Function 16
+              64:     30(int) Constant 0
+   65(g_samp[0]):     44(ptr) Variable UniformConstant
+   70(g_samp[2]):     44(ptr) Variable UniformConstant
+    74(g_tex[0]):     41(ptr) Variable UniformConstant
+    79(g_tex[2]):     41(ptr) Variable UniformConstant
+              82:     12(int) Constant 4
+              83:             TypeArray 6(float) 82
+              84:             TypePointer Function 83
+              86:             TypeVector 6(float) 3
+              87:             TypeMatrix 86(fvec3) 3
+              88:             TypeArray 87 82
+              89:             TypeArray 87 82
+              90:             TypeArray 6(float) 82
+     91($Global):             TypeStruct 88 89 90
+              92:             TypePointer Uniform 91($Global)
+              93:     92(ptr) Variable Uniform
+              94:             TypePointer Uniform 90
+              98:             TypePointer Function 6(float)
+             127:             TypePointer Function 7(fvec4)
+             133:             TypePointer Output 7(fvec4)
+134(ps_output.color):    133(ptr) Variable Output
+137(g_tex_explicit[0]):     41(ptr) Variable UniformConstant
+138(g_tex_explicit[1]):     41(ptr) Variable UniformConstant
+139(g_tex_explicit[2]):     41(ptr) Variable UniformConstant
+140(g_samp_explicit[0]):     44(ptr) Variable UniformConstant
+141(g_samp_explicit[1]):     44(ptr) Variable UniformConstant
+142(g_samp_explicit[2]):     44(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-  123(ps_output):     25(ptr) Variable Function
-      124(param):     25(ptr) Variable Function
+  129(ps_output):     25(ptr) Variable Function
+      130(param):     25(ptr) Variable Function
                               Store 34(not_flattened_a) 40
-             125:           2 FunctionCall 28(@main(struct-PS_OUTPUT-vf41;) 124(param)
-             126:24(PS_OUTPUT) Load 124(param)
-                              Store 123(ps_output) 126
-             129:    121(ptr) AccessChain 123(ps_output) 62
-             130:    7(fvec4) Load 129
-                              Store 128(ps_output.color) 130
+             131:           2 FunctionCall 28(@main(struct-PS_OUTPUT-vf41;) 130(param)
+             132:24(PS_OUTPUT) Load 130(param)
+                              Store 129(ps_output) 132
+             135:    127(ptr) AccessChain 129(ps_output) 64
+             136:    7(fvec4) Load 135
+                              Store 134(ps_output.color) 136
                               Return
                               FunctionEnd
      9(TestFn1():    7(fvec4) Function None 8
@@ -511,72 +511,82 @@ gl_FragCoord origin is upper left
        20(l_tex):     15(ptr) FunctionParameter
       21(l_samp):     18(ptr) FunctionParameter
               23:             Label
-              53:     41(ptr) AccessChain 20(l_tex) 36
-              54:          11 Load 53
-              55:     44(ptr) AccessChain 21(l_samp) 36
-              56:          16 Load 55
-              57:          47 SampledImage 54 56
-              58:    7(fvec4) ImageSampleImplicitLod 57 49
-                              ReturnValue 58
+              54:     53(ptr) AccessChain 20(l_tex) 36
+              55:          11 Load 54
+              57:     56(ptr) AccessChain 21(l_samp) 36
+              58:          16 Load 57
+              59:          47 SampledImage 55 58
+              60:    7(fvec4) ImageSampleImplicitLod 59 49
+                              ReturnValue 60
                               FunctionEnd
 28(@main(struct-PS_OUTPUT-vf41;):           2 Function None 26
    27(ps_output):     25(ptr) FunctionParameter
               29:             Label
-83(local_float_array):     82(ptr) Variable Function
-              64:          16 Load 63(g_samp[0])
-              65:     44(ptr) AccessChain 61(local_sampler_array) 62
-                              Store 65 64
-              66:          16 Load 45(g_samp[1])
-              67:     44(ptr) AccessChain 61(local_sampler_array) 35
+63(local_sampler_array):     18(ptr) Variable Function
+73(local_texture_array):     15(ptr) Variable Function
+85(local_float_array):     84(ptr) Variable Function
+  107(aggShadow):     15(ptr) Variable Function
+  114(aggShadow):     18(ptr) Variable Function
+      121(param):     15(ptr) Variable Function
+      123(param):     18(ptr) Variable Function
+              66:          16 Load 65(g_samp[0])
+              67:     56(ptr) AccessChain 63(local_sampler_array) 64
                               Store 67 66
-              69:          16 Load 68(g_samp[2])
-              70:     44(ptr) AccessChain 61(local_sampler_array) 36
-                              Store 70 69
-              73:          11 Load 72(g_tex[0])
-              74:     41(ptr) AccessChain 71(local_texture_array) 62
-                              Store 74 73
-              75:          11 Load 42(g_tex[1])
-              76:     41(ptr) AccessChain 71(local_texture_array) 35
+              68:          16 Load 45(g_samp[1])
+              69:     56(ptr) AccessChain 63(local_sampler_array) 35
+                              Store 69 68
+              71:          16 Load 70(g_samp[2])
+              72:     56(ptr) AccessChain 63(local_sampler_array) 36
+                              Store 72 71
+              75:          11 Load 74(g_tex[0])
+              76:     53(ptr) AccessChain 73(local_texture_array) 64
                               Store 76 75
-              78:          11 Load 77(g_tex[2])
-              79:     41(ptr) AccessChain 71(local_texture_array) 36
-                              Store 79 78
-              93:     92(ptr) AccessChain 91 36
-              94:          88 Load 93
-              95:    6(float) CompositeExtract 94 0
-              97:     96(ptr) AccessChain 83(local_float_array) 62
-                              Store 97 95
-              98:    6(float) CompositeExtract 94 1
-              99:     96(ptr) AccessChain 83(local_float_array) 35
-                              Store 99 98
-             100:    6(float) CompositeExtract 94 2
-             101:     96(ptr) AccessChain 83(local_float_array) 36
+              77:          11 Load 42(g_tex[1])
+              78:     53(ptr) AccessChain 73(local_texture_array) 35
+                              Store 78 77
+              80:          11 Load 79(g_tex[2])
+              81:     53(ptr) AccessChain 73(local_texture_array) 36
+                              Store 81 80
+              95:     94(ptr) AccessChain 93 36
+              96:          90 Load 95
+              97:    6(float) CompositeExtract 96 0
+              99:     98(ptr) AccessChain 85(local_float_array) 64
+                              Store 99 97
+             100:    6(float) CompositeExtract 96 1
+             101:     98(ptr) AccessChain 85(local_float_array) 35
                               Store 101 100
-             102:    6(float) CompositeExtract 94 3
-             103:     96(ptr) AccessChain 83(local_float_array) 37
+             102:    6(float) CompositeExtract 96 2
+             103:     98(ptr) AccessChain 85(local_float_array) 36
                               Store 103 102
-             104:    7(fvec4) FunctionCall 9(TestFn1()
-             106:          11 Load 72(g_tex[0])
-             107:     41(ptr) AccessChain 105(aggShadow) 62
-                              Store 107 106
-             108:          11 Load 42(g_tex[1])
-             109:     41(ptr) AccessChain 105(aggShadow) 35
+             104:    6(float) CompositeExtract 96 3
+             105:     98(ptr) AccessChain 85(local_float_array) 37
+                              Store 105 104
+             106:    7(fvec4) FunctionCall 9(TestFn1()
+             108:          11 Load 74(g_tex[0])
+             109:     53(ptr) AccessChain 107(aggShadow) 64
                               Store 109 108
-             110:          11 Load 77(g_tex[2])
-             111:     41(ptr) AccessChain 105(aggShadow) 36
+             110:          11 Load 42(g_tex[1])
+             111:     53(ptr) AccessChain 107(aggShadow) 35
                               Store 111 110
-             113:          16 Load 63(g_samp[0])
-             114:     44(ptr) AccessChain 112(aggShadow) 62
-                              Store 114 113
-             115:          16 Load 45(g_samp[1])
-             116:     44(ptr) AccessChain 112(aggShadow) 35
+             112:          11 Load 79(g_tex[2])
+             113:     53(ptr) AccessChain 107(aggShadow) 36
+                              Store 113 112
+             115:          16 Load 65(g_samp[0])
+             116:     56(ptr) AccessChain 114(aggShadow) 64
                               Store 116 115
-             117:          16 Load 68(g_samp[2])
-             118:     44(ptr) AccessChain 112(aggShadow) 36
+             117:          16 Load 45(g_samp[1])
+             118:     56(ptr) AccessChain 114(aggShadow) 35
                               Store 118 117
-             119:    7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 105(aggShadow) 112(aggShadow)
-             120:    7(fvec4) FAdd 104 119
-             122:    121(ptr) AccessChain 27(ps_output) 62
-                              Store 122 120
+             119:          16 Load 70(g_samp[2])
+             120:     56(ptr) AccessChain 114(aggShadow) 36
+                              Store 120 119
+             122:          14 Load 107(aggShadow)
+                              Store 121(param) 122
+             124:          17 Load 114(aggShadow)
+                              Store 123(param) 124
+             125:    7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 121(param) 123(param)
+             126:    7(fvec4) FAdd 106 125
+             128:    127(ptr) AccessChain 27(ps_output) 64
+                              Store 128 126
                               Return
                               FunctionEnd
index aa72124..08504d4 100755 (executable)
@@ -179,12 +179,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 85
+// Id's are bound by 99
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 83
+                              EntryPoint Fragment 4  "main" 97
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -201,22 +201,28 @@ gl_FragCoord origin is upper left
                               Name 30  "s.tex"
                               Name 31  "f2"
                               Name 35  "@main("
-                              Name 37  "tex"
-                              Name 68  "s.s2D"
-                              Name 70  "param"
-                              Name 73  "s2.s2D"
-                              Name 74  "s2.tex"
-                              Name 77  "param"
-                              Name 83  "@entryPointOutput"
-                              Decorate 37(tex) DescriptorSet 0
-                              Decorate 68(s.s2D) DescriptorSet 0
-                              Decorate 73(s2.s2D) DescriptorSet 0
-                              Decorate 74(s2.tex) DescriptorSet 0
-                              Decorate 83(@entryPointOutput) Location 0
+                              Name 38  "tex"
+                              Name 70  "s.s2D"
+                              Name 71  "param"
+                              Name 74  "param"
+                              Name 76  "param"
+                              Name 79  "s2.s2D"
+                              Name 80  "s2.tex"
+                              Name 81  "param"
+                              Name 83  "param"
+                              Name 87  "param"
+                              Name 89  "param"
+                              Name 91  "param"
+                              Name 97  "@entryPointOutput"
+                              Decorate 38(tex) DescriptorSet 0
+                              Decorate 70(s.s2D) DescriptorSet 0
+                              Decorate 79(s2.s2D) DescriptorSet 0
+                              Decorate 80(s2.tex) DescriptorSet 0
+                              Decorate 97(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeSampler
-               7:             TypePointer UniformConstant 6
+               7:             TypePointer Function 6
                8:             TypeFloat 32
                9:             TypeVector 8(float) 4
               10:             TypeFunction 9(fvec4) 7(ptr)
@@ -224,80 +230,100 @@ gl_FragCoord origin is upper left
               15:             TypePointer Function 14(fvec2)
               16:             TypeFunction 9(fvec4) 7(ptr) 15(ptr)
               21:             TypeImage 8(float) 2D sampled format:Unknown
-              22:             TypePointer UniformConstant 21
+              22:             TypePointer Function 21
               23:             TypeFunction 9(fvec4) 7(ptr) 22(ptr)
               28:             TypeFunction 9(fvec4) 7(ptr) 22(ptr) 15(ptr)
               34:             TypeFunction 9(fvec4)
-         37(tex):     22(ptr) Variable UniformConstant
-              40:             TypeSampledImage 21
-              42:    8(float) Constant 1045220557
-              43:    8(float) Constant 1050253722
-              44:   14(fvec2) ConstantComposite 42 43
-       68(s.s2D):      7(ptr) Variable UniformConstant
-      73(s2.s2D):      7(ptr) Variable UniformConstant
-      74(s2.tex):     22(ptr) Variable UniformConstant
-              82:             TypePointer Output 9(fvec4)
-83(@entryPointOutput):     82(ptr) Variable Output
+              37:             TypePointer UniformConstant 21
+         38(tex):     37(ptr) Variable UniformConstant
+              41:             TypeSampledImage 21
+              43:    8(float) Constant 1045220557
+              44:    8(float) Constant 1050253722
+              45:   14(fvec2) ConstantComposite 43 44
+              69:             TypePointer UniformConstant 6
+       70(s.s2D):     69(ptr) Variable UniformConstant
+      79(s2.s2D):     69(ptr) Variable UniformConstant
+      80(s2.tex):     37(ptr) Variable UniformConstant
+              96:             TypePointer Output 9(fvec4)
+97(@entryPointOutput):     96(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              84:    9(fvec4) FunctionCall 35(@main()
-                              Store 83(@entryPointOutput) 84
+              98:    9(fvec4) FunctionCall 35(@main()
+                              Store 97(@entryPointOutput) 98
                               Return
                               FunctionEnd
 12(osCall1(struct-os-p11;):    9(fvec4) Function None 10
        11(s.s2D):      7(ptr) FunctionParameter
               13:             Label
-              38:          21 Load 37(tex)
-              39:           6 Load 11(s.s2D)
-              41:          40 SampledImage 38 39
-              45:    9(fvec4) ImageSampleImplicitLod 41 44
-                              ReturnValue 45
+              39:          21 Load 38(tex)
+              40:           6 Load 11(s.s2D)
+              42:          41 SampledImage 39 40
+              46:    9(fvec4) ImageSampleImplicitLod 42 45
+                              ReturnValue 46
                               FunctionEnd
 19(osCall2(struct-os-p11;vf2;):    9(fvec4) Function None 16
        17(s.s2D):      7(ptr) FunctionParameter
           18(f2):     15(ptr) FunctionParameter
               20:             Label
-              48:          21 Load 37(tex)
-              49:           6 Load 17(s.s2D)
-              50:          40 SampledImage 48 49
-              51:   14(fvec2) Load 18(f2)
-              52:    9(fvec4) ImageSampleImplicitLod 50 51
-                              ReturnValue 52
+              49:          21 Load 38(tex)
+              50:           6 Load 17(s.s2D)
+              51:          41 SampledImage 49 50
+              52:   14(fvec2) Load 18(f2)
+              53:    9(fvec4) ImageSampleImplicitLod 51 52
+                              ReturnValue 53
                               FunctionEnd
 26(os2Call1(struct-os2-p1-t211;):    9(fvec4) Function None 23
        24(s.s2D):      7(ptr) FunctionParameter
        25(s.tex):     22(ptr) FunctionParameter
               27:             Label
-              55:          21 Load 25(s.tex)
-              56:           6 Load 24(s.s2D)
-              57:          40 SampledImage 55 56
-              58:    9(fvec4) ImageSampleImplicitLod 57 44
-                              ReturnValue 58
+              56:          21 Load 25(s.tex)
+              57:           6 Load 24(s.s2D)
+              58:          41 SampledImage 56 57
+              59:    9(fvec4) ImageSampleImplicitLod 58 45
+                              ReturnValue 59
                               FunctionEnd
 32(os2Call2(struct-os2-p1-t211;vf2;):    9(fvec4) Function None 28
        29(s.s2D):      7(ptr) FunctionParameter
        30(s.tex):     22(ptr) FunctionParameter
           31(f2):     15(ptr) FunctionParameter
               33:             Label
-              61:          21 Load 30(s.tex)
-              62:           6 Load 29(s.s2D)
-              63:          40 SampledImage 61 62
-              64:   14(fvec2) Load 31(f2)
-              65:    9(fvec4) ImageSampleImplicitLod 63 64
-                              ReturnValue 65
+              62:          21 Load 30(s.tex)
+              63:           6 Load 29(s.s2D)
+              64:          41 SampledImage 62 63
+              65:   14(fvec2) Load 31(f2)
+              66:    9(fvec4) ImageSampleImplicitLod 64 65
+                              ReturnValue 66
                               FunctionEnd
       35(@main():    9(fvec4) Function None 34
               36:             Label
-       70(param):     15(ptr) Variable Function
-       77(param):     15(ptr) Variable Function
-              69:    9(fvec4) FunctionCall 12(osCall1(struct-os-p11;) 68(s.s2D)
-                              Store 70(param) 44
-              71:    9(fvec4) FunctionCall 19(osCall2(struct-os-p11;vf2;) 68(s.s2D) 70(param)
-              72:    9(fvec4) FAdd 69 71
-              75:    9(fvec4) FunctionCall 26(os2Call1(struct-os2-p1-t211;) 73(s2.s2D) 74(s2.tex)
-              76:    9(fvec4) FAdd 72 75
-                              Store 77(param) 44
-              78:    9(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 73(s2.s2D) 74(s2.tex) 77(param)
-              79:    9(fvec4) FAdd 76 78
-                              ReturnValue 79
+       71(param):      7(ptr) Variable Function
+       74(param):      7(ptr) Variable Function
+       76(param):     15(ptr) Variable Function
+       81(param):      7(ptr) Variable Function
+       83(param):     22(ptr) Variable Function
+       87(param):      7(ptr) Variable Function
+       89(param):     22(ptr) Variable Function
+       91(param):     15(ptr) Variable Function
+              72:           6 Load 70(s.s2D)
+                              Store 71(param) 72
+              73:    9(fvec4) FunctionCall 12(osCall1(struct-os-p11;) 71(param)
+              75:           6 Load 70(s.s2D)
+                              Store 74(param) 75
+                              Store 76(param) 45
+              77:    9(fvec4) FunctionCall 19(osCall2(struct-os-p11;vf2;) 74(param) 76(param)
+              78:    9(fvec4) FAdd 73 77
+              82:           6 Load 79(s2.s2D)
+                              Store 81(param) 82
+              84:          21 Load 80(s2.tex)
+                              Store 83(param) 84
+              85:    9(fvec4) FunctionCall 26(os2Call1(struct-os2-p1-t211;) 81(param) 83(param)
+              86:    9(fvec4) FAdd 78 85
+              88:           6 Load 79(s2.s2D)
+                              Store 87(param) 88
+              90:          21 Load 80(s2.tex)
+                              Store 89(param) 90
+                              Store 91(param) 45
+              92:    9(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 87(param) 89(param) 91(param)
+              93:    9(fvec4) FAdd 86 92
+                              ReturnValue 93
                               FunctionEnd
index f42d583..dee2808 100755 (executable)
@@ -166,12 +166,12 @@ Shader version: 500
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 74
+// Id's are bound by 80
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 72
+                              EntryPoint Vertex 4  "main" 78
                               Source HLSL 500
                               Name 4  "main"
                               Name 15  "lookUp(struct-FxaaTex-p1-t211;"
@@ -183,27 +183,29 @@ Shader version: 500
                               Name 19  "fillOpaque("
                               Name 22  "@main("
                               Name 36  "t.smpl"
-                              Name 37  "g_tInputTexture_sampler"
-                              Name 39  "t.tex"
-                              Name 40  "g_tInputTexture"
-                              Name 43  "t"
-                              Name 47  "flattenTemp"
-                              Name 51  "tex1.smpl"
-                              Name 56  "tex1.tex"
-                              Name 60  "flattenTemp"
-                              Name 62  "tex2.smpl"
-                              Name 65  "tex2.tex"
-                              Name 72  "@entryPointOutput"
-                              Decorate 37(g_tInputTexture_sampler) DescriptorSet 0
-                              Decorate 40(g_tInputTexture) DescriptorSet 0
-                              Decorate 72(@entryPointOutput) Location 0
+                              Name 38  "g_tInputTexture_sampler"
+                              Name 40  "t.tex"
+                              Name 42  "g_tInputTexture"
+                              Name 45  "t"
+                              Name 49  "flattenTemp"
+                              Name 53  "tex1.smpl"
+                              Name 58  "tex1.tex"
+                              Name 62  "flattenTemp"
+                              Name 64  "tex2.smpl"
+                              Name 67  "tex2.tex"
+                              Name 70  "param"
+                              Name 72  "param"
+                              Name 78  "@entryPointOutput"
+                              Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+                              Decorate 42(g_tInputTexture) DescriptorSet 0
+                              Decorate 78(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeSampler
-               7:             TypePointer UniformConstant 6
+               7:             TypePointer Function 6
                8:             TypeFloat 32
                9:             TypeImage 8(float) 2D sampled format:Unknown
-              10:             TypePointer UniformConstant 9
+              10:             TypePointer Function 9
               11:             TypeVector 8(float) 4
               12:             TypeFunction 11(fvec4) 7(ptr) 10(ptr)
      17(FxaaTex):             TypeStruct 6 9
@@ -215,27 +217,20 @@ Shader version: 500
               30:    8(float) Constant 1053609165
               31:   28(fvec2) ConstantComposite 29 30
               32:    8(float) Constant 0
-      36(t.smpl):      7(ptr) Variable UniformConstant
-37(g_tInputTexture_sampler):      7(ptr) Variable UniformConstant
-       39(t.tex):     10(ptr) Variable UniformConstant
-40(g_tInputTexture):     10(ptr) Variable UniformConstant
-              42:             TypePointer UniformConstant 17(FxaaTex)
-           43(t):     42(ptr) Variable UniformConstant
- 47(flattenTemp):     42(ptr) Variable UniformConstant
-   51(tex1.smpl):      7(ptr) Variable UniformConstant
-              52:             TypeInt 32 1
-              53:     52(int) Constant 0
-    56(tex1.tex):     10(ptr) Variable UniformConstant
-              57:     52(int) Constant 1
- 60(flattenTemp):     42(ptr) Variable UniformConstant
-   62(tex2.smpl):      7(ptr) Variable UniformConstant
-    65(tex2.tex):     10(ptr) Variable UniformConstant
-              71:             TypePointer Output 11(fvec4)
-72(@entryPointOutput):     71(ptr) Variable Output
+              37:             TypePointer UniformConstant 6
+38(g_tInputTexture_sampler):     37(ptr) Variable UniformConstant
+              41:             TypePointer UniformConstant 9
+42(g_tInputTexture):     41(ptr) Variable UniformConstant
+              44:             TypePointer Function 17(FxaaTex)
+              54:             TypeInt 32 1
+              55:     54(int) Constant 0
+              59:     54(int) Constant 1
+              77:             TypePointer Output 11(fvec4)
+78(@entryPointOutput):     77(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              73:   11(fvec4) FunctionCall 22(@main()
-                              Store 72(@entryPointOutput) 73
+              79:   11(fvec4) FunctionCall 22(@main()
+                              Store 78(@entryPointOutput) 79
                               Return
                               FunctionEnd
 15(lookUp(struct-FxaaTex-p1-t211;):   11(fvec4) Function None 12
@@ -250,33 +245,48 @@ Shader version: 500
                               FunctionEnd
  19(fillOpaque(): 17(FxaaTex) Function None 18
               20:             Label
-              38:           6 Load 37(g_tInputTexture_sampler)
-                              Store 36(t.smpl) 38
-              41:           9 Load 40(g_tInputTexture)
-                              Store 39(t.tex) 41
-              44: 17(FxaaTex) Load 43(t)
-                              ReturnValue 44
+      36(t.smpl):      7(ptr) Variable Function
+       40(t.tex):     10(ptr) Variable Function
+           45(t):     44(ptr) Variable Function
+              39:           6 Load 38(g_tInputTexture_sampler)
+                              Store 36(t.smpl) 39
+              43:           9 Load 42(g_tInputTexture)
+                              Store 40(t.tex) 43
+              46: 17(FxaaTex) Load 45(t)
+                              ReturnValue 46
                               FunctionEnd
       22(@main():   11(fvec4) Function None 21
               23:             Label
-              48:           6 Load 37(g_tInputTexture_sampler)
-              49:           9 Load 40(g_tInputTexture)
-              50: 17(FxaaTex) CompositeConstruct 48 49
-                              Store 47(flattenTemp) 50
-              54:      7(ptr) AccessChain 47(flattenTemp) 53
-              55:           6 Load 54
-                              Store 51(tex1.smpl) 55
-              58:     10(ptr) AccessChain 47(flattenTemp) 57
-              59:           9 Load 58
-                              Store 56(tex1.tex) 59
-              61: 17(FxaaTex) FunctionCall 19(fillOpaque()
-                              Store 60(flattenTemp) 61
-              63:      7(ptr) AccessChain 60(flattenTemp) 53
-              64:           6 Load 63
-                              Store 62(tex2.smpl) 64
-              66:     10(ptr) AccessChain 60(flattenTemp) 57
-              67:           9 Load 66
-                              Store 65(tex2.tex) 67
-              68:   11(fvec4) FunctionCall 15(lookUp(struct-FxaaTex-p1-t211;) 51(tex1.smpl) 56(tex1.tex)
-                              ReturnValue 68
+ 49(flattenTemp):     44(ptr) Variable Function
+   53(tex1.smpl):      7(ptr) Variable Function
+    58(tex1.tex):     10(ptr) Variable Function
+ 62(flattenTemp):     44(ptr) Variable Function
+   64(tex2.smpl):      7(ptr) Variable Function
+    67(tex2.tex):     10(ptr) Variable Function
+       70(param):      7(ptr) Variable Function
+       72(param):     10(ptr) Variable Function
+              50:           6 Load 38(g_tInputTexture_sampler)
+              51:           9 Load 42(g_tInputTexture)
+              52: 17(FxaaTex) CompositeConstruct 50 51
+                              Store 49(flattenTemp) 52
+              56:      7(ptr) AccessChain 49(flattenTemp) 55
+              57:           6 Load 56
+                              Store 53(tex1.smpl) 57
+              60:     10(ptr) AccessChain 49(flattenTemp) 59
+              61:           9 Load 60
+                              Store 58(tex1.tex) 61
+              63: 17(FxaaTex) FunctionCall 19(fillOpaque()
+                              Store 62(flattenTemp) 63
+              65:      7(ptr) AccessChain 62(flattenTemp) 55
+              66:           6 Load 65
+                              Store 64(tex2.smpl) 66
+              68:     10(ptr) AccessChain 62(flattenTemp) 59
+              69:           9 Load 68
+                              Store 67(tex2.tex) 69
+              71:           6 Load 53(tex1.smpl)
+                              Store 70(param) 71
+              73:           9 Load 58(tex1.tex)
+                              Store 72(param) 73
+              74:   11(fvec4) FunctionCall 15(lookUp(struct-FxaaTex-p1-t211;) 70(param) 72(param)
+                              ReturnValue 74
                               FunctionEnd
index 237ab67..7487cf0 100755 (executable)
@@ -130,12 +130,12 @@ Shader version: 500
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 65
+// Id's are bound by 70
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 63
+                              EntryPoint Vertex 4  "main" 68
                               Source HLSL 500
                               Name 4  "main"
                               Name 17  "lookUp(struct-FxaaTex-p1-t21-f11;"
@@ -148,23 +148,25 @@ Shader version: 500
                               MemberName 34(FxaaTex) 1  "tex"
                               MemberName 34(FxaaTex) 2  "f"
                               Name 36  "flattenTemp"
-                              Name 37  "g_tInputTexture_sampler"
-                              Name 39  "g_tInputTexture"
-                              Name 43  "tex.smpl"
-                              Name 48  "tex.tex"
-                              Name 52  "tex.f"
-                              Name 57  "param"
-                              Name 63  "@entryPointOutput"
-                              Decorate 37(g_tInputTexture_sampler) DescriptorSet 0
-                              Decorate 39(g_tInputTexture) DescriptorSet 0
-                              Decorate 63(@entryPointOutput) Location 0
+                              Name 38  "g_tInputTexture_sampler"
+                              Name 41  "g_tInputTexture"
+                              Name 45  "tex.smpl"
+                              Name 50  "tex.tex"
+                              Name 54  "tex.f"
+                              Name 58  "param"
+                              Name 60  "param"
+                              Name 62  "param"
+                              Name 68  "@entryPointOutput"
+                              Decorate 38(g_tInputTexture_sampler) DescriptorSet 0
+                              Decorate 41(g_tInputTexture) DescriptorSet 0
+                              Decorate 68(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeSampler
-               7:             TypePointer UniformConstant 6
+               7:             TypePointer Function 6
                8:             TypeFloat 32
                9:             TypeImage 8(float) 2D sampled format:Unknown
-              10:             TypePointer UniformConstant 9
+              10:             TypePointer Function 9
               11:             TypePointer Function 8(float)
               12:             TypeVector 8(float) 4
               13:             TypeFunction 12(fvec4) 7(ptr) 10(ptr) 11(ptr)
@@ -173,24 +175,22 @@ Shader version: 500
               28:             TypeVector 8(float) 2
               30:    8(float) Constant 0
      34(FxaaTex):             TypeStruct 6 9 8(float)
-              35:             TypePointer UniformConstant 34(FxaaTex)
- 36(flattenTemp):     35(ptr) Variable UniformConstant
-37(g_tInputTexture_sampler):      7(ptr) Variable UniformConstant
-39(g_tInputTexture):     10(ptr) Variable UniformConstant
-              41:    8(float) Constant 1056964608
-    43(tex.smpl):      7(ptr) Variable UniformConstant
-              44:             TypeInt 32 1
-              45:     44(int) Constant 0
-     48(tex.tex):     10(ptr) Variable UniformConstant
-              49:     44(int) Constant 1
-              53:     44(int) Constant 2
-              54:             TypePointer UniformConstant 8(float)
-              62:             TypePointer Output 12(fvec4)
-63(@entryPointOutput):     62(ptr) Variable Output
+              35:             TypePointer Function 34(FxaaTex)
+              37:             TypePointer UniformConstant 6
+38(g_tInputTexture_sampler):     37(ptr) Variable UniformConstant
+              40:             TypePointer UniformConstant 9
+41(g_tInputTexture):     40(ptr) Variable UniformConstant
+              43:    8(float) Constant 1056964608
+              46:             TypeInt 32 1
+              47:     46(int) Constant 0
+              51:     46(int) Constant 1
+              55:     46(int) Constant 2
+              67:             TypePointer Output 12(fvec4)
+68(@entryPointOutput):     67(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              64:   12(fvec4) FunctionCall 20(@main()
-                              Store 63(@entryPointOutput) 64
+              69:   12(fvec4) FunctionCall 20(@main()
+                              Store 68(@entryPointOutput) 69
                               Return
                               FunctionEnd
 17(lookUp(struct-FxaaTex-p1-t21-f11;):   12(fvec4) Function None 13
@@ -209,23 +209,32 @@ Shader version: 500
                               FunctionEnd
       20(@main():   12(fvec4) Function None 19
               21:             Label
-       52(tex.f):     11(ptr) Variable Function
-       57(param):     11(ptr) Variable Function
-              38:           6 Load 37(g_tInputTexture_sampler)
-              40:           9 Load 39(g_tInputTexture)
-              42: 34(FxaaTex) CompositeConstruct 38 40 41
-                              Store 36(flattenTemp) 42
-              46:      7(ptr) AccessChain 36(flattenTemp) 45
-              47:           6 Load 46
-                              Store 43(tex.smpl) 47
-              50:     10(ptr) AccessChain 36(flattenTemp) 49
-              51:           9 Load 50
-                              Store 48(tex.tex) 51
-              55:     54(ptr) AccessChain 36(flattenTemp) 53
-              56:    8(float) Load 55
-                              Store 52(tex.f) 56
-              58:    8(float) Load 52(tex.f)
-                              Store 57(param) 58
-              59:   12(fvec4) FunctionCall 17(lookUp(struct-FxaaTex-p1-t21-f11;) 43(tex.smpl) 48(tex.tex) 57(param)
-                              ReturnValue 59
+ 36(flattenTemp):     35(ptr) Variable Function
+    45(tex.smpl):      7(ptr) Variable Function
+     50(tex.tex):     10(ptr) Variable Function
+       54(tex.f):     11(ptr) Variable Function
+       58(param):      7(ptr) Variable Function
+       60(param):     10(ptr) Variable Function
+       62(param):     11(ptr) Variable Function
+              39:           6 Load 38(g_tInputTexture_sampler)
+              42:           9 Load 41(g_tInputTexture)
+              44: 34(FxaaTex) CompositeConstruct 39 42 43
+                              Store 36(flattenTemp) 44
+              48:      7(ptr) AccessChain 36(flattenTemp) 47
+              49:           6 Load 48
+                              Store 45(tex.smpl) 49
+              52:     10(ptr) AccessChain 36(flattenTemp) 51
+              53:           9 Load 52
+                              Store 50(tex.tex) 53
+              56:     11(ptr) AccessChain 36(flattenTemp) 55
+              57:    8(float) Load 56
+                              Store 54(tex.f) 57
+              59:           6 Load 45(tex.smpl)
+                              Store 58(param) 59
+              61:           9 Load 50(tex.tex)
+                              Store 60(param) 61
+              63:    8(float) Load 54(tex.f)
+                              Store 62(param) 63
+              64:   12(fvec4) FunctionCall 17(lookUp(struct-FxaaTex-p1-t21-f11;) 58(param) 60(param) 62(param)
+                              ReturnValue 64
                               FunctionEnd
index 3eed752..f57169e 100644 (file)
@@ -59,7 +59,7 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 26
+// Id's are bound by 27
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -68,44 +68,45 @@ gl_FragCoord origin is upper left
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
-                              Name 14  "TexFunc(t21;vf3;"
-                              Name 12  "t2D"
-                              Name 13  "RGB"
-                              Name 16  "@main("
+                              Name 13  "TexFunc(t21;vf3;"
+                              Name 11  "t2D"
+                              Name 12  "RGB"
+                              Name 15  "@main("
                               Name 20  "MyTexture"
-                              Name 21  "final_RGB"
-                              Name 22  "param"
+                              Name 22  "final_RGB"
+                              Name 23  "param"
                               Decorate 20(MyTexture) DescriptorSet 0
                               Decorate 20(MyTexture) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeImage 6(float) 2D sampled format:Unknown
-               8:             TypePointer UniformConstant 7
-               9:             TypeVector 6(float) 3
-              10:             TypePointer Function 9(fvec3)
-              11:             TypeFunction 2 8(ptr) 10(ptr)
-              18:    6(float) Constant 0
-              19:    9(fvec3) ConstantComposite 18 18 18
-   20(MyTexture):      8(ptr) Variable UniformConstant
+               8:             TypeVector 6(float) 3
+               9:             TypePointer Function 8(fvec3)
+              10:             TypeFunction 2 7 9(ptr)
+              17:    6(float) Constant 0
+              18:    8(fvec3) ConstantComposite 17 17 17
+              19:             TypePointer UniformConstant 7
+   20(MyTexture):     19(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-              25:           2 FunctionCall 16(@main()
+              26:           2 FunctionCall 15(@main()
                               Return
                               FunctionEnd
-14(TexFunc(t21;vf3;):           2 Function None 11
-         12(t2D):      8(ptr) FunctionParameter
-         13(RGB):     10(ptr) FunctionParameter
-              15:             Label
-                              Store 13(RGB) 19
+13(TexFunc(t21;vf3;):           2 Function None 10
+         11(t2D):           7 FunctionParameter
+         12(RGB):      9(ptr) FunctionParameter
+              14:             Label
+                              Store 12(RGB) 18
                               Return
                               FunctionEnd
-      16(@main():           2 Function None 3
-              17:             Label
-   21(final_RGB):     10(ptr) Variable Function
-       22(param):     10(ptr) Variable Function
-              23:           2 FunctionCall 14(TexFunc(t21;vf3;) 20(MyTexture) 22(param)
-              24:    9(fvec3) Load 22(param)
-                              Store 21(final_RGB) 24
+      15(@main():           2 Function None 3
+              16:             Label
+   22(final_RGB):      9(ptr) Variable Function
+       23(param):      9(ptr) Variable Function
+              21:           7 Load 20(MyTexture)
+              24:           2 FunctionCall 13(TexFunc(t21;vf3;) 21 23(param)
+              25:    8(fvec3) Load 23(param)
+                              Store 22(final_RGB) 25
                               Return
                               FunctionEnd
index 039d4e0..34a4ca8 100644 (file)
@@ -151,12 +151,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 70
+// Id's are bound by 76
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 58 61
+                              EntryPoint Fragment 4  "main" 64 67
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -171,51 +171,55 @@ gl_FragCoord origin is upper left
                               Name 18  "arg_c@count"
                               Name 25  "@main(u1;"
                               Name 24  "pos"
-                              Name 49  "sbuf_a"
-                              Name 50  "sbuf_a@count"
-                              Name 51  "sbuf_c"
-                              Name 52  "sbuf_c@count"
-                              Name 56  "pos"
-                              Name 58  "pos"
-                              Name 61  "@entryPointOutput"
-                              Name 62  "param"
-                              Name 65  "sbuf_a@count"
-                              MemberName 65(sbuf_a@count) 0  "@count"
-                              Name 67  "sbuf_a@count"
-                              Name 68  "sbuf_c@count"
-                              Name 69  "sbuf_unused"
+                              Name 50  "sbuf_a"
+                              Name 52  "sbuf_a@count"
+                              Name 53  "sbuf_c"
+                              Name 54  "sbuf_c@count"
+                              Name 55  "param"
+                              Name 56  "param"
+                              Name 57  "param"
+                              Name 58  "param"
+                              Name 62  "pos"
+                              Name 64  "pos"
+                              Name 67  "@entryPointOutput"
+                              Name 68  "param"
+                              Name 71  "sbuf_a@count"
+                              MemberName 71(sbuf_a@count) 0  "@count"
+                              Name 73  "sbuf_a@count"
+                              Name 74  "sbuf_c@count"
+                              Name 75  "sbuf_unused"
                               Decorate 8 ArrayStride 16
                               MemberDecorate 9 0 Offset 0
                               Decorate 9 BufferBlock
                               Decorate 12 BufferBlock
-                              Decorate 49(sbuf_a) DescriptorSet 0
-                              Decorate 50(sbuf_a@count) DescriptorSet 0
-                              Decorate 51(sbuf_c) DescriptorSet 0
-                              Decorate 52(sbuf_c@count) DescriptorSet 0
-                              Decorate 58(pos) Flat
-                              Decorate 58(pos) Location 0
-                              Decorate 61(@entryPointOutput) Location 0
-                              MemberDecorate 65(sbuf_a@count) 0 Offset 0
-                              Decorate 65(sbuf_a@count) BufferBlock
-                              Decorate 67(sbuf_a@count) DescriptorSet 0
-                              Decorate 68(sbuf_c@count) DescriptorSet 0
-                              Decorate 69(sbuf_unused) DescriptorSet 0
+                              Decorate 50(sbuf_a) DescriptorSet 0
+                              Decorate 52(sbuf_a@count) DescriptorSet 0
+                              Decorate 53(sbuf_c) DescriptorSet 0
+                              Decorate 54(sbuf_c@count) DescriptorSet 0
+                              Decorate 64(pos) Flat
+                              Decorate 64(pos) Location 0
+                              Decorate 67(@entryPointOutput) Location 0
+                              MemberDecorate 71(sbuf_a@count) 0 Offset 0
+                              Decorate 71(sbuf_a@count) BufferBlock
+                              Decorate 73(sbuf_a@count) DescriptorSet 0
+                              Decorate 74(sbuf_c@count) DescriptorSet 0
+                              Decorate 75(sbuf_unused) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypeRuntimeArray 7(fvec4)
                9:             TypeStruct 8
-              10:             TypePointer Uniform 9(struct)
+              10:             TypePointer Function 9(struct)
               11:             TypeInt 32 1
               12:             TypeStruct 11(int)
-              13:             TypePointer Uniform 12(struct)
+              13:             TypePointer Function 12(struct)
               14:             TypeFunction 7(fvec4) 10(ptr) 13(ptr) 10(ptr) 13(ptr)
               21:             TypeInt 32 0
               22:             TypePointer Function 21(int)
               23:             TypeFunction 7(fvec4) 22(ptr)
               27:     11(int) Constant 0
-              28:             TypePointer Uniform 11(int)
+              28:             TypePointer Function 11(int)
               30:     11(int) Constant 1
               31:     21(int) Constant 1
               32:     21(int) Constant 0
@@ -224,31 +228,33 @@ gl_FragCoord origin is upper left
               36:    6(float) Constant 1077936128
               37:    6(float) Constant 1082130432
               38:    7(fvec4) ConstantComposite 34 35 36 37
-              39:             TypePointer Uniform 7(fvec4)
+              39:             TypePointer Function 7(fvec4)
               42:     11(int) Constant 4294967295
-      49(sbuf_a):     10(ptr) Variable Uniform
-50(sbuf_a@count):     13(ptr) Variable Uniform
-      51(sbuf_c):     10(ptr) Variable Uniform
-52(sbuf_c@count):     13(ptr) Variable Uniform
-              57:             TypePointer Input 21(int)
-         58(pos):     57(ptr) Variable Input
-              60:             TypePointer Output 7(fvec4)
-61(@entryPointOutput):     60(ptr) Variable Output
-65(sbuf_a@count):             TypeStruct 11(int)
-              66:             TypePointer Uniform 65(sbuf_a@count)
-67(sbuf_a@count):     66(ptr) Variable Uniform
-68(sbuf_c@count):     66(ptr) Variable Uniform
- 69(sbuf_unused):     10(ptr) Variable Uniform
+              49:             TypePointer Uniform 9(struct)
+      50(sbuf_a):     49(ptr) Variable Uniform
+              51:             TypePointer Uniform 12(struct)
+52(sbuf_a@count):     51(ptr) Variable Uniform
+      53(sbuf_c):     49(ptr) Variable Uniform
+54(sbuf_c@count):     51(ptr) Variable Uniform
+              63:             TypePointer Input 21(int)
+         64(pos):     63(ptr) Variable Input
+              66:             TypePointer Output 7(fvec4)
+67(@entryPointOutput):     66(ptr) Variable Output
+71(sbuf_a@count):             TypeStruct 11(int)
+              72:             TypePointer Uniform 71(sbuf_a@count)
+73(sbuf_a@count):     72(ptr) Variable Uniform
+74(sbuf_c@count):     72(ptr) Variable Uniform
+ 75(sbuf_unused):     49(ptr) Variable Uniform
          4(main):           2 Function None 3
                5:             Label
-         56(pos):     22(ptr) Variable Function
-       62(param):     22(ptr) Variable Function
-              59:     21(int) Load 58(pos)
-                              Store 56(pos) 59
-              63:     21(int) Load 56(pos)
-                              Store 62(param) 63
-              64:    7(fvec4) FunctionCall 25(@main(u1;) 62(param)
-                              Store 61(@entryPointOutput) 64
+         62(pos):     22(ptr) Variable Function
+       68(param):     22(ptr) Variable Function
+              65:     21(int) Load 64(pos)
+                              Store 62(pos) 65
+              69:     21(int) Load 62(pos)
+                              Store 68(param) 69
+              70:    7(fvec4) FunctionCall 25(@main(u1;) 68(param)
+                              Store 67(@entryPointOutput) 70
                               Return
                               FunctionEnd
 19(Fn2(block--vf4[0]1;block--vf4[0]1;):    7(fvec4) Function None 14
@@ -271,6 +277,10 @@ gl_FragCoord origin is upper left
    25(@main(u1;):    7(fvec4) Function None 23
          24(pos):     22(ptr) FunctionParameter
               26:             Label
-              53:    7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 49(sbuf_a) 50(sbuf_a@count) 51(sbuf_c) 52(sbuf_c@count)
-                              ReturnValue 53
+       55(param):     10(ptr) Variable Function
+       56(param):     13(ptr) Variable Function
+       57(param):     10(ptr) Variable Function
+       58(param):     13(ptr) Variable Function
+              59:    7(fvec4) FunctionCall 19(Fn2(block--vf4[0]1;block--vf4[0]1;) 55(param) 56(param) 57(param) 58(param)
+                              ReturnValue 59
                               FunctionEnd
index 2e2a44f..112a689 100644 (file)
@@ -139,12 +139,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 78
+// Id's are bound by 83
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 63 66
+                              EntryPoint Fragment 4  "main" 68 71
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -165,21 +165,24 @@ gl_FragCoord origin is upper left
                               Name 35  "@main(u1;"
                               Name 34  "pos"
                               Name 47  "sbuf2"
-                              Name 48  "sbuf2@count"
-                              Name 50  "sbuf"
-                              Name 52  "param"
+                              Name 49  "sbuf2@count"
+                              Name 52  "sbuf"
                               Name 54  "param"
                               Name 55  "param"
-                              Name 61  "pos"
-                              Name 63  "pos"
-                              Name 66  "@entryPointOutput"
-                              Name 67  "param"
-                              Name 70  "sbuf2@count"
-                              MemberName 70(sbuf2@count) 0  "@count"
-                              Name 72  "sbuf2@count"
-                              Name 75  "sbuf3"
-                              MemberName 75(sbuf3) 0  "@data"
-                              Name 77  "sbuf3"
+                              Name 57  "param"
+                              Name 58  "param"
+                              Name 59  "param"
+                              Name 60  "param"
+                              Name 66  "pos"
+                              Name 68  "pos"
+                              Name 71  "@entryPointOutput"
+                              Name 72  "param"
+                              Name 75  "sbuf2@count"
+                              MemberName 75(sbuf2@count) 0  "@count"
+                              Name 77  "sbuf2@count"
+                              Name 80  "sbuf3"
+                              MemberName 80(sbuf3) 0  "@data"
+                              Name 82  "sbuf3"
                               Decorate 8 ArrayStride 16
                               MemberDecorate 9 0 NonWritable
                               MemberDecorate 9 0 Offset 0
@@ -190,72 +193,74 @@ gl_FragCoord origin is upper left
                               Decorate 18 BufferBlock
                               Decorate 21 BufferBlock
                               Decorate 47(sbuf2) DescriptorSet 0
-                              Decorate 48(sbuf2@count) DescriptorSet 0
-                              Decorate 50(sbuf) DescriptorSet 0
-                              Decorate 50(sbuf) Binding 10
-                              Decorate 63(pos) Flat
-                              Decorate 63(pos) Location 0
-                              Decorate 66(@entryPointOutput) Location 0
-                              MemberDecorate 70(sbuf2@count) 0 Offset 0
-                              Decorate 70(sbuf2@count) BufferBlock
-                              Decorate 72(sbuf2@count) DescriptorSet 0
-                              Decorate 74 ArrayStride 16
-                              MemberDecorate 75(sbuf3) 0 NonWritable
-                              MemberDecorate 75(sbuf3) 0 Offset 0
-                              Decorate 75(sbuf3) BufferBlock
-                              Decorate 77(sbuf3) DescriptorSet 0
-                              Decorate 77(sbuf3) Binding 12
+                              Decorate 49(sbuf2@count) DescriptorSet 0
+                              Decorate 52(sbuf) DescriptorSet 0
+                              Decorate 52(sbuf) Binding 10
+                              Decorate 68(pos) Flat
+                              Decorate 68(pos) Location 0
+                              Decorate 71(@entryPointOutput) Location 0
+                              MemberDecorate 75(sbuf2@count) 0 Offset 0
+                              Decorate 75(sbuf2@count) BufferBlock
+                              Decorate 77(sbuf2@count) DescriptorSet 0
+                              Decorate 79 ArrayStride 16
+                              MemberDecorate 80(sbuf3) 0 NonWritable
+                              MemberDecorate 80(sbuf3) 0 Offset 0
+                              Decorate 80(sbuf3) BufferBlock
+                              Decorate 82(sbuf3) DescriptorSet 0
+                              Decorate 82(sbuf3) Binding 12
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypeVector 6(int) 4
                8:             TypeRuntimeArray 7(ivec4)
                9:             TypeStruct 8
-              10:             TypePointer Uniform 9(struct)
+              10:             TypePointer Function 9(struct)
               11:             TypePointer Function 6(int)
               12:             TypeFunction 7(ivec4) 10(ptr) 11(ptr)
               17:             TypeRuntimeArray 7(ivec4)
               18:             TypeStruct 17
-              19:             TypePointer Uniform 18(struct)
+              19:             TypePointer Function 18(struct)
               20:             TypeInt 32 1
               21:             TypeStruct 20(int)
-              22:             TypePointer Uniform 21(struct)
+              22:             TypePointer Function 21(struct)
               23:             TypePointer Function 7(ivec4)
               24:             TypeFunction 2 19(ptr) 22(ptr) 11(ptr) 23(ptr)
               31:             TypeFloat 32
               32:             TypeVector 31(float) 4
               33:             TypeFunction 32(fvec4) 11(ptr)
               37:     20(int) Constant 0
-              39:             TypePointer Uniform 7(ivec4)
-       47(sbuf2):     19(ptr) Variable Uniform
- 48(sbuf2@count):     22(ptr) Variable Uniform
-              49:      6(int) Constant 2
-        50(sbuf):     10(ptr) Variable Uniform
-              51:      6(int) Constant 3
-              57:   31(float) Constant 0
-              58:   32(fvec4) ConstantComposite 57 57 57 57
-              62:             TypePointer Input 6(int)
-         63(pos):     62(ptr) Variable Input
-              65:             TypePointer Output 32(fvec4)
-66(@entryPointOutput):     65(ptr) Variable Output
- 70(sbuf2@count):             TypeStruct 20(int)
-              71:             TypePointer Uniform 70(sbuf2@count)
- 72(sbuf2@count):     71(ptr) Variable Uniform
-              73:             TypeVector 6(int) 3
-              74:             TypeRuntimeArray 73(ivec3)
-       75(sbuf3):             TypeStruct 74
-              76:             TypePointer Uniform 75(sbuf3)
-       77(sbuf3):     76(ptr) Variable Uniform
+              46:             TypePointer Uniform 18(struct)
+       47(sbuf2):     46(ptr) Variable Uniform
+              48:             TypePointer Uniform 21(struct)
+ 49(sbuf2@count):     48(ptr) Variable Uniform
+              50:      6(int) Constant 2
+              51:             TypePointer Uniform 9(struct)
+        52(sbuf):     51(ptr) Variable Uniform
+              53:      6(int) Constant 3
+              62:   31(float) Constant 0
+              63:   32(fvec4) ConstantComposite 62 62 62 62
+              67:             TypePointer Input 6(int)
+         68(pos):     67(ptr) Variable Input
+              70:             TypePointer Output 32(fvec4)
+71(@entryPointOutput):     70(ptr) Variable Output
+ 75(sbuf2@count):             TypeStruct 20(int)
+              76:             TypePointer Uniform 75(sbuf2@count)
+ 77(sbuf2@count):     76(ptr) Variable Uniform
+              78:             TypeVector 6(int) 3
+              79:             TypeRuntimeArray 78(ivec3)
+       80(sbuf3):             TypeStruct 79
+              81:             TypePointer Uniform 80(sbuf3)
+       82(sbuf3):     81(ptr) Variable Uniform
          4(main):           2 Function None 3
                5:             Label
-         61(pos):     11(ptr) Variable Function
-       67(param):     11(ptr) Variable Function
-              64:      6(int) Load 63(pos)
-                              Store 61(pos) 64
-              68:      6(int) Load 61(pos)
-                              Store 67(param) 68
-              69:   32(fvec4) FunctionCall 35(@main(u1;) 67(param)
-                              Store 66(@entryPointOutput) 69
+         66(pos):     11(ptr) Variable Function
+       72(param):     11(ptr) Variable Function
+              69:      6(int) Load 68(pos)
+                              Store 66(pos) 69
+              73:      6(int) Load 66(pos)
+                              Store 72(param) 73
+              74:   32(fvec4) FunctionCall 35(@main(u1;) 72(param)
+                              Store 71(@entryPointOutput) 74
                               Return
                               FunctionEnd
 15(get(block--vu4[0]1;u1;):    7(ivec4) Function None 12
@@ -263,9 +268,9 @@ gl_FragCoord origin is upper left
 14(bufferOffset):     11(ptr) FunctionParameter
               16:             Label
               38:      6(int) Load 14(bufferOffset)
-              40:     39(ptr) AccessChain 13(sb) 37 38
-              41:    7(ivec4) Load 40
-                              ReturnValue 41
+              39:     23(ptr) AccessChain 13(sb) 37 38
+              40:    7(ivec4) Load 39
+                              ReturnValue 40
                               FunctionEnd
 29(set(block--vu4[0]1;u1;vu4;):           2 Function None 24
           25(sb):     19(ptr) FunctionParameter
@@ -273,22 +278,25 @@ gl_FragCoord origin is upper left
 27(bufferOffset):     11(ptr) FunctionParameter
         28(data):     23(ptr) FunctionParameter
               30:             Label
-              44:      6(int) Load 27(bufferOffset)
-              45:    7(ivec4) Load 28(data)
-              46:     39(ptr) AccessChain 25(sb) 37 44
-                              Store 46 45
+              43:      6(int) Load 27(bufferOffset)
+              44:    7(ivec4) Load 28(data)
+              45:     23(ptr) AccessChain 25(sb) 37 43
+                              Store 45 44
                               Return
                               FunctionEnd
    35(@main(u1;):   32(fvec4) Function None 33
          34(pos):     11(ptr) FunctionParameter
               36:             Label
-       52(param):     11(ptr) Variable Function
-       54(param):     11(ptr) Variable Function
-       55(param):     23(ptr) Variable Function
-                              Store 52(param) 51
-              53:    7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 50(sbuf) 52(param)
-                              Store 54(param) 49
+       54(param):     10(ptr) Variable Function
+       55(param):     11(ptr) Variable Function
+       57(param):     19(ptr) Variable Function
+       58(param):     22(ptr) Variable Function
+       59(param):     11(ptr) Variable Function
+       60(param):     23(ptr) Variable Function
                               Store 55(param) 53
-              56:           2 FunctionCall 29(set(block--vu4[0]1;u1;vu4;) 47(sbuf2) 48(sbuf2@count) 54(param) 55(param)
-                              ReturnValue 58
+              56:    7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 54(param) 55(param)
+                              Store 59(param) 50
+                              Store 60(param) 56
+              61:           2 FunctionCall 29(set(block--vu4[0]1;u1;vu4;) 57(param) 58(param) 59(param) 60(param)
+                              ReturnValue 63
                               FunctionEnd
index efe5fe3..96374cd 100644 (file)
@@ -135,14 +135,14 @@ local_size = (256, 1, 1)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 61
+// Id's are bound by 62
 
                               Capability Shader
                               Capability ImageBuffer
                               Capability StorageImageExtendedFormats
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 56
+                              EntryPoint GLCompute 4  "main" 57
                               ExecutionMode 4 LocalSize 256 1 1
                               Source HLSL 500
                               Name 4  "main"
@@ -155,13 +155,14 @@ local_size = (256, 1, 1)
                               Name 18  "dispatchId"
                               Name 22  "result"
                               Name 25  "byteAddrTemp"
-                              Name 43  "result"
+                              Name 42  "result"
                               Name 44  "g_input"
                               Name 45  "param"
-                              Name 50  "g_output"
-                              Name 54  "dispatchId"
-                              Name 56  "dispatchId"
-                              Name 58  "param"
+                              Name 47  "param"
+                              Name 51  "g_output"
+                              Name 55  "dispatchId"
+                              Name 57  "dispatchId"
+                              Name 59  "param"
                               Decorate 8 ArrayStride 4
                               MemberDecorate 9 0 NonWritable
                               MemberDecorate 9 0 Offset 0
@@ -169,16 +170,16 @@ local_size = (256, 1, 1)
                               Decorate 14(buffer) NonWritable
                               Decorate 44(g_input) DescriptorSet 0
                               Decorate 44(g_input) Binding 0
-                              Decorate 50(g_output) DescriptorSet 0
-                              Decorate 50(g_output) Binding 1
-                              Decorate 56(dispatchId) BuiltIn GlobalInvocationId
+                              Decorate 51(g_output) DescriptorSet 0
+                              Decorate 51(g_output) Binding 1
+                              Decorate 57(dispatchId) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypePointer Function 6(int)
                8:             TypeRuntimeArray 6(int)
                9:             TypeStruct 8
-              10:             TypePointer Uniform 9(struct)
+              10:             TypePointer Function 9(struct)
               11:             TypeVector 6(int) 2
               12:             TypeFunction 11(ivec2) 7(ptr) 10(ptr)
               17:             TypeFunction 2 7(ptr)
@@ -187,23 +188,23 @@ local_size = (256, 1, 1)
               24:             TypePointer Function 23(int)
               27:     23(int) Constant 2
               29:     23(int) Constant 0
-              31:             TypePointer Uniform 6(int)
-              35:     23(int) Constant 1
-     44(g_input):     10(ptr) Variable Uniform
-              48:             TypeImage 6(int) Buffer nonsampled format:Rg32ui
-              49:             TypePointer UniformConstant 48
-    50(g_output):     49(ptr) Variable UniformConstant
-              55:             TypePointer Input 6(int)
-  56(dispatchId):     55(ptr) Variable Input
+              34:     23(int) Constant 1
+              43:             TypePointer Uniform 9(struct)
+     44(g_input):     43(ptr) Variable Uniform
+              49:             TypeImage 6(int) Buffer nonsampled format:Rg32ui
+              50:             TypePointer UniformConstant 49
+    51(g_output):     50(ptr) Variable UniformConstant
+              56:             TypePointer Input 6(int)
+  57(dispatchId):     56(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-  54(dispatchId):      7(ptr) Variable Function
-       58(param):      7(ptr) Variable Function
-              57:      6(int) Load 56(dispatchId)
-                              Store 54(dispatchId) 57
-              59:      6(int) Load 54(dispatchId)
-                              Store 58(param) 59
-              60:           2 FunctionCall 19(@main(u1;) 58(param)
+  55(dispatchId):      7(ptr) Variable Function
+       59(param):      7(ptr) Variable Function
+              58:      6(int) Load 57(dispatchId)
+                              Store 55(dispatchId) 58
+              60:      6(int) Load 55(dispatchId)
+                              Store 59(param) 60
+              61:           2 FunctionCall 19(@main(u1;) 59(param)
                               Return
                               FunctionEnd
 15(testLoad(u1;block--u1[0]1;):   11(ivec2) Function None 12
@@ -216,29 +217,30 @@ local_size = (256, 1, 1)
               28:     23(int) ShiftRightLogical 26 27
                               Store 25(byteAddrTemp) 28
               30:     23(int) Load 25(byteAddrTemp)
-              32:     31(ptr) AccessChain 14(buffer) 29 30
-              33:      6(int) Load 32
-              34:     23(int) Load 25(byteAddrTemp)
-              36:     23(int) IAdd 34 35
-              37:     31(ptr) AccessChain 14(buffer) 29 36
-              38:      6(int) Load 37
-              39:   11(ivec2) CompositeConstruct 33 38
-                              Store 22(result) 39
-              40:   11(ivec2) Load 22(result)
-                              ReturnValue 40
+              31:      7(ptr) AccessChain 14(buffer) 29 30
+              32:      6(int) Load 31
+              33:     23(int) Load 25(byteAddrTemp)
+              35:     23(int) IAdd 33 34
+              36:      7(ptr) AccessChain 14(buffer) 29 35
+              37:      6(int) Load 36
+              38:   11(ivec2) CompositeConstruct 32 37
+                              Store 22(result) 38
+              39:   11(ivec2) Load 22(result)
+                              ReturnValue 39
                               FunctionEnd
    19(@main(u1;):           2 Function None 17
   18(dispatchId):      7(ptr) FunctionParameter
               20:             Label
-      43(result):     21(ptr) Variable Function
+      42(result):     21(ptr) Variable Function
        45(param):      7(ptr) Variable Function
+       47(param):     10(ptr) Variable Function
               46:      6(int) Load 18(dispatchId)
                               Store 45(param) 46
-              47:   11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 44(g_input)
-                              Store 43(result) 47
-              51:          48 Load 50(g_output)
-              52:      6(int) Load 18(dispatchId)
-              53:   11(ivec2) Load 43(result)
-                              ImageWrite 51 52 53
+              48:   11(ivec2) FunctionCall 15(testLoad(u1;block--u1[0]1;) 45(param) 47(param)
+                              Store 42(result) 48
+              52:          49 Load 51(g_output)
+              53:      6(int) Load 18(dispatchId)
+              54:   11(ivec2) Load 42(result)
+                              ImageWrite 52 53 54
                               Return
                               FunctionEnd
index 09af451..f532c9f 100644 (file)
@@ -839,12 +839,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 233
+// Id's are bound by 240
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 231
+                              EntryPoint Fragment 4  "main" 238
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -867,52 +867,55 @@ gl_FragCoord origin is upper left
                               Name 71  "@sampleStructTemp"
                               Name 87  "s1"
                               Name 88  "@sampleResultShadow"
-                              Name 89  "g_tTex2s1"
-                              Name 97  "@sampleStructTemp"
-                              Name 111  "s2"
-                              Name 112  "@sampleResultShadow"
-                              Name 113  "g_tTex2s2"
-                              Name 121  "@sampleStructTemp"
-                              Name 135  "s3_t"
-                              MemberName 135(s3_t) 0  "c0"
-                              MemberName 135(s3_t) 1  "c1"
-                              Name 137  "s3"
-                              Name 138  "@sampleResultShadow"
-                              Name 139  "g_tTex2s3"
-                              Name 147  "@sampleStructTemp"
-                              Name 159  "s4_t"
-                              MemberName 159(s4_t) 0  "c0"
-                              MemberName 159(s4_t) 1  "c1"
-                              MemberName 159(s4_t) 2  "c2"
-                              Name 161  "s4"
-                              Name 164  "@sampleResultShadow"
-                              Name 167  "g_tTex2s4"
-                              Name 176  "@sampleStructTemp"
-                              Name 193  "s5_t"
-                              MemberName 193(s5_t) 0  "c0"
-                              MemberName 193(s5_t) 1  "c1"
-                              Name 195  "s5"
-                              Name 198  "@sampleResultShadow"
-                              Name 201  "g_tTex2s5"
-                              Name 210  "@sampleStructTemp"
-                              Name 219  "r0"
-                              Name 221  "r1"
-                              Name 223  "r2"
-                              Name 224  "g_tTex2s1a"
-                              Name 231  "@entryPointOutput"
+                              Name 90  "g_tTex2s1"
+                              Name 98  "@sampleStructTemp"
+                              Name 112  "s2"
+                              Name 113  "@sampleResultShadow"
+                              Name 114  "g_tTex2s2"
+                              Name 122  "@sampleStructTemp"
+                              Name 136  "s3_t"
+                              MemberName 136(s3_t) 0  "c0"
+                              MemberName 136(s3_t) 1  "c1"
+                              Name 138  "s3"
+                              Name 139  "@sampleResultShadow"
+                              Name 140  "g_tTex2s3"
+                              Name 148  "@sampleStructTemp"
+                              Name 160  "s4_t"
+                              MemberName 160(s4_t) 0  "c0"
+                              MemberName 160(s4_t) 1  "c1"
+                              MemberName 160(s4_t) 2  "c2"
+                              Name 162  "s4"
+                              Name 165  "@sampleResultShadow"
+                              Name 168  "g_tTex2s4"
+                              Name 177  "@sampleStructTemp"
+                              Name 194  "s5_t"
+                              MemberName 194(s5_t) 0  "c0"
+                              MemberName 194(s5_t) 1  "c1"
+                              Name 196  "s5"
+                              Name 199  "@sampleResultShadow"
+                              Name 202  "g_tTex2s5"
+                              Name 211  "@sampleStructTemp"
+                              Name 220  "r0"
+                              Name 221  "param"
+                              Name 224  "r1"
+                              Name 225  "param"
+                              Name 228  "r2"
+                              Name 229  "g_tTex2s1a"
+                              Name 230  "param"
+                              Name 238  "@entryPointOutput"
                               Decorate 30(g_sSamp) DescriptorSet 0
-                              Decorate 89(g_tTex2s1) DescriptorSet 0
-                              Decorate 113(g_tTex2s2) DescriptorSet 0
-                              Decorate 139(g_tTex2s3) DescriptorSet 0
-                              Decorate 167(g_tTex2s4) DescriptorSet 0
-                              Decorate 201(g_tTex2s5) DescriptorSet 0
-                              Decorate 224(g_tTex2s1a) DescriptorSet 0
-                              Decorate 231(@entryPointOutput) Location 0
+                              Decorate 90(g_tTex2s1) DescriptorSet 0
+                              Decorate 114(g_tTex2s2) DescriptorSet 0
+                              Decorate 140(g_tTex2s3) DescriptorSet 0
+                              Decorate 168(g_tTex2s4) DescriptorSet 0
+                              Decorate 202(g_tTex2s5) DescriptorSet 0
+                              Decorate 229(g_tTex2s1a) DescriptorSet 0
+                              Decorate 238(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeImage 6(float) 2D sampled format:Unknown
-               8:             TypePointer UniformConstant 7
+               8:             TypePointer Function 7
                9:             TypeVector 6(float) 2
         10(s1_t):             TypeStruct 6(float) 9(fvec2) 6(float)
               11:             TypeFunction 10(s1_t) 8(ptr)
@@ -941,54 +944,55 @@ gl_FragCoord origin is upper left
               57:     40(int) Constant 2
               58:     42(int) Constant 3
               70:             TypePointer Function 16(s2_t)
-   89(g_tTex2s1):      8(ptr) Variable UniformConstant
-              93:    6(float) Constant 1036831949
-              94:    6(float) Constant 1038174126
-              95:    9(fvec2) ConstantComposite 93 94
-  113(g_tTex2s2):      8(ptr) Variable UniformConstant
-             117:    6(float) Constant 1045220557
-             118:    6(float) Constant 1045891645
-             119:    9(fvec2) ConstantComposite 117 118
-       135(s3_t):             TypeStruct 9(fvec2) 6(float)
-             136:             TypePointer Function 135(s3_t)
-  139(g_tTex2s3):      8(ptr) Variable UniformConstant
-             143:    6(float) Constant 1050253722
-             144:    6(float) Constant 1050589266
-             145:    9(fvec2) ConstantComposite 143 144
-             158:             TypeVector 40(int) 2
-       159(s4_t):             TypeStruct 40(int) 158(ivec2) 40(int)
-             160:             TypePointer Function 159(s4_t)
-             162:             TypeVector 40(int) 4
-             163:             TypePointer Function 162(ivec4)
-             165:             TypeImage 40(int) 2D sampled format:Unknown
-             166:             TypePointer UniformConstant 165
-  167(g_tTex2s4):    166(ptr) Variable UniformConstant
-             170:             TypeSampledImage 165
-             172:    6(float) Constant 1053609165
-             173:    6(float) Constant 1053944709
-             174:    9(fvec2) ConstantComposite 172 173
-             177:             TypePointer Function 40(int)
-       193(s5_t):             TypeStruct 42(int) 42(int)
-             194:             TypePointer Function 193(s5_t)
-             196:             TypeVector 42(int) 4
-             197:             TypePointer Function 196(ivec4)
-             199:             TypeImage 42(int) 2D sampled format:Unknown
-             200:             TypePointer UniformConstant 199
-  201(g_tTex2s5):    200(ptr) Variable UniformConstant
-             204:             TypeSampledImage 199
-             206:    6(float) Constant 1056964608
-             207:    6(float) Constant 1057132380
-             208:    9(fvec2) ConstantComposite 206 207
-             211:             TypePointer Function 42(int)
- 224(g_tTex2s1a):      8(ptr) Variable UniformConstant
-             226:    6(float) Constant 0
-             227:   21(fvec4) ConstantComposite 226 226 226 226
-             230:             TypePointer Output 21(fvec4)
-231(@entryPointOutput):    230(ptr) Variable Output
+              89:             TypePointer UniformConstant 7
+   90(g_tTex2s1):     89(ptr) Variable UniformConstant
+              94:    6(float) Constant 1036831949
+              95:    6(float) Constant 1038174126
+              96:    9(fvec2) ConstantComposite 94 95
+  114(g_tTex2s2):     89(ptr) Variable UniformConstant
+             118:    6(float) Constant 1045220557
+             119:    6(float) Constant 1045891645
+             120:    9(fvec2) ConstantComposite 118 119
+       136(s3_t):             TypeStruct 9(fvec2) 6(float)
+             137:             TypePointer Function 136(s3_t)
+  140(g_tTex2s3):     89(ptr) Variable UniformConstant
+             144:    6(float) Constant 1050253722
+             145:    6(float) Constant 1050589266
+             146:    9(fvec2) ConstantComposite 144 145
+             159:             TypeVector 40(int) 2
+       160(s4_t):             TypeStruct 40(int) 159(ivec2) 40(int)
+             161:             TypePointer Function 160(s4_t)
+             163:             TypeVector 40(int) 4
+             164:             TypePointer Function 163(ivec4)
+             166:             TypeImage 40(int) 2D sampled format:Unknown
+             167:             TypePointer UniformConstant 166
+  168(g_tTex2s4):    167(ptr) Variable UniformConstant
+             171:             TypeSampledImage 166
+             173:    6(float) Constant 1053609165
+             174:    6(float) Constant 1053944709
+             175:    9(fvec2) ConstantComposite 173 174
+             178:             TypePointer Function 40(int)
+       194(s5_t):             TypeStruct 42(int) 42(int)
+             195:             TypePointer Function 194(s5_t)
+             197:             TypeVector 42(int) 4
+             198:             TypePointer Function 197(ivec4)
+             200:             TypeImage 42(int) 2D sampled format:Unknown
+             201:             TypePointer UniformConstant 200
+  202(g_tTex2s5):    201(ptr) Variable UniformConstant
+             205:             TypeSampledImage 200
+             207:    6(float) Constant 1056964608
+             208:    6(float) Constant 1057132380
+             209:    9(fvec2) ConstantComposite 207 208
+             212:             TypePointer Function 42(int)
+ 229(g_tTex2s1a):     89(ptr) Variable UniformConstant
+             233:    6(float) Constant 0
+             234:   21(fvec4) ConstantComposite 233 233 233 233
+             237:             TypePointer Output 21(fvec4)
+238(@entryPointOutput):    237(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-             232:   21(fvec4) FunctionCall 23(@main()
-                              Store 231(@entryPointOutput) 232
+             239:   21(fvec4) FunctionCall 23(@main()
+                              Store 238(@entryPointOutput) 239
                               Return
                               FunctionEnd
 13(fn1(t2-tx-struct0-1;):    10(s1_t) Function None 11
@@ -1053,132 +1057,141 @@ gl_FragCoord origin is upper left
               24:             Label
           87(s1):     38(ptr) Variable Function
 88(@sampleResultShadow):     25(ptr) Variable Function
-97(@sampleStructTemp):     38(ptr) Variable Function
-         111(s2):     70(ptr) Variable Function
-112(@sampleResultShadow):     25(ptr) Variable Function
-121(@sampleStructTemp):     70(ptr) Variable Function
-         137(s3):    136(ptr) Variable Function
-138(@sampleResultShadow):     25(ptr) Variable Function
-147(@sampleStructTemp):    136(ptr) Variable Function
-         161(s4):    160(ptr) Variable Function
-164(@sampleResultShadow):    163(ptr) Variable Function
-176(@sampleStructTemp):    160(ptr) Variable Function
-         195(s5):    194(ptr) Variable Function
-198(@sampleResultShadow):    197(ptr) Variable Function
-210(@sampleStructTemp):    194(ptr) Variable Function
-         219(r0):     38(ptr) Variable Function
-         221(r1):     70(ptr) Variable Function
-         223(r2):     38(ptr) Variable Function
-              90:           7 Load 89(g_tTex2s1)
-              91:          28 Load 30(g_sSamp)
-              92:          32 SampledImage 90 91
-              96:   21(fvec4) ImageSampleImplicitLod 92 95
-                              Store 88(@sampleResultShadow) 96
-              98:     44(ptr) AccessChain 88(@sampleResultShadow) 43
-              99:    6(float) Load 98
-             100:     44(ptr) AccessChain 97(@sampleStructTemp) 41
-                              Store 100 99
-             101:     44(ptr) AccessChain 88(@sampleResultShadow) 49
-             102:    6(float) Load 101
-             103:     44(ptr) AccessChain 97(@sampleStructTemp) 48 43
-                              Store 103 102
-             104:     44(ptr) AccessChain 88(@sampleResultShadow) 53
-             105:    6(float) Load 104
-             106:     44(ptr) AccessChain 97(@sampleStructTemp) 48 49
-                              Store 106 105
-             107:     44(ptr) AccessChain 88(@sampleResultShadow) 58
-             108:    6(float) Load 107
-             109:     44(ptr) AccessChain 97(@sampleStructTemp) 57
-                              Store 109 108
-             110:    10(s1_t) Load 97(@sampleStructTemp)
-                              Store 87(s1) 110
-             114:           7 Load 113(g_tTex2s2)
-             115:          28 Load 30(g_sSamp)
-             116:          32 SampledImage 114 115
-             120:   21(fvec4) ImageSampleImplicitLod 116 119
-                              Store 112(@sampleResultShadow) 120
-             122:     44(ptr) AccessChain 112(@sampleResultShadow) 43
-             123:    6(float) Load 122
-             124:     44(ptr) AccessChain 121(@sampleStructTemp) 41
-                              Store 124 123
-             125:     44(ptr) AccessChain 112(@sampleResultShadow) 49
-             126:    6(float) Load 125
-             127:     44(ptr) AccessChain 121(@sampleStructTemp) 48 43
-                              Store 127 126
-             128:     44(ptr) AccessChain 112(@sampleResultShadow) 53
-             129:    6(float) Load 128
-             130:     44(ptr) AccessChain 121(@sampleStructTemp) 48 49
-                              Store 130 129
-             131:     44(ptr) AccessChain 112(@sampleResultShadow) 58
-             132:    6(float) Load 131
-             133:     44(ptr) AccessChain 121(@sampleStructTemp) 48 53
-                              Store 133 132
-             134:    16(s2_t) Load 121(@sampleStructTemp)
-                              Store 111(s2) 134
-             140:           7 Load 139(g_tTex2s3)
-             141:          28 Load 30(g_sSamp)
-             142:          32 SampledImage 140 141
-             146:   21(fvec4) ImageSampleImplicitLod 142 145
-                              Store 138(@sampleResultShadow) 146
-             148:     44(ptr) AccessChain 138(@sampleResultShadow) 43
-             149:    6(float) Load 148
-             150:     44(ptr) AccessChain 147(@sampleStructTemp) 41 43
-                              Store 150 149
-             151:     44(ptr) AccessChain 138(@sampleResultShadow) 49
-             152:    6(float) Load 151
-             153:     44(ptr) AccessChain 147(@sampleStructTemp) 41 49
-                              Store 153 152
-             154:     44(ptr) AccessChain 138(@sampleResultShadow) 53
-             155:    6(float) Load 154
-             156:     44(ptr) AccessChain 147(@sampleStructTemp) 48
-                              Store 156 155
-             157:   135(s3_t) Load 147(@sampleStructTemp)
-                              Store 137(s3) 157
-             168:         165 Load 167(g_tTex2s4)
-             169:          28 Load 30(g_sSamp)
-             171:         170 SampledImage 168 169
-             175:  162(ivec4) ImageSampleImplicitLod 171 174
-                              Store 164(@sampleResultShadow) 175
-             178:    177(ptr) AccessChain 164(@sampleResultShadow) 43
-             179:     40(int) Load 178
-             180:    177(ptr) AccessChain 176(@sampleStructTemp) 41
-                              Store 180 179
-             181:    177(ptr) AccessChain 164(@sampleResultShadow) 49
-             182:     40(int) Load 181
-             183:    6(float) ConvertSToF 182
-             184:    177(ptr) AccessChain 176(@sampleStructTemp) 48 43
-                              Store 184 183
-             185:    177(ptr) AccessChain 164(@sampleResultShadow) 53
-             186:     40(int) Load 185
-             187:    6(float) ConvertSToF 186
-             188:    177(ptr) AccessChain 176(@sampleStructTemp) 48 49
-                              Store 188 187
-             189:    177(ptr) AccessChain 164(@sampleResultShadow) 58
-             190:     40(int) Load 189
-             191:    177(ptr) AccessChain 176(@sampleStructTemp) 57
-                              Store 191 190
-             192:   159(s4_t) Load 176(@sampleStructTemp)
-                              Store 161(s4) 192
-             202:         199 Load 201(g_tTex2s5)
-             203:          28 Load 30(g_sSamp)
-             205:         204 SampledImage 202 203
-             209:  196(ivec4) ImageSampleImplicitLod 205 208
-                              Store 198(@sampleResultShadow) 209
-             212:    211(ptr) AccessChain 198(@sampleResultShadow) 43
-             213:     42(int) Load 212
-             214:    211(ptr) AccessChain 210(@sampleStructTemp) 41
-                              Store 214 213
-             215:    211(ptr) AccessChain 198(@sampleResultShadow) 49
-             216:     42(int) Load 215
-             217:    211(ptr) AccessChain 210(@sampleStructTemp) 48
-                              Store 217 216
-             218:   193(s5_t) Load 210(@sampleStructTemp)
-                              Store 195(s5) 218
-             220:    10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 89(g_tTex2s1)
-                              Store 219(r0) 220
-             222:    16(s2_t) FunctionCall 19(fn1(t2-tx-struct1-1;) 113(g_tTex2s2)
-                              Store 221(r1) 222
-             225:    10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 224(g_tTex2s1a)
-                              Store 223(r2) 225
-                              ReturnValue 227
+98(@sampleStructTemp):     38(ptr) Variable Function
+         112(s2):     70(ptr) Variable Function
+113(@sampleResultShadow):     25(ptr) Variable Function
+122(@sampleStructTemp):     70(ptr) Variable Function
+         138(s3):    137(ptr) Variable Function
+139(@sampleResultShadow):     25(ptr) Variable Function
+148(@sampleStructTemp):    137(ptr) Variable Function
+         162(s4):    161(ptr) Variable Function
+165(@sampleResultShadow):    164(ptr) Variable Function
+177(@sampleStructTemp):    161(ptr) Variable Function
+         196(s5):    195(ptr) Variable Function
+199(@sampleResultShadow):    198(ptr) Variable Function
+211(@sampleStructTemp):    195(ptr) Variable Function
+         220(r0):     38(ptr) Variable Function
+      221(param):      8(ptr) Variable Function
+         224(r1):     70(ptr) Variable Function
+      225(param):      8(ptr) Variable Function
+         228(r2):     38(ptr) Variable Function
+      230(param):      8(ptr) Variable Function
+              91:           7 Load 90(g_tTex2s1)
+              92:          28 Load 30(g_sSamp)
+              93:          32 SampledImage 91 92
+              97:   21(fvec4) ImageSampleImplicitLod 93 96
+                              Store 88(@sampleResultShadow) 97
+              99:     44(ptr) AccessChain 88(@sampleResultShadow) 43
+             100:    6(float) Load 99
+             101:     44(ptr) AccessChain 98(@sampleStructTemp) 41
+                              Store 101 100
+             102:     44(ptr) AccessChain 88(@sampleResultShadow) 49
+             103:    6(float) Load 102
+             104:     44(ptr) AccessChain 98(@sampleStructTemp) 48 43
+                              Store 104 103
+             105:     44(ptr) AccessChain 88(@sampleResultShadow) 53
+             106:    6(float) Load 105
+             107:     44(ptr) AccessChain 98(@sampleStructTemp) 48 49
+                              Store 107 106
+             108:     44(ptr) AccessChain 88(@sampleResultShadow) 58
+             109:    6(float) Load 108
+             110:     44(ptr) AccessChain 98(@sampleStructTemp) 57
+                              Store 110 109
+             111:    10(s1_t) Load 98(@sampleStructTemp)
+                              Store 87(s1) 111
+             115:           7 Load 114(g_tTex2s2)
+             116:          28 Load 30(g_sSamp)
+             117:          32 SampledImage 115 116
+             121:   21(fvec4) ImageSampleImplicitLod 117 120
+                              Store 113(@sampleResultShadow) 121
+             123:     44(ptr) AccessChain 113(@sampleResultShadow) 43
+             124:    6(float) Load 123
+             125:     44(ptr) AccessChain 122(@sampleStructTemp) 41
+                              Store 125 124
+             126:     44(ptr) AccessChain 113(@sampleResultShadow) 49
+             127:    6(float) Load 126
+             128:     44(ptr) AccessChain 122(@sampleStructTemp) 48 43
+                              Store 128 127
+             129:     44(ptr) AccessChain 113(@sampleResultShadow) 53
+             130:    6(float) Load 129
+             131:     44(ptr) AccessChain 122(@sampleStructTemp) 48 49
+                              Store 131 130
+             132:     44(ptr) AccessChain 113(@sampleResultShadow) 58
+             133:    6(float) Load 132
+             134:     44(ptr) AccessChain 122(@sampleStructTemp) 48 53
+                              Store 134 133
+             135:    16(s2_t) Load 122(@sampleStructTemp)
+                              Store 112(s2) 135
+             141:           7 Load 140(g_tTex2s3)
+             142:          28 Load 30(g_sSamp)
+             143:          32 SampledImage 141 142
+             147:   21(fvec4) ImageSampleImplicitLod 143 146
+                              Store 139(@sampleResultShadow) 147
+             149:     44(ptr) AccessChain 139(@sampleResultShadow) 43
+             150:    6(float) Load 149
+             151:     44(ptr) AccessChain 148(@sampleStructTemp) 41 43
+                              Store 151 150
+             152:     44(ptr) AccessChain 139(@sampleResultShadow) 49
+             153:    6(float) Load 152
+             154:     44(ptr) AccessChain 148(@sampleStructTemp) 41 49
+                              Store 154 153
+             155:     44(ptr) AccessChain 139(@sampleResultShadow) 53
+             156:    6(float) Load 155
+             157:     44(ptr) AccessChain 148(@sampleStructTemp) 48
+                              Store 157 156
+             158:   136(s3_t) Load 148(@sampleStructTemp)
+                              Store 138(s3) 158
+             169:         166 Load 168(g_tTex2s4)
+             170:          28 Load 30(g_sSamp)
+             172:         171 SampledImage 169 170
+             176:  163(ivec4) ImageSampleImplicitLod 172 175
+                              Store 165(@sampleResultShadow) 176
+             179:    178(ptr) AccessChain 165(@sampleResultShadow) 43
+             180:     40(int) Load 179
+             181:    178(ptr) AccessChain 177(@sampleStructTemp) 41
+                              Store 181 180
+             182:    178(ptr) AccessChain 165(@sampleResultShadow) 49
+             183:     40(int) Load 182
+             184:    6(float) ConvertSToF 183
+             185:    178(ptr) AccessChain 177(@sampleStructTemp) 48 43
+                              Store 185 184
+             186:    178(ptr) AccessChain 165(@sampleResultShadow) 53
+             187:     40(int) Load 186
+             188:    6(float) ConvertSToF 187
+             189:    178(ptr) AccessChain 177(@sampleStructTemp) 48 49
+                              Store 189 188
+             190:    178(ptr) AccessChain 165(@sampleResultShadow) 58
+             191:     40(int) Load 190
+             192:    178(ptr) AccessChain 177(@sampleStructTemp) 57
+                              Store 192 191
+             193:   160(s4_t) Load 177(@sampleStructTemp)
+                              Store 162(s4) 193
+             203:         200 Load 202(g_tTex2s5)
+             204:          28 Load 30(g_sSamp)
+             206:         205 SampledImage 203 204
+             210:  197(ivec4) ImageSampleImplicitLod 206 209
+                              Store 199(@sampleResultShadow) 210
+             213:    212(ptr) AccessChain 199(@sampleResultShadow) 43
+             214:     42(int) Load 213
+             215:    212(ptr) AccessChain 211(@sampleStructTemp) 41
+                              Store 215 214
+             216:    212(ptr) AccessChain 199(@sampleResultShadow) 49
+             217:     42(int) Load 216
+             218:    212(ptr) AccessChain 211(@sampleStructTemp) 48
+                              Store 218 217
+             219:   194(s5_t) Load 211(@sampleStructTemp)
+                              Store 196(s5) 219
+             222:           7 Load 90(g_tTex2s1)
+                              Store 221(param) 222
+             223:    10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 221(param)
+                              Store 220(r0) 223
+             226:           7 Load 114(g_tTex2s2)
+                              Store 225(param) 226
+             227:    16(s2_t) FunctionCall 19(fn1(t2-tx-struct1-1;) 225(param)
+                              Store 224(r1) 227
+             231:           7 Load 229(g_tTex2s1a)
+                              Store 230(param) 231
+             232:    10(s1_t) FunctionCall 13(fn1(t2-tx-struct0-1;) 230(param)
+                              Store 228(r2) 232
+                              ReturnValue 234
                               FunctionEnd
index 3dafcd9..8a3ed0a 100644 (file)
@@ -135,12 +135,12 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 62
+// Id's are bound by 73
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 60
+                              EntryPoint Fragment 4  "main" 71
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -153,44 +153,51 @@ gl_FragCoord origin is upper left
                               Name 28  "Func(I21;"
                               Name 27  "DummyTex"
                               Name 31  "@main("
-                              Name 44  "tf1"
-                              Name 46  "tf4"
-                              Name 50  "twf1"
-                              Name 54  "twf4"
-                              Name 60  "@entryPointOutput"
-                              Decorate 44(tf1) DescriptorSet 0
-                              Decorate 46(tf4) DescriptorSet 0
-                              Decorate 50(twf1) DescriptorSet 0
-                              Decorate 54(twf4) DescriptorSet 0
-                              Decorate 60(@entryPointOutput) Location 0
+                              Name 45  "tf1"
+                              Name 46  "param"
+                              Name 49  "tf4"
+                              Name 50  "param"
+                              Name 56  "twf1"
+                              Name 57  "param"
+                              Name 63  "twf4"
+                              Name 64  "param"
+                              Name 71  "@entryPointOutput"
+                              Decorate 45(tf1) DescriptorSet 0
+                              Decorate 49(tf4) DescriptorSet 0
+                              Decorate 56(twf1) DescriptorSet 0
+                              Decorate 63(twf4) DescriptorSet 0
+                              Decorate 71(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeImage 6(float) 2D sampled format:Unknown
-               8:             TypePointer UniformConstant 7
+               8:             TypePointer Function 7
                9:             TypeFunction 6(float) 8(ptr)
               13:             TypeVector 6(float) 4
               14:             TypeFunction 13(fvec4) 8(ptr)
               18:             TypeImage 6(float) 2D nonsampled format:R32f
-              19:             TypePointer UniformConstant 18
+              19:             TypePointer Function 18
               20:             TypeFunction 6(float) 19(ptr)
               24:             TypeImage 6(float) 2D nonsampled format:Rgba32f
-              25:             TypePointer UniformConstant 24
+              25:             TypePointer Function 24
               26:             TypeFunction 13(fvec4) 25(ptr)
               30:             TypeFunction 13(fvec4)
               33:    6(float) Constant 1065353216
               36:    6(float) Constant 0
               37:   13(fvec4) ConstantComposite 36 36 36 36
-         44(tf1):      8(ptr) Variable UniformConstant
-         46(tf4):      8(ptr) Variable UniformConstant
-        50(twf1):     19(ptr) Variable UniformConstant
-        54(twf4):     25(ptr) Variable UniformConstant
-              59:             TypePointer Output 13(fvec4)
-60(@entryPointOutput):     59(ptr) Variable Output
+              44:             TypePointer UniformConstant 7
+         45(tf1):     44(ptr) Variable UniformConstant
+         49(tf4):     44(ptr) Variable UniformConstant
+              55:             TypePointer UniformConstant 18
+        56(twf1):     55(ptr) Variable UniformConstant
+              62:             TypePointer UniformConstant 24
+        63(twf4):     62(ptr) Variable UniformConstant
+              70:             TypePointer Output 13(fvec4)
+71(@entryPointOutput):     70(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              61:   13(fvec4) FunctionCall 31(@main()
-                              Store 60(@entryPointOutput) 61
+              72:   13(fvec4) FunctionCall 31(@main()
+                              Store 71(@entryPointOutput) 72
                               Return
                               FunctionEnd
   11(Func(t211;):    6(float) Function None 9
@@ -215,14 +222,26 @@ gl_FragCoord origin is upper left
                               FunctionEnd
       31(@main():   13(fvec4) Function None 30
               32:             Label
-              45:    6(float) FunctionCall 11(Func(t211;) 44(tf1)
-              47:   13(fvec4) FunctionCall 16(Func(t21;) 46(tf4)
-              48:   13(fvec4) CompositeConstruct 45 45 45 45
-              49:   13(fvec4) FAdd 48 47
-              51:    6(float) FunctionCall 22(Func(I211;) 50(twf1)
-              52:   13(fvec4) CompositeConstruct 51 51 51 51
-              53:   13(fvec4) FAdd 49 52
-              55:   13(fvec4) FunctionCall 28(Func(I21;) 54(twf4)
-              56:   13(fvec4) FAdd 53 55
-                              ReturnValue 56
+       46(param):      8(ptr) Variable Function
+       50(param):      8(ptr) Variable Function
+       57(param):     19(ptr) Variable Function
+       64(param):     25(ptr) Variable Function
+              47:           7 Load 45(tf1)
+                              Store 46(param) 47
+              48:    6(float) FunctionCall 11(Func(t211;) 46(param)
+              51:           7 Load 49(tf4)
+                              Store 50(param) 51
+              52:   13(fvec4) FunctionCall 16(Func(t21;) 50(param)
+              53:   13(fvec4) CompositeConstruct 48 48 48 48
+              54:   13(fvec4) FAdd 53 52
+              58:          18 Load 56(twf1)
+                              Store 57(param) 58
+              59:    6(float) FunctionCall 22(Func(I211;) 57(param)
+              60:   13(fvec4) CompositeConstruct 59 59 59 59
+              61:   13(fvec4) FAdd 54 60
+              65:          24 Load 63(twf4)
+                              Store 64(param) 65
+              66:   13(fvec4) FunctionCall 28(Func(I21;) 64(param)
+              67:   13(fvec4) FAdd 61 66
+                              ReturnValue 67
                               FunctionEnd