vrend: On GLES don't advertise atomic counters for any shader stage

We always want to lower the atomic counters to SSBO on GLES.

Fixes: 447c8c2bfd90ef654f440353745016b68bbcfc33
  renderer: Do not expose atomic counter availability for fragment shader

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/873>
diff --git a/.gitlab-ci/expectations/host/virgl-gles-fails.txt b/.gitlab-ci/expectations/host/virgl-gles-fails.txt
index 92c7780..6c11680 100644
--- a/.gitlab-ci/expectations/host/virgl-gles-fails.txt
+++ b/.gitlab-ci/expectations/host/virgl-gles-fails.txt
@@ -258,7 +258,6 @@
 spec@arb_sample_shading@samplemask 4@noms partition,Fail
 spec@arb_sample_shading@samplemask 4@sample mask_in_one,Fail
 spec@arb_seamless_cube_map@arb_seamless_cubemap,Fail
-spec@arb_shader_atomic_counter_ops@execution@all_touch_test,Fail
 spec@arb_shader_atomic_counters@fragment-discard,Fail
 spec@arb_shader_image_load_store@early-z,ExpectedFail
 spec@arb_shader_image_load_store@early-z@occlusion query test/early-z pass,ExpectedFail
diff --git a/.gitlab-ci/expectations/virt/virgl-gles-fails.txt b/.gitlab-ci/expectations/virt/virgl-gles-fails.txt
index 89e4472..435619b 100644
--- a/.gitlab-ci/expectations/virt/virgl-gles-fails.txt
+++ b/.gitlab-ci/expectations/virt/virgl-gles-fails.txt
@@ -273,7 +273,6 @@
 spec@arb_sample_shading@samplemask 4@noms partition,Fail
 spec@arb_sample_shading@samplemask 4@sample mask_in_one,Fail
 spec@arb_seamless_cube_map@arb_seamless_cubemap,Fail
-spec@arb_shader_atomic_counter_ops@execution@all_touch_test,Fail
 spec@arb_shader_image_load_store@bitcast,Fail
 spec@arb_shader_image_load_store@bitcast@r11f_g11f_b10f to rgba8_snorm bitcast test,Fail
 spec@arb_shader_image_load_store@bitcast@r32f to rgba8_snorm bitcast test,Fail
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
index d40e80b..c6c5789 100644
--- a/src/vrend_renderer.c
+++ b/src/vrend_renderer.c
@@ -11293,49 +11293,57 @@
    }
 
    if (has_feature(feat_atomic_counters)) {
-      glGetIntegerv(GL_MAX_VERTEX_ATOMIC_COUNTERS,
-                    (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_VERTEX));
-      glGetIntegerv(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS,
-                    (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_VERTEX));
 
-      /* OpenGL ES doesn't have the atomicCounter*() operations, force lowering to ssbo */
-      if (gles_ver > 0) {
-         caps->v2.max_atomic_counters[PIPE_SHADER_FRAGMENT] = 0;
-      } else {
+      /* On GLES hosts we want atomics to be lowered to SSBOs */
+      if (gl_ver > 0) {
+         glGetIntegerv(GL_MAX_VERTEX_ATOMIC_COUNTERS,
+                       (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_VERTEX));
          glGetIntegerv(GL_MAX_FRAGMENT_ATOMIC_COUNTERS,
                        (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_FRAGMENT));
+
+         if (has_feature(feat_geometry_shader)) {
+            glGetIntegerv(GL_MAX_GEOMETRY_ATOMIC_COUNTERS,
+                          (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_GEOMETRY));
+         }
+
+         if (has_feature(feat_tessellation)) {
+            glGetIntegerv(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS,
+                          (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_TESS_CTRL));
+            glGetIntegerv(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS,
+                          (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_TESS_EVAL));
+         }
+
+         if (has_feature(feat_compute_shader)) {
+            glGetIntegerv(GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+                          (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_COMPUTE));
+         }
+
+         glGetIntegerv(GL_MAX_COMBINED_ATOMIC_COUNTERS,
+                       (GLint*)&caps->v2.max_combined_atomic_counters);
       }
 
+      glGetIntegerv(GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS,
+                    (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_VERTEX));
+
       glGetIntegerv(GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS,
                     (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_FRAGMENT));
 
-      if (has_feature(feat_geometry_shader)) {
-         glGetIntegerv(GL_MAX_GEOMETRY_ATOMIC_COUNTERS,
-                       (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_GEOMETRY));
+      if (has_feature(feat_geometry_shader))
          glGetIntegerv(GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS,
                        (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_GEOMETRY));
-      }
 
       if (has_feature(feat_tessellation)) {
-         glGetIntegerv(GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS,
-                       (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_TESS_CTRL));
          glGetIntegerv(GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS,
                        (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_TESS_CTRL));
-         glGetIntegerv(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS,
-                       (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_TESS_EVAL));
          glGetIntegerv(GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS,
                        (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_TESS_EVAL));
       }
 
       if (has_feature(feat_compute_shader)) {
-         glGetIntegerv(GL_MAX_COMPUTE_ATOMIC_COUNTERS,
-                       (GLint*)(caps->v2.max_atomic_counters + PIPE_SHADER_COMPUTE));
          glGetIntegerv(GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS,
                        (GLint*)(caps->v2.max_atomic_counter_buffers + PIPE_SHADER_COMPUTE));
       }
 
-      glGetIntegerv(GL_MAX_COMBINED_ATOMIC_COUNTERS,
-                    (GLint*)&caps->v2.max_combined_atomic_counters);
       glGetIntegerv(GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS,
                     (GLint*)&caps->v2.max_combined_atomic_counter_buffers);
    }