Commit 2398b3a4 by John Kessenich

Full stack: implement textureQueryLod(*) and textureQueryLevels(*).

parent ef0118b2
...@@ -125,4 +125,18 @@ layout(location=0, index=1) out vec4 outVar4; // ERROR overlapping ...@@ -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=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) in; // ERROR, not just on in
layout(location=0, index=0) out; // ERROR, need a variable 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 layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block
\ No newline at end of file
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
}
...@@ -138,4 +138,48 @@ void interp() ...@@ -138,4 +138,48 @@ void interp()
float f; float f;
interpolateAtCentroid(f); // ERROR, not interpolant interpolateAtCentroid(f); // ERROR, not interpolant
interpolateAtSample(outp, 0); // 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
}
...@@ -101,3 +101,17 @@ void bits() ...@@ -101,3 +101,17 @@ void bits()
} }
layout(location = 7, index = 1) out vec4 indexedOut; 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
}
...@@ -146,3 +146,14 @@ layout(r8ui) uniform iimage2D i6bad; // ERROR, type mismatch ...@@ -146,3 +146,14 @@ layout(r8ui) uniform iimage2D i6bad; // ERROR, type mismatch
uniform offcheck { uniform offcheck {
layout(offset = 16) int foo; // ERROR layout(offset = 16) int foo; // ERROR
} offcheckI; } 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
...@@ -180,3 +180,44 @@ void fooq2() ...@@ -180,3 +180,44 @@ void fooq2()
s += imageSamples(ii2dms); s += imageSamples(ii2dms);
s += imageSamples(i2dmsa); 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
}
...@@ -33,7 +33,11 @@ ERROR: 0:126: 'index' : can only be used on an output ...@@ -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: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:127: 'location/component/index' : cannot declare a default, use a full declaration
ERROR: 0:128: 'output block' : not supported in this stage: fragment 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 Shader version: 330
...@@ -70,6 +74,11 @@ ERROR: node is still EOpNull! ...@@ -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 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 'outVar' (layout(location=0 index=0 ) out 4-component vector of float)
0:24 'inVar' (smooth in 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:? Linker Objects
0:? 'inVar' (smooth in 4-component vector of float) 0:? 'inVar' (smooth in 4-component vector of float)
0:? 'outVar' (layout(location=0 index=0 ) out 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! ...@@ -102,6 +111,8 @@ ERROR: node is still EOpNull!
0:? 'outVar4' (layout(location=0 index=1 ) out 4-component vector of float) 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:? '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:? 'indexBlockI' (layout(location=26 index=0 ) out block{out int a})
0:? 'samp1D' (uniform sampler1D)
0:? 'samp2Ds' (uniform sampler2DShadow)
Linked fragment stage: Linked fragment stage:
...@@ -143,6 +154,11 @@ ERROR: node is still EOpNull! ...@@ -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 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 'outVar' (layout(location=0 index=0 ) out 4-component vector of float)
0:24 'inVar' (smooth in 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:? Linker Objects
0:? 'inVar' (smooth in 4-component vector of float) 0:? 'inVar' (smooth in 4-component vector of float)
0:? 'outVar' (layout(location=0 index=0 ) out 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! ...@@ -175,4 +191,6 @@ ERROR: node is still EOpNull!
0:? 'outVar4' (layout(location=0 index=1 ) out 4-component vector of float) 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:? '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:? 'indexBlockI' (layout(location=26 index=0 ) out block{out int a})
0:? 'samp1D' (uniform sampler1D)
0:? 'samp2Ds' (uniform sampler2DShadow)
...@@ -19,7 +19,11 @@ ERROR: 0:65: 'invocations' : can only apply to 'in' ...@@ -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:67: 'in' : type must be an array: inbls
ERROR: 0:71: 'triangles' : inconsistent input primitive for array size of inbla 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: 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 Shader version: 400
...@@ -165,6 +169,11 @@ ERROR: node is still EOpNull! ...@@ -165,6 +169,11 @@ ERROR: node is still EOpNull!
0:100 'i2' (temp 2-component vector of int) 0:100 'i2' (temp 2-component vector of int)
0:100 findMSB (global 2-component vector of int) 0:100 findMSB (global 2-component vector of int)
0:100 'u2' (temp 2-component vector of uint) 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:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a}) 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}) 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! ...@@ -182,6 +191,8 @@ ERROR: node is still EOpNull!
0:? 'inbls' (in block{in int a}) 0:? 'inbls' (in block{in int a})
0:? 'inbla' (in 17-element array of 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:? 'indexedOut' (layout(location=7 stream=0 ) out 4-component vector of float)
0:? 'samp1D' (uniform sampler1D)
0:? 'samp2Ds' (uniform sampler2DShadow)
Linked geometry stage: Linked geometry stage:
...@@ -331,6 +342,11 @@ ERROR: node is still EOpNull! ...@@ -331,6 +342,11 @@ ERROR: node is still EOpNull!
0:100 'i2' (temp 2-component vector of int) 0:100 'i2' (temp 2-component vector of int)
0:100 findMSB (global 2-component vector of int) 0:100 findMSB (global 2-component vector of int)
0:100 'u2' (temp 2-component vector of uint) 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:? Linker Objects
0:? 'bn' (in 3-element array of block{in int a}) 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}) 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! ...@@ -348,4 +364,6 @@ ERROR: node is still EOpNull!
0:? 'inbls' (in block{in int a}) 0:? 'inbls' (in block{in int a})
0:? 'inbla' (in 17-element array of 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:? 'indexedOut' (layout(location=7 stream=0 ) out 4-component vector of float)
0:? 'samp1D' (uniform sampler1D)
0:? 'samp2Ds' (uniform sampler2DShadow)
...@@ -49,7 +49,11 @@ ERROR: 0:142: 'r8_snorm' : does not apply to signed integer images ...@@ -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:143: 'rgba32ui' : does not apply to signed integer images
ERROR: 0:144: 'r8ui' : 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: 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 Shader version: 420
...@@ -239,6 +243,11 @@ ERROR: node is still EOpNull! ...@@ -239,6 +243,11 @@ ERROR: node is still EOpNull!
0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D) 0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)
0:136 Function Call: passr(iI21; (global void) 0:136 Function Call: passr(iI21; (global void)
0:136 'iimg2D' (layout(r32i ) uniform iimage2D) 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:? Linker Objects
0:? 'v2' (smooth out 2-component vector of float) 0:? 'v2' (smooth out 2-component vector of float)
0:? 'bad' (in 10-element array of 4-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! ...@@ -290,6 +299,8 @@ ERROR: node is still EOpNull!
0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D) 0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D)
0:? 'i6bad' (layout(r8ui ) 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:? '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_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
...@@ -484,6 +495,11 @@ ERROR: node is still EOpNull! ...@@ -484,6 +495,11 @@ ERROR: node is still EOpNull!
0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D) 0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)
0:136 Function Call: passr(iI21; (global void) 0:136 Function Call: passr(iI21; (global void)
0:136 'iimg2D' (layout(r32i ) uniform iimage2D) 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:? Linker Objects
0:? 'v2' (smooth out 2-component vector of float) 0:? 'v2' (smooth out 2-component vector of float)
0:? 'bad' (in 10-element array of 4-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! ...@@ -535,6 +551,8 @@ ERROR: node is still EOpNull!
0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D) 0:? 'i5bad' (layout(rgba32ui ) uniform iimage2D)
0:? 'i6bad' (layout(r8ui ) 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:? '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_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
...@@ -59,7 +59,11 @@ ERROR: 0:168: 'textureSamples and imageSamples' : not supported for this version ...@@ -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: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: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: 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 Shader version: 430
...@@ -139,6 +143,63 @@ ERROR: node is still EOpNull! ...@@ -139,6 +143,63 @@ ERROR: node is still EOpNull!
0:181 's' (temp int) 0:181 's' (temp int)
0:181 imageQuerySamples (global int) 0:181 imageQuerySamples (global int)
0:181 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) 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:? Linker Objects
0:? 'v4' (layout(location=3 ) temp 4-component vector of float) 0:? 'v4' (layout(location=3 ) temp 4-component vector of float)
0:? 'uv4' (layout(location=4 ) uniform 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! ...@@ -184,6 +245,21 @@ ERROR: node is still EOpNull!
0:? 'us2dmsa' (uniform usampler2DMSArray) 0:? 'us2dmsa' (uniform usampler2DMSArray)
0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) 0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
0:? 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) 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_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
...@@ -271,6 +347,63 @@ ERROR: node is still EOpNull! ...@@ -271,6 +347,63 @@ ERROR: node is still EOpNull!
0:181 's' (temp int) 0:181 's' (temp int)
0:181 imageQuerySamples (global int) 0:181 imageQuerySamples (global int)
0:181 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) 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:? Linker Objects
0:? 'v4' (layout(location=3 ) temp 4-component vector of float) 0:? 'v4' (layout(location=3 ) temp 4-component vector of float)
0:? 'uv4' (layout(location=4 ) uniform 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! ...@@ -316,6 +449,21 @@ ERROR: node is still EOpNull!
0:? 'us2dmsa' (uniform usampler2DMSArray) 0:? 'us2dmsa' (uniform usampler2DMSArray)
0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS) 0:? 'ii2dms' (layout(rgba32i ) uniform iimage2DMS)
0:? 'i2dmsa' (layout(rgba32f ) uniform image2DMSArray) 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_VertexID' (gl_VertexId int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId)
#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);
}
...@@ -80,3 +80,4 @@ spv.voidFunction.frag ...@@ -80,3 +80,4 @@ spv.voidFunction.frag
spv.whileLoop.frag spv.whileLoop.frag
spv.atomic.comp spv.atomic.comp
spv.AofA.frag spv.AofA.frag
spv.queryL.frag
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits. // 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). // 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" #define GLSLANG_DATE "15-Sep-2015"
...@@ -1848,7 +1848,8 @@ void TBuiltIns::initialize(int version, EProfile profile) ...@@ -1848,7 +1848,8 @@ void TBuiltIns::initialize(int version, EProfile profile)
if (version >= 130) if (version >= 130)
add2ndGenerationSamplingImaging(version, profile); 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) ...@@ -1946,21 +1947,21 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile)
// //
void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, 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))) if (sampler.image && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430)))
return; return;
//
// textureSize() and imageSize()
//
int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0);
if (profile == EEsProfile) if (profile == EEsProfile)
commonBuiltins.append("highp "); commonBuiltins.append("highp ");
int dims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); if (sizeDims == 1)
if (dims == 1)
commonBuiltins.append("int"); commonBuiltins.append("int");
else { else {
commonBuiltins.append("ivec"); commonBuiltins.append("ivec");
commonBuiltins.append(postfixes[dims]); commonBuiltins.append(postfixes[sizeDims]);
} }
if (sampler.image) if (sampler.image)
commonBuiltins.append(" imageSize(readonly writeonly volatile coherent "); commonBuiltins.append(" imageSize(readonly writeonly volatile coherent ");
...@@ -1972,6 +1973,10 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi ...@@ -1972,6 +1973,10 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi
else else
commonBuiltins.append(");\n"); commonBuiltins.append(");\n");
//
// textureSamples() and imageSamples()
//
// GL_ARB_shader_texture_image_samples // GL_ARB_shader_texture_image_samples
// TODO: spec issue? there are no memory qualifiers; how to query a writeonly/readonly image, etc? // TODO: spec issue? there are no memory qualifiers; how to query a writeonly/readonly image, etc?
if (profile != EEsProfile && version >= 430 && sampler.ms) { if (profile != EEsProfile && version >= 430 && sampler.ms) {
...@@ -1983,6 +1988,32 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi ...@@ -1983,6 +1988,32 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, TString& typeName, int versi
commonBuiltins.append(typeName); commonBuiltins.append(typeName);
commonBuiltins.append(");\n"); 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");
}
} }
// //
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment