This was crashing for example here: https://chromium-swarm.appspot.com/task?id=4b174a9710848410 https://chromium-swarm.appspot.com/task?id=4b214baec2ee7e10 With this stack: libglesv2!gl::TextureState::isBoundAsSamplerTexture libglesv2!gl::Texture::onUnbindAsSamplerTexture libglesv2!gl::State::unsetActiveTexture+0x9 libglesv2!gl::State::updateActiveTextureState+0x2d2 libglesv2!gl::State::updateActiveTexture+0x3aa libglesv2!gl::State::setSamplerTexture+0x4a1 libglesv2!gl::Context::bindTexture+0x1ab libglesv2!gl::BindTexture+0x99 chrome!GrGLFunction+0x1f chrome!GrGLGpu::bindTexture+0x1a0 chrome!GrGLProgram::bindTextures+0x1b9 chrome!GrGLOpsRenderPass::onBindTextures+0x50 chrome!GrOpsRenderPass::bindTextures+0x106 chrome!GrOpFlushState::bindTextures+0xf chrome!`anonymous namespace'::FillRectOp::onExecute+0xd3 It's unclear how we could end up with a Texture bound that doesn't go through the normal setter functions. I did see a potential hole where textures might not get an unbind call when a Context is torn down. This could lead to bugs in multi-context situations. This protects the set/unset functions in a helper class to ensure we always call onBind/onUnbind and forces the destructor to call unbind. Bug: angleproject:4490 Change-Id: Ied64e02bbe3a37efcab6cbdd4bf2d1b6dcb8b3ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118254 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:Cody Northrop <cnorthrop@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| shaders | Loading commit data... | |
| Blit9.cpp | Loading commit data... | |
| Blit9.h | Loading commit data... | |
| Buffer9.cpp | Loading commit data... | |
| Buffer9.h | Loading commit data... | |
| Context9.cpp | Loading commit data... | |
| Context9.h | Loading commit data... | |
| DebugAnnotator9.cpp | Loading commit data... | |
| DebugAnnotator9.h | Loading commit data... | |
| Fence9.cpp | Loading commit data... | |
| Fence9.h | Loading commit data... | |
| Framebuffer9.cpp | Loading commit data... | |
| Framebuffer9.h | Loading commit data... | |
| Image9.cpp | Loading commit data... | |
| Image9.h | Loading commit data... | |
| IndexBuffer9.cpp | Loading commit data... | |
| IndexBuffer9.h | Loading commit data... | |
| NativeWindow9.cpp | Loading commit data... | |
| NativeWindow9.h | Loading commit data... | |
| Query9.cpp | Loading commit data... | |
| Query9.h | Loading commit data... | |
| RenderTarget9.cpp | Loading commit data... | |
| RenderTarget9.h | Loading commit data... | |
| Renderer9.cpp | Loading commit data... | |
| Renderer9.h | Loading commit data... | |
| ShaderCache.h | Loading commit data... | |
| ShaderExecutable9.cpp | Loading commit data... | |
| ShaderExecutable9.h | Loading commit data... | |
| StateManager9.cpp | Loading commit data... | |
| StateManager9.h | Loading commit data... | |
| SwapChain9.cpp | Loading commit data... | |
| SwapChain9.h | Loading commit data... | |
| TextureStorage9.cpp | Loading commit data... | |
| TextureStorage9.h | Loading commit data... | |
| VertexArray9.h | Loading commit data... | |
| VertexBuffer9.cpp | Loading commit data... | |
| VertexBuffer9.h | Loading commit data... | |
| VertexDeclarationCache.cpp | Loading commit data... | |
| VertexDeclarationCache.h | Loading commit data... | |
| formatutils9.cpp | Loading commit data... | |
| formatutils9.h | Loading commit data... | |
| renderer9_utils.cpp | Loading commit data... | |
| renderer9_utils.h | Loading commit data... | |
| vertexconversion.h | Loading commit data... |