فهرست منبع

Updated glslang.

Branimir Karadžić 8 سال پیش
والد
کامیت
cb4659eaa2
100فایلهای تغییر یافته به همراه197 افزوده شده و 173 حذف شده
  1. 9 4
      3rdparty/glslang/SPIRV/GlslangToSpv.cpp
  2. 81 62
      3rdparty/glslang/SPIRV/SpvBuilder.cpp
  3. 8 4
      3rdparty/glslang/SPIRV/SpvBuilder.h
  4. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
  5. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
  6. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
  7. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
  8. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out
  9. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
  10. 3 7
      3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
  11. 1 1
      3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
  12. 1 1
      3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out
  13. 1 1
      3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out
  14. 1 1
      3rdparty/glslang/Test/baseResults/glspv.version.frag.out
  15. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.PointSize.geom.out
  16. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.PointSize.vert.out
  17. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out
  18. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out
  19. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out
  20. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.array.frag.out
  21. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out
  22. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out
  23. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out
  24. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out
  25. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out
  26. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out
  27. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
  28. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out
  29. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out
  30. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out
  31. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out
  32. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out
  33. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out
  34. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.cbuffer-identifier.vert.out
  35. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out
  36. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out
  37. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out
  38. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out
  39. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out
  40. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out
  41. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out
  42. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out
  43. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out
  44. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out
  45. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out
  46. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out
  47. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out
  48. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out
  49. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out
  50. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out
  51. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out
  52. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out
  53. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out
  54. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out
  55. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out
  56. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out
  57. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out
  58. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out
  59. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.color.hull.tesc.out
  60. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out
  61. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out
  62. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out
  63. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out
  64. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out
  65. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out
  66. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out
  67. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
  68. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out
  69. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out
  70. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out
  71. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out
  72. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out
  73. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out
  74. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out
  75. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out
  76. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out
  77. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out
  78. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out
  79. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out
  80. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out
  81. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
  82. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
  83. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out
  84. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out
  85. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
  86. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
  87. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out
  88. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out
  89. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out
  90. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out
  91. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out
  92. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out
  93. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out
  94. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out
  95. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out
  96. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out
  97. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
  98. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
  99. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
  100. 1 1
      3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out

+ 9 - 4
3rdparty/glslang/SPIRV/GlslangToSpv.cpp

@@ -6008,7 +6008,8 @@ int GetSpirvGeneratorVersion()
 {
 {
     // return 1; // start
     // return 1; // start
     // return 2; // EOpAtomicCounterDecrement gets a post decrement, to map between GLSL -> SPIR-V
     // return 2; // EOpAtomicCounterDecrement gets a post decrement, to map between GLSL -> SPIR-V
-    return 3;    // change/correct barrier-instruction operands, to match memory model group decisions
+    // return 3; // change/correct barrier-instruction operands, to match memory model group decisions
+       return 4; // some deeper access chains: for dynamic vector component, and local Boolean component
 }
 }
 
 
 // Write SPIR-V out to a binary file
 // Write SPIR-V out to a binary file
@@ -6113,16 +6114,20 @@ void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsign
         optimizer.RegisterPass(CreateLocalSingleBlockLoadStoreElimPass());
         optimizer.RegisterPass(CreateLocalSingleBlockLoadStoreElimPass());
         optimizer.RegisterPass(CreateLocalSingleStoreElimPass());
         optimizer.RegisterPass(CreateLocalSingleStoreElimPass());
         optimizer.RegisterPass(CreateInsertExtractElimPass());
         optimizer.RegisterPass(CreateInsertExtractElimPass());
