Skip to content

Commit

Permalink
Auto merge of #8291 - ecoal95:webgl-drop, r=jdm
Browse files Browse the repository at this point in the history
Add destructors to some WebGL objects, remove duplicated glutin dependency and try to enable the webgl reftests

The first commit allows to cleanup the gl resources of the webgl task earlier if they aren't being used.
Right now all resources were cleaned up when the context was destroyed, so I think this is
a slightly better approach.

The second commit bumps rust-offscreen-rendering-context to remove the duplicated glutin dependency.

The third one tries to reenable the webgl reftests.
Since the errored builds are deleted, It's the only way I can try to troubleshoot it.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8291)
<!-- Reviewable:end -->
  • Loading branch information
bors-servo committed Nov 2, 2015
2 parents 50d51ba + 8fff34e commit 3282174
Show file tree
Hide file tree
Showing 31 changed files with 162 additions and 81 deletions.
8 changes: 7 additions & 1 deletion components/script/dom/webglbuffer.rs
Expand Up @@ -71,7 +71,13 @@ impl WebGLBuffer {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteBuffer(self.id))).unwrap();
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteBuffer(self.id)));
}
}
}

impl Drop for WebGLBuffer {
fn drop(&mut self) {
self.delete();
}
}
8 changes: 7 additions & 1 deletion components/script/dom/webglframebuffer.rs
Expand Up @@ -60,7 +60,13 @@ impl WebGLFramebuffer {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteFramebuffer(self.id))).unwrap();
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteFramebuffer(self.id)));
}
}
}

impl Drop for WebGLFramebuffer {
fn drop(&mut self) {
self.delete();
}
}
8 changes: 7 additions & 1 deletion components/script/dom/webglprogram.rs
Expand Up @@ -58,7 +58,7 @@ impl WebGLProgram {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteProgram(self.id))).unwrap();
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteProgram(self.id)));
}
}

Expand Down Expand Up @@ -125,3 +125,9 @@ impl WebGLProgram {
Ok(receiver.recv().unwrap())
}
}

impl Drop for WebGLProgram {
fn drop(&mut self) {
self.delete();
}
}
2 changes: 1 addition & 1 deletion components/script/dom/webglrenderbuffer.rs
Expand Up @@ -59,7 +59,7 @@ impl WebGLRenderbuffer {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteRenderbuffer(self.id))).unwrap();
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteRenderbuffer(self.id)));
}
}
}
8 changes: 7 additions & 1 deletion components/script/dom/webglshader.rs
Expand Up @@ -121,7 +121,7 @@ impl WebGLShader {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id))).unwrap()
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id)));
}
}

Expand Down Expand Up @@ -152,3 +152,9 @@ impl WebGLShader {
*self.source.borrow_mut() = Some(source);
}
}

impl Drop for WebGLShader {
fn drop(&mut self) {
self.delete();
}
}
8 changes: 7 additions & 1 deletion components/script/dom/webgltexture.rs
Expand Up @@ -78,7 +78,7 @@ impl WebGLTexture {
pub fn delete(&self) {
if !self.is_deleted.get() {
self.is_deleted.set(true);
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteTexture(self.id))).unwrap();
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteTexture(self.id)));
}
}

Expand Down Expand Up @@ -145,3 +145,9 @@ impl WebGLTexture {
}
}
}

impl Drop for WebGLTexture {
fn drop(&mut self) {
self.delete();
}
}
35 changes: 3 additions & 32 deletions components/servo/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions components/servo/Cargo.toml
Expand Up @@ -133,6 +133,9 @@ features = ["plugins"]
[dependencies.gleam]
version = "0.1"

[dependencies.offscreen_gl_context]
git = "https://github.com/ecoal95/rust-offscreen-rendering-context"

[dependencies]
env_logger = "0.3"
time = "0.1.12"
Expand Down
16 changes: 16 additions & 0 deletions components/servo/main.rs
Expand Up @@ -29,12 +29,25 @@ extern crate log;
extern crate servo;
extern crate time;

extern crate gleam;
extern crate offscreen_gl_context;

use gleam::gl;
use offscreen_gl_context::GLContext;
use servo::Browser;
use servo::compositing::windowing::WindowEvent;
use servo::net_traits::hosts;
use servo::util::opts;
use std::rc::Rc;

#[cfg(not(target_os = "android"))]
fn load_gl_when_headless() {
gl::load_with(|addr| GLContext::get_proc_address(addr) as *const _);
}

#[cfg(target_os = "android")]
fn load_gl_when_headless() {}

fn main() {
env_logger::init().unwrap();

Expand All @@ -47,6 +60,9 @@ fn main() {
hosts::global_init();

let window = if opts::get().headless {
// Load gl functions even when in headless mode,
// to avoid crashing with webgl
load_gl_when_headless();
None
} else {
Some(app::create_window(std::ptr::null_mut()))
Expand Down
35 changes: 3 additions & 32 deletions ports/cef/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions ports/gonk/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 0 additions & 8 deletions tests/ref/basic.list
Expand Up @@ -107,14 +107,6 @@ resolution=800x600 == viewport_percentage_vw_vh.html viewport_percentage_vw_vh_a
# resolution=600x800 == viewport_percentage_vw_vh.html viewport_percentage_vw_vh_b.html
prefs:"layout.viewport.enabled" == viewport_rule.html viewport_rule_ref.html

# https://github.com/servo/servo/issues/7931
# == webgl-context/clearcolor.html webgl-context/clearcolor_ref.html
# == webgl-context/draw_arrays_simple.html webgl-context/draw_arrays_simple_ref.html
# == webgl-context/tex_image_2d_canvas.html webgl-context/tex_image_2d_canvas_ref.html
# == webgl-context/tex_image_2d_canvas2d.html webgl-context/tex_image_2d_canvas_ref.html
# == webgl-context/tex_image_2d_canvas_no_context.html webgl-context/tex_image_2d_canvas_no_context_ref.html
# == webgl-context/tex_image_2d_simple.html webgl-context/tex_image_2d_simple_ref.html

flaky_macos == white_space_intrinsic_sizes_a.html white_space_intrinsic_sizes_ref.html


Expand Down

0 comments on commit 3282174

Please sign in to comment.