aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-10-06 23:15:42 -0700
committerEric Anholt <eric@anholt.net>2016-10-25 22:19:29 -0700
commit71d266052b09c031707139466163a7087f0acc19 (patch)
treedbafeed70ceb3cc9339bc5e078c1db7faa8bc89e /components/script
parentdba7d5eb51b5eb433f47a948f66df77920b06191 (diff)
downloadservo-71d266052b09c031707139466163a7087f0acc19.tar.gz
servo-71d266052b09c031707139466163a7087f0acc19.zip
webgl: Re-check FBO status on binding an FBO.
When the FBO has been unbound, anything that happened to its attachments (deletion, new binding, reallocation) may have caused it to change status. This doesn't change any test results currently, because we're not checking if the attachments are deleted, the wrong size, or have appropriate formats.
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/webglframebuffer.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs
index 0211a0bc31f..8e22f17d079 100644
--- a/components/script/dom/webglframebuffer.rs
+++ b/components/script/dom/webglframebuffer.rs
@@ -89,6 +89,11 @@ impl WebGLFramebuffer {
}
pub fn bind(&self, target: u32) {
+ // Update the framebuffer status on binding. It may have
+ // changed if its attachments were resized or deleted while
+ // we've been unbound.
+ self.update_status();
+
self.target.set(Some(target));
let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id));
self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap();