[Mesa-dev] [PATCH 1/2] draw: simplify clip null tri logic

sroland at vmware.com sroland at vmware.com
Tue Apr 24 16:27:07 UTC 2018


From: Roland Scheidegger <sroland at vmware.com>

Simplifies the logic when to emit null tris (albeit the reasons why we
have to do this remain unclear).
This is strictly just logic simplification, the behavior doesn't change
at all.
---
 src/gallium/auxiliary/draw/draw_pipe_clip.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pipe_clip.c b/src/gallium/auxiliary/draw/draw_pipe_clip.c
index 4cfa54b..b7a1b5c 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_clip.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_clip.c
@@ -253,7 +253,7 @@ static void emit_poly(struct draw_stage *stage,
    unsigned i;
    ushort edge_first, edge_middle, edge_last;
    boolean last_tri_was_null = FALSE;
-   boolean tri_was_not_null = FALSE;
+   boolean tri_emitted = FALSE;
 
    if (stage->draw->rasterizer->flatshade_first) {
       edge_first  = DRAW_PIPE_EDGE_FLAG_0;
@@ -289,17 +289,16 @@ static void emit_poly(struct draw_stage *stage,
       }
 
       tri_null = is_tri_null(clipper, &header);
-      /* If we generated a triangle with an area, aka. non-null triangle,
-       * or if the previous triangle was also null then skip all subsequent
-       * null triangles */
-      if ((tri_was_not_null && tri_null) || (last_tri_was_null && tri_null)) {
-         last_tri_was_null = tri_null;
+      /*
+       * If we ever generated a tri (regardless if it had area or not),
+       * skip all subsequent null tris.
+       * FIXME: it is unclear why we always have to emit at least one
+       * tri. Maybe this is hiding bugs elsewhere.
+       */
+      if (tri_null && tri_emitted) {
          continue;
       }
-      last_tri_was_null = tri_null;
-      if (!tri_null) {
-         tri_was_not_null = TRUE;
-      }
+      tri_emitted = TRUE;
 
       if (!edgeflags[i-1]) {
          header.flags &= ~edge_middle;
-- 
2.7.4



More information about the mesa-dev mailing list