diff --git a/Test/330.frag b/Test/330.frag index a23ab66447fee3b4073c95d7d40a895fbd09de1a..a3301a2c3b70fa50a2aab197b2816e130e1b15ef 100644 --- a/Test/330.frag +++ b/Test/330.frag @@ -125,4 +125,18 @@ layout(location=0, index=1) out vec4 outVar4; // ERROR overlapping layout(location=27, index=0) in vec4 indexIn; // ERROR, not on in layout(location=0, index=0) in; // ERROR, not just on in layout(location=0, index=0) out; // ERROR, need a variable -layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block \ No newline at end of file +layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block + +uniform sampler1D samp1D; +uniform sampler2DShadow samp2Ds; + +void qlod() +{ + vec2 lod; + float pf; + vec2 pf2; + vec3 pf3; + + lod = textureQueryLod(samp1D, pf); // ERROR, not until 400 + lod = textureQueryLod(samp2Ds, pf2); // ERROR, not until 400 +} diff --git a/Test/400.frag b/Test/400.frag index 7ca965fb35dee1c61525b1a36b37c6352d1f4c7f..a2c4691abe06901dffa1b929d04bc1ccc045f5e0 100644 --- a/Test/400.frag +++ b/Test/400.frag @@ -138,4 +138,48 @@ void interp() float f; interpolateAtCentroid(f); // ERROR, not interpolant interpolateAtSample(outp, 0); // ERROR, not interpolant -} \ No newline at end of file +} + +uniform sampler1D samp1D; +uniform isampler2D isamp2D; +uniform usampler3D usamp3D; +uniform samplerCube sampCube; +uniform isampler1DArray isamp1DA; +uniform usampler2DArray usamp2DA; +uniform isamplerCubeArray isampCubeA; + +uniform sampler1DShadow samp1Ds; +uniform sampler2DShadow samp2Ds; +uniform samplerCubeShadow sampCubes; +uniform sampler1DArrayShadow samp1DAs; +uniform sampler2DArrayShadow samp2DAs; +uniform samplerCubeArrayShadow sampCubeAs; + +uniform samplerBuffer sampBuf; +uniform sampler2DRect sampRect; + +void qlod() +{ + vec2 lod; + float pf; + vec2 pf2; + vec3 pf3; + + lod = textureQueryLod(samp1D, pf); + lod = textureQueryLod(isamp2D, pf2); + lod = textureQueryLod(usamp3D, pf3); + lod = textureQueryLod(sampCube, pf3); + lod = textureQueryLod(isamp1DA, pf); + lod = textureQueryLod(usamp2DA, pf2); + lod = textureQueryLod(isampCubeA, pf3); + + lod = textureQueryLod(samp1Ds, pf); + lod = textureQueryLod(samp2Ds, pf2); + lod = textureQueryLod(sampCubes, pf3); + lod = textureQueryLod(samp1DAs, pf); + lod = textureQueryLod(samp2DAs, pf2); + lod = textureQueryLod(sampCubeAs, pf3); + + lod = textureQueryLod(sampBuf, pf); // ERROR + lod = textureQueryLod(sampRect, pf2); // ERROR +} diff --git a/Test/400.geom b/Test/400.geom index 7fe9fc1c3880b6e6b69cdad8b23565a87bdac799..e2ca9b910bfa73c607e9b7314fac001a260b746a 100644 --- a/Test/400.geom +++ b/Test/400.geom @@ -101,3 +101,17 @@ void bits() } layout(location = 7, index = 1) out vec4 indexedOut; + +uniform sampler1D samp1D; +uniform sampler2DShadow samp2Ds; + +void qlod() +{ + vec2 lod; + float pf; + vec2 pf2; + vec3 pf3; + + lod = textureQueryLod(samp1D, pf); // ERROR, only in fragment + lod = textureQueryLod(samp2Ds, pf2); // ERROR, only in fragment +} diff --git a/Test/420.vert b/Test/420.vert index 5007e20c9c4e20d1bc811174b2c879a61e45253b..49035ea470fade93a591f1756c44aa5a1e07b7a5 100644 --- a/Test/420.vert +++ b/Test/420.vert @@ -146,3 +146,14 @@ layout(r8ui) uniform iimage2D i6bad; // ERROR, type mismatch uniform offcheck { layout(offset = 16) int foo; // ERROR } offcheckI; + +uniform sampler1D samp1D; +uniform sampler1DShadow samp1Ds; + +void qlod() +{ + int levels; + + levels = textureQueryLevels(samp1D); // ERROR, not until 430 + levels = textureQueryLevels(samp1Ds); // ERROR, not until 430 +} \ No newline at end of file diff --git a/Test/430.vert b/Test/430.vert index 64dd42f239638f0a84952d1e140f49f6fb4bb423..84c322083b855ca253ade48c39391634d606342c 100644 --- a/Test/430.vert +++ b/Test/430.vert @@ -180,3 +180,44 @@ void fooq2() s += imageSamples(ii2dms); s += imageSamples(i2dmsa); } + +uniform sampler1D samp1D; +uniform usampler2D usamp2D; +uniform isampler3D isamp3D; +uniform isamplerCube isampCube; +uniform isampler1DArray isamp1DA; +uniform sampler2DArray samp2DA; +uniform usamplerCubeArray usampCubeA; + +uniform sampler1DShadow samp1Ds; +uniform sampler2DShadow samp2Ds; +uniform samplerCubeShadow sampCubes; +uniform sampler1DArrayShadow samp1DAs; +uniform sampler2DArrayShadow samp2DAs; +uniform samplerCubeArrayShadow sampCubeAs; + +uniform samplerBuffer sampBuf; +uniform sampler2DRect sampRect; + +void qlod() +{ + int levels; + + levels = textureQueryLevels(samp1D); + levels = textureQueryLevels(usamp2D); + levels = textureQueryLevels(isamp3D); + levels = textureQueryLevels(isampCube); + levels = textureQueryLevels(isamp1DA); + levels = textureQueryLevels(samp2DA); + levels = textureQueryLevels(usampCubeA); + + levels = textureQueryLevels(samp1Ds); + levels = textureQueryLevels(samp2Ds); + levels = textureQueryLevels(sampCubes); + levels = textureQueryLevels(samp1DAs); + levels = textureQueryLevels(samp2DAs); + levels = textureQueryLevels(sampCubeAs); + + levels = textureQueryLevels(sampBuf); // ERROR + levels = textureQueryLevels(sampRect); // ERROR +} diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out index 3e17d923f7cdc57d09264ef07ab47866775ea988..2def6c7b3cc4f435f34c27b5b289bcf58d0dee45 100644 --- a/Test/baseResults/330.frag.out +++ b/Test/baseResults/330.frag.out @@ -33,7 +33,11 @@ ERROR: 0:126: 'index' : can only be used on an output ERROR: 0:126: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:127: 'location/component/index' : cannot declare a default, use a full declaration ERROR: 0:128: 'output block' : not supported in this stage: fragment -ERROR: 34 compilation errors. No code generated. +ERROR: 0:140: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:140: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:141: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 38 compilation errors. No code generated. Shader version: 330 @@ -70,6 +74,11 @@ ERROR: node is still EOpNull! 0:24 move second child to first child (temp 4-component vector of float) 0:24 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) 0:24 'inVar' (smooth in 4-component vector of float) +0:133 Function Definition: qlod( (global void) +0:133 Function Parameters: +0:? Sequence +0:140 'lod' (temp 2-component vector of float) +0:141 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'inVar' (smooth in 4-component vector of float) 0:? 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) @@ -102,6 +111,8 @@ ERROR: node is still EOpNull! 0:? 'outVar4' (layout(location=0 index=1 ) out 4-component vector of float) 0:? 'indexIn' (layout(location=27 index=0 ) smooth in 4-component vector of float) 0:? 'indexBlockI' (layout(location=26 index=0 ) out block{out int a}) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp2Ds' (uniform sampler2DShadow) Linked fragment stage: @@ -143,6 +154,11 @@ ERROR: node is still EOpNull! 0:24 move second child to first child (temp 4-component vector of float) 0:24 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) 0:24 'inVar' (smooth in 4-component vector of float) +0:133 Function Definition: qlod( (global void) +0:133 Function Parameters: +0:? Sequence +0:140 'lod' (temp 2-component vector of float) +0:141 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'inVar' (smooth in 4-component vector of float) 0:? 'outVar' (layout(location=0 index=0 ) out 4-component vector of float) @@ -175,4 +191,6 @@ ERROR: node is still EOpNull! 0:? 'outVar4' (layout(location=0 index=1 ) out 4-component vector of float) 0:? 'indexIn' (layout(location=27 index=0 ) smooth in 4-component vector of float) 0:? 'indexBlockI' (layout(location=26 index=0 ) out block{out int a}) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp2Ds' (uniform sampler2DShadow) diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index 5ecb9082499f53157885d9e6ac093ef70d09f187..7e09e8afd9527e0c0bb1b453a8f82bcc58289d6b 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -30,7 +30,11 @@ ERROR: 0:135: 'interpolateAtOffset' : first argument must be an interpolant, or ERROR: 0:136: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:139: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:140: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element -ERROR: 30 compilation errors. No code generated. +ERROR: 0:183: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:183: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:184: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 34 compilation errors. No code generated. Shader version: 400 @@ -402,6 +406,76 @@ ERROR: node is still EOpNull! 0:140 'outp' (out 4-component vector of float) 0:140 Constant: 0:140 0 (const int) +0:161 Function Definition: qlod( (global void) +0:161 Function Parameters: +0:? Sequence +0:168 move second child to first child (temp 2-component vector of float) +0:168 'lod' (temp 2-component vector of float) +0:168 textureQueryLod (global 2-component vector of float) +0:168 'samp1D' (uniform sampler1D) +0:168 'pf' (temp float) +0:169 move second child to first child (temp 2-component vector of float) +0:169 'lod' (temp 2-component vector of float) +0:169 textureQueryLod (global 2-component vector of float) +0:169 'isamp2D' (uniform isampler2D) +0:169 'pf2' (temp 2-component vector of float) +0:170 move second child to first child (temp 2-component vector of float) +0:170 'lod' (temp 2-component vector of float) +0:170 textureQueryLod (global 2-component vector of float) +0:170 'usamp3D' (uniform usampler3D) +0:170 'pf3' (temp 3-component vector of float) +0:171 move second child to first child (temp 2-component vector of float) +0:171 'lod' (temp 2-component vector of float) +0:171 textureQueryLod (global 2-component vector of float) +0:171 'sampCube' (uniform samplerCube) +0:171 'pf3' (temp 3-component vector of float) +0:172 move second child to first child (temp 2-component vector of float) +0:172 'lod' (temp 2-component vector of float) +0:172 textureQueryLod (global 2-component vector of float) +0:172 'isamp1DA' (uniform isampler1DArray) +0:172 'pf' (temp float) +0:173 move second child to first child (temp 2-component vector of float) +0:173 'lod' (temp 2-component vector of float) +0:173 textureQueryLod (global 2-component vector of float) +0:173 'usamp2DA' (uniform usampler2DArray) +0:173 'pf2' (temp 2-component vector of float) +0:174 move second child to first child (temp 2-component vector of float) +0:174 'lod' (temp 2-component vector of float) +0:174 textureQueryLod (global 2-component vector of float) +0:174 'isampCubeA' (uniform isamplerCubeArray) +0:174 'pf3' (temp 3-component vector of float) +0:176 move second child to first child (temp 2-component vector of float) +0:176 'lod' (temp 2-component vector of float) +0:176 textureQueryLod (global 2-component vector of float) +0:176 'samp1Ds' (uniform sampler1DShadow) +0:176 'pf' (temp float) +0:177 move second child to first child (temp 2-component vector of float) +0:177 'lod' (temp 2-component vector of float) +0:177 textureQueryLod (global 2-component vector of float) +0:177 'samp2Ds' (uniform sampler2DShadow) +0:177 'pf2' (temp 2-component vector of float) +0:178 move second child to first child (temp 2-component vector of float) +0:178 'lod' (temp 2-component vector of float) +0:178 textureQueryLod (global 2-component vector of float) +0:178 'sampCubes' (uniform samplerCubeShadow) +0:178 'pf3' (temp 3-component vector of float) +0:179 move second child to first child (temp 2-component vector of float) +0:179 'lod' (temp 2-component vector of float) +0:179 textureQueryLod (global 2-component vector of float) +0:179 'samp1DAs' (uniform sampler1DArrayShadow) +0:179 'pf' (temp float) +0:180 move second child to first child (temp 2-component vector of float) +0:180 'lod' (temp 2-component vector of float) +0:180 textureQueryLod (global 2-component vector of float) +0:180 'samp2DAs' (uniform sampler2DArrayShadow) +0:180 'pf2' (temp 2-component vector of float) +0:181 move second child to first child (temp 2-component vector of float) +0:181 'lod' (temp 2-component vector of float) +0:181 textureQueryLod (global 2-component vector of float) +0:181 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:181 'pf3' (temp 3-component vector of float) +0:183 'lod' (temp 2-component vector of float) +0:184 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'c2D' (smooth in 2-component vector of float) 0:? 'i' (flat in int) @@ -432,6 +506,21 @@ ERROR: node is still EOpNull! 0:? 'colorfc' (centroid flat in 2-component vector of float) 0:? 's1' (smooth in structure{global float x}) 0:? 's2' (sample temp structure{global float x}) +0:? 'samp1D' (uniform sampler1D) +0:? 'isamp2D' (uniform isampler2D) +0:? 'usamp3D' (uniform usampler3D) +0:? 'sampCube' (uniform samplerCube) +0:? 'isamp1DA' (uniform isampler1DArray) +0:? 'usamp2DA' (uniform usampler2DArray) +0:? 'isampCubeA' (uniform isamplerCubeArray) +0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'samp2Ds' (uniform sampler2DShadow) +0:? 'sampCubes' (uniform samplerCubeShadow) +0:? 'samp1DAs' (uniform sampler1DArrayShadow) +0:? 'samp2DAs' (uniform sampler2DArrayShadow) +0:? 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:? 'sampBuf' (uniform samplerBuffer) +0:? 'sampRect' (uniform sampler2DRect) Linked fragment stage: @@ -806,6 +895,76 @@ ERROR: node is still EOpNull! 0:140 'outp' (out 4-component vector of float) 0:140 Constant: 0:140 0 (const int) +0:161 Function Definition: qlod( (global void) +0:161 Function Parameters: +0:? Sequence +0:168 move second child to first child (temp 2-component vector of float) +0:168 'lod' (temp 2-component vector of float) +0:168 textureQueryLod (global 2-component vector of float) +0:168 'samp1D' (uniform sampler1D) +0:168 'pf' (temp float) +0:169 move second child to first child (temp 2-component vector of float) +0:169 'lod' (temp 2-component vector of float) +0:169 textureQueryLod (global 2-component vector of float) +0:169 'isamp2D' (uniform isampler2D) +0:169 'pf2' (temp 2-component vector of float) +0:170 move second child to first child (temp 2-component vector of float) +0:170 'lod' (temp 2-component vector of float) +0:170 textureQueryLod (global 2-component vector of float) +0:170 'usamp3D' (uniform usampler3D) +0:170 'pf3' (temp 3-component vector of float) +0:171 move second child to first child (temp 2-component vector of float) +0:171 'lod' (temp 2-component vector of float) +0:171 textureQueryLod (global 2-component vector of float) +0:171 'sampCube' (uniform samplerCube) +0:171 'pf3' (temp 3-component vector of float) +0:172 move second child to first child (temp 2-component vector of float) +0:172 'lod' (temp 2-component vector of float) +0:172 textureQueryLod (global 2-component vector of float) +0:172 'isamp1DA' (uniform isampler1DArray) +0:172 'pf' (temp float) +0:173 move second child to first child (temp 2-component vector of float) +0:173 'lod' (temp 2-component vector of float) +0:173 textureQueryLod (global 2-component vector of float) +0:173 'usamp2DA' (uniform usampler2DArray) +0:173 'pf2' (temp 2-component vector of float) +0:174 move second child to first child (temp 2-component vector of float) +0:174 'lod' (temp 2-component vector of float) +0:174 textureQueryLod (global 2-component vector of float) +0:174 'isampCubeA' (uniform isamplerCubeArray) +0:174 'pf3' (temp 3-component vector of float) +0:176 move second child to first child (temp 2-component vector of float) +0:176 'lod' (temp 2-component vector of float) +0:176 textureQueryLod (global 2-component vector of float) +0:176 'samp1Ds' (uniform sampler1DShadow) +0:176 'pf' (temp float) +0:177 move second child to first child (temp 2-component vector of float) +0:177 'lod' (temp 2-component vector of float) +0:177 textureQueryLod (global 2-component vector of float) +0:177 'samp2Ds' (uniform sampler2DShadow) +0:177 'pf2' (temp 2-component vector of float) +0:178 move second child to first child (temp 2-component vector of float) +0:178 'lod' (temp 2-component vector of float) +0:178 textureQueryLod (global 2-component vector of float) +0:178 'sampCubes' (uniform samplerCubeShadow) +0:178 'pf3' (temp 3-component vector of float) +0:179 move second child to first child (temp 2-component vector of float) +0:179 'lod' (temp 2-component vector of float) +0:179 textureQueryLod (global 2-component vector of float) +0:179 'samp1DAs' (uniform sampler1DArrayShadow) +0:179 'pf' (temp float) +0:180 move second child to first child (temp 2-component vector of float) +0:180 'lod' (temp 2-component vector of float) +0:180 textureQueryLod (global 2-component vector of float) +0:180 'samp2DAs' (uniform sampler2DArrayShadow) +0:180 'pf2' (temp 2-component vector of float) +0:181 move second child to first child (temp 2-component vector of float) +0:181 'lod' (temp 2-component vector of float) +0:181 textureQueryLod (global 2-component vector of float) +0:181 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:181 'pf3' (temp 3-component vector of float) +0:183 'lod' (temp 2-component vector of float) +0:184 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'c2D' (smooth in 2-component vector of float) 0:? 'i' (flat in int) @@ -836,4 +995,19 @@ ERROR: node is still EOpNull! 0:? 'colorfc' (centroid flat in 2-component vector of float) 0:? 's1' (smooth in structure{global float x}) 0:? 's2' (sample temp structure{global float x}) +0:? 'samp1D' (uniform sampler1D) +0:? 'isamp2D' (uniform isampler2D) +0:? 'usamp3D' (uniform usampler3D) +0:? 'sampCube' (uniform samplerCube) +0:? 'isamp1DA' (uniform isampler1DArray) +0:? 'usamp2DA' (uniform usampler2DArray) +0:? 'isampCubeA' (uniform isamplerCubeArray) +0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'samp2Ds' (uniform sampler2DShadow) +0:? 'sampCubes' (uniform samplerCubeShadow) +0:? 'samp1DAs' (uniform sampler1DArrayShadow) +0:? 'samp2DAs' (uniform sampler2DArrayShadow) +0:? 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:? 'sampBuf' (uniform samplerBuffer) +0:? 'sampRect' (uniform sampler2DRect) diff --git a/Test/baseResults/400.geom.out b/Test/baseResults/400.geom.out index 09e0b66b084d3e89e84b3069ea50eb618996522d..856bf7f1cfb390db7e5a436e4186a772a3d6d563 100644 --- a/Test/baseResults/400.geom.out +++ b/Test/baseResults/400.geom.out @@ -19,7 +19,11 @@ ERROR: 0:65: 'invocations' : can only apply to 'in' ERROR: 0:67: 'in' : type must be an array: inbls ERROR: 0:71: 'triangles' : inconsistent input primitive for array size of inbla ERROR: 0:103: 'index' : there is no such layout identifier for this stage taking an assigned value -ERROR: 19 compilation errors. No code generated. +ERROR: 0:115: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:115: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 0:116: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:116: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float' +ERROR: 23 compilation errors. No code generated. Shader version: 400 @@ -165,6 +169,11 @@ ERROR: node is still EOpNull! 0:100 'i2' (temp 2-component vector of int) 0:100 findMSB (global 2-component vector of int) 0:100 'u2' (temp 2-component vector of uint) +0:108 Function Definition: qlod( (global void) +0:108 Function Parameters: +0:? Sequence +0:115 'lod' (temp 2-component vector of float) +0:116 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'bn' (in 3-element array of block{in int a}) 0:? 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) @@ -182,6 +191,8 @@ ERROR: node is still EOpNull! 0:? 'inbls' (in block{in int a}) 0:? 'inbla' (in 17-element array of block{in int a}) 0:? 'indexedOut' (layout(location=7 stream=0 ) out 4-component vector of float) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp2Ds' (uniform sampler2DShadow) Linked geometry stage: @@ -331,6 +342,11 @@ ERROR: node is still EOpNull! 0:100 'i2' (temp 2-component vector of int) 0:100 findMSB (global 2-component vector of int) 0:100 'u2' (temp 2-component vector of uint) +0:108 Function Definition: qlod( (global void) +0:108 Function Parameters: +0:? Sequence +0:115 'lod' (temp 2-component vector of float) +0:116 'lod' (temp 2-component vector of float) 0:? Linker Objects 0:? 'bn' (in 3-element array of block{in int a}) 0:? 'gl_in' (in 3-element array of block{in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize}) @@ -348,4 +364,6 @@ ERROR: node is still EOpNull! 0:? 'inbls' (in block{in int a}) 0:? 'inbla' (in 17-element array of block{in int a}) 0:? 'indexedOut' (layout(location=7 stream=0 ) out 4-component vector of float) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp2Ds' (uniform sampler2DShadow) diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out index 13c61eb92a26a5f71611df77e865b82c4b050ffc..2901c3967ac62303c7cb273b48d0a6406b045921 100644 --- a/Test/baseResults/420.vert.out +++ b/Test/baseResults/420.vert.out @@ -49,7 +49,11 @@ ERROR: 0:142: 'r8_snorm' : does not apply to signed integer images ERROR: 0:143: 'rgba32ui' : does not apply to signed integer images ERROR: 0:144: 'r8ui' : does not apply to signed integer images ERROR: 0:147: 'offset on block member' : not supported for this version or the enabled extensions -ERROR: 48 compilation errors. No code generated. +ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found +ERROR: 0:157: 'assign' : cannot convert from 'const float' to 'temp int' +ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found +ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int' +ERROR: 52 compilation errors. No code generated. Shader version: 420 @@ -239,6 +243,11 @@ ERROR: node is still EOpNull! 0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D) 0:136 Function Call: passr(iI21; (global void) 0:136 'iimg2D' (layout(r32i ) uniform iimage2D) +0:153 Function Definition: qlod( (global void) +0:153 Function Parameters: +0:? Sequence +0:157 'levels' (temp int) +0:158 'levels' (temp int) 0:? Linker Objects 0:? 'v2' (smooth out 2-component vector of float) 0:? 'bad' (in 10-element array of 4-component vector of float) @@ -290,6 +299,8 @@ ERROR: node is still EOpNull! 0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D) 0:? 'i6bad' (layout(r8ui ) uniform iimage2D) 0:? 'offcheckI' (layout(column_major shared ) uniform block{layout(column_major shared offset=16 ) uniform int foo}) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp1Ds' (uniform sampler1DShadow) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) @@ -484,6 +495,11 @@ ERROR: node is still EOpNull! 0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D) 0:136 Function Call: passr(iI21; (global void) 0:136 'iimg2D' (layout(r32i ) uniform iimage2D) +0:153 Function Definition: qlod( (global void) +0:153 Function Parameters: +0:? Sequence +0:157 'levels' (temp int) +0:158 'levels' (temp int) 0:? Linker Objects 0:? 'v2' (smooth out 2-component vector of float) 0:? 'bad' (in 10-element array of 4-component vector of float) @@ -535,6 +551,8 @@ ERROR: node is still EOpNull! 0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D) 0:? 'i6bad' (layout(r8ui ) uniform iimage2D) 0:? 'offcheckI' (layout(column_major shared ) uniform block{layout(column_major shared offset=16 ) uniform int foo}) +0:? 'samp1D' (uniform sampler1D) +0:? 'samp1Ds' (uniform sampler1DShadow) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out index 02cd5124c343ee583ec5a4e398c2e3d6aa9c31df..5242983cef7a1825c838e89f502e38ee2b985770 100644 --- a/Test/baseResults/430.vert.out +++ b/Test/baseResults/430.vert.out @@ -59,7 +59,11 @@ ERROR: 0:168: 'textureSamples and imageSamples' : not supported for this version ERROR: 0:169: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:170: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions ERROR: 0:171: 'textureSamples and imageSamples' : not supported for this version or the enabled extensions -ERROR: 59 compilation errors. No code generated. +ERROR: 0:221: 'textureQueryLevels' : no matching overloaded function found +ERROR: 0:221: 'assign' : cannot convert from 'const float' to 'temp int' +ERROR: 0:222: 'textureQueryLevels' : no matching overloaded function found +ERROR: 0:222: 'assign' : cannot convert from 'const float' to 'temp int' +ERROR: 63 compilation errors. No code generated. Shader version: 430 @@ -139,6 +143,63 @@ ERROR: node is still EOpNull! 0:181 's' (temp int) 0:181 imageQuerySamples (global int) 0:181 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) +0:202 Function Definition: qlod( (global void) +0:202 Function Parameters: +0:? Sequence +0:206 move second child to first child (temp int) +0:206 'levels' (temp int) +0:206 textureQueryLevels (global int) +0:206 'samp1D' (uniform sampler1D) +0:207 move second child to first child (temp int) +0:207 'levels' (temp int) +0:207 textureQueryLevels (global int) +0:207 'usamp2D' (uniform usampler2D) +0:208 move second child to first child (temp int) +0:208 'levels' (temp int) +0:208 textureQueryLevels (global int) +0:208 'isamp3D' (uniform isampler3D) +0:209 move second child to first child (temp int) +0:209 'levels' (temp int) +0:209 textureQueryLevels (global int) +0:209 'isampCube' (uniform isamplerCube) +0:210 move second child to first child (temp int) +0:210 'levels' (temp int) +0:210 textureQueryLevels (global int) +0:210 'isamp1DA' (uniform isampler1DArray) +0:211 move second child to first child (temp int) +0:211 'levels' (temp int) +0:211 textureQueryLevels (global int) +0:211 'samp2DA' (uniform sampler2DArray) +0:212 move second child to first child (temp int) +0:212 'levels' (temp int) +0:212 textureQueryLevels (global int) +0:212 'usampCubeA' (uniform usamplerCubeArray) +0:214 move second child to first child (temp int) +0:214 'levels' (temp int) +0:214 textureQueryLevels (global int) +0:214 'samp1Ds' (uniform sampler1DShadow) +0:215 move second child to first child (temp int) +0:215 'levels' (temp int) +0:215 textureQueryLevels (global int) +0:215 'samp2Ds' (uniform sampler2DShadow) +0:216 move second child to first child (temp int) +0:216 'levels' (temp int) +0:216 textureQueryLevels (global int) +0:216 'sampCubes' (uniform samplerCubeShadow) +0:217 move second child to first child (temp int) +0:217 'levels' (temp int) +0:217 textureQueryLevels (global int) +0:217 'samp1DAs' (uniform sampler1DArrayShadow) +0:218 move second child to first child (temp int) +0:218 'levels' (temp int) +0:218 textureQueryLevels (global int) +0:218 'samp2DAs' (uniform sampler2DArrayShadow) +0:219 move second child to first child (temp int) +0:219 'levels' (temp int) +0:219 textureQueryLevels (global int) +0:219 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:221 'levels' (temp int) +0:222 'levels' (temp int) 0:? Linker Objects 0:? 'v4' (layout(location=3 ) temp 4-component vector of float) 0:? 'uv4' (layout(location=4 ) uniform 4-component vector of float) @@ -184,6 +245,21 @@ ERROR: node is still EOpNull! 0:? 'us2dmsa' (uniform usampler2DMSArray) 0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) 0:? 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) +0:? 'samp1D' (uniform sampler1D) +0:? 'usamp2D' (uniform usampler2D) +0:? 'isamp3D' (uniform isampler3D) +0:? 'isampCube' (uniform isamplerCube) +0:? 'isamp1DA' (uniform isampler1DArray) +0:? 'samp2DA' (uniform sampler2DArray) +0:? 'usampCubeA' (uniform usamplerCubeArray) +0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'samp2Ds' (uniform sampler2DShadow) +0:? 'sampCubes' (uniform samplerCubeShadow) +0:? 'samp1DAs' (uniform sampler1DArrayShadow) +0:? 'samp2DAs' (uniform sampler2DArrayShadow) +0:? 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:? 'sampBuf' (uniform samplerBuffer) +0:? 'sampRect' (uniform sampler2DRect) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) @@ -271,6 +347,63 @@ ERROR: node is still EOpNull! 0:181 's' (temp int) 0:181 imageQuerySamples (global int) 0:181 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) +0:202 Function Definition: qlod( (global void) +0:202 Function Parameters: +0:? Sequence +0:206 move second child to first child (temp int) +0:206 'levels' (temp int) +0:206 textureQueryLevels (global int) +0:206 'samp1D' (uniform sampler1D) +0:207 move second child to first child (temp int) +0:207 'levels' (temp int) +0:207 textureQueryLevels (global int) +0:207 'usamp2D' (uniform usampler2D) +0:208 move second child to first child (temp int) +0:208 'levels' (temp int) +0:208 textureQueryLevels (global int) +0:208 'isamp3D' (uniform isampler3D) +0:209 move second child to first child (temp int) +0:209 'levels' (temp int) +0:209 textureQueryLevels (global int) +0:209 'isampCube' (uniform isamplerCube) +0:210 move second child to first child (temp int) +0:210 'levels' (temp int) +0:210 textureQueryLevels (global int) +0:210 'isamp1DA' (uniform isampler1DArray) +0:211 move second child to first child (temp int) +0:211 'levels' (temp int) +0:211 textureQueryLevels (global int) +0:211 'samp2DA' (uniform sampler2DArray) +0:212 move second child to first child (temp int) +0:212 'levels' (temp int) +0:212 textureQueryLevels (global int) +0:212 'usampCubeA' (uniform usamplerCubeArray) +0:214 move second child to first child (temp int) +0:214 'levels' (temp int) +0:214 textureQueryLevels (global int) +0:214 'samp1Ds' (uniform sampler1DShadow) +0:215 move second child to first child (temp int) +0:215 'levels' (temp int) +0:215 textureQueryLevels (global int) +0:215 'samp2Ds' (uniform sampler2DShadow) +0:216 move second child to first child (temp int) +0:216 'levels' (temp int) +0:216 textureQueryLevels (global int) +0:216 'sampCubes' (uniform samplerCubeShadow) +0:217 move second child to first child (temp int) +0:217 'levels' (temp int) +0:217 textureQueryLevels (global int) +0:217 'samp1DAs' (uniform sampler1DArrayShadow) +0:218 move second child to first child (temp int) +0:218 'levels' (temp int) +0:218 textureQueryLevels (global int) +0:218 'samp2DAs' (uniform sampler2DArrayShadow) +0:219 move second child to first child (temp int) +0:219 'levels' (temp int) +0:219 textureQueryLevels (global int) +0:219 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:221 'levels' (temp int) +0:222 'levels' (temp int) 0:? Linker Objects 0:? 'v4' (layout(location=3 ) temp 4-component vector of float) 0:? 'uv4' (layout(location=4 ) uniform 4-component vector of float) @@ -316,6 +449,21 @@ ERROR: node is still EOpNull! 0:? 'us2dmsa' (uniform usampler2DMSArray) 0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) 0:? 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) +0:? 'samp1D' (uniform sampler1D) +0:? 'usamp2D' (uniform usampler2D) +0:? 'isamp3D' (uniform isampler3D) +0:? 'isampCube' (uniform isamplerCube) +0:? 'isamp1DA' (uniform isampler1DArray) +0:? 'samp2DA' (uniform sampler2DArray) +0:? 'usampCubeA' (uniform usamplerCubeArray) +0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'samp2Ds' (uniform sampler2DShadow) +0:? 'sampCubes' (uniform samplerCubeShadow) +0:? 'samp1DAs' (uniform sampler1DArrayShadow) +0:? 'samp2DAs' (uniform sampler2DArrayShadow) +0:? 'sampCubeAs' (uniform samplerCubeArrayShadow) +0:? 'sampBuf' (uniform samplerBuffer) +0:? 'sampRect' (uniform sampler2DRect) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out new file mode 100644 index 0000000000000000000000000000000000000000..2b2b57f8d0cc8760548bb2d4de2fad9dbc30c840 --- /dev/null +++ b/Test/baseResults/spv.queryL.frag.out @@ -0,0 +1,282 @@ +spv.queryL.frag +Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. + + +Linked fragment stage: + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 211 + + Source GLSL 430 + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft + Name 4 "main" + Name 9 "lod" + Name 13 "samp1D" + Name 16 "pf" + 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 140 "usamp2D" + Name 148 "isamp3D" + Name 156 "isampCube" + Name 168 "samp2DA" + Name 176 "usampCubeA" + Name 206 "sampBuf" + Name 210 "sampRect" + Decorate 206(sampBuf) NoStaticUse + Decorate 210(sampRect) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer Function 7(fvec2) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypeSampledImage 10 + 12: TypePointer UniformConstant 11 + 13(samp1D): 12(ptr) Variable UniformConstant + 15: TypePointer Function 6(float) + 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(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) + 137: TypeImage 30(int) 2D sampled format:Unknown + 138: TypeSampledImage 137 + 139: TypePointer UniformConstant 138 + 140(usamp2D): 139(ptr) Variable UniformConstant + 145: TypeImage 19(int) 3D sampled format:Unknown + 146: TypeSampledImage 145 + 147: TypePointer UniformConstant 146 + 148(isamp3D): 147(ptr) Variable UniformConstant + 153: TypeImage 19(int) Cube sampled format:Unknown + 154: TypeSampledImage 153 + 155: TypePointer UniformConstant 154 + 156(isampCube): 155(ptr) Variable UniformConstant + 165: TypeImage 6(float) 2D array sampled format:Unknown + 166: TypeSampledImage 165 + 167: TypePointer UniformConstant 166 + 168(samp2DA): 167(ptr) Variable UniformConstant + 173: TypeImage 30(int) Cube array sampled format:Unknown + 174: TypeSampledImage 173 + 175: TypePointer UniformConstant 174 + 176(usampCubeA): 175(ptr) Variable UniformConstant + 203: TypeImage 6(float) Buffer sampled format:Unknown + 204: TypeSampledImage 203 + 205: TypePointer UniformConstant 204 + 206(sampBuf): 205(ptr) Variable UniformConstant + 207: TypeImage 6(float) Rect sampled format:Unknown + 208: TypeSampledImage 207 + 209: TypePointer UniformConstant 208 + 210(sampRect): 209(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(lod): 8(ptr) Variable Function + 16(pf): 15(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: 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(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: 19(int) ImageQueryLevels 135 + Store 134(levels) 136 + 141: 138 Load 140(usamp2D) + 142: 19(int) ImageQueryLevels 141 + 143: 19(int) Load 134(levels) + 144: 19(int) IAdd 143 142 + Store 134(levels) 144 + 149: 146 Load 148(isamp3D) + 150: 19(int) ImageQueryLevels 149 + 151: 19(int) Load 134(levels) + 152: 19(int) IAdd 151 150 + Store 134(levels) 152 + 157: 154 Load 156(isampCube) + 158: 19(int) ImageQueryLevels 157 + 159: 19(int) Load 134(levels) + 160: 19(int) IAdd 159 158 + Store 134(levels) 160 + 161: 53 Load 55(isamp1DA) + 162: 19(int) ImageQueryLevels 161 + 163: 19(int) Load 134(levels) + 164: 19(int) IAdd 163 162 + Store 134(levels) 164 + 169: 166 Load 168(samp2DA) + 170: 19(int) ImageQueryLevels 169 + 171: 19(int) Load 134(levels) + 172: 19(int) IAdd 171 170 + Store 134(levels) 172 + 177: 174 Load 176(usampCubeA) + 178: 19(int) ImageQueryLevels 177 + 179: 19(int) Load 134(levels) + 180: 19(int) IAdd 179 178 + Store 134(levels) 180 + 181: 80 Load 82(samp1Ds) + 182: 19(int) ImageQueryLevels 181 + Store 134(levels) 182 + 183: 89 Load 91(samp2Ds) + 184: 19(int) ImageQueryLevels 183 + 185: 19(int) Load 134(levels) + 186: 19(int) IAdd 185 184 + Store 134(levels) 186 + 187: 98 Load 100(sampCubes) + 188: 19(int) ImageQueryLevels 187 + 189: 19(int) Load 134(levels) + 190: 19(int) IAdd 189 188 + Store 134(levels) 190 + 191: 107 Load 109(samp1DAs) + 192: 19(int) ImageQueryLevels 191 + 193: 19(int) Load 134(levels) + 194: 19(int) IAdd 193 192 + Store 134(levels) 194 + 195: 116 Load 118(samp2DAs) + 196: 19(int) ImageQueryLevels 195 + 197: 19(int) Load 134(levels) + 198: 19(int) IAdd 197 196 + Store 134(levels) 198 + 199: 125 Load 127(sampCubeAs) + 200: 19(int) ImageQueryLevels 199 + 201: 19(int) Load 134(levels) + 202: 19(int) IAdd 201 200 + Store 134(levels) 202 + Return + FunctionEnd diff --git a/Test/spv.queryL.frag b/Test/spv.queryL.frag new file mode 100644 index 0000000000000000000000000000000000000000..6f4ad5c8897274e23bef95f307c501bcbde41600 --- /dev/null +++ b/Test/spv.queryL.frag @@ -0,0 +1,64 @@ +#version 430 core + +uniform sampler1D samp1D; +uniform isampler2D isamp2D; +uniform usampler2D usamp2D; +uniform isampler3D isamp3D; +uniform usampler3D usamp3D; +uniform samplerCube sampCube; +uniform isamplerCube isampCube; +uniform isampler1DArray isamp1DA; +uniform sampler2DArray samp2DA; +uniform usampler2DArray usamp2DA; +uniform isamplerCubeArray isampCubeA; +uniform usamplerCubeArray usampCubeA; + +uniform sampler1DShadow samp1Ds; +uniform sampler2DShadow samp2Ds; +uniform samplerCubeShadow sampCubes; +uniform sampler1DArrayShadow samp1DAs; +uniform sampler2DArrayShadow samp2DAs; +uniform samplerCubeArrayShadow sampCubeAs; + +uniform samplerBuffer sampBuf; +uniform sampler2DRect sampRect; + +void main() +{ + vec2 lod; + float pf; + vec2 pf2; + vec3 pf3; + + lod = textureQueryLod(samp1D, pf); + lod += textureQueryLod(isamp2D, pf2); + lod += textureQueryLod(usamp3D, pf3); + lod += textureQueryLod(sampCube, pf3); + lod += textureQueryLod(isamp1DA, pf); + lod += textureQueryLod(usamp2DA, pf2); + lod += textureQueryLod(isampCubeA, pf3); + + lod += textureQueryLod(samp1Ds, pf); + lod += textureQueryLod(samp2Ds, pf2); + lod += textureQueryLod(sampCubes, pf3); + lod += textureQueryLod(samp1DAs, pf); + lod += textureQueryLod(samp2DAs, pf2); + lod += textureQueryLod(sampCubeAs, pf3); + + int levels; + + levels = textureQueryLevels(samp1D); + levels += textureQueryLevels(usamp2D); + levels += textureQueryLevels(isamp3D); + levels += textureQueryLevels(isampCube); + levels += textureQueryLevels(isamp1DA); + levels += textureQueryLevels(samp2DA); + levels += textureQueryLevels(usampCubeA); + + levels = textureQueryLevels(samp1Ds); + levels += textureQueryLevels(samp2Ds); + levels += textureQueryLevels(sampCubes); + levels += textureQueryLevels(samp1DAs); + levels += textureQueryLevels(samp2DAs); + levels += textureQueryLevels(sampCubeAs); +} diff --git a/Test/test-spirv-list b/Test/test-spirv-list index a7d8c8de0d2a2fe5cd1c8fcf3e9a7c3503a0e629..bddd8aa81c2a058d882c59ef3feaf943d094024d 100644 --- a/Test/test-spirv-list +++ b/Test/test-spirv-list @@ -80,3 +80,4 @@ spv.voidFunction.frag spv.whileLoop.frag spv.atomic.comp spv.AofA.frag +spv.queryL.frag diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index a6bdb45e0ad311a87775fcda4ba4a7cb5566e4f4..aa5dcd95902c8c55da1fc6c494d29ed31b549214 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "3.0.755" +#define GLSLANG_REVISION "3.0.756" #define GLSLANG_DATE "15-Sep-2015" diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0411a46ebc5a6771924722efb893ae6950490ad8..df7ab84d84d7c706f7f097c8bdc8e92458796b33 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1848,7 +1848,8 @@ void TBuiltIns::initialize(int version, EProfile profile) if (version >= 130) add2ndGenerationSamplingImaging(version, profile); - // printf("%s\n", commonBuiltins.c_str()); + //printf("%s\n", commonBuiltins.c_str()); + //printf("%s\n", stageBuiltins[EShLangFragment].c_str()); } // @@ -1946,21 +1947,21 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile) // void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int version, EProfile profile) { - // - // textureSize - // - if (sampler.image && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430))) return; + // + // textureSize() and imageSize() + // + + int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); if (profile == EEsProfile) commonBuiltins.append("highp "); - int dims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); - if (dims == 1) + if (sizeDims == 1) commonBuiltins.append("int"); else { commonBuiltins.append("ivec"); - commonBuiltins.append(postfixes[dims]); + commonBuiltins.append(postfixes[sizeDims]); } if (sampler.image) commonBuiltins.append(" imageSize(readonly writeonly volatile coherent "); @@ -1972,6 +1973,10 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi else commonBuiltins.append(");\n"); + // + // textureSamples() and imageSamples() + // + // GL_ARB_shader_texture_image_samples // TODO: spec issue? there are no memory qualifiers; how to query a writeonly/readonly image, etc? if (profile != EEsProfile && version >= 430 && sampler.ms) { @@ -1983,6 +1988,32 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi commonBuiltins.append(typeName); commonBuiltins.append(");\n"); } + + // + // textureQueryLod(), fragment stage only + // + + if (profile != EEsProfile && version >= 400 && ! sampler.image && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) { + stageBuiltins[EShLangFragment].append("vec2 textureQueryLod("); + stageBuiltins[EShLangFragment].append(typeName); + if (dimMap[sampler.dim] == 1) + stageBuiltins[EShLangFragment].append(", float"); + else { + stageBuiltins[EShLangFragment].append(", vec"); + stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); + } + stageBuiltins[EShLangFragment].append(");\n"); + } + + // + // textureQueryLevels() + // + + if (profile != EEsProfile && version >= 430 && ! sampler.image && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) { + commonBuiltins.append("int textureQueryLevels("); + commonBuiltins.append(typeName); + commonBuiltins.append(");\n"); + } } //