Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Mon, Feb 25, 2019 at 5:03 PM Brian Paul <bri...@vmware.com> wrote: > This fixes a failed assertion in glDeleteLists() for the following > case: > > list = glGenLists(1); > glDeleteLists(list, 1); > > when those are the first display list commands issued by the > application. > > When we generate display lists, we plug in empty lists created with > the make_list() helper. This function uses the OPCODE_END_OF_LIST > opcode but does not call dlist_alloc() which would set the > InstSize[OPCODE_END_OF_LIST] element to non-zero. > > When the empty list was deleted, we failed the InstSize[opcode] > 0 > assertion. > > Typically, display lists are created with glNewList/glEndList so we > set InstSize[OPCODE_END_OF_LIST] = 1 in dlist_alloc(). That's why > this bug wasn't found before. > > To fix this failure, simply initialize the InstSize[OPCODE_END_OF_LIST] > element in make_list(). > > The game oolite was hitting this. > > Fixes: https://github.com/OoliteProject/oolite/issues/325 > --- > src/mesa/main/dlist.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c > index 97461ce..8dcf8bd 100644 > --- a/src/mesa/main/dlist.c > +++ b/src/mesa/main/dlist.c > @@ -962,6 +962,8 @@ make_list(GLuint name, GLuint count) > dlist->Name = name; > dlist->Head = malloc(sizeof(Node) * count); > dlist->Head[0].opcode = OPCODE_END_OF_LIST; > + /* All InstSize[] entries must be non-zero */ > + InstSize[OPCODE_END_OF_LIST] = 1; > return dlist; > } > > -- > 1.8.5.6 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev