I thought just changing the prim type would cause the loop to not get closed in the end, albeit I looked at it only briefly (I thought the DRAW_SPLIT_AFTER/BEFORE flags were supposed to be able to deal with this but couldn't figure out how). But if this works correctly,
Reviewed-by: Roland Scheidegger <srol...@vmware.com> Am 17.10.2015 um 20:27 schrieb Brian Paul: > When the draw module splits long line loops, the sections are emitted > as line strips. But the primitive type wasn't set correctly so each > section was being drawn as a loop, introducing extra line segments. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81174 > --- > src/gallium/auxiliary/draw/draw_pt_vsplit.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit.c > b/src/gallium/auxiliary/draw/draw_pt_vsplit.c > index 8d448f9..02f7e71 100644 > --- a/src/gallium/auxiliary/draw/draw_pt_vsplit.c > +++ b/src/gallium/auxiliary/draw/draw_pt_vsplit.c > @@ -256,8 +256,11 @@ static void vsplit_prepare(struct draw_pt_front_end > *frontend, > break; > } > > - /* split only */ > - vsplit->prim = in_prim; > + /* Line loops get split into line strips. Other types stay as-is. */ > + if (in_prim == PIPE_PRIM_LINE_LOOP) > + vsplit->prim = PIPE_PRIM_LINE_STRIP; > + else > + vsplit->prim = in_prim; > > vsplit->middle = middle; > middle->prepare(middle, vsplit->prim, opt, &vsplit->max_vertices); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev