Revert "Atomic memory function can only be used for shader storage block member or...
authorGreg Fischer <greg@lunarg.com>
Thu, 8 Jul 2021 19:10:58 +0000 (13:10 -0600)
committerGitHub <noreply@github.com>
Thu, 8 Jul 2021 19:10:58 +0000 (13:10 -0600)
Test/atomicAdd.comp [deleted file]
Test/baseResults/atomicAdd.comp.out [deleted file]
glslang/MachineIndependent/ParseHelper.cpp
gtests/AST.FromFile.cpp

diff --git a/Test/atomicAdd.comp b/Test/atomicAdd.comp
deleted file mode 100644 (file)
index 65aa962..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#version 320 es\r
-layout(local_size_x = 1) in;\r
-\r
-struct structType{\r
-    int y[3];\r
-};\r
-\r
-layout(std430) buffer t2 {\r
-    structType f;\r
-} t;\r
-\r
-buffer coherent Buffer { int x; };\r
-int z;\r
-\r
-void main() {\r
-  atomicAdd(x, 1);\r
-  atomicAdd(t.f.y[1], 1);\r
-  atomicAdd(z, 1);\r
-}\r
diff --git a/Test/baseResults/atomicAdd.comp.out b/Test/baseResults/atomicAdd.comp.out
deleted file mode 100644 (file)
index 6752a71..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-atomicAdd.comp
-ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable. 
-ERROR: 1 compilation errors.  No code generated.
-
-
-Shader version: 320
-local_size = (1, 1, 1)
-ERROR: node is still EOpNull!
-0:15  Function Definition: main( ( global void)
-0:15    Function Parameters: 
-0:16    Sequence
-0:16      AtomicAdd ( global highp int)
-0:16        x: direct index for structure (layout( column_major shared) coherent buffer highp int)
-0:16          'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
-0:16          Constant:
-0:16            0 (const uint)
-0:16        Constant:
-0:16          1 (const int)
-0:17      AtomicAdd ( global highp int)
-0:17        direct index (layout( std430) temp highp int)
-0:17          y: direct index for structure (layout( std430) global 3-element array of highp int)
-0:17            f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
-0:17              't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
-0:17              Constant:
-0:17                0 (const int)
-0:17            Constant:
-0:17              0 (const int)
-0:17          Constant:
-0:17            1 (const int)
-0:17        Constant:
-0:17          1 (const int)
-0:18      AtomicAdd ( global highp int)
-0:18        'z' ( global highp int)
-0:18        Constant:
-0:18          1 (const int)
-0:?   Linker Objects
-0:?     'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
-0:?       1 (const uint)
-0:?       1 (const uint)
-0:?       1 (const uint)
-0:?     't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
-0:?     'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
-0:?     'z' ( global highp int)
-
-
-Linked compute stage:
-
-
-Shader version: 320
-local_size = (1, 1, 1)
-ERROR: node is still EOpNull!
-0:15  Function Definition: main( ( global void)
-0:15    Function Parameters: 
-0:16    Sequence
-0:16      AtomicAdd ( global highp int)
-0:16        x: direct index for structure (layout( column_major shared) coherent buffer highp int)
-0:16          'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
-0:16          Constant:
-0:16            0 (const uint)
-0:16        Constant:
-0:16          1 (const int)
-0:17      AtomicAdd ( global highp int)
-0:17        direct index (layout( std430) temp highp int)
-0:17          y: direct index for structure (layout( std430) global 3-element array of highp int)
-0:17            f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
-0:17              't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
-0:17              Constant:
-0:17                0 (const int)
-0:17            Constant:
-0:17              0 (const int)
-0:17          Constant:
-0:17            1 (const int)
-0:17        Constant:
-0:17          1 (const int)
-0:18      AtomicAdd ( global highp int)
-0:18        'z' ( global highp int)
-0:18        Constant:
-0:18          1 (const int)
-0:?   Linker Objects
-0:?     'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
-0:?       1 (const uint)
-0:?       1 (const uint)
-0:?       1 (const uint)
-0:?     't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
-0:?     'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
-0:?     'z' ( global highp int)
-
index 7d32746..c2b9edc 100644 (file)
@@ -2409,12 +2409,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
                    arg0->getType().isFloatingDomain()) {
             requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str());
         }
-
-        const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true);
-        const TQualifier& qualifier = base->getType().getQualifier();
-        if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer)
-            error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", fnCandidate.getName().c_str(), "");
-
         break;
     }
 
index cedd558..77f0aaf 100644 (file)
@@ -282,7 +282,6 @@ INSTANTIATE_TEST_SUITE_P(
         "terminate.vert",
         "negativeWorkGroupSize.comp",
         "textureoffset_sampler2darrayshadow.vert",
-        "atomicAdd.comp",
     })),
     FileNameAsCustomTestSuffix
 );