Unverified Commit 1d258ac3 by John Kessenich Committed by GitHub

Merge pull request #2032 from ShchchowAMD/atomic-uint-binding

Modify max binding checks for atomic_uint
parents 40801e31 891ec09c
#version 450 core #version 450 core
layout(local_size_x = 0) in; // ERROR, 0 not allowed layout(local_size_x = 0) in; // ERROR, 0 not allowed
layout(binding=10000) uniform atomic_uint; // ERROR
void main() void main()
{ {
shared float f; // ERROR shared must be global shared float f; // ERROR shared must be global
......
450.comp 450.comp
ERROR: 0:2: 'local_size_x' : must be at least 1 ERROR: 0:2: 'local_size_x' : must be at least 1
ERROR: 0:5: 'shared' : not allowed in nested scope ERROR: 0:4: 'binding' : atomic_uint binding is too large
ERROR: 2 compilation errors. No code generated. ERROR: 0:8: 'shared' : not allowed in nested scope
ERROR: 3 compilation errors. No code generated.
Shader version: 450 Shader version: 450
local_size = (1, 1, 1) local_size = (1, 1, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:3 Function Definition: main( ( global void) 0:6 Function Definition: main( ( global void)
0:3 Function Parameters: 0:6 Function Parameters:
0:? Linker Objects 0:? Linker Objects
...@@ -18,7 +19,7 @@ Linked compute stage: ...@@ -18,7 +19,7 @@ Linked compute stage:
Shader version: 450 Shader version: 450
local_size = (1, 1, 1) local_size = (1, 1, 1)
ERROR: node is still EOpNull! ERROR: node is still EOpNull!
0:3 Function Definition: main( ( global void) 0:6 Function Definition: main( ( global void)
0:3 Function Parameters: 0:6 Function Parameters:
0:? Linker Objects 0:? Linker Objects
...@@ -6384,13 +6384,15 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, ...@@ -6384,13 +6384,15 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc,
void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType) void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
{ {
#ifndef GLSLANG_WEB #ifndef GLSLANG_WEB
if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() && if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) {
publicType.qualifier.hasOffset()) {
if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
error(loc, "atomic_uint binding is too large", "binding", ""); error(loc, "atomic_uint binding is too large", "binding", "");
return; return;
} }
atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
if(publicType.qualifier.hasOffset()) {
atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
}
return; return;
} }
......
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