If a texture is bound in a GL context the texture object will not be
destroyed by the driver even if the program using the texture freed it.
At least with mesa Gallium drivers the effect that these texture objects
also hold references to sampler views that might have been created and
destroyed in sub-contexts. Now, when a new texture is allocated and
bound to the corresponding texture target, the old texture will finally
be destroyed at this point, and by doing so it will try to access these
already destroyed sampler views, resulting in a use after free.
Consequently, unbind the texture in context 0 after it has been allocated,
so that the driver doesn't hold an additional reference to it that inhibits
its destruction of the texture when the guest program requests this.
v2: Make sure that the texture is also unbound when the allocation function
bails out with an error (Chia-I Wu)
Closes #98
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
macos/master
parent
aa908a612c
commit
a6f9fac9e6
Loading…
Reference in new issue