st/mesa: call glthread_destroy() before _vbo_DestroyContext()
Otherwise we have a race condition between vbo calls in the glthread and the _vbo_DestroyContext() call. This fixes a bunch of piglit crashes. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -1294,8 +1294,6 @@ _mesa_free_context_data( struct gl_context *ctx )
|
||||
_mesa_make_current(ctx, NULL, NULL);
|
||||
}
|
||||
|
||||
_mesa_glthread_destroy(ctx);
|
||||
|
||||
/* unreference WinSysDraw/Read buffers */
|
||||
_mesa_reference_framebuffer(&ctx->WinSysDrawBuffer, NULL);
|
||||
_mesa_reference_framebuffer(&ctx->WinSysReadBuffer, NULL);
|
||||
|
||||
@@ -575,6 +575,9 @@ void st_destroy_context( struct st_context *st )
|
||||
struct gl_context *ctx = st->ctx;
|
||||
GLuint i;
|
||||
|
||||
/* This must be called first so that glthread has a chance to finish */
|
||||
_mesa_glthread_destroy(ctx);
|
||||
|
||||
_mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st);
|
||||
|
||||
st_reference_fragprog(st, &st->fp, NULL);
|
||||
|
||||
Reference in New Issue
Block a user