gallium/util: Support POLYGON in u_stream_outputs_for_vertices
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 6 Dec 2019 21:45:57 +0000 (16:45 -0500)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 9 Dec 2019 21:09:05 +0000 (21:09 +0000)
u_decomposed_prims_for_vertices cannot support POLYGON, but POLYGON is
trivial to support as a special case directly (since we have the number
of vertices directly).

Fixes aborts in Panfrost in apps using GL_POLYGON.

Fixes: e881aa8c12c ("gallium/util: Add u_stream_outputs_for_vertices helper")
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Revewied-by: Eric Anholt <eric@anholt.net>
src/gallium/auxiliary/util/u_prim.h

index d80e235ffd9f4ef4e18a8240671aa3bdb286a16c..b4c06df01e0fae902ac181aca366848f9c881530 100644 (file)
@@ -338,7 +338,14 @@ u_stream_outputs_for_vertices(enum pipe_prim_type primitive, unsigned nr)
    /* Extraneous vertices don't contribute to stream outputs */
    u_trim_pipe_prim(primitive, &nr);
 
-   /* Consider how many primitives are actually generated */
+   /* Polygons are special, since they are a single primitive with many
+    * vertices. In this case, we just have an output for each vertex (after
+    * trimming) */
+
+   if (primitive == PIPE_PRIM_POLYGON)
+      return nr;
+
+   /* Normally, consider how many primitives are actually generated */
    unsigned prims = u_decomposed_prims_for_vertices(primitive, nr);
 
    /* One output per vertex after decomposition */