Commit 91c39dae by Geoff Lang

Update the active texture cache before changing the texture binding.

When a new texture is bound, the texture binding state is updated before updating the active texture cache. With this ordering, it is possible to delete the currently bound texture when the binding changes and then use-after-free it when updating the active texture cache. BUG=chromium:1065186 Change-Id: Id6d56b6c6db423755b195cda1e5cf1bcb1ee7aee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124588 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> (cherry picked from commit 1288aa12) Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2156966Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent e514b0cb
......@@ -1170,14 +1170,14 @@ void State::setActiveSampler(unsigned int active)
void State::setSamplerTexture(const Context *context, TextureType type, Texture *texture)
{
mSamplerTextures[type][mActiveSampler].set(context, texture);
if (mProgram && mProgram->getActiveSamplersMask()[mActiveSampler] &&
IsTextureCompatibleWithSampler(type, mProgram->getActiveSamplerTypes()[mActiveSampler]))
{
updateActiveTexture(context, mActiveSampler, texture);
}
mSamplerTextures[type][mActiveSampler].set(context, texture);
mDirtyBits.set(DIRTY_BIT_TEXTURE_BINDINGS);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment