It looks like we could want this series into -stable (?) On Fri, 2017-07-07 at 08:10 -0600, Brian Paul wrote: > From: Olivier Lauffenburger <o.lauffenbur...@topsolid.com> > > glPrimitiveRestartNV crashes when it is called during the compilation > of a display list. > > There are two reasons: > - ctx->Driver.CurrentSavePrimitive is not set to the current primitive > - save_PrimitiveRestartNV() calls _save_Begin() which only sets an > OpenGL error, instead of calling vbo_save_NotifyBegin(). > > This patch correctly calls vbo_save_NotifyBegin() but it detects > the current primitive mode by looking at the latest saved primitive. > > Additional work by Brian Paul > > Signed-off-by: Olivier Lauffenburger <o.lauffenbur...@topsolid.com> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101464 > Reviewed-by: Brian Paul <bri...@vmware.com> > --- > src/mesa/vbo/vbo_save_api.c | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c > index a42a3c3..aab5f54 100644 > --- a/src/mesa/vbo/vbo_save_api.c > +++ b/src/mesa/vbo/vbo_save_api.c > @@ -1108,13 +1108,23 @@ _save_Begin(GLenum mode) > static void GLAPIENTRY > _save_PrimitiveRestartNV(void) > { > - GLenum curPrim; > GET_CURRENT_CONTEXT(ctx); > + struct vbo_save_context *save = &vbo_context(ctx)->save; > > - curPrim = ctx->Driver.CurrentSavePrimitive; > - > - _save_End(); > - _save_Begin(curPrim); > + if (save->prim_count == 0) { > + /* We're not inside a glBegin/End pair, so calling > glPrimitiverRestartNV > + * is an error. > + */ > + _mesa_compile_error(ctx, GL_INVALID_OPERATION, > + "glPrimitiveRestartNV called outside glBegin/End"); > + } else { > + /* get current primitive mode */ > + GLenum curPrim = save->prim[save->prim_count - 1].mode; > + > + /* restart primitive */ > + CALL_End(GET_DISPATCH(), ()); > + vbo_save_NotifyBegin(ctx, curPrim); > + } > } > > -- Br,
Andres _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev