radeonsi/gfx9: fix geometry shaders without output vertices
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 21 Sep 2017 14:50:08 +0000 (16:50 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 29 Sep 2017 09:43:09 +0000 (11:43 +0200)
Not that those are super common or useful, but hey! Fun corner cases
of the API...

Fixes dEQP-GLES31.functional.geometry_shading.emit.*

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
src/gallium/drivers/radeonsi/si_state_shaders.c

index 788631c9863d97486fb2d1f9e8310d1c52a25fec..889cd8e72468c2f3845c5efbf713c160e01a400b 100644 (file)
@@ -644,9 +644,11 @@ static void gfx9_get_gs_info(struct si_shader_selector *es,
        /* MAX_PRIMS_PER_SUBGROUP = gs_prims * max_vert_out * gs_invocations.
         * Make sure we don't go over the maximum value.
         */
-       max_gs_prims = MIN2(max_gs_prims,
-                           max_out_prims /
-                           (gs->gs_max_out_vertices * gs_num_invocations));
+       if (gs->gs_max_out_vertices > 0) {
+               max_gs_prims = MIN2(max_gs_prims,
+                                   max_out_prims /
+                                   (gs->gs_max_out_vertices * gs_num_invocations));
+       }
        assert(max_gs_prims > 0);
 
        /* If the primitive has adjacency, halve the number of vertices