etnaviv: Report correct number of vertex buffers
authorMarek Vasut <marex@denx.de>
Tue, 31 Dec 2019 10:53:55 +0000 (11:53 +0100)
committerChristian Gmeiner <christian.gmeiner@gmail.com>
Tue, 31 Dec 2019 14:55:04 +0000 (14:55 +0000)
The GCnano has only 4 vertex buffers instead of 16. This information
can be extracted from the GPU status registers and is already stored
in screen->specs.stream_count. Use PIPE_CAP_MAX_VERTEX_BUFFERS to
report this information and permit u_vbuf to reorganize the shaders
to fit.

This fixes the following dEQP on GCnano:
dEQP-GLES2.functional.shaders.conversions.vector_combine.float_float_float_float_to_vec4_vertex

This fixes all the other dEQP-GLES2.functional.shaders.conversions.*
which used to fail on GCnano.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3241>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3241>

src/gallium/drivers/etnaviv/etnaviv_screen.c

index 75d3e1e687761c349e4c5f0faf29f06cf1f2571b..9f9248eceba4ef2eec58a05c126547b2b9092b61 100644 (file)
@@ -188,6 +188,8 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       return 128;
    case PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET:
       return 255;
+   case PIPE_CAP_MAX_VERTEX_BUFFERS:
+      return screen->specs.stream_count;
 
    /* Texturing. */
    case PIPE_CAP_TEXTURE_SHADOW_MAP: