mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
draw: fix point/line/tri flushing bug in vbuf code
Need to reset the point/line/tri functions to point to the "first" versions whenever we flush vertices. Fixes unfilled polygon rendering errors seen in demos/samples/logo.c. See comments for more info. NOTE: This is a candidate for the 7.10 branch.
This commit is contained in:
parent
72239d16cd
commit
931432fea6
1 changed files with 10 additions and 4 deletions
|
|
@ -341,6 +341,16 @@ vbuf_flush_vertices( struct vbuf_stage *vbuf )
|
|||
vbuf->max_vertices = vbuf->nr_vertices = 0;
|
||||
vbuf->vertex_ptr = vbuf->vertices = NULL;
|
||||
}
|
||||
|
||||
/* Reset point/line/tri function pointers.
|
||||
* If (for example) we transition from points to tris and back to points
|
||||
* again, we need to call the vbuf_first_point() function again to flush
|
||||
* the triangles before drawing more points. This can happen when drawing
|
||||
* with front polygon mode = filled and back polygon mode = line or point.
|
||||
*/
|
||||
vbuf->stage.point = vbuf_first_point;
|
||||
vbuf->stage.line = vbuf_first_line;
|
||||
vbuf->stage.tri = vbuf_first_tri;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -378,10 +388,6 @@ vbuf_flush( struct draw_stage *stage, unsigned flags )
|
|||
struct vbuf_stage *vbuf = vbuf_stage( stage );
|
||||
|
||||
vbuf_flush_vertices( vbuf );
|
||||
|
||||
stage->point = vbuf_first_point;
|
||||
stage->line = vbuf_first_line;
|
||||
stage->tri = vbuf_first_tri;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue