[Mesa-dev] State tracker pipe_surface woes...
Stéphane Marchesin
stephane.marchesin at gmail.com
Fri Sep 2 11:25:16 PDT 2011
Hi,
While debugging some code I ran across the following situation:
- pipe_context c1 is created
- pipe_surface s1 is created
- strb-> surface is set to s1 (s1's refcount goes up)
- pipe_context c1 is destroyed
- strb is destroyed
- strb->surface is destroyed (so s1's refcount is now 0 and we want to
destroy it)
At that point s1 references c1 which is not available any more, so
when we try to call ctx->surface_destroy to destroy s1 we crash.
We discussed this a bit on IRC, and we agreed that the proper
solution, since surfaces outlive their context, is to make surfaces
screen-bound instead. I'm going to implement that unless someone
objects.
As a side note, the same issue will happen with sampler_views, so
it'll get a similar fix.
Stéphane
More information about the mesa-dev
mailing list