+        optimizer.RegisterPass(CreateDeadInsertElimPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
         optimizer.RegisterPass(CreateDeadBranchElimPass());
         optimizer.RegisterPass(CreateDeadBranchElimPass());
         optimizer.RegisterPass(CreateCFGCleanupPass());
         optimizer.RegisterPass(CreateCFGCleanupPass());
         optimizer.RegisterPass(CreateBlockMergePass());
         optimizer.RegisterPass(CreateBlockMergePass());
         optimizer.RegisterPass(CreateLocalMultiStoreElimPass());
         optimizer.RegisterPass(CreateLocalMultiStoreElimPass());
         optimizer.RegisterPass(CreateInsertExtractElimPass());
         optimizer.RegisterPass(CreateInsertExtractElimPass());
+        optimizer.RegisterPass(CreateDeadInsertElimPass());
+        if (options->optimizeSize) {
+            optimizer.RegisterPass(CreateRedundancyEliminationPass());
+            // TODO(greg-lunarg): Add this when AMD driver issues are resolved
+            // optimizer.RegisterPass(CreateCommonUniformElimPass());
+        }
         optimizer.RegisterPass(CreateAggressiveDCEPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
-        // TODO(greg-lunarg): Add this when AMD driver issues are resolved
-        // if (options->optimizeSize)
-        //     optimizer.RegisterPass(CreateCommonUniformElimPass());
 
 
         if (!optimizer.Run(spirv.data(), spirv.size(), &spirv))
         if (!optimizer.Run(spirv.data(), spirv.size(), &spirv))
             return;
             return;

+ 81 - 62
3rdparty/glslang/SPIRV/SpvBuilder.cpp

@@ -1388,16 +1388,13 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect
         return createCompositeInsert(source, target, typeId, channels.front());
         return createCompositeInsert(source, target, typeId, channels.front());
 
 
     Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
     Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
+
     assert(isVector(target));
     assert(isVector(target));
     swizzle->addIdOperand(target);
     swizzle->addIdOperand(target);
-    if (accessChain.component != NoResult)
-        // For dynamic component selection, source does not involve in l-value swizzle
-        swizzle->addIdOperand(target);
-    else {
-        assert(getNumComponents(source) == (int)channels.size());
-        assert(isVector(source));
-        swizzle->addIdOperand(source);
-    }
+
+    assert(getNumComponents(source) == (int)channels.size());
+    assert(isVector(source));
+    swizzle->addIdOperand(source);
 
 
     // Set up an identity shuffle from the base value to the result value
     // Set up an identity shuffle from the base value to the result value
     unsigned int components[4];
     unsigned int components[4];
@@ -1406,12 +1403,8 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect
         components[i] = i;
         components[i] = i;
 
 
     // Punch in the l-value swizzle
     // Punch in the l-value swizzle
-    for (int i = 0; i < (int)channels.size(); ++i) {
-        if (accessChain.component != NoResult)
-            components[i] = channels[i]; // Only shuffle the base value
-        else
-            components[channels[i]] = numTargetComponents + i;
-    }
+    for (int i = 0; i < (int)channels.size(); ++i)
+        components[channels[i]] = numTargetComponents + i;
 
 
     // finish the instruction with these components selectors
     // finish the instruction with these components selectors
     for (int i = 0; i < numTargetComponents; ++i)
     for (int i = 0; i < numTargetComponents; ++i)
@@ -2203,7 +2196,7 @@ void Builder::accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizz
         accessChain.preSwizzleBaseType = preSwizzleBaseType;
         accessChain.preSwizzleBaseType = preSwizzleBaseType;
 
 
     // if needed, propagate the swizzle for the current access chain
     // if needed, propagate the swizzle for the current access chain
-    if (accessChain.swizzle.size()) {
+    if (accessChain.swizzle.size() > 0) {
         std::vector<unsigned> oldSwizzle = accessChain.swizzle;
         std::vector<unsigned> oldSwizzle = accessChain.swizzle;
         accessChain.swizzle.resize(0);
         accessChain.swizzle.resize(0);
         for (unsigned int i = 0; i < swizzle.size(); ++i) {
         for (unsigned int i = 0; i < swizzle.size(); ++i) {
@@ -2224,24 +2217,18 @@ void Builder::accessChainStore(Id rvalue)
 
 
     transferAccessChainSwizzle(true);
     transferAccessChainSwizzle(true);
     Id base = collapseAccessChain();
     Id base = collapseAccessChain();
+    Id source = rvalue;
+
+    // dynamic component should be gone
+    assert(accessChain.component == NoResult);
 
 
     // If swizzle still exists, it is out-of-order or not full, we must load the target vector,
     // If swizzle still exists, it is out-of-order or not full, we must load the target vector,
     // extract and insert elements to perform writeMask and/or swizzle.
     // extract and insert elements to perform writeMask and/or swizzle.
-    Id source = NoResult;
-    if (accessChain.swizzle.size()) {
+    if (accessChain.swizzle.size() > 0) {
         Id tempBaseId = createLoad(base);
         Id tempBaseId = createLoad(base);
-        source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, rvalue, accessChain.swizzle);
+        source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle);
     }
     }
 
 
-    // dynamic component selection
-    if (accessChain.component != NoResult) {
-        Id tempBaseId = (source == NoResult) ? createLoad(base) : source;
-        source = createVectorInsertDynamic(tempBaseId, getTypeId(tempBaseId), rvalue, accessChain.component);
-    }
-
-    if (source == NoResult)
-        source = rvalue;
-
     createStore(source, base);
     createStore(source, base);
 }
 }
 
 
@@ -2251,7 +2238,7 @@ Id Builder::accessChainLoad(Decoration precision, Id resultType)
     Id id;
     Id id;
 
 
     if (accessChain.isRValue) {
     if (accessChain.isRValue) {
-        // transfer access chain, but keep it static, so we can stay in registers
+        // transfer access chain, but try to stay in registers
         transferAccessChainSwizzle(false);
         transferAccessChainSwizzle(false);
         if (accessChain.indexChain.size() > 0) {
         if (accessChain.indexChain.size() > 0) {
             Id swizzleBase = accessChain.preSwizzleBaseType != NoType ? accessChain.preSwizzleBaseType : resultType;
             Id swizzleBase = accessChain.preSwizzleBaseType != NoType ? accessChain.preSwizzleBaseType : resultType;
@@ -2299,16 +2286,16 @@ Id Builder::accessChainLoad(Decoration precision, Id resultType)
         return id;
         return id;
 
 
     // Do remaining swizzling
     // Do remaining swizzling
-    // First, static swizzling
-    if (accessChain.swizzle.size()) {
-        // static swizzle
+
+    // Do the basic swizzle
+    if (accessChain.swizzle.size() > 0) {
         Id swizzledType = getScalarTypeId(getTypeId(id));
         Id swizzledType = getScalarTypeId(getTypeId(id));
         if (accessChain.swizzle.size() > 1)
         if (accessChain.swizzle.size() > 1)
             swizzledType = makeVectorType(swizzledType, (int)accessChain.swizzle.size());
             swizzledType = makeVectorType(swizzledType, (int)accessChain.swizzle.size());
         id = createRvalueSwizzle(precision, swizzledType, id, accessChain.swizzle);
         id = createRvalueSwizzle(precision, swizzledType, id, accessChain.swizzle);
     }
     }
 
 
-    // dynamic single-component selection
+    // Do the dynamic component
     if (accessChain.component != NoResult)
     if (accessChain.component != NoResult)
         id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision);
         id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision);
 
 
@@ -2458,26 +2445,66 @@ void Builder::dump(std::vector<unsigned int>& out) const
 // Protected methods.
 // Protected methods.
 //
 //
 
 
-// Turn the described access chain in 'accessChain' into an instruction
+// Turn the described access chain in 'accessChain' into an instruction(s)
 // computing its address.  This *cannot* include complex swizzles, which must
 // computing its address.  This *cannot* include complex swizzles, which must
-// be handled after this is called, but it does include swizzles that select
-// an individual element, as a single address of a scalar type can be
-// computed by an OpAccessChain instruction.
+// be handled after this is called.
+//
+// Can generate code.
 Id Builder::collapseAccessChain()
 Id Builder::collapseAccessChain()
 {
 {
     assert(accessChain.isRValue == false);
     assert(accessChain.isRValue == false);
 
 
-    if (accessChain.indexChain.size() > 0) {
-        if (accessChain.instr == 0) {
-            StorageClass storageClass = (StorageClass)module.getStorageClass(getTypeId(accessChain.base));
-            accessChain.instr = createAccessChain(storageClass, accessChain.base, accessChain.indexChain);
-        }
-
+    // did we already emit an access chain for this?
+    if (accessChain.instr != NoResult)
         return accessChain.instr;
         return accessChain.instr;
-    } else
+
+    // If we have a dynamic component, we can still transfer
+    // that into a final operand to the access chain.  We need to remap the
+    // dynamic component through the swizzle to get a new dynamic component to
+    // update.
+    //
+    // This was not done in transferAccessChainSwizzle() because it might
+    // generate code.
+    remapDynamicSwizzle();
+    if (accessChain.component != NoResult) {
+        // transfer the dynamic component to the access chain
+        accessChain.indexChain.push_back(accessChain.component);
+        accessChain.component = NoResult;
+    }
+
+    // note that non-trivial swizzling is left pending
+
+    // do we have an access chain?
+    if (accessChain.indexChain.size() == 0)
         return accessChain.base;
         return accessChain.base;
 
 
-    // note that non-trivial swizzling is left pending...
+    // emit the access chain
+    StorageClass storageClass = (StorageClass)module.getStorageClass(getTypeId(accessChain.base));
+    accessChain.instr = createAccessChain(storageClass, accessChain.base, accessChain.indexChain);
+
+    return accessChain.instr;
+}
+
+// For a dynamic component selection of a swizzle.
+//
+// Turn the swizzle and dynamic component into just a dynamic component.
+//
+// Generates code.
+void Builder::remapDynamicSwizzle()
+{
+    // do we have a swizzle to remap a dynamic component through?
+    if (accessChain.component != NoResult && accessChain.swizzle.size() > 1) {
+        // build a vector of the swizzle for the component to map into
+        std::vector<Id> components;
+        for (int c = 0; c < accessChain.swizzle.size(); ++c)
+            components.push_back(makeUintConstant(accessChain.swizzle[c]));
+        Id mapType = makeVectorType(makeUintType(32), (int)accessChain.swizzle.size());
+        Id map = makeCompositeConstant(mapType, components);
+
+        // use it
+        accessChain.component = createVectorExtractDynamic(map, makeUintType(32), accessChain.component);
+        accessChain.swizzle.clear();
+    }
 }
 }
 
 
 // clear out swizzle if it is redundant, that is reselecting the same components
 // clear out swizzle if it is redundant, that is reselecting the same components
@@ -2503,38 +2530,30 @@ void Builder::simplifyAccessChainSwizzle()
 
 
 // To the extent any swizzling can become part of the chain
 // To the extent any swizzling can become part of the chain
 // of accesses instead of a post operation, make it so.
 // of accesses instead of a post operation, make it so.
-// If 'dynamic' is true, include transferring a non-static component index,
-// otherwise, only transfer static indexes.
+// If 'dynamic' is true, include transferring the dynamic component,
+// otherwise, leave it pending.
 //
 //
-// Also, Boolean vectors are likely to be special.  While
-// for external storage, they should only be integer types,
-// function-local bool vectors could use sub-word indexing,
-// so keep that as a separate Insert/Extract on a loaded vector.
+// Does not generate code. just updates the access chain.
 void Builder::transferAccessChainSwizzle(bool dynamic)
 void Builder::transferAccessChainSwizzle(bool dynamic)
 {
 {
-    // too complex?
-    if (accessChain.swizzle.size() > 1)
-        return;
-
     // non existent?
     // non existent?
     if (accessChain.swizzle.size() == 0 && accessChain.component == NoResult)
     if (accessChain.swizzle.size() == 0 && accessChain.component == NoResult)
         return;
         return;
 
 
-    // single component...
-
-    // skip doing it for Boolean vectors
-    if (isBoolType(getContainedTypeId(accessChain.preSwizzleBaseType)))
+    // too complex?
+    // (this requires either a swizzle, or generating code for a dynamic component)
+    if (accessChain.swizzle.size() > 1)
         return;
         return;
 
 
+    // single component, either in the swizzle and/or dynamic component
     if (accessChain.swizzle.size() == 1) {
     if (accessChain.swizzle.size() == 1) {
-        // handle static component
+        assert(accessChain.component == NoResult);
+        // handle static component selection
         accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle.front()));
         accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle.front()));
         accessChain.swizzle.clear();
         accessChain.swizzle.clear();
-        // note, the only valid remaining dynamic access would be to this one
-        // component, so don't bother even looking at accessChain.component
         accessChain.preSwizzleBaseType = NoType;
         accessChain.preSwizzleBaseType = NoType;
-        accessChain.component = NoResult;
     } else if (dynamic && accessChain.component != NoResult) {
     } else if (dynamic && accessChain.component != NoResult) {
+        assert(accessChain.swizzle.size() == 0);
         // handle dynamic component
         // handle dynamic component
         accessChain.indexChain.push_back(accessChain.component);
         accessChain.indexChain.push_back(accessChain.component);
         accessChain.preSwizzleBaseType = NoType;
         accessChain.preSwizzleBaseType = NoType;

+ 8 - 4
3rdparty/glslang/SPIRV/SpvBuilder.h

@@ -533,12 +533,15 @@ public:
     // push new swizzle onto the end of any existing swizzle, merging into a single swizzle
     // push new swizzle onto the end of any existing swizzle, merging into a single swizzle
     void accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType);
     void accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType);
 
 
-    // push a variable component selection onto the access chain; supporting only one, so unsided
+    // push a dynamic component selection onto the access chain, only applicable with a
+    // non-trivial swizzle or no swizzle
     void accessChainPushComponent(Id component, Id preSwizzleBaseType)
     void accessChainPushComponent(Id component, Id preSwizzleBaseType)
     {
     {
-        accessChain.component = component;
-        if (accessChain.preSwizzleBaseType == NoType)
-            accessChain.preSwizzleBaseType = preSwizzleBaseType;
+        if (accessChain.swizzle.size() != 1) {
+            accessChain.component = component;
+            if (accessChain.preSwizzleBaseType == NoType)
+                accessChain.preSwizzleBaseType = preSwizzleBaseType;
+        }
     }
     }
 
 
     // use accessChain and swizzle to store value
     // use accessChain and swizzle to store value
@@ -577,6 +580,7 @@ public:
     Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) const;
     Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2) const;
     Id findCompositeConstant(Op typeClass, const std::vector<Id>& comps) const;
     Id findCompositeConstant(Op typeClass, const std::vector<Id>& comps) const;
     Id collapseAccessChain();
     Id collapseAccessChain();
