diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-11-11 19:25:22 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-11 19:25:22 -0500 |
commit | 31ee5fc2f567f6b5b82c5029a7c1b3008ae493ee (patch) | |
tree | 019ebf352027dd4994696b12554eb8b6b4e3034a /components/canvas/webgl_thread.rs | |
parent | 905f714bb4b2959f1735cc7469969696eac56d47 (diff) | |
parent | 2436bd195a0852315efcda5f1c587f30a522fafd (diff) | |
download | servo-31ee5fc2f567f6b5b82c5029a7c1b3008ae493ee.tar.gz servo-31ee5fc2f567f6b5b82c5029a7c1b3008ae493ee.zip |
Auto merge of #24676 - Manishearth:unpatch, r=jdm
Remove patched webxr
Unsure if this compiles yet, testing locally.
r? @jdm
Diffstat (limited to 'components/canvas/webgl_thread.rs')
-rw-r--r-- | components/canvas/webgl_thread.rs | 68 |
1 files changed, 50 insertions, 18 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 7cf1464f372..efb8e1ede49 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -67,6 +67,7 @@ use surfman::ContextAttributeFlags; use surfman::ContextAttributes; use surfman::GLVersion; use surfman::SurfaceAccess; +use surfman::SurfaceInfo; use surfman::SurfaceType; use surfman_chains::SwapChains; use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType}; @@ -438,8 +439,15 @@ impl WebGLThread { let mut ctx = self .device - .create_context(&context_descriptor, surface_access, &surface_type) + .create_context(&context_descriptor) .expect("Failed to create the GL context!"); + let surface = self + .device + .create_surface(&ctx, surface_access, &surface_type) + .expect("Failed to create the initial surface!"); + self.device + .bind_surface_to_context(&mut ctx, surface) + .unwrap(); // https://github.com/pcwalton/surfman/issues/7 self.device .make_context_current(&ctx) @@ -490,8 +498,10 @@ impl WebGLThread { self.device.make_context_current(&ctx).unwrap(); let framebuffer = self .device - .context_surface_framebuffer_object(&ctx) - .unwrap(); + .context_surface_info(&ctx) + .unwrap() + .unwrap() + .framebuffer_object; gl.bind_framebuffer(gl::FRAMEBUFFER, framebuffer); gl.viewport(0, 0, size.width as i32, size.height as i32); gl.scissor(0, 0, size.width as i32, size.height as i32); @@ -578,6 +588,10 @@ impl WebGLThread { swap_chain .resize(&mut self.device, &mut data.ctx, size.to_i32()) .expect("Failed to resize swap chain"); + // temporary, till https://github.com/pcwalton/surfman/issues/35 is fixed + self.device + .make_context_current(&data.ctx) + .expect("Failed to make context current again"); swap_chain .clear_surface(&mut self.device, &mut data.ctx, &*data.gl) .expect("Failed to clear resized swap chain"); @@ -695,14 +709,18 @@ impl WebGLThread { debug!("Rebinding {:?}", swap_id); framebuffer_rebinding_info.apply(&self.device, &data.ctx, &*data.gl); - let framebuffer = self + let SurfaceInfo { + framebuffer_object, + id, + .. + } = self .device - .context_surface_framebuffer_object(&data.ctx) + .context_surface_info(&data.ctx) + .unwrap() .unwrap(); debug!( "... rebound framebuffer {}, new back buffer surface is {:?}", - framebuffer, - self.device.context_surface_id(&data.ctx).unwrap() + framebuffer_object, id ); } @@ -1427,14 +1445,18 @@ impl WebGLImpl { }, WebGLCommand::DrawingBufferWidth(ref sender) => { let size = device - .context_surface_size(&ctx) - .expect("Where's the front buffer?"); + .context_surface_info(&ctx) + .unwrap() + .expect("Where's the front buffer?") + .size; sender.send(size.width).unwrap() }, WebGLCommand::DrawingBufferHeight(ref sender) => { let size = device - .context_surface_size(&ctx) - .expect("Where's the front buffer?"); + .context_surface_info(&ctx) + .unwrap() + .expect("Where's the front buffer?") + .size; sender.send(size.height).unwrap() }, WebGLCommand::Finish(ref sender) => Self::finish(gl, sender), @@ -2192,9 +2214,13 @@ impl WebGLImpl { id.get() }, WebGLFramebufferBindingRequest::Explicit(WebGLFramebufferId::Opaque(_)) | - WebGLFramebufferBindingRequest::Default => device - .context_surface_framebuffer_object(ctx) - .expect("No surface attached!"), + WebGLFramebufferBindingRequest::Default => { + device + .context_surface_info(ctx) + .unwrap() + .expect("No surface attached!") + .framebuffer_object + }, }; debug!("WebGLImpl::bind_framebuffer: {:?}", id); @@ -2649,8 +2675,11 @@ impl FramebufferRebindingInfo { gl.get_integer_v(gl::READ_FRAMEBUFFER_BINDING, &mut read_framebuffer); gl.get_integer_v(gl::DRAW_FRAMEBUFFER_BINDING, &mut draw_framebuffer); - let context_surface_framebuffer = - device.context_surface_framebuffer_object(context).unwrap(); + let context_surface_framebuffer = device + .context_surface_info(context) + .unwrap() + .unwrap() + .framebuffer_object; let mut flags = FramebufferRebindingFlags::empty(); if context_surface_framebuffer == read_framebuffer[0] as GLuint { @@ -2672,8 +2701,11 @@ impl FramebufferRebindingInfo { return; } - let context_surface_framebuffer = - device.context_surface_framebuffer_object(context).unwrap(); + let context_surface_framebuffer = device + .context_surface_info(context) + .unwrap() + .unwrap() + .framebuffer_object; if self .flags .contains(FramebufferRebindingFlags::REBIND_READ_FRAMEBUFFER) |