Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
f03cb290
Unverified
Commit
f03cb290
authored
Apr 27, 2020
by
pmistryNV
Committed by
GitHub
Apr 27, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for extension GL_ARB_texture_query_lod. (#2194)
parent
b858d419
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
192 additions
and
49 deletions
+192
-49
150.frag
Test/150.frag
+55
-0
330.frag
Test/330.frag
+9
-23
150.frag.out
Test/baseResults/150.frag.out
+108
-1
330.frag.out
Test/baseResults/330.frag.out
+10
-23
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+7
-2
Versions.cpp
glslang/MachineIndependent/Versions.cpp
+2
-0
Versions.h
glslang/MachineIndependent/Versions.h
+1
-0
No files found.
Test/150.frag
View file @
f03cb290
...
...
@@ -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
}
Test/330.frag
View file @
f03cb290
...
...
@@ -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
...
...
Test/baseResults/150.frag.out
View file @
f03cb290
...
...
@@ -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)
Test/baseResults/330.frag.out
View file @
f03cb290
...
...
@@ -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)
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
f03cb290
...
...
@@ -5843,9 +5843,9 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
//
// textureQueryLod(), fragment stage only
//
//
Also enabled with extension GL_ARB_texture_query_lod
if
(
profile
!=
EEsProfile
&&
version
>=
40
0
&&
sampler
.
isCombined
()
&&
sampler
.
dim
!=
EsdRect
&&
if
(
profile
!=
EEsProfile
&&
version
>=
15
0
&&
sampler
.
isCombined
()
&&
sampler
.
dim
!=
EsdRect
&&
!
sampler
.
isMultiSample
()
&&
!
sampler
.
isBuffer
())
{
for
(
int
f16TexAddr
=
0
;
f16TexAddr
<
2
;
++
f16TexAddr
)
{
if
(
f16TexAddr
&&
sampler
.
type
!=
EbtFloat16
)
...
...
@@ -7549,6 +7549,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable
(
"gl_FragStencilRefARB"
,
EbvFragStencilRef
,
symbolTable
);
}
if
(
profile
!=
EEsProfile
&&
version
<
400
)
{
symbolTable
.
setFunctionExtensions
(
"textureQueryLod"
,
1
,
&
E_GL_ARB_texture_query_lod
);
}
if
(
profile
!=
EEsProfile
&&
version
>=
460
)
{
symbolTable
.
setFunctionExtensions
(
"rayQueryInitializeEXT"
,
1
,
&
E_GL_EXT_ray_query
);
symbolTable
.
setFunctionExtensions
(
"rayQueryTerminateEXT"
,
1
,
&
E_GL_EXT_ray_query
);
...
...
@@ -8065,6 +8069,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable
.
setFunctionExtensions
(
"groupMemoryBarrier"
,
1
,
&
E_GL_ARB_compute_shader
);
}
symbolTable
.
setFunctionExtensions
(
"controlBarrier"
,
1
,
&
E_GL_KHR_memory_scope_semantics
);
symbolTable
.
setFunctionExtensions
(
"debugPrintfEXT"
,
1
,
&
E_GL_EXT_debug_printf
);
...
...
glslang/MachineIndependent/Versions.cpp
View file @
f03cb290
...
...
@@ -201,6 +201,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior
[
E_GL_ARB_shader_image_size
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_shader_storage_buffer_object
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_shading_language_packing
]
=
EBhDisable
;
extensionBehavior
[
E_GL_ARB_texture_query_lod
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_basic
]
=
EBhDisable
;
extensionBehavior
[
E_GL_KHR_shader_subgroup_vote
]
=
EBhDisable
;
...
...
@@ -417,6 +418,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_ARB_uniform_buffer_object 1
\n
"
"#define GL_ARB_shader_bit_encoding 1
\n
"
"#define GL_ARB_shader_storage_buffer_object 1
\n
"
"#define GL_ARB_texture_query_lod 1
\n
"
"#define GL_EXT_shader_non_constant_global_initializers 1
\n
"
"#define GL_EXT_shader_image_load_formatted 1
\n
"
"#define GL_EXT_post_depth_coverage 1
\n
"
...
...
glslang/MachineIndependent/Versions.h
View file @
f03cb290
...
...
@@ -156,6 +156,7 @@ const char* const E_GL_ARB_shader_bit_encoding = "GL_ARB_shader_bit_enc
const
char
*
const
E_GL_ARB_shader_image_size
=
"GL_ARB_shader_image_size"
;
const
char
*
const
E_GL_ARB_shader_storage_buffer_object
=
"GL_ARB_shader_storage_buffer_object"
;
const
char
*
const
E_GL_ARB_shading_language_packing
=
"GL_ARB_shading_language_packing"
;
const
char
*
const
E_GL_ARB_texture_query_lod
=
"GL_ARB_texture_query_lod"
;
const
char
*
const
E_GL_KHR_shader_subgroup_basic
=
"GL_KHR_shader_subgroup_basic"
;
const
char
*
const
E_GL_KHR_shader_subgroup_vote
=
"GL_KHR_shader_subgroup_vote"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment