aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_thread.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-11-11 19:25:22 -0500
committerGitHub <noreply@github.com>2019-11-11 19:25:22 -0500
commit31ee5fc2f567f6b5b82c5029a7c1b3008ae493ee (patch)
tree019ebf352027dd4994696b12554eb8b6b4e3034a /components/canvas/webgl_thread.rs
parent905f714bb4b2959f1735cc7469969696eac56d47 (diff)
parent2436bd195a0852315efcda5f1c587f30a522fafd (diff)
downloadservo-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.rs68
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)