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
00c6d2d4
Unverified
Commit
00c6d2d4
authored
Feb 24, 2021
by
greg-lunarg
Committed by
GitHub
Feb 24, 2021
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2549 from jeremy-lunarg/hayes-2479
Require fixed workgroup size declaration
parents
9801a9e4
1c628064
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 @
00c6d2d4
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 @
00c6d2d4
#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 @
00c6d2d4
...
@@ -2756,6 +2756,11 @@ void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TInt
...
@@ -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
().
isWriteOnly
()))
// base class checks
if
(
symNode
&&
symNode
->
getQualifier
().
isExplicitInterpolation
())
if
(
symNode
&&
symNode
->
getQualifier
().
isExplicitInterpolation
())
error
(
loc
,
"can't read from explicitly-interpolated object: "
,
op
,
symNode
->
getName
().
c_str
());
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 @
00c6d2d4
...
@@ -550,6 +550,11 @@ public:
...
@@ -550,6 +550,11 @@ public:
return
true
;
return
true
;
}
}
unsigned
int
getLocalSize
(
int
dim
)
const
{
return
localSize
[
dim
];
}
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
)
bool
setLocalSizeSpecId
(
int
dim
,
int
id
)
{
{
if
(
localSizeSpecId
[
dim
]
!=
TQualifier
::
layoutNotSet
)
if
(
localSizeSpecId
[
dim
]
!=
TQualifier
::
layoutNotSet
)
...
@@ -558,6 +563,13 @@ public:
...
@@ -558,6 +563,13 @@ public:
return
true
;
return
true
;
}
}
int
getLocalSizeSpecId
(
int
dim
)
const
{
return
localSizeSpecId
[
dim
];
}
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
#ifdef GLSLANG_WEB
void
output
(
TInfoSink
&
,
bool
tree
)
{
}
void
output
(
TInfoSink
&
,
bool
tree
)
{
}
...
...
gtests/AST.FromFile.cpp
View file @
00c6d2d4
...
@@ -280,6 +280,7 @@ INSTANTIATE_TEST_SUITE_P(
...
@@ -280,6 +280,7 @@ INSTANTIATE_TEST_SUITE_P(
"glsl.es320.subgroupVote.comp"
,
"glsl.es320.subgroupVote.comp"
,
"terminate.frag"
,
"terminate.frag"
,
"terminate.vert"
,
"terminate.vert"
,
"negativeWorkGroupSize.comp"
,
})),
})),
FileNameAsCustomTestSuffix
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