+    void remapDynamicSwizzle();
     void transferAccessChainSwizzle(bool dynamic);
     void transferAccessChainSwizzle(bool dynamic);
     void simplifyAccessChainSwizzle();
     void simplifyAccessChainSwizzle();
     void createAndSetNoPredecessorBlock(const char*);
     void createAndSetNoPredecessorBlock(const char*);

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.aliasOpaque.frag.out

@@ -1,7 +1,7 @@
 hlsl.aliasOpaque.frag
 hlsl.aliasOpaque.frag
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 87
 // Id's are bound by 87
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaque.frag.out

@@ -1,7 +1,7 @@
 hlsl.flattenOpaque.frag
 hlsl.flattenOpaque.frag
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 185
 // Id's are bound by 185
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out

@@ -1,7 +1,7 @@
 hlsl.flattenOpaqueInit.vert
 hlsl.flattenOpaqueInit.vert
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 134
 // Id's are bound by 134
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out

@@ -1,7 +1,7 @@
 hlsl.flattenOpaqueInitMix.vert
 hlsl.flattenOpaqueInitMix.vert
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 80
 // Id's are bound by 80
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset.frag.out

@@ -1,7 +1,7 @@
 hlsl.flattenSubset.frag
 hlsl.flattenSubset.frag
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 66
 // Id's are bound by 66
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.flattenSubset2.frag.out

@@ -1,7 +1,7 @@
 hlsl.flattenSubset2.frag
 hlsl.flattenSubset2.frag
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 53
 // Id's are bound by 53
 
 
                               Capability Shader
                               Capability Shader

+ 3 - 7
3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out

@@ -1,7 +1,7 @@
 hlsl.partialFlattenLocal.vert
 hlsl.partialFlattenLocal.vert
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 165
 // Id's are bound by 165
 
 
                               Capability Shader
                               Capability Shader
@@ -52,11 +52,9 @@ WARNING: AST will form illegal SPIR-V; need to transform to legalize
                               Store 137 38
                               Store 137 38
                               Branch 100
                               Branch 100
              100:             Label
              100:             Label
-             164:     21(int) Phi 25 5 119 102
-                              LoopMerge 101 102 None
-                              Branch 103
-             103:             Label
+             164:     21(int) Phi 25 5 119 106
              105:    54(bool) SLessThan 164 31
              105:    54(bool) SLessThan 164 31
+                              LoopMerge 101 106 None
                               BranchConditional 105 106 101
                               BranchConditional 105 106 101
              106:               Label
              106:               Label
              138:     39(ptr)   AccessChain 133 164
              138:     39(ptr)   AccessChain 133 164
@@ -69,8 +67,6 @@ WARNING: AST will form illegal SPIR-V; need to transform to legalize
              116:   14(fvec3)   Load 140
              116:   14(fvec3)   Load 140
              117:   14(fvec3)   VectorShuffle 116 114 3 4 2
              117:   14(fvec3)   VectorShuffle 116 114 3 4 2
                                 Store 140 117
                                 Store 140 117
-                                Branch 102
-             102:               Label
              119:     21(int)   IAdd 164 31
              119:     21(int)   IAdd 164 31
                                 Branch 100
                                 Branch 100
              101:             Label
              101:             Label

+ 1 - 1
3rdparty/glslang/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out

@@ -1,7 +1,7 @@
 hlsl.partialFlattenMixed.vert
 hlsl.partialFlattenMixed.vert
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 WARNING: AST will form illegal SPIR-V; need to transform to legalize
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 36
 // Id's are bound by 36
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out

@@ -2,7 +2,7 @@ glsl.entryPointRename.vert
 ERROR: Source entry point must be "main"
 ERROR: Source entry point must be "main"
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 20
 // Id's are bound by 20
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out

@@ -1,6 +1,6 @@
 glsl.entryPointRename.vert
 glsl.entryPointRename.vert
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 20
 // Id's are bound by 20
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/glspv.version.frag.out

@@ -2,7 +2,7 @@ glspv.version.frag
 ERROR: #version: compilation for SPIR-V does not support the compatibility profile
 ERROR: #version: compilation for SPIR-V does not support the compatibility profile
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 6
 // Id's are bound by 6
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.PointSize.geom.out

@@ -70,7 +70,7 @@ output primitive = line_strip
 0:?     'OutputStream.ps' ( out float PointSize)
 0:?     'OutputStream.ps' ( out float PointSize)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 36
 // Id's are bound by 36
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.PointSize.vert.out

@@ -38,7 +38,7 @@ Shader version: 500
 0:?     '@entryPointOutput' ( out float PointSize)
 0:?     '@entryPointOutput' ( out float PointSize)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 16
 // Id's are bound by 16
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.aliasOpaque.frag.out

@@ -143,7 +143,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 64
 // Id's are bound by 64
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.amend.frag.out

@@ -160,7 +160,7 @@ gl_FragCoord origin is upper left
 0:?     'm' ( global 4-component vector of float)
 0:?     'm' ( global 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 57
 // Id's are bound by 57
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.array.flatten.frag.out

@@ -345,7 +345,7 @@ gl_FragCoord origin is upper left
 0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 143
 // Id's are bound by 143
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.array.frag.out

@@ -290,7 +290,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=1) in 3-element array of 4-component vector of float)
 0:?     'input' (layout( location=1) in 3-element array of 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 126
 // Id's are bound by 126
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.array.implicit-size.frag.out

@@ -163,7 +163,7 @@ gl_FragCoord origin is upper left
 0:?     'g_mystruct' ( global 2-element array of structure{ temp int i,  temp float f})
 0:?     'g_mystruct' ( global 2-element array of structure{ temp int i,  temp float f})
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 72
 // Id's are bound by 72
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.array.multidim.frag.out

@@ -134,7 +134,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 57
 // Id's are bound by 57
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.assoc.frag.out

@@ -132,7 +132,7 @@ gl_FragCoord origin is upper left
 0:?     'a5' (layout( location=4) in 4-component vector of float)
 0:?     'a5' (layout( location=4) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 58
 // Id's are bound by 58
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.attribute.expression.comp.out

@@ -82,7 +82,7 @@ local_size = (4, 6, 8)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 39
 // Id's are bound by 39
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.attribute.frag.out

@@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 24
 // Id's are bound by 24
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.attributeC11.frag.out

@@ -94,7 +94,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=8) in 4-component vector of float)
 0:?     'input' (layout( location=8) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 51
 // Id's are bound by 51
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out

@@ -56,7 +56,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 28
 // Id's are bound by 28
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.basic.comp.out

@@ -60,7 +60,7 @@ local_size = (1, 1, 1)
 0:?     'gti' ( in int LocalInvocationID)
 0:?     'gti' ( in int LocalInvocationID)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 35
 // Id's are bound by 35
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.basic.geom.out

@@ -188,7 +188,7 @@ output primitive = line_strip
 0:?     'OutputStream.something' (layout( location=1) out int)
 0:?     'OutputStream.something' (layout( location=1) out int)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 68
 // Id's are bound by 68
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.boolConv.vert.out

@@ -204,7 +204,7 @@ Shader version: 500
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 99
 // Id's are bound by 99
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out

@@ -146,7 +146,7 @@ gl_FragCoord origin is upper left
 0:?     'input' ( in 4-component vector of float FragCoord)
 0:?     'input' ( in 4-component vector of float FragCoord)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 73
 // Id's are bound by 73
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.calculatelod.dx10.frag.out

@@ -356,7 +356,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 148
 // Id's are bound by 148
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.cast.frag.out

@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 39
 // Id's are bound by 39
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.cbuffer-identifier.vert.out

@@ -250,7 +250,7 @@ Shader version: 500
 0:?     'input.Norm' (layout( location=1) in 3-component vector of float)
 0:?     'input.Norm' (layout( location=1) in 3-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 106
 // Id's are bound by 106
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.charLit.vert.out

@@ -146,7 +146,7 @@ Shader version: 500
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 58
 // Id's are bound by 58
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clip.frag.out

@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 30
 // Id's are bound by 30
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.frag.out

@@ -98,7 +98,7 @@ gl_FragCoord origin is upper left
 0:?     'cull' ( in 1-element array of float CullDistance)
 0:?     'cull' ( in 1-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 53
 // Id's are bound by 53
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.geom.out

@@ -550,7 +550,7 @@ output primitive = line_strip
 0:?     'OutputStream.clip' ( out 2-element array of float ClipDistance)
 0:?     'OutputStream.clip' ( out 2-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 118
 // Id's are bound by 118
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-1.vert.out

@@ -108,7 +108,7 @@ Shader version: 500
 0:?     'cull' ( out 1-element array of float CullDistance)
 0:?     'cull' ( out 1-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 46
 // Id's are bound by 46
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.frag.out

@@ -290,7 +290,7 @@ gl_FragCoord origin is upper left
 0:?     'cull' ( in 4-element array of float CullDistance)
 0:?     'cull' ( in 4-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 84
 // Id's are bound by 84
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.geom.out

@@ -724,7 +724,7 @@ output primitive = line_strip
 0:?     'OutputStream.clip' ( out 4-element array of float ClipDistance)
 0:?     'OutputStream.clip' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 128
 // Id's are bound by 128
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-2.vert.out

@@ -420,7 +420,7 @@ Shader version: 500
 0:?     'cull' ( out 4-element array of float CullDistance)
 0:?     'cull' ( out 4-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 89
 // Id's are bound by 89
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.frag.out

@@ -98,7 +98,7 @@ gl_FragCoord origin is upper left
 0:?     'cull' ( in 2-element array of float CullDistance)
 0:?     'cull' ( in 2-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 53
 // Id's are bound by 53
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.geom.out

@@ -630,7 +630,7 @@ output primitive = line_strip
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 127
 // Id's are bound by 127
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-3.vert.out

@@ -136,7 +136,7 @@ Shader version: 500
 0:?     'cull' ( out 2-element array of float CullDistance)
 0:?     'cull' ( out 2-element array of float CullDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 51
 // Id's are bound by 51
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.frag.out

@@ -174,7 +174,7 @@ gl_FragCoord origin is upper left
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 57
 // Id's are bound by 57
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.geom.out

@@ -612,7 +612,7 @@ output primitive = line_strip
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 130
 // Id's are bound by 130
 
 
                               Capability Geometry
                               Capability Geometry

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-4.vert.out

@@ -270,7 +270,7 @@ Shader version: 500
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 72
 // Id's are bound by 72
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.frag.out

@@ -232,7 +232,7 @@ gl_FragCoord origin is upper left
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 62
 // Id's are bound by 62
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-5.vert.out

@@ -318,7 +318,7 @@ Shader version: 500
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 73
 // Id's are bound by 73
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.frag.out

@@ -282,7 +282,7 @@ gl_FragCoord origin is upper left
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 79
 // Id's are bound by 79
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-6.vert.out

@@ -428,7 +428,7 @@ Shader version: 500
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 86
 // Id's are bound by 86
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.frag.out

@@ -270,7 +270,7 @@ gl_FragCoord origin is upper left
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 78
 // Id's are bound by 78
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-7.vert.out

@@ -384,7 +384,7 @@ Shader version: 500
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 81
 // Id's are bound by 81
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.frag.out

@@ -186,7 +186,7 @@ gl_FragCoord origin is upper left
 0:?     'v.clip1' ( in 4-element array of float ClipDistance)
 0:?     'v.clip1' ( in 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 65
 // Id's are bound by 65
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-8.vert.out

@@ -240,7 +240,7 @@ Shader version: 500
 0:?     '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
 0:?     '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 62
 // Id's are bound by 62
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.frag.out

@@ -144,7 +144,7 @@ gl_FragCoord origin is upper left
 0:?     'clip0' ( in 4-element array of float ClipDistance)
 0:?     'clip0' ( in 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 68
 // Id's are bound by 68
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.clipdistance-9.vert.out

@@ -194,7 +194,7 @@ Shader version: 500
 0:?     'clip0' ( out 4-element array of float ClipDistance)
 0:?     'clip0' ( out 4-element array of float ClipDistance)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 67
 // Id's are bound by 67
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.color.hull.tesc.out

@@ -356,7 +356,7 @@ triangle order = cw
 0:?     '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
 0:?     '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 127
 // Id's are bound by 127
 
 
                               Capability Tessellation
                               Capability Tessellation

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.comparison.vec.frag.out

@@ -262,7 +262,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 96
 // Id's are bound by 96
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.conditional.frag.out

@@ -522,7 +522,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 220
 // Id's are bound by 220
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out

@@ -132,7 +132,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 66
 // Id's are bound by 66
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.constructArray.vert.out

@@ -268,7 +268,7 @@ Shader version: 500
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 89
 // Id's are bound by 89
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.constructexpr.frag.out

@@ -104,7 +104,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 40
 // Id's are bound by 40
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.constructimat.frag.out

@@ -544,7 +544,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out int)
 0:?     '@entryPointOutput' (layout( location=0) out int)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 98
 // Id's are bound by 98
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out

@@ -1,6 +1,6 @@
 hlsl.dashI.vert
 hlsl.dashI.vert
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 40
 // Id's are bound by 40
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out

@@ -1,6 +1,6 @@
 hlsl.deadFunctionMissingBody.vert
 hlsl.deadFunctionMissingBody.vert
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 18
 // Id's are bound by 18
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.depthGreater.frag.out

@@ -50,7 +50,7 @@ using depth_greater
 0:?     'depth' ( out float FragDepth)
 0:?     'depth' ( out float FragDepth)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 20
 // Id's are bound by 20
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.depthLess.frag.out

@@ -42,7 +42,7 @@ using depth_less
 0:?     '@entryPointOutput' ( out float FragDepth)
 0:?     '@entryPointOutput' ( out float FragDepth)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 16
 // Id's are bound by 16
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.discard.frag.out

@@ -108,7 +108,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 50
 // Id's are bound by 50
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.doLoop.frag.out

@@ -144,7 +144,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in float)
 0:?     'input' (layout( location=0) in float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 71
 // Id's are bound by 71
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.domain.1.tese.out

@@ -286,7 +286,7 @@ triangle order = none
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 103
 // Id's are bound by 103
 
 
                               Capability Tessellation
                               Capability Tessellation

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.domain.2.tese.out

@@ -284,7 +284,7 @@ triangle order = none
 0:?     'pcf_data.foo' (layout( location=2) patch in float)
 0:?     'pcf_data.foo' (layout( location=2) patch in float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 98
 // Id's are bound by 98
 
 
                               Capability Tessellation
                               Capability Tessellation

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.domain.3.tese.out

@@ -264,7 +264,7 @@ triangle order = none
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 100
 // Id's are bound by 100
 
 
                               Capability Tessellation
                               Capability Tessellation

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.emptystruct.init.vert.out

@@ -60,7 +60,7 @@ Shader version: 500
 0:?     'vertexIndex' (layout( location=0) in uint)
 0:?     'vertexIndex' (layout( location=0) in uint)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 29
 // Id's are bound by 29
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.frag.out

@@ -50,7 +50,7 @@ gl_FragCoord origin is upper left
 0:?   Linker Objects
 0:?   Linker Objects
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 27
 // Id's are bound by 27
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.emptystructreturn.vert.out

@@ -48,7 +48,7 @@ Shader version: 500
 0:?   Linker Objects
 0:?   Linker Objects
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 27
 // Id's are bound by 27
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.entry-in.frag.out

@@ -166,7 +166,7 @@ gl_FragCoord origin is upper left
 0:?     'i.i2' (layout( location=1) flat in 2-component vector of int)
 0:?     'i.i2' (layout( location=1) flat in 2-component vector of int)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 74
 // Id's are bound by 74
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.entry-out.frag.out

@@ -244,7 +244,7 @@ gl_FragCoord origin is upper left
 0:?     'out3.i' (layout( location=5) out 2-component vector of int)
 0:?     'out3.i' (layout( location=5) out 2-component vector of int)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 89
 // Id's are bound by 89
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.entry.rename.frag.out

@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 32
 // Id's are bound by 32
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out

@@ -1,6 +1,6 @@
 hlsl.explicitDescriptorSet.frag
 hlsl.explicitDescriptorSet.frag
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 31
 // Id's are bound by 31
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.explicitDescriptorSet.frag.out

@@ -1,6 +1,6 @@
 hlsl.explicitDescriptorSet.frag
 hlsl.explicitDescriptorSet.frag
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 31
 // Id's are bound by 31
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flatten.return.frag.out

@@ -118,7 +118,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
 0:?     '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 49
 // Id's are bound by 49
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flattenOpaque.frag.out

@@ -295,7 +295,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 122
 // Id's are bound by 122
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInit.vert.out

@@ -165,7 +165,7 @@ Shader version: 500
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 82
 // Id's are bound by 82
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out

@@ -107,7 +107,7 @@ Shader version: 500
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 59
 // Id's are bound by 59
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flattenSubset.frag.out

@@ -115,7 +115,7 @@ gl_FragCoord origin is upper left
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 54
 // Id's are bound by 54
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.flattenSubset2.frag.out

@@ -149,7 +149,7 @@ gl_FragCoord origin is upper left
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 56
 // Id's are bound by 56
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.float1.frag.out

@@ -65,7 +65,7 @@ gl_FragCoord origin is upper left
 0:?     'scalar' ( global float)
 0:?     'scalar' ( global float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 27
 // Id's are bound by 27
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.float4.frag.out

@@ -42,7 +42,7 @@ gl_FragCoord origin is upper left
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 26
 // Id's are bound by 26
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out

@@ -402,7 +402,7 @@ gl_FragCoord origin is upper left
 0:?     'input' (layout( location=0) in 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 183
 // Id's are bound by 183
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.fraggeom.frag.out

@@ -64,7 +64,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 25
 // Id's are bound by 25
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gather.array.dx10.frag.out

@@ -260,7 +260,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 124
 // Id's are bound by 124
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.frag.out

@@ -256,7 +256,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 135
 // Id's are bound by 135
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gather.basic.dx10.vert.out

@@ -220,7 +220,7 @@ Shader version: 500
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 126
 // Id's are bound by 126
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gather.offset.dx10.frag.out

@@ -206,7 +206,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 114
 // Id's are bound by 114
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out

@@ -200,7 +200,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 97
 // Id's are bound by 97
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out

@@ -748,7 +748,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 255
 // Id's are bound by 255
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out

@@ -756,7 +756,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 265
 // Id's are bound by 265
 
 
                               Capability Shader
                               Capability Shader

+ 1 - 1
3rdparty/glslang/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out

@@ -1260,7 +1260,7 @@ gl_FragCoord origin is upper left
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 
 // Module Version 10000
 // Module Version 10000
-// Generated by (magic number): 80003
+// Generated by (magic number): 80004
 // Id's are bound by 399
 // Id's are bound by 399
 
 
                               Capability Shader
                               Capability Shader

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است