diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index e4280a33..39b4ea6e 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -643,9 +643,9 @@ bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier) { // This should list qualifiers that simultaneous satisfy: // - struct members can inherit from a struct declaration - // - effect decorations on the struct members (note smooth does not, and expecting something like volatile to effect the whole object) + // - affect decorations on the struct members (note smooth does not, and expecting something like volatile to effect the whole object) // - are not part of the offset/st430/etc or row/column-major layout - return qualifier.invariant || qualifier.nopersp || qualifier.flat || qualifier.centroid || qualifier.patch || qualifier.sample || qualifier.hasLocation(); + return qualifier.invariant || qualifier.hasLocation(); } // @@ -1913,8 +1913,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty addMemberDecoration(spvType, member, TranslatePrecisionDecoration(glslangType)); // Add interpolation and auxiliary storage decorations only to top-level members of Input and Output storage classes if (type.getQualifier().storage == glslang::EvqVaryingIn || type.getQualifier().storage == glslang::EvqVaryingOut) { - addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier)); - addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier)); + if (type.getBasicType() == glslang::EbtBlock) { + addMemberDecoration(spvType, member, TranslateInterpolationDecoration(subQualifier)); + addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(subQualifier)); + } } addMemberDecoration(spvType, member, TranslateInvariantDecoration(subQualifier)); @@ -2606,14 +2608,16 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO ++extraArgs; } else if (sampler.shadow) { std::vector indexes; - int comp; + int dRefComp; if (cracked.proj) - comp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref" + dRefComp = 2; // "The resulting 3rd component of P in the shadow forms is used as Dref" else - comp = builder.getNumComponents(params.coords) - 1; - indexes.push_back(comp); + dRefComp = builder.getNumComponents(params.coords) - 1; + indexes.push_back(dRefComp); params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); } + + // lod if (cracked.lod) { params.lod = arguments[2]; ++extraArgs; @@ -2621,15 +2625,21 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // we need to invent the default lod for an explicit lod instruction for a non-fragment stage noImplicitLod = true; } + + // multisample if (sampler.ms) { params.sample = arguments[2]; // For MS, "sample" should be specified ++extraArgs; } + + // gradient if (cracked.grad) { params.gradX = arguments[2 + extraArgs]; params.gradY = arguments[3 + extraArgs]; extraArgs += 2; } + + // offset and offsets if (cracked.offset) { params.offset = arguments[2 + extraArgs]; ++extraArgs; @@ -2637,25 +2647,33 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO params.offsets = arguments[2 + extraArgs]; ++extraArgs; } + + // lod clamp if (cracked.lodClamp) { params.lodClamp = arguments[2 + extraArgs]; ++extraArgs; } + + // sparse if (sparse) { params.texelOut = arguments[2 + extraArgs]; ++extraArgs; } + + // bias if (bias) { params.bias = arguments[2 + extraArgs]; ++extraArgs; } + + // gather component if (cracked.gather && ! sampler.shadow) { // default component is 0, if missing, otherwise an argument if (2 + extraArgs < (int)arguments.size()) { - params.comp = arguments[2 + extraArgs]; + params.component = arguments[2 + extraArgs]; ++extraArgs; } else { - params.comp = builder.makeIntConstant(0); + params.component = builder.makeIntConstant(0); } } diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 152a4639..ee9642b4 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1430,10 +1430,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool explicitLod = false; texArgs[numArgs++] = parameters.sampler; texArgs[numArgs++] = parameters.coords; - if (parameters.Dref) + if (parameters.Dref != NoResult) texArgs[numArgs++] = parameters.Dref; - if (parameters.comp) - texArgs[numArgs++] = parameters.comp; + if (parameters.component != NoResult) + texArgs[numArgs++] = parameters.component; // // Set up the optional arguments diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 01cd6038..4ae28356 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -321,7 +321,7 @@ public: Id gradX; Id gradY; Id sample; - Id comp; + Id component; Id texelOut; Id lodClamp; }; diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index d5332d25..07dc1a79 100755 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -63,9 +63,6 @@ Linked vertex stage: Decorate 55(sampb2) Binding 5 Decorate 56(sampb4) DescriptorSet 0 Decorate 56(sampb4) Binding 31 - MemberDecorate 60(SS) 0 Flat - MemberDecorate 60(SS) 1 Flat - MemberDecorate 60(SS) 2 Flat Decorate 62(var) Location 0 MemberDecorate 63(MS) 0 Location 17 Decorate 63(MS) Block diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index 4f3d67c1..2d6f559c 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -7,12 +7,12 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 67 +// Id's are bound by 66 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 63 66 + EntryPoint Vertex 4 "main" 62 65 Source GLSL 450 Name 4 "main" Name 14 "S" @@ -82,16 +82,12 @@ Linked vertex stage: MemberName 58(bBt3) 0 "ntcol" MemberName 58(bBt3) 1 "ntrow" Name 60 "bBtn3" - Name 61 "S" - MemberName 61(S) 0 "a" - MemberName 61(S) 1 "b" - MemberName 61(S) 2 "c" - Name 63 "sout" - Name 64 "S" - MemberName 64(S) 0 "a" - MemberName 64(S) 1 "b" - MemberName 64(S) 2 "c" - Name 66 "soutinv" + Name 62 "sout" + Name 63 "S" + MemberName 63(S) 0 "a" + MemberName 63(S) 1 "b" + MemberName 63(S) 2 "c" + Name 65 "soutinv" Decorate 13 ArrayStride 32 MemberDecorate 14(S) 0 Offset 0 MemberDecorate 14(S) 1 ColMajor @@ -166,13 +162,10 @@ Linked vertex stage: Decorate 58(bBt3) BufferBlock Decorate 60(bBtn3) DescriptorSet 1 Decorate 60(bBtn3) Binding 0 - MemberDecorate 61(S) 0 Flat - MemberDecorate 61(S) 1 Flat - MemberDecorate 61(S) 2 Flat - MemberDecorate 64(S) 0 Invariant - MemberDecorate 64(S) 1 Invariant - MemberDecorate 64(S) 2 Invariant - Decorate 66(soutinv) Invariant + MemberDecorate 63(S) 0 Invariant + MemberDecorate 63(S) 1 Invariant + MemberDecorate 63(S) 2 Invariant + Decorate 65(soutinv) Invariant 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -230,12 +223,11 @@ Linked vertex stage: 58(bBt3): TypeStruct 49(Nestor) 54(Nestor) 59: TypePointer Uniform 58(bBt3) 60(bBtn3): 59(ptr) Variable Uniform - 61(S): TypeStruct 8(ivec3) 13 7(int) - 62: TypePointer Output 61(S) - 63(sout): 62(ptr) Variable Output - 64(S): TypeStruct 8(ivec3) 13 7(int) - 65: TypePointer Output 64(S) - 66(soutinv): 65(ptr) Variable Output + 61: TypePointer Output 29(S) + 62(sout): 61(ptr) Variable Output + 63(S): TypeStruct 8(ivec3) 13 7(int) + 64: TypePointer Output 63(S) + 65(soutinv): 64(ptr) Variable Output 4(main): 2 Function None 3 5: Label Return diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index cd8afedc..2d464de5 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -7,12 +7,12 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 143 +// Id's are bound by 136 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 18 43 93 101 111 138 142 + EntryPoint Fragment 4 "main" 15 40 90 98 108 134 135 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" @@ -25,59 +25,27 @@ Linked fragment stage: MemberName 10(s2) 2 "s1_1" MemberName 10(s2) 3 "bleh" Name 12 "locals2" - Name 13 "s1" - MemberName 13(s1) 0 "i" - MemberName 13(s1) 1 "f" - Name 14 "s2" - MemberName 14(s2) 0 "i" - MemberName 14(s2) 1 "f" - MemberName 14(s2) 2 "s1_1" - MemberName 14(s2) 3 "bleh" - Name 15 "s1" - MemberName 15(s1) 0 "i" - MemberName 15(s1) 1 "f" - Name 16 "s3" - MemberName 16(s3) 0 "s2_1" - MemberName 16(s3) 1 "i" - MemberName 16(s3) 2 "f" - MemberName 16(s3) 3 "s1_1" - Name 18 "foo3" - Name 39 "localFArray" - Name 43 "coord" - Name 52 "localIArray" - Name 71 "x" - Name 73 "localArray" - Name 78 "i" - Name 87 "a" - Name 93 "condition" - Name 101 "color" - Name 111 "gl_FragColor" - Name 131 "samp2D" - Name 136 "s1" - MemberName 136(s1) 0 "i" - MemberName 136(s1) 1 "f" - Name 138 "foo" - Name 139 "s1" - MemberName 139(s1) 0 "i" - MemberName 139(s1) 1 "f" - Name 140 "s2" - MemberName 140(s2) 0 "i" - MemberName 140(s2) 1 "f" - MemberName 140(s2) 2 "s1_1" - MemberName 140(s2) 3 "bleh" - Name 142 "foo2" - MemberDecorate 16(s3) 0 Flat - MemberDecorate 16(s3) 1 Flat - MemberDecorate 16(s3) 2 Flat - MemberDecorate 16(s3) 3 Flat - Decorate 93(condition) Flat - Decorate 131(samp2D) DescriptorSet 0 - MemberDecorate 136(s1) 0 Flat - MemberDecorate 136(s1) 1 Flat - MemberDecorate 140(s2) 0 Flat - MemberDecorate 140(s2) 1 Flat - MemberDecorate 140(s2) 2 Flat - MemberDecorate 140(s2) 3 Flat + Name 13 "s3" + MemberName 13(s3) 0 "s2_1" + MemberName 13(s3) 1 "i" + MemberName 13(s3) 2 "f" + MemberName 13(s3) 3 "s1_1" + Name 15 "foo3" + Name 36 "localFArray" + Name 40 "coord" + Name 49 "localIArray" + Name 68 "x" + Name 70 "localArray" + Name 75 "i" + Name 84 "a" + Name 90 "condition" + Name 98 "color" + Name 108 "gl_FragColor" + Name 128 "samp2D" + Name 134 "foo" + Name 135 "foo2" + Decorate 90(condition) Flat + Decorate 128(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -86,171 +54,164 @@ Linked fragment stage: 9: TypeVector 7(float) 4 10(s2): TypeStruct 6(int) 7(float) 8(s1) 9(fvec4) 11: TypePointer Function 10(s2) - 13(s1): TypeStruct 6(int) 7(float) - 14(s2): TypeStruct 6(int) 7(float) 13(s1) 9(fvec4) - 15(s1): TypeStruct 6(int) 7(float) - 16(s3): TypeStruct 14(s2) 6(int) 7(float) 15(s1) - 17: TypePointer Input 16(s3) - 18(foo3): 17(ptr) Variable Input - 19: 6(int) Constant 0 - 20: TypePointer Input 14(s2) - 23: TypePointer Input 6(int) - 26: TypeBool - 30: 6(int) Constant 2 - 31: 6(int) Constant 1 - 32: 7(float) Constant 1065353216 - 33: TypePointer Function 7(float) - 35: TypeInt 32 0 - 36: 35(int) Constant 16 - 37: TypeArray 7(float) 36 - 38: TypePointer Function 37 - 40: 6(int) Constant 4 - 41: TypeVector 7(float) 2 - 42: TypePointer Input 41(fvec2) - 43(coord): 42(ptr) Variable Input - 44: 35(int) Constant 0 - 45: TypePointer Input 7(float) - 49: 35(int) Constant 8 - 50: TypeArray 6(int) 49 - 51: TypePointer Function 50 - 55: TypePointer Function 6(int) - 72: 6(int) Constant 5 - 85: 6(int) Constant 16 - 89: 7(float) Constant 0 - 93(condition): 23(ptr) Variable Input - 99: 6(int) Constant 3 - 100: TypePointer Input 9(fvec4) - 101(color): 100(ptr) Variable Input - 103: TypePointer Function 9(fvec4) - 105: 35(int) Constant 1 - 108: 35(int) Constant 2 - 110: TypePointer Output 9(fvec4) -111(gl_FragColor): 110(ptr) Variable Output - 128: TypeImage 7(float) 2D sampled format:Unknown - 129: TypeSampledImage 128 - 130: TypePointer UniformConstant 129 - 131(samp2D): 130(ptr) Variable UniformConstant - 136(s1): TypeStruct 6(int) 7(float) - 137: TypePointer Input 136(s1) - 138(foo): 137(ptr) Variable Input - 139(s1): TypeStruct 6(int) 7(float) - 140(s2): TypeStruct 6(int) 7(float) 139(s1) 9(fvec4) - 141: TypePointer Input 140(s2) - 142(foo2): 141(ptr) Variable Input + 13(s3): TypeStruct 10(s2) 6(int) 7(float) 8(s1) + 14: TypePointer Input 13(s3) + 15(foo3): 14(ptr) Variable Input + 16: 6(int) Constant 0 + 17: TypePointer Input 10(s2) + 20: TypePointer Input 6(int) + 23: TypeBool + 27: 6(int) Constant 2 + 28: 6(int) Constant 1 + 29: 7(float) Constant 1065353216 + 30: TypePointer Function 7(float) + 32: TypeInt 32 0 + 33: 32(int) Constant 16 + 34: TypeArray 7(float) 33 + 35: TypePointer Function 34 + 37: 6(int) Constant 4 + 38: TypeVector 7(float) 2 + 39: TypePointer Input 38(fvec2) + 40(coord): 39(ptr) Variable Input + 41: 32(int) Constant 0 + 42: TypePointer Input 7(float) + 46: 32(int) Constant 8 + 47: TypeArray 6(int) 46 + 48: TypePointer Function 47 + 52: TypePointer Function 6(int) + 69: 6(int) Constant 5 + 82: 6(int) Constant 16 + 86: 7(float) Constant 0 + 90(condition): 20(ptr) Variable Input + 96: 6(int) Constant 3 + 97: TypePointer Input 9(fvec4) + 98(color): 97(ptr) Variable Input + 100: TypePointer Function 9(fvec4) + 102: 32(int) Constant 1 + 105: 32(int) Constant 2 + 107: TypePointer Output 9(fvec4) +108(gl_FragColor): 107(ptr) Variable Output + 125: TypeImage 7(float) 2D sampled format:Unknown + 126: TypeSampledImage 125 + 127: TypePointer UniformConstant 126 + 128(samp2D): 127(ptr) Variable UniformConstant + 133: TypePointer Input 8(s1) + 134(foo): 133(ptr) Variable Input + 135(foo2): 17(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12(locals2): 11(ptr) Variable Function - 39(localFArray): 38(ptr) Variable Function - 52(localIArray): 51(ptr) Variable Function - 71(x): 55(ptr) Variable Function - 73(localArray): 38(ptr) Variable Function - 78(i): 55(ptr) Variable Function - 87(a): 38(ptr) Variable Function - 21: 20(ptr) AccessChain 18(foo3) 19 - 22: 14(s2) Load 21 - Store 12(locals2) 22 - 24: 23(ptr) AccessChain 18(foo3) 19 19 - 25: 6(int) Load 24 - 27: 26(bool) SGreaterThan 25 19 - SelectionMerge 29 None - BranchConditional 27 28 57 - 28: Label - 34: 33(ptr) AccessChain 12(locals2) 30 31 - Store 34 32 - 46: 45(ptr) AccessChain 43(coord) 44 - 47: 7(float) Load 46 - 48: 33(ptr) AccessChain 39(localFArray) 40 - Store 48 47 - 53: 23(ptr) AccessChain 18(foo3) 19 19 - 54: 6(int) Load 53 - 56: 55(ptr) AccessChain 52(localIArray) 30 - Store 56 54 - Branch 29 - 57: Label - 58: 45(ptr) AccessChain 43(coord) 44 - 59: 7(float) Load 58 - 60: 33(ptr) AccessChain 12(locals2) 30 31 - Store 60 59 - 61: 33(ptr) AccessChain 39(localFArray) 40 - Store 61 32 - 62: 55(ptr) AccessChain 52(localIArray) 30 - Store 62 19 - Branch 29 - 29: Label - 63: 55(ptr) AccessChain 52(localIArray) 30 - 64: 6(int) Load 63 - 65: 26(bool) IEqual 64 19 - SelectionMerge 67 None - BranchConditional 65 66 67 - 66: Label - 68: 33(ptr) AccessChain 39(localFArray) 40 - 69: 7(float) Load 68 - 70: 7(float) FAdd 69 32 - Store 68 70 - Branch 67 - 67: Label - Store 71(x) 72 - 74: 6(int) Load 71(x) - 75: 45(ptr) AccessChain 43(coord) 44 - 76: 7(float) Load 75 - 77: 33(ptr) AccessChain 73(localArray) 74 - Store 77 76 - Store 78(i) 19 - Branch 79 - 79: Label - LoopMerge 81 82 None - Branch 83 - 83: Label - 84: 6(int) Load 78(i) - 86: 26(bool) SLessThan 84 85 - BranchConditional 86 80 81 - 80: Label - 88: 6(int) Load 78(i) - 90: 33(ptr) AccessChain 87(a) 88 - Store 90 89 - Branch 82 - 82: Label - 91: 6(int) Load 78(i) - 92: 6(int) IAdd 91 31 - Store 78(i) 92 + 36(localFArray): 35(ptr) Variable Function + 49(localIArray): 48(ptr) Variable Function + 68(x): 52(ptr) Variable Function + 70(localArray): 35(ptr) Variable Function + 75(i): 52(ptr) Variable Function + 84(a): 35(ptr) Variable Function + 18: 17(ptr) AccessChain 15(foo3) 16 + 19: 10(s2) Load 18 + Store 12(locals2) 19 + 21: 20(ptr) AccessChain 15(foo3) 16 16 + 22: 6(int) Load 21 + 24: 23(bool) SGreaterThan 22 16 + SelectionMerge 26 None + BranchConditional 24 25 54 + 25: Label + 31: 30(ptr) AccessChain 12(locals2) 27 28 + Store 31 29 + 43: 42(ptr) AccessChain 40(coord) 41 + 44: 7(float) Load 43 + 45: 30(ptr) AccessChain 36(localFArray) 37 + Store 45 44 + 50: 20(ptr) AccessChain 15(foo3) 16 16 + 51: 6(int) Load 50 + 53: 52(ptr) AccessChain 49(localIArray) 27 + Store 53 51 + Branch 26 + 54: Label + 55: 42(ptr) AccessChain 40(coord) 41 + 56: 7(float) Load 55 + 57: 30(ptr) AccessChain 12(locals2) 27 28 + Store 57 56 + 58: 30(ptr) AccessChain 36(localFArray) 37 + Store 58 29 + 59: 52(ptr) AccessChain 49(localIArray) 27 + Store 59 16 + Branch 26 + 26: Label + 60: 52(ptr) AccessChain 49(localIArray) 27 + 61: 6(int) Load 60 + 62: 23(bool) IEqual 61 16 + SelectionMerge 64 None + BranchConditional 62 63 64 + 63: Label + 65: 30(ptr) AccessChain 36(localFArray) 37 + 66: 7(float) Load 65 + 67: 7(float) FAdd 66 29 + Store 65 67 + Branch 64 + 64: Label + Store 68(x) 69 + 71: 6(int) Load 68(x) + 72: 42(ptr) AccessChain 40(coord) 41 + 73: 7(float) Load 72 + 74: 30(ptr) AccessChain 70(localArray) 71 + Store 74 73 + Store 75(i) 16 + Branch 76 + 76: Label + LoopMerge 78 79 None + Branch 80 + 80: Label + 81: 6(int) Load 75(i) + 83: 23(bool) SLessThan 81 82 + BranchConditional 83 77 78 + 77: Label + 85: 6(int) Load 75(i) + 87: 30(ptr) AccessChain 84(a) 85 + Store 87 86 Branch 79 - 81: Label - 94: 6(int) Load 93(condition) - 95: 26(bool) IEqual 94 31 - SelectionMerge 97 None - BranchConditional 95 96 97 - 96: Label - 98: 37 Load 73(localArray) - Store 87(a) 98 - Branch 97 - 97: Label - 102: 9(fvec4) Load 101(color) - 104: 103(ptr) AccessChain 12(locals2) 99 - Store 104 102 - 106: 45(ptr) AccessChain 43(coord) 105 - 107: 7(float) Load 106 - 109: 33(ptr) AccessChain 12(locals2) 99 108 - Store 109 107 - 112: 103(ptr) AccessChain 12(locals2) 99 - 113: 9(fvec4) Load 112 - 114: 33(ptr) AccessChain 39(localFArray) 40 - 115: 7(float) Load 114 - 116: 33(ptr) AccessChain 12(locals2) 30 31 - 117: 7(float) Load 116 - 118: 7(float) FAdd 115 117 - 119: 6(int) Load 71(x) - 120: 33(ptr) AccessChain 73(localArray) 119 - 121: 7(float) Load 120 - 122: 7(float) FAdd 118 121 - 123: 6(int) Load 71(x) - 124: 33(ptr) AccessChain 87(a) 123 - 125: 7(float) Load 124 - 126: 7(float) FAdd 122 125 - 127: 9(fvec4) VectorTimesScalar 113 126 - 132: 129 Load 131(samp2D) - 133: 41(fvec2) Load 43(coord) - 134: 9(fvec4) ImageSampleImplicitLod 132 133 - 135: 9(fvec4) FMul 127 134 - Store 111(gl_FragColor) 135 + 79: Label + 88: 6(int) Load 75(i) + 89: 6(int) IAdd 88 28 + Store 75(i) 89 + Branch 76 + 78: Label + 91: 6(int) Load 90(condition) + 92: 23(bool) IEqual 91 28 + SelectionMerge 94 None + BranchConditional 92 93 94 + 93: Label + 95: 34 Load 70(localArray) + Store 84(a) 95 + Branch 94 + 94: Label + 99: 9(fvec4) Load 98(color) + 101: 100(ptr) AccessChain 12(locals2) 96 + Store 101 99 + 103: 42(ptr) AccessChain 40(coord) 102 + 104: 7(float) Load 103 + 106: 30(ptr) AccessChain 12(locals2) 96 105 + Store 106 104 + 109: 100(ptr) AccessChain 12(locals2) 96 + 110: 9(fvec4) Load 109 + 111: 30(ptr) AccessChain 36(localFArray) 37 + 112: 7(float) Load 111 + 113: 30(ptr) AccessChain 12(locals2) 27 28 + 114: 7(float) Load 113 + 115: 7(float) FAdd 112 114 + 116: 6(int) Load 68(x) + 117: 30(ptr) AccessChain 70(localArray) 116 + 118: 7(float) Load 117 + 119: 7(float) FAdd 115 118 + 120: 6(int) Load 68(x) + 121: 30(ptr) AccessChain 84(a) 120 + 122: 7(float) Load 121 + 123: 7(float) FAdd 119 122 + 124: 9(fvec4) VectorTimesScalar 110 123 + 129: 126 Load 128(samp2D) + 130: 38(fvec2) Load 40(coord) + 131: 9(fvec4) ImageSampleImplicitLod 129 130 + 132: 9(fvec4) FMul 124 131 + Store 108(gl_FragColor) 132 Return FunctionEnd diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index 43df45f5..b84b5bac 100755 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -7,12 +7,12 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 97 +// Id's are bound by 93 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 10 21 37 40 58 67 + EntryPoint Fragment 4 "main" 10 20 34 36 54 63 ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" @@ -25,43 +25,21 @@ Linked fragment stage: MemberName 14(lunarStruct2) 0 "i" MemberName 14(lunarStruct2) 1 "f" MemberName 14(lunarStruct2) 2 "s1_1" - Name 18 "lunarStruct1" - MemberName 18(lunarStruct1) 0 "i" - MemberName 18(lunarStruct1) 1 "f" - Name 19 "lunarStruct3" - MemberName 19(lunarStruct3) 0 "s2_1" - MemberName 19(lunarStruct3) 1 "i" - MemberName 19(lunarStruct3) 2 "f" - MemberName 19(lunarStruct3) 3 "s1_1" - Name 21 "foo3" - Name 31 "scale" - Name 32 "lunarStruct1" - MemberName 32(lunarStruct1) 0 "i" - MemberName 32(lunarStruct1) 1 "f" - Name 33 "lunarStruct2" - MemberName 33(lunarStruct2) 0 "i" - MemberName 33(lunarStruct2) 1 "f" - MemberName 33(lunarStruct2) 2 "s1_1" - Name 37 "foo2" - Name 38 "lunarStruct1" - MemberName 38(lunarStruct1) 0 "i" - MemberName 38(lunarStruct1) 1 "f" - Name 40 "foo" - Name 58 "gl_FragColor" - Name 63 "samp2D" - Name 67 "coord" - Name 73 "constructed" + Name 18 "lunarStruct3" + MemberName 18(lunarStruct3) 0 "s2_1" + MemberName 18(lunarStruct3) 1 "i" + MemberName 18(lunarStruct3) 2 "f" + MemberName 18(lunarStruct3) 3 "s1_1" + Name 20 "foo3" + Name 30 "scale" + Name 34 "foo2" + Name 36 "foo" + Name 54 "gl_FragColor" + Name 59 "samp2D" + Name 63 "coord" + Name 69 "constructed" Decorate 10(Count) Flat - MemberDecorate 19(lunarStruct3) 0 Flat - MemberDecorate 19(lunarStruct3) 1 Flat - MemberDecorate 19(lunarStruct3) 2 Flat - MemberDecorate 19(lunarStruct3) 3 Flat - MemberDecorate 33(lunarStruct2) 0 Flat - MemberDecorate 33(lunarStruct2) 1 Flat - MemberDecorate 33(lunarStruct2) 2 Flat - MemberDecorate 38(lunarStruct1) 0 Flat - MemberDecorate 38(lunarStruct1) 1 Flat - Decorate 63(samp2D) DescriptorSet 0 + Decorate 59(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -74,99 +52,95 @@ Linked fragment stage: 15: TypeInt 32 0 16: 15(int) Constant 3 17: TypeArray 14(lunarStruct2) 16 -18(lunarStruct1): TypeStruct 6(int) 12(float) -19(lunarStruct3): TypeStruct 17 6(int) 12(float) 18(lunarStruct1) - 20: TypePointer Input 19(lunarStruct3) - 21(foo3): 20(ptr) Variable Input - 22: 6(int) Constant 0 - 23: 6(int) Constant 1 - 26: TypeBool - 30: TypePointer Function 12(float) -32(lunarStruct1): TypeStruct 6(int) 12(float) -33(lunarStruct2): TypeStruct 6(int) 12(float) 32(lunarStruct1) - 34: 15(int) Constant 5 - 35: TypeArray 33(lunarStruct2) 34 - 36: TypePointer Input 35 - 37(foo2): 36(ptr) Variable Input -38(lunarStruct1): TypeStruct 6(int) 12(float) - 39: TypePointer Input 38(lunarStruct1) - 40(foo): 39(ptr) Variable Input - 45: 6(int) Constant 2 - 50: TypePointer Input 12(float) - 56: TypeVector 12(float) 4 - 57: TypePointer Output 56(fvec4) -58(gl_FragColor): 57(ptr) Variable Output - 60: TypeImage 12(float) 2D sampled format:Unknown - 61: TypeSampledImage 60 - 62: TypePointer UniformConstant 61 - 63(samp2D): 62(ptr) Variable UniformConstant - 65: TypeVector 12(float) 2 - 66: TypePointer Input 65(fvec2) - 67(coord): 66(ptr) Variable Input - 71: TypeArray 65(fvec2) 16 - 72: TypePointer Function 71 - 77: 12(float) Constant 1065353216 - 78: 12(float) Constant 1073741824 - 79: 65(fvec2) ConstantComposite 77 78 - 83: TypePointer Function 65(fvec2) +18(lunarStruct3): TypeStruct 17 6(int) 12(float) 13(lunarStruct1) + 19: TypePointer Input 18(lunarStruct3) + 20(foo3): 19(ptr) Variable Input + 21: 6(int) Constant 0 + 22: 6(int) Constant 1 + 25: TypeBool + 29: TypePointer Function 12(float) + 31: 15(int) Constant 5 + 32: TypeArray 14(lunarStruct2) 31 + 33: TypePointer Input 32 + 34(foo2): 33(ptr) Variable Input + 35: TypePointer Input 13(lunarStruct1) + 36(foo): 35(ptr) Variable Input + 41: 6(int) Constant 2 + 46: TypePointer Input 12(float) + 52: TypeVector 12(float) 4 + 53: TypePointer Output 52(fvec4) +54(gl_FragColor): 53(ptr) Variable Output + 56: TypeImage 12(float) 2D sampled format:Unknown + 57: TypeSampledImage 56 + 58: TypePointer UniformConstant 57 + 59(samp2D): 58(ptr) Variable UniformConstant + 61: TypeVector 12(float) 2 + 62: TypePointer Input 61(fvec2) + 63(coord): 62(ptr) Variable Input + 67: TypeArray 61(fvec2) 16 + 68: TypePointer Function 67 + 73: 12(float) Constant 1065353216 + 74: 12(float) Constant 1073741824 + 75: 61(fvec2) ConstantComposite 73 74 + 79: TypePointer Function 61(fvec2) 4(main): 2 Function None 3 5: Label 8(iLocal): 7(ptr) Variable Function - 31(scale): 30(ptr) Variable Function - 73(constructed): 72(ptr) Variable Function + 30(scale): 29(ptr) Variable Function + 69(constructed): 68(ptr) Variable Function 11: 6(int) Load 10(Count) Store 8(iLocal) 11 - 24: 9(ptr) AccessChain 21(foo3) 22 23 22 - 25: 6(int) Load 24 - 27: 26(bool) SGreaterThan 25 22 - SelectionMerge 29 None - BranchConditional 27 28 53 - 28: Label - 41: 9(ptr) AccessChain 40(foo) 22 - 42: 6(int) Load 41 - 43: 9(ptr) AccessChain 21(foo3) 22 42 22 - 44: 6(int) Load 43 - 46: 6(int) IAdd 44 45 - 47: 6(int) Load 8(iLocal) - 48: 6(int) IAdd 47 23 - Store 8(iLocal) 48 - 49: 6(int) IAdd 46 48 - 51: 50(ptr) AccessChain 37(foo2) 49 45 23 - 52: 12(float) Load 51 - Store 31(scale) 52 - Branch 29 - 53: Label - 54: 50(ptr) AccessChain 21(foo3) 22 22 45 23 - 55: 12(float) Load 54 - Store 31(scale) 55 - Branch 29 - 29: Label - 59: 12(float) Load 31(scale) - 64: 61 Load 63(samp2D) - 68: 65(fvec2) Load 67(coord) - 69: 56(fvec4) ImageSampleImplicitLod 64 68 - 70: 56(fvec4) VectorTimesScalar 69 59 - Store 58(gl_FragColor) 70 - 74: 65(fvec2) Load 67(coord) - 75: 12(float) Load 31(scale) - 76: 65(fvec2) CompositeConstruct 75 75 - 80: 71 CompositeConstruct 74 76 79 - Store 73(constructed) 80 - 81: 9(ptr) AccessChain 40(foo) 22 - 82: 6(int) Load 81 - 84: 83(ptr) AccessChain 73(constructed) 82 - 85: 65(fvec2) Load 84 - 86: 9(ptr) AccessChain 40(foo) 22 - 87: 6(int) Load 86 - 88: 83(ptr) AccessChain 73(constructed) 87 - 89: 65(fvec2) Load 88 - 90: 12(float) CompositeExtract 85 0 - 91: 12(float) CompositeExtract 85 1 - 92: 12(float) CompositeExtract 89 0 - 93: 12(float) CompositeExtract 89 1 - 94: 56(fvec4) CompositeConstruct 90 91 92 93 - 95: 56(fvec4) Load 58(gl_FragColor) - 96: 56(fvec4) FAdd 95 94 - Store 58(gl_FragColor) 96 + 23: 9(ptr) AccessChain 20(foo3) 21 22 21 + 24: 6(int) Load 23 + 26: 25(bool) SGreaterThan 24 21 + SelectionMerge 28 None + BranchConditional 26 27 49 + 27: Label + 37: 9(ptr) AccessChain 36(foo) 21 + 38: 6(int) Load 37 + 39: 9(ptr) AccessChain 20(foo3) 21 38 21 + 40: 6(int) Load 39 + 42: 6(int) IAdd 40 41 + 43: 6(int) Load 8(iLocal) + 44: 6(int) IAdd 43 22 + Store 8(iLocal) 44 + 45: 6(int) IAdd 42 44 + 47: 46(ptr) AccessChain 34(foo2) 45 41 22 + 48: 12(float) Load 47 + Store 30(scale) 48 + Branch 28 + 49: Label + 50: 46(ptr) AccessChain 20(foo3) 21 21 41 22 + 51: 12(float) Load 50 + Store 30(scale) 51 + Branch 28 + 28: Label + 55: 12(float) Load 30(scale) + 60: 57 Load 59(samp2D) + 64: 61(fvec2) Load 63(coord) + 65: 52(fvec4) ImageSampleImplicitLod 60 64 + 66: 52(fvec4) VectorTimesScalar 65 55 + Store 54(gl_FragColor) 66 + 70: 61(fvec2) Load 63(coord) + 71: 12(float) Load 30(scale) + 72: 61(fvec2) CompositeConstruct 71 71 + 76: 67 CompositeConstruct 70 72 75 + Store 69(constructed) 76 + 77: 9(ptr) AccessChain 36(foo) 21 + 78: 6(int) Load 77 + 80: 79(ptr) AccessChain 69(constructed) 78 + 81: 61(fvec2) Load 80 + 82: 9(ptr) AccessChain 36(foo) 21 + 83: 6(int) Load 82 + 84: 79(ptr) AccessChain 69(constructed) 83 + 85: 61(fvec2) Load 84 + 86: 12(float) CompositeExtract 81 0 + 87: 12(float) CompositeExtract 81 1 + 88: 12(float) CompositeExtract 85 0 + 89: 12(float) CompositeExtract 85 1 + 90: 52(fvec4) CompositeConstruct 86 87 88 89 + 91: 52(fvec4) Load 54(gl_FragColor) + 92: 52(fvec4) FAdd 91 90 + Store 54(gl_FragColor) 92 Return FunctionEnd