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
1c628064
Commit
1c628064
authored
Feb 22, 2021
by
Jeremy Hayes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Require fixed workgroup size declaration
Fix 2479.
parent
9801a9e4
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
0 deletions
+99
-0
negativeWorkGroupSize.comp.out
Test/baseResults/negativeWorkGroupSize.comp.out
+69
-0
negativeWorkGroupSize.comp
Test/negativeWorkGroupSize.comp
+12
-0
ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.cpp
+5
-0
localintermediate.h
glslang/MachineIndependent/localintermediate.h
+12
-0
AST.FromFile.cpp
gtests/AST.FromFile.cpp
+1
-0
No files found.
Test/baseResults/negativeWorkGroupSize.comp.out
0 → 100644
View file @
1c628064
negativeWorkGroupSize.comp
ERROR: 0:4: 'initializer' : can't read from gl_WorkGroupSize before a fixed workgroup size has been declared
ERROR: 1 compilation errors. No code generated.
Shader version: 460
local_size = (64, 1, 1)
ERROR: node is still EOpNull!
0:3 Function Definition: fn( ( global void)
0:3 Function Parameters:
0:4 Sequence
0:4 Sequence
0:4 move second child to first child ( temp 3-component vector of uint)
0:4 'wgs' ( temp 3-component vector of uint)
0:4 Constant:
0:4 1 (const uint)
0:4 1 (const uint)
0:4 1 (const uint)
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:10 Sequence
0:10 Function Call: fn( ( global void)
0:11 Sequence
0:11 move second child to first child ( temp 3-component vector of uint)
0:11 'wgs' ( temp 3-component vector of uint)
0:11 Constant:
0:11 64 (const uint)
0:11 1 (const uint)
0:11 1 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 64 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
Linked compute stage:
Shader version: 460
local_size = (64, 1, 1)
ERROR: node is still EOpNull!
0:3 Function Definition: fn( ( global void)
0:3 Function Parameters:
0:4 Sequence
0:4 Sequence
0:4 move second child to first child ( temp 3-component vector of uint)
0:4 'wgs' ( temp 3-component vector of uint)
0:4 Constant:
0:4 1 (const uint)
0:4 1 (const uint)
0:4 1 (const uint)
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:10 Sequence
0:10 Function Call: fn( ( global void)
0:11 Sequence
0:11 move second child to first child ( temp 3-component vector of uint)
0:11 'wgs' ( temp 3-component vector of uint)
0:11 Constant:
0:11 64 (const uint)
0:11 1 (const uint)
0:11 1 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 64 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
Test/negativeWorkGroupSize.comp
0 → 100644
View file @
1c628064
#version 460
void fn(){
uvec3 wgs = gl_WorkGroupSize; // error: fixed workgroup size has not been declared
}
layout(local_size_x = 64) in; // declare workgroup size
void main(){
fn();
uvec3 wgs = gl_WorkGroupSize; // valid
}
glslang/MachineIndependent/ParseHelper.cpp
View file @
1c628064
...
...
@@ -2756,6 +2756,11 @@ void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TInt
if
(
!
(
symNode
&&
symNode
->
getQualifier
().
isWriteOnly
()))
// base class checks
if
(
symNode
&&
symNode
->
getQualifier
().
isExplicitInterpolation
())
error
(
loc
,
"can't read from explicitly-interpolated object: "
,
op
,
symNode
->
getName
().
c_str
());
// local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned.
if
(
node
->
getQualifier
().
builtIn
==
EbvWorkGroupSize
&&
!
(
intermediate
.
isLocalSizeSet
()
||
intermediate
.
isLocalSizeSpecialized
()))
error
(
loc
,
"can't read from gl_WorkGroupSize before a fixed workgroup size has been declared"
,
op
,
""
);
}
//
...
...
glslang/MachineIndependent/localintermediate.h
View file @
1c628064
...
...
@@ -550,6 +550,11 @@ public:
return
true
;
}
unsigned
int
getLocalSize
(
int
dim
)
const
{
return
localSize
[
dim
];
}
bool
isLocalSizeSet
()
const
{
// Return true if any component has been set (i.e. any component is not default).
return
localSizeNotDefault
[
0
]
||
localSizeNotDefault
[
1
]
||
localSizeNotDefault
[
2
];
}
bool
setLocalSizeSpecId
(
int
dim
,
int
id
)
{
if
(
localSizeSpecId
[
dim
]
!=
TQualifier
::
layoutNotSet
)
...
...
@@ -558,6 +563,13 @@ public:
return
true
;
}
int
getLocalSizeSpecId
(
int
dim
)
const
{
return
localSizeSpecId
[
dim
];
}
bool
isLocalSizeSpecialized
()
const
{
// Return true if any component has been specialized.
return
localSizeSpecId
[
0
]
!=
TQualifier
::
layoutNotSet
||
localSizeSpecId
[
1
]
!=
TQualifier
::
layoutNotSet
||
localSizeSpecId
[
2
]
!=
TQualifier
::
layoutNotSet
;
}
#ifdef GLSLANG_WEB
void
output
(
TInfoSink
&
,
bool
tree
)
{
}
...
...
gtests/AST.FromFile.cpp
View file @
1c628064
...
...
@@ -280,6 +280,7 @@ INSTANTIATE_TEST_SUITE_P(
"glsl.es320.subgroupVote.comp"
,
"terminate.frag"
,
"terminate.vert"
,
"negativeWorkGroupSize.comp"
,
})),
FileNameAsCustomTestSuffix
);
...
...
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