Add support for extension GL_ARB_texture_query_lod. (#2194)

This commit is contained in:
pmistryNV
2020-04-27 22:46:54 -07:00
committed by GitHub
parent b858d41964
commit f03cb290ac
7 changed files with 192 additions and 49 deletions

View File

@@ -99,3 +99,58 @@ void packingFail()
{
uint u19 = packSnorm2x16(v2a); // Error, extension GL_ARB_shading_language_packing is disabled
}
// Testing extension GL_ARB_texture_query_lod
uniform sampler1D samp1D;
uniform sampler2DShadow samp2Ds;
void qlodFail()
{
vec2 lod;
float pf;
vec2 pf2;
vec3 pf3;
lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
}
#extension GL_ARB_texture_query_lod : enable
uniform isampler2D isamp2D;
uniform usampler3D usamp3D;
uniform samplerCube sampCube;
uniform isampler1DArray isamp1DA;
uniform usampler2DArray usamp2DA;
uniform sampler1DShadow samp1Ds;
uniform samplerCubeShadow sampCubes;
uniform sampler1DArrayShadow samp1DAs;
uniform sampler2DArrayShadow samp2DAs;
uniform samplerBuffer sampBuf;
uniform sampler2DRect sampRect;
void qlodPass()
{
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(samp1Ds, pf);
lod = textureQueryLod(samp2Ds, pf2);
lod = textureQueryLod(sampCubes, pf3);
lod = textureQueryLod(samp1DAs, pf);
lod = textureQueryLod(samp2DAs, pf2);
lod = textureQueryLod(sampBuf, pf); // ERROR
lod = textureQueryLod(sampRect, pf2); // ERROR
}

View File

@@ -126,29 +126,15 @@ 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
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
}
int precise; // okay, not a keyword yet
struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet
void fooKeyMem()
{
KeyMem.precise;
}
int precise; // okay, not a keyword yet
struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet
void fooKeyMem()
{
KeyMem.precise;
}
layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range
layout(location=4) uniform vec4 ucolor0; // ERROR: extension is not enabled

View File

