v3d: Disable SSBOs and atomic counters on vertex shaders.
authorEric Anholt <eric@anholt.net>
Mon, 22 Apr 2019 18:24:55 +0000 (11:24 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 25 Apr 2019 00:24:11 +0000 (17:24 -0700)
The CTS fails on
dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.*vertex
when they are enabled, due to the VS being run for both bin and render.  I
think this behavior is expected to be valid, but I can't find text in
atomic counters or SSBO specs saying so (the closed I found was in
shader_image_load_store).  Just disable it for now, since the closed
source driver doesn't expose vertex atomic counters/SSBOs either.

src/gallium/drivers/v3d/v3d_screen.c

index 0d9184279dff11d9f984474a228c39118430e7c4..0405882b6ff462f64f5b73d6c83f4bc03cc56417 100644 (file)
@@ -336,6 +336,9 @@ v3d_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
                 return V3D_MAX_TEXTURE_SAMPLERS;
 
         case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
+                if (shader == PIPE_SHADER_VERTEX)
+                        return 0;
+
                 return PIPE_MAX_SHADER_BUFFERS;
 
         case PIPE_SHADER_CAP_MAX_SHADER_IMAGES: