st/mesa: fix texture deletion context mix-up issues (v2)
authorBrian Paul <brianp@vmware.com>
Thu, 21 Mar 2019 19:41:12 +0000 (13:41 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 25 Mar 2019 12:57:57 +0000 (06:57 -0600)
commit08d97aadd14e4ba66a21939b0ad7ed6e24824745
tree105be410afb1ae7572b76b6ac456eca87cab6f48
parentd13167cd2177849a65fadc2d08a2d3adf7c76e65
st/mesa: fix texture deletion context mix-up issues (v2)

When we destroy a context, we need to temporarily make that context
the current one for the thread.

That's because during context tear-down we make many calls to
_mesa_reference_texobj(&texObj, NULL).  Note there's no context
parameter.  If the texture's refcount goes to zero and we need to
delete it, we use the thread's current context.  But if that context
isn't the context we're tearing down, we get into trouble when
deallocating sampler views.  See patch 593e36f956 ("st/mesa:
implement "zombie" sampler views (v2)") for background information.

Also, we need to release any sampler views attached to the fallback
textures.

Fixes a crash on exit with a glretrace of the Nobel Clinician
application.

v2: at end of st_destroy_context(), check if save_ctx == ctx and
unbind the context if so.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/mesa/state_tracker/st_context.c