From 7208a974aa4912a2323af897ad299facb23ba79a Mon Sep 17 00:00:00 2001 From: Maciej Jesionowski Date: Wed, 12 Oct 2016 15:40:37 +0200 Subject: [PATCH] SPV: Use SampledImage with OpImageQueryLod Khronos SPIR-V issue #74 --- SPIRV/GlslangToSpv.cpp | 5 +- Test/baseResults/hlsl.calculatelod.dx10.frag.out | 349 +++++++------- Test/baseResults/spv.queryL.frag.out | 551 +++++++++++------------ 3 files changed, 442 insertions(+), 463 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 9c8b8b9..245715f 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2745,9 +2745,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // Check for queries if (cracked.query) { - // a sampled image needs to have the image extracted first - if (builder.isSampledImage(params.sampler)) + // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first + if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler)) params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index 9d061d2..ff18441 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -345,7 +345,7 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 150 +// Id's are bound by 141 Capability Shader Capability Sampled1D @@ -353,51 +353,51 @@ gl_FragCoord origin is upper left Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 141 145 + EntryPoint Fragment 4 "main" 132 136 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "txval10" Name 11 "g_tTex1df4a" Name 15 "g_sSamp" - Name 26 "txval11" - Name 29 "g_tTex1di4a" - Name 38 "txval12" - Name 42 "g_tTex1du4a" - Name 51 "txval20" - Name 54 "g_tTex2df4a" - Name 63 "txval21" - Name 66 "g_tTex2di4a" - Name 76 "txval22" - Name 79 "g_tTex2du4a" - Name 90 "txval40" - Name 93 "g_tTexcdf4a" - Name 103 "txval41" - Name 106 "g_tTexcdi4a" - Name 115 "txval42" - Name 118 "g_tTexcdu4a" - Name 131 "PS_OUTPUT" - MemberName 131(PS_OUTPUT) 0 "Color" - MemberName 131(PS_OUTPUT) 1 "Depth" - Name 133 "psout" - Name 141 "Color" - Name 145 "Depth" - Name 149 "g_tTex1df4" + Name 25 "txval11" + Name 28 "g_tTex1di4a" + Name 36 "txval12" + Name 40 "g_tTex1du4a" + Name 48 "txval20" + Name 51 "g_tTex2df4a" + Name 59 "txval21" + Name 62 "g_tTex2di4a" + Name 71 "txval22" + Name 74 "g_tTex2du4a" + Name 84 "txval40" + Name 87 "g_tTexcdf4a" + Name 96 "txval41" + Name 99 "g_tTexcdi4a" + Name 107 "txval42" + Name 110 "g_tTexcdu4a" + Name 122 "PS_OUTPUT" + MemberName 122(PS_OUTPUT) 0 "Color" + MemberName 122(PS_OUTPUT) 1 "Depth" + Name 124 "psout" + Name 132 "Color" + Name 136 "Depth" + Name 140 "g_tTex1df4" Decorate 11(g_tTex1df4a) DescriptorSet 0 Decorate 11(g_tTex1df4a) Binding 1 Decorate 15(g_sSamp) DescriptorSet 0 Decorate 15(g_sSamp) Binding 0 - Decorate 29(g_tTex1di4a) DescriptorSet 0 - Decorate 42(g_tTex1du4a) DescriptorSet 0 - Decorate 54(g_tTex2df4a) DescriptorSet 0 - Decorate 66(g_tTex2di4a) DescriptorSet 0 - Decorate 79(g_tTex2du4a) DescriptorSet 0 - Decorate 93(g_tTexcdf4a) DescriptorSet 0 - Decorate 106(g_tTexcdi4a) DescriptorSet 0 - Decorate 118(g_tTexcdu4a) DescriptorSet 0 - Decorate 141(Color) Location 0 - Decorate 145(Depth) BuiltIn FragDepth - Decorate 149(g_tTex1df4) DescriptorSet 0 - Decorate 149(g_tTex1df4) Binding 0 + Decorate 28(g_tTex1di4a) DescriptorSet 0 + Decorate 40(g_tTex1du4a) DescriptorSet 0 + Decorate 51(g_tTex2df4a) DescriptorSet 0 + Decorate 62(g_tTex2di4a) DescriptorSet 0 + Decorate 74(g_tTex2du4a) DescriptorSet 0 + Decorate 87(g_tTexcdf4a) DescriptorSet 0 + Decorate 99(g_tTexcdi4a) DescriptorSet 0 + Decorate 110(g_tTexcdu4a) DescriptorSet 0 + Decorate 132(Color) Location 0 + Decorate 136(Depth) BuiltIn FragDepth + Decorate 140(g_tTex1df4) DescriptorSet 0 + Decorate 140(g_tTex1df4) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -410,153 +410,144 @@ gl_FragCoord origin is upper left 15(g_sSamp): 14(ptr) Variable UniformConstant 17: TypeSampledImage 9 19: 6(float) Constant 1036831949 - 21: TypeVector 6(float) 2 - 23: TypeInt 32 1 - 24: 23(int) Constant 0 - 27: TypeImage 23(int) 1D array sampled format:Unknown - 28: TypePointer UniformConstant 27 - 29(g_tTex1di4a): 28(ptr) Variable UniformConstant - 32: TypeSampledImage 27 - 34: 6(float) Constant 1045220557 - 39: TypeInt 32 0 - 40: TypeImage 39(int) 1D array sampled format:Unknown - 41: TypePointer UniformConstant 40 - 42(g_tTex1du4a): 41(ptr) Variable UniformConstant - 45: TypeSampledImage 40 - 47: 6(float) Constant 1050253722 - 52: TypeImage 6(float) 2D array sampled format:Unknown - 53: TypePointer UniformConstant 52 - 54(g_tTex2df4a): 53(ptr) Variable UniformConstant - 57: TypeSampledImage 52 - 59: 21(fvec2) ConstantComposite 19 34 - 64: TypeImage 23(int) 2D array sampled format:Unknown - 65: TypePointer UniformConstant 64 - 66(g_tTex2di4a): 65(ptr) Variable UniformConstant - 69: TypeSampledImage 64 - 71: 6(float) Constant 1053609165 - 72: 21(fvec2) ConstantComposite 47 71 - 77: TypeImage 39(int) 2D array sampled format:Unknown - 78: TypePointer UniformConstant 77 - 79(g_tTex2du4a): 78(ptr) Variable UniformConstant - 82: TypeSampledImage 77 - 84: 6(float) Constant 1056964608 - 85: 6(float) Constant 1058642330 - 86: 21(fvec2) ConstantComposite 84 85 - 91: TypeImage 6(float) Cube array sampled format:Unknown - 92: TypePointer UniformConstant 91 - 93(g_tTexcdf4a): 92(ptr) Variable UniformConstant - 96: TypeSampledImage 91 - 98: TypeVector 6(float) 3 - 99: 98(fvec3) ConstantComposite 19 34 47 - 104: TypeImage 23(int) Cube array sampled format:Unknown - 105: TypePointer UniformConstant 104 -106(g_tTexcdi4a): 105(ptr) Variable UniformConstant - 109: TypeSampledImage 104 - 111: 98(fvec3) ConstantComposite 71 84 85 - 116: TypeImage 39(int) Cube array sampled format:Unknown - 117: TypePointer UniformConstant 116 -118(g_tTexcdu4a): 117(ptr) Variable UniformConstant - 121: TypeSampledImage 116 - 123: 6(float) Constant 1060320051 - 124: 6(float) Constant 1061997773 - 125: 6(float) Constant 1063675494 - 126: 98(fvec3) ConstantComposite 123 124 125 - 130: TypeVector 6(float) 4 - 131(PS_OUTPUT): TypeStruct 130(fvec4) 6(float) - 132: TypePointer Function 131(PS_OUTPUT) - 134: 6(float) Constant 1065353216 - 135: 130(fvec4) ConstantComposite 134 134 134 134 - 136: TypePointer Function 130(fvec4) - 138: 23(int) Constant 1 - 140: TypePointer Output 130(fvec4) - 141(Color): 140(ptr) Variable Output - 144: TypePointer Output 6(float) - 145(Depth): 144(ptr) Variable Output - 149(g_tTex1df4): 10(ptr) Variable UniformConstant + 20: TypeVector 6(float) 2 + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 26: TypeImage 22(int) 1D array sampled format:Unknown + 27: TypePointer UniformConstant 26 + 28(g_tTex1di4a): 27(ptr) Variable UniformConstant + 31: TypeSampledImage 26 + 33: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeImage 37(int) 1D array sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4a): 39(ptr) Variable UniformConstant + 43: TypeSampledImage 38 + 45: 6(float) Constant 1050253722 + 49: TypeImage 6(float) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2df4a): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 56: 20(fvec2) ConstantComposite 19 33 + 60: TypeImage 22(int) 2D array sampled format:Unknown + 61: TypePointer UniformConstant 60 + 62(g_tTex2di4a): 61(ptr) Variable UniformConstant + 65: TypeSampledImage 60 + 67: 6(float) Constant 1053609165 + 68: 20(fvec2) ConstantComposite 45 67 + 72: TypeImage 37(int) 2D array sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4a): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1056964608 + 80: 6(float) Constant 1058642330 + 81: 20(fvec2) ConstantComposite 79 80 + 85: TypeImage 6(float) Cube array sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTexcdf4a): 86(ptr) Variable UniformConstant + 90: TypeSampledImage 85 + 92: TypeVector 6(float) 3 + 93: 92(fvec3) ConstantComposite 19 33 45 + 97: TypeImage 22(int) Cube array sampled format:Unknown + 98: TypePointer UniformConstant 97 + 99(g_tTexcdi4a): 98(ptr) Variable UniformConstant + 102: TypeSampledImage 97 + 104: 92(fvec3) ConstantComposite 67 79 80 + 108: TypeImage 37(int) Cube array sampled format:Unknown + 109: TypePointer UniformConstant 108 +110(g_tTexcdu4a): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 6(float) Constant 1060320051 + 116: 6(float) Constant 1061997773 + 117: 6(float) Constant 1063675494 + 118: 92(fvec3) ConstantComposite 115 116 117 + 121: TypeVector 6(float) 4 + 122(PS_OUTPUT): TypeStruct 121(fvec4) 6(float) + 123: TypePointer Function 122(PS_OUTPUT) + 125: 6(float) Constant 1065353216 + 126: 121(fvec4) ConstantComposite 125 125 125 125 + 127: TypePointer Function 121(fvec4) + 129: 22(int) Constant 1 + 131: TypePointer Output 121(fvec4) + 132(Color): 131(ptr) Variable Output + 135: TypePointer Output 6(float) + 136(Depth): 135(ptr) Variable Output + 140(g_tTex1df4): 10(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(txval10): 7(ptr) Variable Function - 26(txval11): 7(ptr) Variable Function - 38(txval12): 7(ptr) Variable Function - 51(txval20): 7(ptr) Variable Function - 63(txval21): 7(ptr) Variable Function - 76(txval22): 7(ptr) Variable Function - 90(txval40): 7(ptr) Variable Function - 103(txval41): 7(ptr) Variable Function - 115(txval42): 7(ptr) Variable Function - 133(psout): 132(ptr) Variable Function + 25(txval11): 7(ptr) Variable Function + 36(txval12): 7(ptr) Variable Function + 48(txval20): 7(ptr) Variable Function + 59(txval21): 7(ptr) Variable Function + 71(txval22): 7(ptr) Variable Function + 84(txval40): 7(ptr) Variable Function + 96(txval41): 7(ptr) Variable Function + 107(txval42): 7(ptr) Variable Function + 124(psout): 123(ptr) Variable Function 12: 9 Load 11(g_tTex1df4a) 16: 13 Load 15(g_sSamp) 18: 17 SampledImage 12 16 - 20: 9 Image 18 - 22: 21(fvec2) ImageQueryLod 20 19 - 25: 6(float) CompositeExtract 22 0 - Store 8(txval10) 25 - 30: 27 Load 29(g_tTex1di4a) - 31: 13 Load 15(g_sSamp) - 33: 32 SampledImage 30 31 - 35: 27 Image 33 - 36: 21(fvec2) ImageQueryLod 35 34 - 37: 6(float) CompositeExtract 36 0 - Store 26(txval11) 37 - 43: 40 Load 42(g_tTex1du4a) - 44: 13 Load 15(g_sSamp) - 46: 45 SampledImage 43 44 - 48: 40 Image 46 - 49: 21(fvec2) ImageQueryLod 48 47 - 50: 6(float) CompositeExtract 49 0 - Store 38(txval12) 50 - 55: 52 Load 54(g_tTex2df4a) - 56: 13 Load 15(g_sSamp) - 58: 57 SampledImage 55 56 - 60: 52 Image 58 - 61: 21(fvec2) ImageQueryLod 60 59 - 62: 6(float) CompositeExtract 61 0 - Store 51(txval20) 62 - 67: 64 Load 66(g_tTex2di4a) - 68: 13 Load 15(g_sSamp) - 70: 69 SampledImage 67 68 - 73: 64 Image 70 - 74: 21(fvec2) ImageQueryLod 73 72 - 75: 6(float) CompositeExtract 74 0 - Store 63(txval21) 75 - 80: 77 Load 79(g_tTex2du4a) - 81: 13 Load 15(g_sSamp) - 83: 82 SampledImage 80 81 - 87: 77 Image 83 - 88: 21(fvec2) ImageQueryLod 87 86 - 89: 6(float) CompositeExtract 88 0 - Store 76(txval22) 89 - 94: 91 Load 93(g_tTexcdf4a) - 95: 13 Load 15(g_sSamp) - 97: 96 SampledImage 94 95 - 100: 91 Image 97 - 101: 21(fvec2) ImageQueryLod 100 99 - 102: 6(float) CompositeExtract 101 0 - Store 90(txval40) 102 - 107: 104 Load 106(g_tTexcdi4a) - 108: 13 Load 15(g_sSamp) - 110: 109 SampledImage 107 108 - 112: 104 Image 110 - 113: 21(fvec2) ImageQueryLod 112 111 - 114: 6(float) CompositeExtract 113 0 - Store 103(txval41) 114 - 119: 116 Load 118(g_tTexcdu4a) - 120: 13 Load 15(g_sSamp) - 122: 121 SampledImage 119 120 - 127: 116 Image 122 - 128: 21(fvec2) ImageQueryLod 127 126 - 129: 6(float) CompositeExtract 128 0 - Store 115(txval42) 129 - 137: 136(ptr) AccessChain 133(psout) 24 - Store 137 135 - 139: 7(ptr) AccessChain 133(psout) 138 - Store 139 134 - 142: 136(ptr) AccessChain 133(psout) 24 - 143: 130(fvec4) Load 142 - Store 141(Color) 143 - 146: 7(ptr) AccessChain 133(psout) 138 - 147: 6(float) Load 146 - Store 145(Depth) 147 + 21: 20(fvec2) ImageQueryLod 18 19 + 24: 6(float) CompositeExtract 21 0 + Store 8(txval10) 24 + 29: 26 Load 28(g_tTex1di4a) + 30: 13 Load 15(g_sSamp) + 32: 31 SampledImage 29 30 + 34: 20(fvec2) ImageQueryLod 32 33 + 35: 6(float) CompositeExtract 34 0 + Store 25(txval11) 35 + 41: 38 Load 40(g_tTex1du4a) + 42: 13 Load 15(g_sSamp) + 44: 43 SampledImage 41 42 + 46: 20(fvec2) ImageQueryLod 44 45 + 47: 6(float) CompositeExtract 46 0 + Store 36(txval12) 47 + 52: 49 Load 51(g_tTex2df4a) + 53: 13 Load 15(g_sSamp) + 55: 54 SampledImage 52 53 + 57: 20(fvec2) ImageQueryLod 55 56 + 58: 6(float) CompositeExtract 57 0 + Store 48(txval20) 58 + 63: 60 Load 62(g_tTex2di4a) + 64: 13 Load 15(g_sSamp) + 66: 65 SampledImage 63 64 + 69: 20(fvec2) ImageQueryLod 66 68 + 70: 6(float) CompositeExtract 69 0 + Store 59(txval21) 70 + 75: 72 Load 74(g_tTex2du4a) + 76: 13 Load 15(g_sSamp) + 78: 77 SampledImage 75 76 + 82: 20(fvec2) ImageQueryLod 78 81 + 83: 6(float) CompositeExtract 82 0 + Store 71(txval22) 83 + 88: 85 Load 87(g_tTexcdf4a) + 89: 13 Load 15(g_sSamp) + 91: 90 SampledImage 88 89 + 94: 20(fvec2) ImageQueryLod 91 93 + 95: 6(float) CompositeExtract 94 0 + Store 84(txval40) 95 + 100: 97 Load 99(g_tTexcdi4a) + 101: 13 Load 15(g_sSamp) + 103: 102 SampledImage 100 101 + 105: 20(fvec2) ImageQueryLod 103 104 + 106: 6(float) CompositeExtract 105 0 + Store 96(txval41) 106 + 111: 108 Load 110(g_tTexcdu4a) + 112: 13 Load 15(g_sSamp) + 114: 113 SampledImage 111 112 + 119: 20(fvec2) ImageQueryLod 114 118 + 120: 6(float) CompositeExtract 119 0 + Store 107(txval42) 120 + 128: 127(ptr) AccessChain 124(psout) 23 + Store 128 126 + 130: 7(ptr) AccessChain 124(psout) 129 + Store 130 125 + 133: 127(ptr) AccessChain 124(psout) 23 + 134: 121(fvec4) Load 133 + Store 132(Color) 134 + 137: 7(ptr) AccessChain 124(psout) 129 + 138: 6(float) Load 137 + Store 136(Depth) 138 Return FunctionEnd diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 6d2b2b9..2236c66 100755 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 237 +// Id's are bound by 224 Capability Shader Capability SampledRect @@ -24,48 +24,48 @@ Linked fragment stage: Name 9 "lod" Name 13 "samp1D" Name 16 "pf" - Name 24 "isamp2D" - Name 26 "pf2" - Name 36 "usamp3D" - Name 40 "pf3" - Name 49 "sampCube" - Name 59 "isamp1DA" - Name 69 "usamp2DA" - Name 79 "isampCubeA" - Name 89 "samp1Ds" - Name 99 "samp2Ds" - Name 109 "sampCubes" - Name 119 "samp1DAs" - Name 129 "samp2DAs" - Name 139 "sampCubeAs" - Name 147 "levels" - Name 154 "usamp2D" - Name 163 "isamp3D" - Name 172 "isampCube" - Name 186 "samp2DA" - Name 195 "usampCubeA" - Name 232 "sampBuf" - Name 236 "sampRect" + Name 23 "isamp2D" + Name 25 "pf2" + Name 34 "usamp3D" + Name 38 "pf3" + Name 46 "sampCube" + Name 55 "isamp1DA" + Name 64 "usamp2DA" + Name 73 "isampCubeA" + Name 82 "samp1Ds" + Name 91 "samp2Ds" + Name 100 "sampCubes" + Name 109 "samp1DAs" + Name 118 "samp2DAs" + Name 127 "sampCubeAs" + Name 134 "levels" + Name 141 "usamp2D" + Name 150 "isamp3D" + Name 159 "isampCube" + Name 173 "samp2DA" + Name 182 "usampCubeA" + Name 219 "sampBuf" + Name 223 "sampRect" Decorate 13(samp1D) DescriptorSet 0 - Decorate 24(isamp2D) DescriptorSet 0 - Decorate 36(usamp3D) DescriptorSet 0 - Decorate 49(sampCube) DescriptorSet 0 - Decorate 59(isamp1DA) DescriptorSet 0 - Decorate 69(usamp2DA) DescriptorSet 0 - Decorate 79(isampCubeA) DescriptorSet 0 - Decorate 89(samp1Ds) DescriptorSet 0 - Decorate 99(samp2Ds) DescriptorSet 0 - Decorate 109(sampCubes) DescriptorSet 0 - Decorate 119(samp1DAs) DescriptorSet 0 - Decorate 129(samp2DAs) DescriptorSet 0 - Decorate 139(sampCubeAs) DescriptorSet 0 - Decorate 154(usamp2D) DescriptorSet 0 - Decorate 163(isamp3D) DescriptorSet 0 - Decorate 172(isampCube) DescriptorSet 0 - Decorate 186(samp2DA) DescriptorSet 0 - Decorate 195(usampCubeA) DescriptorSet 0 - Decorate 232(sampBuf) DescriptorSet 0 - Decorate 236(sampRect) DescriptorSet 0 + Decorate 23(isamp2D) DescriptorSet 0 + Decorate 34(usamp3D) DescriptorSet 0 + Decorate 46(sampCube) DescriptorSet 0 + Decorate 55(isamp1DA) DescriptorSet 0 + Decorate 64(usamp2DA) DescriptorSet 0 + Decorate 73(isampCubeA) DescriptorSet 0 + Decorate 82(samp1Ds) DescriptorSet 0 + Decorate 91(samp2Ds) DescriptorSet 0 + Decorate 100(sampCubes) DescriptorSet 0 + Decorate 109(samp1DAs) DescriptorSet 0 + Decorate 118(samp2DAs) DescriptorSet 0 + Decorate 127(sampCubeAs) DescriptorSet 0 + Decorate 141(usamp2D) DescriptorSet 0 + Decorate 150(isamp3D) DescriptorSet 0 + Decorate 159(isampCube) DescriptorSet 0 + Decorate 173(samp2DA) DescriptorSet 0 + Decorate 182(usampCubeA) DescriptorSet 0 + Decorate 219(sampBuf) DescriptorSet 0 + Decorate 223(sampRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -76,256 +76,243 @@ Linked fragment stage: 12: TypePointer UniformConstant 11 13(samp1D): 12(ptr) Variable UniformConstant 15: TypePointer Function 6(float) - 20: TypeInt 32 1 - 21: TypeImage 20(int) 2D sampled format:Unknown - 22: TypeSampledImage 21 - 23: TypePointer UniformConstant 22 - 24(isamp2D): 23(ptr) Variable UniformConstant - 32: TypeInt 32 0 - 33: TypeImage 32(int) 3D sampled format:Unknown - 34: TypeSampledImage 33 - 35: TypePointer UniformConstant 34 - 36(usamp3D): 35(ptr) Variable UniformConstant - 38: TypeVector 6(float) 3 - 39: TypePointer Function 38(fvec3) - 46: TypeImage 6(float) Cube sampled format:Unknown - 47: TypeSampledImage 46 - 48: TypePointer UniformConstant 47 - 49(sampCube): 48(ptr) Variable UniformConstant - 56: TypeImage 20(int) 1D array sampled format:Unknown - 57: TypeSampledImage 56 - 58: TypePointer UniformConstant 57 - 59(isamp1DA): 58(ptr) Variable UniformConstant - 66: TypeImage 32(int) 2D array sampled format:Unknown - 67: TypeSampledImage 66 - 68: TypePointer UniformConstant 67 - 69(usamp2DA): 68(ptr) Variable UniformConstant - 76: TypeImage 20(int) Cube array sampled format:Unknown - 77: TypeSampledImage 76 - 78: TypePointer UniformConstant 77 - 79(isampCubeA): 78(ptr) Variable UniformConstant - 86: TypeImage 6(float) 1D depth sampled format:Unknown - 87: TypeSampledImage 86 - 88: TypePointer UniformConstant 87 - 89(samp1Ds): 88(ptr) Variable UniformConstant - 96: TypeImage 6(float) 2D depth sampled format:Unknown - 97: TypeSampledImage 96 - 98: TypePointer UniformConstant 97 - 99(samp2Ds): 98(ptr) Variable UniformConstant - 106: TypeImage 6(float) Cube depth sampled format:Unknown + 19: TypeInt 32 1 + 20: TypeImage 19(int) 2D sampled format:Unknown + 21: TypeSampledImage 20 + 22: TypePointer UniformConstant 21 + 23(isamp2D): 22(ptr) Variable UniformConstant + 30: TypeInt 32 0 + 31: TypeImage 30(int) 3D sampled format:Unknown + 32: TypeSampledImage 31 + 33: TypePointer UniformConstant 32 + 34(usamp3D): 33(ptr) Variable UniformConstant + 36: TypeVector 6(float) 3 + 37: TypePointer Function 36(fvec3) + 43: TypeImage 6(float) Cube sampled format:Unknown + 44: TypeSampledImage 43 + 45: TypePointer UniformConstant 44 + 46(sampCube): 45(ptr) Variable UniformConstant + 52: TypeImage 19(int) 1D array sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 + 55(isamp1DA): 54(ptr) Variable UniformConstant + 61: TypeImage 30(int) 2D array sampled format:Unknown + 62: TypeSampledImage 61 + 63: TypePointer UniformConstant 62 + 64(usamp2DA): 63(ptr) Variable UniformConstant + 70: TypeImage 19(int) Cube array sampled format:Unknown + 71: TypeSampledImage 70 + 72: TypePointer UniformConstant 71 + 73(isampCubeA): 72(ptr) Variable UniformConstant + 79: TypeImage 6(float) 1D depth sampled format:Unknown + 80: TypeSampledImage 79 + 81: TypePointer UniformConstant 80 + 82(samp1Ds): 81(ptr) Variable UniformConstant + 88: TypeImage 6(float) 2D depth sampled format:Unknown + 89: TypeSampledImage 88 + 90: TypePointer UniformConstant 89 + 91(samp2Ds): 90(ptr) Variable UniformConstant + 97: TypeImage 6(float) Cube depth sampled format:Unknown + 98: TypeSampledImage 97 + 99: TypePointer UniformConstant 98 + 100(sampCubes): 99(ptr) Variable UniformConstant + 106: TypeImage 6(float) 1D depth array sampled format:Unknown 107: TypeSampledImage 106 108: TypePointer UniformConstant 107 - 109(sampCubes): 108(ptr) Variable UniformConstant - 116: TypeImage 6(float) 1D depth array sampled format:Unknown - 117: TypeSampledImage 116 - 118: TypePointer UniformConstant 117 - 119(samp1DAs): 118(ptr) Variable UniformConstant - 126: TypeImage 6(float) 2D depth array sampled format:Unknown - 127: TypeSampledImage 126 - 128: TypePointer UniformConstant 127 - 129(samp2DAs): 128(ptr) Variable UniformConstant - 136: TypeImage 6(float) Cube depth array sampled format:Unknown - 137: TypeSampledImage 136 - 138: TypePointer UniformConstant 137 - 139(sampCubeAs): 138(ptr) Variable UniformConstant - 146: TypePointer Function 20(int) - 151: TypeImage 32(int) 2D sampled format:Unknown - 152: TypeSampledImage 151 - 153: TypePointer UniformConstant 152 - 154(usamp2D): 153(ptr) Variable UniformConstant - 160: TypeImage 20(int) 3D sampled format:Unknown - 161: TypeSampledImage 160 - 162: TypePointer UniformConstant 161 - 163(isamp3D): 162(ptr) Variable UniformConstant - 169: TypeImage 20(int) Cube sampled format:Unknown - 170: TypeSampledImage 169 - 171: TypePointer UniformConstant 170 - 172(isampCube): 171(ptr) Variable UniformConstant - 183: TypeImage 6(float) 2D array sampled format:Unknown - 184: TypeSampledImage 183 - 185: TypePointer UniformConstant 184 - 186(samp2DA): 185(ptr) Variable UniformConstant - 192: TypeImage 32(int) Cube array sampled format:Unknown - 193: TypeSampledImage 192 - 194: TypePointer UniformConstant 193 - 195(usampCubeA): 194(ptr) Variable UniformConstant - 229: TypeImage 6(float) Buffer sampled format:Unknown - 230: TypeSampledImage 229 - 231: TypePointer UniformConstant 230 - 232(sampBuf): 231(ptr) Variable UniformConstant - 233: TypeImage 6(float) Rect sampled format:Unknown - 234: TypeSampledImage 233 - 235: TypePointer UniformConstant 234 - 236(sampRect): 235(ptr) Variable UniformConstant + 109(samp1DAs): 108(ptr) Variable UniformConstant + 115: TypeImage 6(float) 2D depth array sampled format:Unknown + 116: TypeSampledImage 115 + 117: TypePointer UniformConstant 116 + 118(samp2DAs): 117(ptr) Variable UniformConstant + 124: TypeImage 6(float) Cube depth array sampled format:Unknown + 125: TypeSampledImage 124 + 126: TypePointer UniformConstant 125 + 127(sampCubeAs): 126(ptr) Variable UniformConstant + 133: TypePointer Function 19(int) + 138: TypeImage 30(int) 2D sampled format:Unknown + 139: TypeSampledImage 138 + 140: TypePointer UniformConstant 139 + 141(usamp2D): 140(ptr) Variable UniformConstant + 147: TypeImage 19(int) 3D sampled format:Unknown + 148: TypeSampledImage 147 + 149: TypePointer UniformConstant 148 + 150(isamp3D): 149(ptr) Variable UniformConstant + 156: TypeImage 19(int) Cube sampled format:Unknown + 157: TypeSampledImage 156 + 158: TypePointer UniformConstant 157 + 159(isampCube): 158(ptr) Variable UniformConstant + 170: TypeImage 6(float) 2D array sampled format:Unknown + 171: TypeSampledImage 170 + 172: TypePointer UniformConstant 171 + 173(samp2DA): 172(ptr) Variable UniformConstant + 179: TypeImage 30(int) Cube array sampled format:Unknown + 180: TypeSampledImage 179 + 181: TypePointer UniformConstant 180 + 182(usampCubeA): 181(ptr) Variable UniformConstant + 216: TypeImage 6(float) Buffer sampled format:Unknown + 217: TypeSampledImage 216 + 218: TypePointer UniformConstant 217 + 219(sampBuf): 218(ptr) Variable UniformConstant + 220: TypeImage 6(float) Rect sampled format:Unknown + 221: TypeSampledImage 220 + 222: TypePointer UniformConstant 221 + 223(sampRect): 222(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(lod): 8(ptr) Variable Function 16(pf): 15(ptr) Variable Function - 26(pf2): 8(ptr) Variable Function - 40(pf3): 39(ptr) Variable Function - 147(levels): 146(ptr) Variable Function + 25(pf2): 8(ptr) Variable Function + 38(pf3): 37(ptr) Variable Function + 134(levels): 133(ptr) Variable Function 14: 11 Load 13(samp1D) 17: 6(float) Load 16(pf) - 18: 10 Image 14 - 19: 7(fvec2) ImageQueryLod 18 17 - Store 9(lod) 19 - 25: 22 Load 24(isamp2D) - 27: 7(fvec2) Load 26(pf2) - 28: 21 Image 25 - 29: 7(fvec2) ImageQueryLod 28 27 - 30: 7(fvec2) Load 9(lod) - 31: 7(fvec2) FAdd 30 29 - Store 9(lod) 31 - 37: 34 Load 36(usamp3D) - 41: 38(fvec3) Load 40(pf3) - 42: 33 Image 37 - 43: 7(fvec2) ImageQueryLod 42 41 - 44: 7(fvec2) Load 9(lod) - 45: 7(fvec2) FAdd 44 43 - Store 9(lod) 45 - 50: 47 Load 49(sampCube) - 51: 38(fvec3) Load 40(pf3) - 52: 46 Image 50 - 53: 7(fvec2) ImageQueryLod 52 51 - 54: 7(fvec2) Load 9(lod) - 55: 7(fvec2) FAdd 54 53 - Store 9(lod) 55 - 60: 57 Load 59(isamp1DA) - 61: 6(float) Load 16(pf) - 62: 56 Image 60 - 63: 7(fvec2) ImageQueryLod 62 61 - 64: 7(fvec2) Load 9(lod) - 65: 7(fvec2) FAdd 64 63 - Store 9(lod) 65 - 70: 67 Load 69(usamp2DA) - 71: 7(fvec2) Load 26(pf2) - 72: 66 Image 70 - 73: 7(fvec2) ImageQueryLod 72 71 - 74: 7(fvec2) Load 9(lod) - 75: 7(fvec2) FAdd 74 73 - Store 9(lod) 75 - 80: 77 Load 79(isampCubeA) - 81: 38(fvec3) Load 40(pf3) - 82: 76 Image 80 - 83: 7(fvec2) ImageQueryLod 82 81 - 84: 7(fvec2) Load 9(lod) - 85: 7(fvec2) FAdd 84 83 - Store 9(lod) 85 - 90: 87 Load 89(samp1Ds) - 91: 6(float) Load 16(pf) - 92: 86 Image 90 - 93: 7(fvec2) ImageQueryLod 92 91 - 94: 7(fvec2) Load 9(lod) - 95: 7(fvec2) FAdd 94 93 - Store 9(lod) 95 - 100: 97 Load 99(samp2Ds) - 101: 7(fvec2) Load 26(pf2) - 102: 96 Image 100 - 103: 7(fvec2) ImageQueryLod 102 101 + 18: 7(fvec2) ImageQueryLod 14 17 + Store 9(lod) 18 + 24: 21 Load 23(isamp2D) + 26: 7(fvec2) Load 25(pf2) + 27: 7(fvec2) ImageQueryLod 24 26 + 28: 7(fvec2) Load 9(lod) + 29: 7(fvec2) FAdd 28 27 + Store 9(lod) 29 + 35: 32 Load 34(usamp3D) + 39: 36(fvec3) Load 38(pf3) + 40: 7(fvec2) ImageQueryLod 35 39 + 41: 7(fvec2) Load 9(lod) + 42: 7(fvec2) FAdd 41 40 + Store 9(lod) 42 + 47: 44 Load 46(sampCube) + 48: 36(fvec3) Load 38(pf3) + 49: 7(fvec2) ImageQueryLod 47 48 + 50: 7(fvec2) Load 9(lod) + 51: 7(fvec2) FAdd 50 49 + Store 9(lod) 51 + 56: 53 Load 55(isamp1DA) + 57: 6(float) Load 16(pf) + 58: 7(fvec2) ImageQueryLod 56 57 + 59: 7(fvec2) Load 9(lod) + 60: 7(fvec2) FAdd 59 58 + Store 9(lod) 60 + 65: 62 Load 64(usamp2DA) + 66: 7(fvec2) Load 25(pf2) + 67: 7(fvec2) ImageQueryLod 65 66 + 68: 7(fvec2) Load 9(lod) + 69: 7(fvec2) FAdd 68 67 + Store 9(lod) 69 + 74: 71 Load 73(isampCubeA) + 75: 36(fvec3) Load 38(pf3) + 76: 7(fvec2) ImageQueryLod 74 75 + 77: 7(fvec2) Load 9(lod) + 78: 7(fvec2) FAdd 77 76 + Store 9(lod) 78 + 83: 80 Load 82(samp1Ds) + 84: 6(float) Load 16(pf) + 85: 7(fvec2) ImageQueryLod 83 84 + 86: 7(fvec2) Load 9(lod) + 87: 7(fvec2) FAdd 86 85 + Store 9(lod) 87 + 92: 89 Load 91(samp2Ds) + 93: 7(fvec2) Load 25(pf2) + 94: 7(fvec2) ImageQueryLod 92 93 + 95: 7(fvec2) Load 9(lod) + 96: 7(fvec2) FAdd 95 94 + Store 9(lod) 96 + 101: 98 Load 100(sampCubes) + 102: 36(fvec3) Load 38(pf3) + 103: 7(fvec2) ImageQueryLod 101 102 104: 7(fvec2) Load 9(lod) 105: 7(fvec2) FAdd 104 103 Store 9(lod) 105 - 110: 107 Load 109(sampCubes) - 111: 38(fvec3) Load 40(pf3) - 112: 106 Image 110 - 113: 7(fvec2) ImageQueryLod 112 111 - 114: 7(fvec2) Load 9(lod) - 115: 7(fvec2) FAdd 114 113 - Store 9(lod) 115 - 120: 117 Load 119(samp1DAs) - 121: 6(float) Load 16(pf) - 122: 116 Image 120 - 123: 7(fvec2) ImageQueryLod 122 121 - 124: 7(fvec2) Load 9(lod) - 125: 7(fvec2) FAdd 124 123 - Store 9(lod) 125 - 130: 127 Load 129(samp2DAs) - 131: 7(fvec2) Load 26(pf2) - 132: 126 Image 130 - 133: 7(fvec2) ImageQueryLod 132 131 - 134: 7(fvec2) Load 9(lod) - 135: 7(fvec2) FAdd 134 133 - Store 9(lod) 135 - 140: 137 Load 139(sampCubeAs) - 141: 38(fvec3) Load 40(pf3) - 142: 136 Image 140 - 143: 7(fvec2) ImageQueryLod 142 141 - 144: 7(fvec2) Load 9(lod) - 145: 7(fvec2) FAdd 144 143 - Store 9(lod) 145 - 148: 11 Load 13(samp1D) - 149: 10 Image 148 - 150: 20(int) ImageQueryLevels 149 - Store 147(levels) 150 - 155: 152 Load 154(usamp2D) - 156: 151 Image 155 - 157: 20(int) ImageQueryLevels 156 - 158: 20(int) Load 147(levels) - 159: 20(int) IAdd 158 157 - Store 147(levels) 159 - 164: 161 Load 163(isamp3D) - 165: 160 Image 164 - 166: 20(int) ImageQueryLevels 165 - 167: 20(int) Load 147(levels) - 168: 20(int) IAdd 167 166 - Store 147(levels) 168 - 173: 170 Load 172(isampCube) - 174: 169 Image 173 - 175: 20(int) ImageQueryLevels 174 - 176: 20(int) Load 147(levels) - 177: 20(int) IAdd 176 175 - Store 147(levels) 177 - 178: 57 Load 59(isamp1DA) - 179: 56 Image 178 - 180: 20(int) ImageQueryLevels 179 - 181: 20(int) Load 147(levels) - 182: 20(int) IAdd 181 180 - Store 147(levels) 182 - 187: 184 Load 186(samp2DA) - 188: 183 Image 187 - 189: 20(int) ImageQueryLevels 188 - 190: 20(int) Load 147(levels) - 191: 20(int) IAdd 190 189 - Store 147(levels) 191 - 196: 193 Load 195(usampCubeA) - 197: 192 Image 196 - 198: 20(int) ImageQueryLevels 197 - 199: 20(int) Load 147(levels) - 200: 20(int) IAdd 199 198 - Store 147(levels) 200 - 201: 87 Load 89(samp1Ds) - 202: 86 Image 201 - 203: 20(int) ImageQueryLevels 202 - Store 147(levels) 203 - 204: 97 Load 99(samp2Ds) - 205: 96 Image 204 - 206: 20(int) ImageQueryLevels 205 - 207: 20(int) Load 147(levels) - 208: 20(int) IAdd 207 206 - Store 147(levels) 208 - 209: 107 Load 109(sampCubes) - 210: 106 Image 209 - 211: 20(int) ImageQueryLevels 210 - 212: 20(int) Load 147(levels) - 213: 20(int) IAdd 212 211 - Store 147(levels) 213 - 214: 117 Load 119(samp1DAs) - 215: 116 Image 214 - 216: 20(int) ImageQueryLevels 215 - 217: 20(int) Load 147(levels) - 218: 20(int) IAdd 217 216 - Store 147(levels) 218 - 219: 127 Load 129(samp2DAs) - 220: 126 Image 219 - 221: 20(int) ImageQueryLevels 220 - 222: 20(int) Load 147(levels) - 223: 20(int) IAdd 222 221 - Store 147(levels) 223 - 224: 137 Load 139(sampCubeAs) - 225: 136 Image 224 - 226: 20(int) ImageQueryLevels 225 - 227: 20(int) Load 147(levels) - 228: 20(int) IAdd 227 226 - Store 147(levels) 228 + 110: 107 Load 109(samp1DAs) + 111: 6(float) Load 16(pf) + 112: 7(fvec2) ImageQueryLod 110 111 + 113: 7(fvec2) Load 9(lod) + 114: 7(fvec2) FAdd 113 112 + Store 9(lod) 114 + 119: 116 Load 118(samp2DAs) + 120: 7(fvec2) Load 25(pf2) + 121: 7(fvec2) ImageQueryLod 119 120 + 122: 7(fvec2) Load 9(lod) + 123: 7(fvec2) FAdd 122 121 + Store 9(lod) 123 + 128: 125 Load 127(sampCubeAs) + 129: 36(fvec3) Load 38(pf3) + 130: 7(fvec2) ImageQueryLod 128 129 + 131: 7(fvec2) Load 9(lod) + 132: 7(fvec2) FAdd 131 130 + Store 9(lod) 132 + 135: 11 Load 13(samp1D) + 136: 10 Image 135 + 137: 19(int) ImageQueryLevels 136 + Store 134(levels) 137 + 142: 139 Load 141(usamp2D) + 143: 138 Image 142 + 144: 19(int) ImageQueryLevels 143 + 145: 19(int) Load 134(levels) + 146: 19(int) IAdd 145 144 + Store 134(levels) 146 + 151: 148 Load 150(isamp3D) + 152: 147 Image 151 + 153: 19(int) ImageQueryLevels 152 + 154: 19(int) Load 134(levels) + 155: 19(int) IAdd 154 153 + Store 134(levels) 155 + 160: 157 Load 159(isampCube) + 161: 156 Image 160 + 162: 19(int) ImageQueryLevels 161 + 163: 19(int) Load 134(levels) + 164: 19(int) IAdd 163 162 + Store 134(levels) 164 + 165: 53 Load 55(isamp1DA) + 166: 52 Image 165 + 167: 19(int) ImageQueryLevels 166 + 168: 19(int) Load 134(levels) + 169: 19(int) IAdd 168 167 + Store 134(levels) 169 + 174: 171 Load 173(samp2DA) + 175: 170 Image 174 + 176: 19(int) ImageQueryLevels 175 + 177: 19(int) Load 134(levels) + 178: 19(int) IAdd 177 176 + Store 134(levels) 178 + 183: 180 Load 182(usampCubeA) + 184: 179 Image 183 + 185: 19(int) ImageQueryLevels 184 + 186: 19(int) Load 134(levels) + 187: 19(int) IAdd 186 185 + Store 134(levels) 187 + 188: 80 Load 82(samp1Ds) + 189: 79 Image 188 + 190: 19(int) ImageQueryLevels 189 + Store 134(levels) 190 + 191: 89 Load 91(samp2Ds) + 192: 88 Image 191 + 193: 19(int) ImageQueryLevels 192 + 194: 19(int) Load 134(levels) + 195: 19(int) IAdd 194 193 + Store 134(levels) 195 + 196: 98 Load 100(sampCubes) + 197: 97 Image 196 + 198: 19(int) ImageQueryLevels 197 + 199: 19(int) Load 134(levels) + 200: 19(int) IAdd 199 198 + Store 134(levels) 200 + 201: 107 Load 109(samp1DAs) + 202: 106 Image 201 + 203: 19(int) ImageQueryLevels 202 + 204: 19(int) Load 134(levels) + 205: 19(int) IAdd 204 203 + Store 134(levels) 205 + 206: 116 Load 118(samp2DAs) + 207: 115 Image 206 + 208: 19(int) ImageQueryLevels 207 + 209: 19(int) Load 134(levels) + 210: 19(int) IAdd 209 208 + Store 134(levels) 210 + 211: 125 Load 127(sampCubeAs) + 212: 124 Image 211 + 213: 19(int) ImageQueryLevels 212 + 214: 19(int) Load 134(levels) + 215: 19(int) IAdd 214 213 + Store 134(levels) 215 Return FunctionEnd -- 2.7.4