@@ -11,13 +11,20 @@ ERROR: 0:53: 'double' : must be qualified as flat in
ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int'
ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding
ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing
ERROR: 12 compilation errors. No code generated.
ERROR: 0:114: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:115: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found
ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: 18 compilation errors. No code generated.
Shader version: 150
Requested GL_ARB_gpu_shader_fp64
Requested GL_ARB_shader_bit_encoding
Requested GL_ARB_shading_language_packing
Requested GL_ARB_texture_query_lod
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
@@ -210,6 +217,79 @@ ERROR: node is still EOpNull!
0:100 'u19' ( temp uint)
0:100 packSnorm2x16 ( global uint)
0:100 'v2a' ( global 2-component vector of float)
0:107 Function Definition: qlodFail( ( global void)
0:107 Function Parameters:
0:? Sequence
0:114 move second child to first child ( temp 2-component vector of float)
0:114 'lod' ( temp 2-component vector of float)
0:114 textureQueryLod ( global 2-component vector of float)
0:114 'samp1D' ( uniform sampler1D)
0:114 'pf' ( temp float)
0:115 move second child to first child ( temp 2-component vector of float)
0:115 'lod' ( temp 2-component vector of float)
0:115 textureQueryLod ( global 2-component vector of float)
0:115 'samp2Ds' ( uniform sampler2DShadow)
0:115 'pf2' ( temp 2-component vector of float)
0:134 Function Definition: qlodPass( ( global void)
0:134 Function Parameters:
0:? Sequence
0:141 move second child to first child ( temp 2-component vector of float)
0:141 'lod' ( temp 2-component vector of float)
0:141 textureQueryLod ( global 2-component vector of float)
0:141 'samp1D' ( uniform sampler1D)
0:141 'pf' ( temp float)
0:142 move second child to first child ( temp 2-component vector of float)
0:142 'lod' ( temp 2-component vector of float)
0:142 textureQueryLod ( global 2-component vector of float)
0:142 'isamp2D' ( uniform isampler2D)
0:142 'pf2' ( temp 2-component vector of float)
0:143 move second child to first child ( temp 2-component vector of float)
0:143 'lod' ( temp 2-component vector of float)
0:143 textureQueryLod ( global 2-component vector of float)
0:143 'usamp3D' ( uniform usampler3D)
0:143 'pf3' ( temp 3-component vector of float)
0:144 move second child to first child ( temp 2-component vector of float)
0:144 'lod' ( temp 2-component vector of float)
0:144 textureQueryLod ( global 2-component vector of float)
0:144 'sampCube' ( uniform samplerCube)
0:144 'pf3' ( temp 3-component vector of float)
0:145 move second child to first child ( temp 2-component vector of float)
0:145 'lod' ( temp 2-component vector of float)
0:145 textureQueryLod ( global 2-component vector of float)
0:145 'isamp1DA' ( uniform isampler1DArray)
0:145 'pf' ( temp float)
0:146 move second child to first child ( temp 2-component vector of float)
0:146 'lod' ( temp 2-component vector of float)
0:146 textureQueryLod ( global 2-component vector of float)
0:146 'usamp2DA' ( uniform usampler2DArray)
0:146 'pf2' ( temp 2-component vector of float)
0:148 move second child to first child ( temp 2-component vector of float)
0:148 'lod' ( temp 2-component vector of float)
0:148 textureQueryLod ( global 2-component vector of float)
0:148 'samp1Ds' ( uniform sampler1DShadow)
0:148 'pf' ( temp float)
0:149 move second child to first child ( temp 2-component vector of float)
0:149 'lod' ( temp 2-component vector of float)
0:149 textureQueryLod ( global 2-component vector of float)
0:149 'samp2Ds' ( uniform sampler2DShadow)
0:149 'pf2' ( temp 2-component vector of float)
0:150 move second child to first child ( temp 2-component vector of float)
0:150 'lod' ( temp 2-component vector of float)
0:150 textureQueryLod ( global 2-component vector of float)
0:150 'sampCubes' ( uniform samplerCubeShadow)
0:150 'pf3' ( temp 3-component vector of float)
0:151 move second child to first child ( temp 2-component vector of float)
0:151 'lod' ( temp 2-component vector of float)
0:151 textureQueryLod ( global 2-component vector of float)
0:151 'samp1DAs' ( uniform sampler1DArrayShadow)
0:151 'pf' ( temp float)
0:152 move second child to first child ( temp 2-component vector of float)
0:152 'lod' ( temp 2-component vector of float)
0:152 textureQueryLod ( global 2-component vector of float)
0:152 'samp2DAs' ( uniform sampler2DArrayShadow)
0:152 'pf2' ( temp 2-component vector of float)
0:154 'lod' ( temp 2-component vector of float)
0:155 'lod' ( temp 2-component vector of float)
0:? Linker Objects
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
0:? 'foo' ( smooth in 4-component vector of float)
@@ -237,6 +317,19 @@ ERROR: node is still EOpNull!
0:? 'uv2c' ( global 2-component vector of uint)
0:? 'v2a' ( global 2-component vector of float)
0:? 'uy' ( global uint)
0:? 'samp1D' ( uniform sampler1D)
0:? 'samp2Ds' ( uniform sampler2DShadow)
0:? 'isamp2D' ( uniform isampler2D)
0:? 'usamp3D' ( uniform usampler3D)
0:? 'sampCube' ( uniform samplerCube)
0:? 'isamp1DA' ( uniform isampler1DArray)
0:? 'usamp2DA' ( uniform usampler2DArray)
0:? 'samp1Ds' ( uniform sampler1DShadow)
0:? 'sampCubes' ( uniform samplerCubeShadow)
0:? 'samp1DAs' ( uniform sampler1DArrayShadow)
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)
Linked fragment stage:
@@ -246,6 +339,7 @@ Shader version: 150
Requested GL_ARB_gpu_shader_fp64
Requested GL_ARB_shader_bit_encoding
Requested GL_ARB_shading_language_packing
Requested GL_ARB_texture_query_lod
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
@@ -308,4 +402,17 @@ ERROR: node is still EOpNull!
0:? 'uv2c' ( global 2-component vector of uint)
0:? 'v2a' ( global 2-component vector of float)
0:? 'uy' ( global uint)
0:? 'samp1D' ( uniform sampler1D)
0:? 'samp2Ds' ( uniform sampler2DShadow)
0:? 'isamp2D' ( uniform isampler2D)
0:? 'usamp3D' ( uniform usampler3D)
0:? 'sampCube' ( uniform samplerCube)
0:? 'isamp1DA' ( uniform isampler1DArray)
0:? 'usamp2DA' ( uniform usampler2DArray)
0:? 'samp1Ds' ( uniform sampler1DShadow)
0:? 'sampCubes' ( uniform samplerCubeShadow)
0:? 'samp1DAs' ( uniform sampler1DArrayShadow)
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
0:? 'sampBuf' ( uniform samplerBuffer)
0:? 'sampRect' ( uniform sampler2DRect)

View File

@@ -35,14 +35,10 @@ 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: 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: 0:152: 'index' : value must be 0 or 1
ERROR: 0:154: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
ERROR: 0:160: 'location' : cannot apply to uniform or buffer block
ERROR: 43 compilation errors. No code generated.
ERROR: 0:138: 'index' : value must be 0 or 1
ERROR: 0:140: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
ERROR: 0:146: 'location' : cannot apply to uniform or buffer block
ERROR: 39 compilation errors. No code generated.
Shader version: 330
@@ -80,18 +76,13 @@ 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 Definition: fooKeyMem( ( 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:147 Function Definition: fooKeyMem( ( global void)
0:147 Function Parameters:
0:149 Sequence
0:149 precise: direct index for structure ( global int)
0:149 'KeyMem' ( global structure{ global int precise})
0:149 Constant:
0:149 0 (const int)
0:135 Sequence
0:135 precise: direct index for structure ( global int)
0:135 'KeyMem' ( global structure{ global int precise})
0:135 Constant:
0:135 0 (const int)
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)
@@ -124,8 +115,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)
0:? 'precise' ( global int)
0:? 'KeyMem' ( global structure{ global int precise})
0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float)
@@ -193,8 +182,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)
0:? 'precise' ( global int)
0:? 'KeyMem' ( global structure{ global int precise})
0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float)