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

Modify max binding checks for atomic_uint
diff --git a/Test/450.comp b/Test/450.comp
index fb2b56a..316674d 100644
--- a/Test/450.comp
+++ b/Test/450.comp
@@ -1,5 +1,8 @@
 #version 450 core

 layout(local_size_x = 0) in; // ERROR, 0 not allowed

+

+layout(binding=10000) uniform atomic_uint;     // ERROR

+

 void main()

 {

     shared float f;   // ERROR shared must be global

diff --git a/Test/baseResults/450.comp.out b/Test/baseResults/450.comp.out
index 4ae77cc..ce95f8d 100644
--- a/Test/baseResults/450.comp.out
+++ b/Test/baseResults/450.comp.out
@@ -1,14 +1,15 @@
 450.comp
 ERROR: 0:2: 'local_size_x' : must be at least 1 
-ERROR: 0:5: 'shared' : not allowed in nested scope 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: 'binding' : atomic_uint binding is too large 
+ERROR: 0:8: 'shared' : not allowed in nested scope 
+ERROR: 3 compilation errors.  No code generated.
 
 
 Shader version: 450
 local_size = (1, 1, 1)
 ERROR: node is still EOpNull!
-0:3  Function Definition: main( ( global void)
-0:3    Function Parameters: 
+0:6  Function Definition: main( ( global void)
+0:6    Function Parameters: 
 0:?   Linker Objects
 
 
@@ -18,7 +19,7 @@
 Shader version: 450
 local_size = (1, 1, 1)
 ERROR: node is still EOpNull!
-0:3  Function Definition: main( ( global void)
-0:3    Function Parameters: 
+0:6  Function Definition: main( ( global void)
+0:6    Function Parameters: 
 0:?   Linker Objects
 
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index b9ab5c8..1702341 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -6384,13 +6384,15 @@
 void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
 {
 #ifndef GLSLANG_WEB
-    if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() &&
-        publicType.qualifier.hasOffset()) {
+    if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) {
         if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
             error(loc, "atomic_uint binding is too large", "binding", "");
             return;
         }
-        atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
+
+        if(publicType.qualifier.hasOffset()) {
+            atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
+        }
         return;
     }