Add extra debug assertions for WebGL errors

This commit is contained in:
Alan Jeffrey 2019-12-06 14:56:46 -06:00
parent cfa50b8222
commit 44db86fefd

View file

@ -680,10 +680,14 @@ impl WebGLThread {
) )
.expect("Where's the GL data?"); .expect("Where's the GL data?");
// Ensure there are no pending GL errors from other parts of the pipeline.
debug_assert_eq!(data.gl.get_error(), gl::NO_ERROR);
// Check to see if any of the current framebuffer bindings are the surface we're about // Check to see if any of the current framebuffer bindings are the surface we're about
// to swap out. If so, we'll have to reset them after destroying the surface. // to swap out. If so, we'll have to reset them after destroying the surface.
let framebuffer_rebinding_info = let framebuffer_rebinding_info =
FramebufferRebindingInfo::detect(&self.device, &data.ctx, &*data.gl); FramebufferRebindingInfo::detect(&self.device, &data.ctx, &*data.gl);
debug_assert_eq!(data.gl.get_error(), gl::NO_ERROR);
debug!("Getting swap chain for {:?}", swap_id); debug!("Getting swap chain for {:?}", swap_id);
let swap_chain = match swap_id { let swap_chain = match swap_id {
@ -698,6 +702,7 @@ impl WebGLThread {
swap_chain swap_chain
.swap_buffers(&mut self.device, &mut data.ctx) .swap_buffers(&mut self.device, &mut data.ctx)
.unwrap(); .unwrap();
debug_assert_eq!(data.gl.get_error(), gl::NO_ERROR);
// TODO: if preserveDrawingBuffer is true, then blit the front buffer to the back buffer // TODO: if preserveDrawingBuffer is true, then blit the front buffer to the back buffer
// https://github.com/servo/servo/issues/24604 // https://github.com/servo/servo/issues/24604
@ -705,10 +710,12 @@ impl WebGLThread {
swap_chain swap_chain
.clear_surface(&mut self.device, &mut data.ctx, &*data.gl) .clear_surface(&mut self.device, &mut data.ctx, &*data.gl)
.unwrap(); .unwrap();
debug_assert_eq!(data.gl.get_error(), gl::NO_ERROR);
// Rebind framebuffers as appropriate. // Rebind framebuffers as appropriate.
debug!("Rebinding {:?}", swap_id); debug!("Rebinding {:?}", swap_id);
framebuffer_rebinding_info.apply(&self.device, &data.ctx, &*data.gl); framebuffer_rebinding_info.apply(&self.device, &data.ctx, &*data.gl);
debug_assert_eq!(data.gl.get_error(), gl::NO_ERROR);
let SurfaceInfo { let SurfaceInfo {
framebuffer_object, framebuffer_object,