draw: fix vbuf caching of vertices with inject front face
authorZack Rusin <zackr@vmware.com>
Tue, 10 Dec 2013 05:06:48 +0000 (00:06 -0500)
committerZack Rusin <zackr@vmware.com>
Tue, 10 Dec 2013 21:40:54 +0000 (16:40 -0500)
Caching in the vbuf module meant that once a vertex has been
emitted it was cached, but it's possible for a vertex at the
same location to be emitted again, but this time with a different
front-face semantic. Caching was causing the first version of the
vertex to be emitted, which resulted in the renderer getting
incorrect front-face attributes. By reseting the vertex_id (which
is used for caching) we make sure that once a front-face info
has been injected the vertex will endup getting emitted.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/draw/draw_pipe_unfilled.c

index 8cba07c34bc8c825e46b4767fd865f20fbbf8c89..4f0326bf3998becbebc97c806cdfbc4fe9add791 100644 (file)
@@ -81,6 +81,7 @@ inject_front_face_info(struct draw_stage *stage,
       v->data[slot][1] = is_front_face;
       v->data[slot][2] = is_front_face;
       v->data[slot][3] = is_front_face;
+      v->vertex_id = UNDEFINED_VERTEX_ID;
    }
 }