servo: Merge #10291 - #10211: Stop re-exporting webrender_traits WebGL types from canvas_traits (from jfhumann:10211); r=emilio

Source-Repo: https://github.com/servo/servo
Source-Revision: 524a004e771b465e3de9ebbc33816e50949d6a25
This commit is contained in:
Jan-Fabian Humann 2016-04-01 01:28:20 +05:01
Родитель 7bc8e96798
Коммит b60a127aa6
15 изменённых файлов: 98 добавлений и 88 удалений

Просмотреть файл

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, CanvasWebGLMsg, FromLayoutMsg}; use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, FromLayoutMsg};
use euclid::size::Size2D; use euclid::size::Size2D;
use gleam::gl; use gleam::gl;
use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory}; use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory};
@ -42,7 +42,7 @@ impl WebGLPaintThread {
}) })
} }
pub fn handle_webgl_message(&self, message: CanvasWebGLMsg) { pub fn handle_webgl_message(&self, message: webrender_traits::WebGLCommand) {
debug!("WebGL message: {:?}", message); debug!("WebGL message: {:?}", message);
match self.data { match self.data {
WebGLPaintTaskData::WebRender(ref api, id) => { WebGLPaintTaskData::WebRender(ref api, id) => {

Просмотреть файл

@ -36,9 +36,7 @@ use gfx_traits::color;
use ipc_channel::ipc::{IpcSender, IpcSharedMemory}; use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
use std::default::Default; use std::default::Default;
use std::str::FromStr; use std::str::FromStr;
use webrender_traits::{WebGLCommand, WebGLContextId};
pub use webrender_traits::{WebGLFramebufferBindingRequest, WebGLError, WebGLParameter, WebGLResult, WebGLContextId};
pub use webrender_traits::WebGLCommand as CanvasWebGLMsg;
#[derive(Clone, Deserialize, Serialize)] #[derive(Clone, Deserialize, Serialize)]
pub enum FillRule { pub enum FillRule {
@ -51,7 +49,7 @@ pub enum CanvasMsg {
Canvas2d(Canvas2dMsg), Canvas2d(Canvas2dMsg),
Common(CanvasCommonMsg), Common(CanvasCommonMsg),
FromLayout(FromLayoutMsg), FromLayout(FromLayoutMsg),
WebGL(CanvasWebGLMsg), WebGL(WebGLCommand),
} }
#[derive(Clone, Deserialize, Serialize)] #[derive(Clone, Deserialize, Serialize)]

Просмотреть файл

@ -60,6 +60,9 @@ features = ["unstable"]
[dependencies.gfx_traits] [dependencies.gfx_traits]
path = "../gfx_traits" path = "../gfx_traits"
[dependencies.webrender_traits]
git = "https://github.com/servo/webrender_traits"
[dependencies] [dependencies]
app_units = {version = "0.2.3", features = ["plugins"]} app_units = {version = "0.2.3", features = ["plugins"]}
bitflags = "0.3" bitflags = "0.3"

Просмотреть файл

@ -29,7 +29,6 @@
//! The `no_jsmanaged_fields!()` macro adds an empty implementation of `JSTraceable` to //! The `no_jsmanaged_fields!()` macro adds an empty implementation of `JSTraceable` to
//! a datatype. //! a datatype.
use canvas_traits::WebGLError;
use canvas_traits::{CanvasGradientStop, LinearGradientStyle, RadialGradientStyle}; use canvas_traits::{CanvasGradientStop, LinearGradientStyle, RadialGradientStyle};
use canvas_traits::{CompositionOrBlending, LineCapStyle, LineJoinStyle, RepetitionStyle}; use canvas_traits::{CompositionOrBlending, LineCapStyle, LineJoinStyle, RepetitionStyle};
use cssparser::RGBA; use cssparser::RGBA;
@ -91,7 +90,7 @@ use style::values::specified::Length;
use url::Url; use url::Url;
use util::str::{DOMString, LengthOrPercentageOrAuto}; use util::str::{DOMString, LengthOrPercentageOrAuto};
use uuid::Uuid; use uuid::Uuid;
use webrender_traits::WebGLError;
/// A trait to allow tracing (only) DOM objects. /// A trait to allow tracing (only) DOM objects.
pub trait JSTraceable { pub trait JSTraceable {

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult}; use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLBufferBinding; use dom::bindings::codegen::Bindings::WebGLBufferBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::webglobject::WebGLObject; use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use webrender_traits::{WebGLCommand, WebGLError, WebGLResult};
#[dom_struct] #[dom_struct]
pub struct WebGLBuffer { pub struct WebGLBuffer {
@ -39,7 +40,7 @@ impl WebGLBuffer {
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>) pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLBuffer>> { -> Option<Root<WebGLBuffer>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateBuffer(sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateBuffer(sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|buffer_id| WebGLBuffer::new(global, renderer, *buffer_id)) result.map(|buffer_id| WebGLBuffer::new(global, renderer, *buffer_id))
@ -65,7 +66,7 @@ impl WebGLBuffer {
} else { } else {
self.target.set(Some(target)); self.target.set(Some(target));
} }
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindBuffer(target, self.id))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindBuffer(target, self.id))).unwrap();
Ok(()) Ok(())
} }
@ -78,7 +79,7 @@ impl WebGLBuffer {
} }
self.capacity.set(data.len()); self.capacity.set(data.len());
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BufferData(target, data.to_vec(), usage))) .send(CanvasMsg::WebGL(WebGLCommand::BufferData(target, data.to_vec(), usage)))
.unwrap(); .unwrap();
Ok(()) Ok(())
@ -91,7 +92,7 @@ impl WebGLBuffer {
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteBuffer(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteBuffer(self.id)));
} }
} }
} }

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLFramebufferBindingRequest}; use canvas_traits::{CanvasMsg};
use dom::bindings::codegen::Bindings::WebGLFramebufferBinding; use dom::bindings::codegen::Bindings::WebGLFramebufferBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::webglobject::WebGLObject; use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use webrender_traits::{WebGLCommand, WebGLFramebufferBindingRequest};
#[dom_struct] #[dom_struct]
pub struct WebGLFramebuffer { pub struct WebGLFramebuffer {
@ -34,7 +35,7 @@ impl WebGLFramebuffer {
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>) pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLFramebuffer>> { -> Option<Root<WebGLFramebuffer>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateFramebuffer(sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateFramebuffer(sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|fb_id| WebGLFramebuffer::new(global, renderer, *fb_id)) result.map(|fb_id| WebGLFramebuffer::new(global, renderer, *fb_id))
@ -53,14 +54,14 @@ impl WebGLFramebuffer {
} }
pub fn bind(&self, target: u32) { pub fn bind(&self, target: u32) {
let cmd = CanvasWebGLMsg::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id)); let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id));
self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap(); self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
} }
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteFramebuffer(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteFramebuffer(self.id)));
} }
} }
} }

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult, WebGLParameter}; use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLProgramBinding; use dom::bindings::codegen::Bindings::WebGLProgramBinding;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
@ -15,6 +15,7 @@ use dom::webglshader::WebGLShader;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use util::str::DOMString; use util::str::DOMString;
use webrender_traits::{WebGLCommand, WebGLError, WebGLParameter, WebGLResult};
#[dom_struct] #[dom_struct]
pub struct WebGLProgram { pub struct WebGLProgram {
@ -42,7 +43,7 @@ impl WebGLProgram {
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>) pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLProgram>> { -> Option<Root<WebGLProgram>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateProgram(sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateProgram(sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|program_id| WebGLProgram::new(global, renderer, *program_id)) result.map(|program_id| WebGLProgram::new(global, renderer, *program_id))
@ -63,13 +64,13 @@ impl WebGLProgram {
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteProgram(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteProgram(self.id)));
} }
} }
/// glLinkProgram /// glLinkProgram
pub fn link(&self) { pub fn link(&self) {
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::LinkProgram(self.id))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::LinkProgram(self.id))).unwrap();
} }
/// glUseProgram /// glUseProgram
@ -84,7 +85,7 @@ impl WebGLProgram {
_ => return Err(WebGLError::InvalidOperation), _ => return Err(WebGLError::InvalidOperation),
} }
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::UseProgram(self.id))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::UseProgram(self.id))).unwrap();
Ok(()) Ok(())
} }
@ -104,7 +105,7 @@ impl WebGLProgram {
shader_slot.set(Some(shader)); shader_slot.set(Some(shader));
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::AttachShader(self.id, shader.id()))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::AttachShader(self.id, shader.id()))).unwrap();
Ok(()) Ok(())
} }
@ -121,7 +122,7 @@ impl WebGLProgram {
} }
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindAttribLocation(self.id, index, String::from(name)))) .send(CanvasMsg::WebGL(WebGLCommand::BindAttribLocation(self.id, index, String::from(name))))
.unwrap(); .unwrap();
Ok(()) Ok(())
} }
@ -139,7 +140,7 @@ impl WebGLProgram {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetAttribLocation(self.id, String::from(name), sender))) .send(CanvasMsg::WebGL(WebGLCommand::GetAttribLocation(self.id, String::from(name), sender)))
.unwrap(); .unwrap();
Ok(receiver.recv().unwrap()) Ok(receiver.recv().unwrap())
} }
@ -157,7 +158,7 @@ impl WebGLProgram {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetUniformLocation(self.id, String::from(name), sender))) .send(CanvasMsg::WebGL(WebGLCommand::GetUniformLocation(self.id, String::from(name), sender)))
.unwrap(); .unwrap();
Ok(receiver.recv().unwrap()) Ok(receiver.recv().unwrap())
} }
@ -165,7 +166,7 @@ impl WebGLProgram {
/// glGetProgramParameter /// glGetProgramParameter
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> { pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetProgramParameter(self.id, param_id, sender))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetProgramParameter(self.id, param_id, sender))).unwrap();
receiver.recv().unwrap() receiver.recv().unwrap()
} }
} }

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::{CanvasMsg, CanvasWebGLMsg}; use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLRenderbufferBinding; use dom::bindings::codegen::Bindings::WebGLRenderbufferBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::webglobject::WebGLObject; use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use webrender_traits::WebGLCommand;
#[dom_struct] #[dom_struct]
pub struct WebGLRenderbuffer { pub struct WebGLRenderbuffer {
@ -34,7 +35,7 @@ impl WebGLRenderbuffer {
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>) pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLRenderbuffer>> { -> Option<Root<WebGLRenderbuffer>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateRenderbuffer(sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateRenderbuffer(sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|renderbuffer_id| WebGLRenderbuffer::new(global, renderer, *renderbuffer_id)) result.map(|renderbuffer_id| WebGLRenderbuffer::new(global, renderer, *renderbuffer_id))
@ -53,13 +54,13 @@ impl WebGLRenderbuffer {
} }
pub fn bind(&self, target: u32) { pub fn bind(&self, target: u32) {
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindRenderbuffer(target, self.id))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, self.id))).unwrap();
} }
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteRenderbuffer(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteRenderbuffer(self.id)));
} }
} }
} }

Просмотреть файл

@ -2,9 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use canvas_traits::WebGLError::*; use canvas_traits::{CanvasCommonMsg, CanvasMsg};
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasWebGLMsg, WebGLError};
use canvas_traits::{WebGLFramebufferBindingRequest, WebGLParameter};
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{WebGLRenderingContextMethods}; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{WebGLRenderingContextMethods};
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes}; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes};
@ -37,6 +35,8 @@ use script_traits::ScriptMsg as ConstellationMsg;
use std::cell::Cell; use std::cell::Cell;
use util::str::DOMString; use util::str::DOMString;
use util::vec::byte_swap; use util::vec::byte_swap;
use webrender_traits::WebGLError::*;
use webrender_traits::{WebGLCommand, WebGLError, WebGLFramebufferBindingRequest, WebGLParameter};
pub const MAX_UNIFORM_AND_ATTRIBUTE_LEN: usize = 256; pub const MAX_UNIFORM_AND_ATTRIBUTE_LEN: usize = 256;
@ -164,7 +164,7 @@ impl WebGLRenderingContext {
fn vertex_attrib(&self, indx: u32, x: f32, y: f32, z: f32, w: f32) { fn vertex_attrib(&self, indx: u32, x: f32, y: f32, z: f32, w: f32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::VertexAttrib(indx, x, y, z, w))) .send(CanvasMsg::WebGL(WebGLCommand::VertexAttrib(indx, x, y, z, w)))
.unwrap(); .unwrap();
} }
} }
@ -185,7 +185,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
fn DrawingBufferWidth(&self) -> i32 { fn DrawingBufferWidth(&self) -> i32 {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferWidth(sender))) .send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferWidth(sender)))
.unwrap(); .unwrap();
receiver.recv().unwrap() receiver.recv().unwrap()
} }
@ -194,7 +194,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
fn DrawingBufferHeight(&self) -> i32 { fn DrawingBufferHeight(&self) -> i32 {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferHeight(sender))) .send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferHeight(sender)))
.unwrap(); .unwrap();
receiver.recv().unwrap() receiver.recv().unwrap()
} }
@ -204,7 +204,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal { fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetBufferParameter(target, parameter, sender))) .send(CanvasMsg::WebGL(WebGLCommand::GetBufferParameter(target, parameter, sender)))
.unwrap(); .unwrap();
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
WebGLParameter::Int(val) => Int32Value(val), WebGLParameter::Int(val) => Int32Value(val),
@ -220,7 +220,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
fn GetParameter(&self, cx: *mut JSContext, parameter: u32) -> JSVal { fn GetParameter(&self, cx: *mut JSContext, parameter: u32) -> JSVal {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetParameter(parameter, sender))) .send(CanvasMsg::WebGL(WebGLCommand::GetParameter(parameter, sender)))
.unwrap(); .unwrap();
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
WebGLParameter::Int(val) => Int32Value(val), WebGLParameter::Int(val) => Int32Value(val),
@ -260,7 +260,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// If the send does not succeed, assume context lost // If the send does not succeed, assume context lost
if let Err(_) = self.ipc_renderer if let Err(_) = self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetContextAttributes(sender))) { .send(CanvasMsg::WebGL(WebGLCommand::GetContextAttributes(sender))) {
return None; return None;
} }
let attrs = receiver.recv().unwrap(); let attrs = receiver.recv().unwrap();
@ -289,37 +289,37 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn ActiveTexture(&self, texture: u32) { fn ActiveTexture(&self, texture: u32) {
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::ActiveTexture(texture))).unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::ActiveTexture(texture))).unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn BlendColor(&self, r: f32, g: f32, b: f32, a: f32) { fn BlendColor(&self, r: f32, g: f32, b: f32, a: f32) {
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendColor(r, g, b, a))).unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::BlendColor(r, g, b, a))).unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn BlendEquation(&self, mode: u32) { fn BlendEquation(&self, mode: u32) {
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendEquation(mode))).unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::BlendEquation(mode))).unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn BlendEquationSeparate(&self, mode_rgb: u32, mode_alpha: u32) { fn BlendEquationSeparate(&self, mode_rgb: u32, mode_alpha: u32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendEquationSeparate(mode_rgb, mode_alpha))) .send(CanvasMsg::WebGL(WebGLCommand::BlendEquationSeparate(mode_rgb, mode_alpha)))
.unwrap(); .unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn BlendFunc(&self, src_factor: u32, dest_factor: u32) { fn BlendFunc(&self, src_factor: u32, dest_factor: u32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendFunc(src_factor, dest_factor))) .send(CanvasMsg::WebGL(WebGLCommand::BlendFunc(src_factor, dest_factor)))
.unwrap(); .unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn BlendFuncSeparate(&self, src_rgb: u32, dest_rgb: u32, src_alpha: u32, dest_alpha: u32) { fn BlendFuncSeparate(&self, src_rgb: u32, dest_rgb: u32, src_alpha: u32, dest_alpha: u32) {
self.ipc_renderer.send( self.ipc_renderer.send(
CanvasMsg::WebGL(CanvasWebGLMsg::BlendFuncSeparate(src_rgb, dest_rgb, src_alpha, dest_alpha))).unwrap(); CanvasMsg::WebGL(WebGLCommand::BlendFuncSeparate(src_rgb, dest_rgb, src_alpha, dest_alpha))).unwrap();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
@ -356,7 +356,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} else { } else {
// Unbind the current buffer // Unbind the current buffer
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindBuffer(target, 0))) .send(CanvasMsg::WebGL(WebGLCommand::BindBuffer(target, 0)))
.unwrap() .unwrap()
} }
} }
@ -371,7 +371,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
framebuffer.bind(target) framebuffer.bind(target)
} else { } else {
// Bind the default framebuffer // Bind the default framebuffer
let cmd = CanvasWebGLMsg::BindFramebuffer(target, WebGLFramebufferBindingRequest::Default); let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Default);
self.ipc_renderer.send(CanvasMsg::WebGL(cmd)).unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
} }
} }
@ -387,7 +387,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} else { } else {
// Unbind the currently bound renderbuffer // Unbind the currently bound renderbuffer
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindRenderbuffer(target, 0))) .send(CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, 0)))
.unwrap() .unwrap()
} }
} }
@ -409,7 +409,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} else { } else {
// Unbind the currently bound texture // Unbind the currently bound texture
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindTexture(target, 0))) .send(CanvasMsg::WebGL(WebGLCommand::BindTexture(target, 0)))
.unwrap() .unwrap()
} }
} }
@ -470,7 +470,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
return self.webgl_error(InvalidValue); return self.webgl_error(InvalidValue);
} }
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BufferSubData(target, offset as isize, data_vec))) .send(CanvasMsg::WebGL(WebGLCommand::BufferSubData(target, offset as isize, data_vec)))
.unwrap() .unwrap()
} else { } else {
self.webgl_error(InvalidValue); self.webgl_error(InvalidValue);
@ -496,35 +496,35 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11
fn Clear(&self, mask: u32) { fn Clear(&self, mask: u32) {
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::Clear(mask))).unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::Clear(mask))).unwrap();
self.mark_as_dirty(); self.mark_as_dirty();
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn ClearColor(&self, red: f32, green: f32, blue: f32, alpha: f32) { fn ClearColor(&self, red: f32, green: f32, blue: f32, alpha: f32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearColor(red, green, blue, alpha))) .send(CanvasMsg::WebGL(WebGLCommand::ClearColor(red, green, blue, alpha)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn ClearDepth(&self, depth: f32) { fn ClearDepth(&self, depth: f32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearDepth(depth as f64))) .send(CanvasMsg::WebGL(WebGLCommand::ClearDepth(depth as f64)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn ClearStencil(&self, stencil: i32) { fn ClearStencil(&self, stencil: i32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearStencil(stencil))) .send(CanvasMsg::WebGL(WebGLCommand::ClearStencil(stencil)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn ColorMask(&self, r: bool, g: bool, b: bool, a: bool) { fn ColorMask(&self, r: bool, g: bool, b: bool, a: bool) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ColorMask(r, g, b, a))) .send(CanvasMsg::WebGL(WebGLCommand::ColorMask(r, g, b, a)))
.unwrap() .unwrap()
} }
@ -533,7 +533,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
match mode { match mode {
constants::FRONT | constants::BACK | constants::FRONT_AND_BACK => constants::FRONT | constants::BACK | constants::FRONT_AND_BACK =>
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::CullFace(mode))) .send(CanvasMsg::WebGL(WebGLCommand::CullFace(mode)))
.unwrap(), .unwrap(),
_ => self.webgl_error(InvalidEnum), _ => self.webgl_error(InvalidEnum),
} }
@ -544,7 +544,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
match mode { match mode {
constants::CW | constants::CCW => constants::CW | constants::CCW =>
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::FrontFace(mode))) .send(CanvasMsg::WebGL(WebGLCommand::FrontFace(mode)))
.unwrap(), .unwrap(),
_ => self.webgl_error(InvalidEnum), _ => self.webgl_error(InvalidEnum),
} }
@ -557,7 +557,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
constants::GREATER | constants::NOTEQUAL | constants::GREATER | constants::NOTEQUAL |
constants::GEQUAL | constants::ALWAYS => constants::GEQUAL | constants::ALWAYS =>
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthFunc(func))) .send(CanvasMsg::WebGL(WebGLCommand::DepthFunc(func)))
.unwrap(), .unwrap(),
_ => self.webgl_error(InvalidEnum), _ => self.webgl_error(InvalidEnum),
} }
@ -566,14 +566,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn DepthMask(&self, flag: bool) { fn DepthMask(&self, flag: bool) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthMask(flag))) .send(CanvasMsg::WebGL(WebGLCommand::DepthMask(flag)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn DepthRange(&self, near: f32, far: f32) { fn DepthRange(&self, near: f32, far: f32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthRange(near as f64, far as f64))) .send(CanvasMsg::WebGL(WebGLCommand::DepthRange(near as f64, far as f64)))
.unwrap() .unwrap()
} }
@ -584,7 +584,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE | constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST => constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Enable(cap))) .send(CanvasMsg::WebGL(WebGLCommand::Enable(cap)))
.unwrap(), .unwrap(),
_ => self.webgl_error(InvalidEnum), _ => self.webgl_error(InvalidEnum),
} }
@ -597,7 +597,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE | constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST => constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Disable(cap))) .send(CanvasMsg::WebGL(WebGLCommand::Disable(cap)))
.unwrap(), .unwrap(),
_ => self.webgl_error(InvalidEnum), _ => self.webgl_error(InvalidEnum),
} }
@ -699,7 +699,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
self.webgl_error(InvalidValue); self.webgl_error(InvalidValue);
} else { } else {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawArrays(mode, first, count))) .send(CanvasMsg::WebGL(WebGLCommand::DrawArrays(mode, first, count)))
.unwrap(); .unwrap();
self.mark_as_dirty(); self.mark_as_dirty();
} }
@ -739,7 +739,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
constants::TRIANGLE_STRIP | constants::TRIANGLE_FAN | constants::TRIANGLE_STRIP | constants::TRIANGLE_FAN |
constants::TRIANGLES => { constants::TRIANGLES => {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawElements(mode, count, type_, offset))) .send(CanvasMsg::WebGL(WebGLCommand::DrawElements(mode, count, type_, offset)))
.unwrap(); .unwrap();
self.mark_as_dirty(); self.mark_as_dirty();
}, },
@ -750,7 +750,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
fn EnableVertexAttribArray(&self, attrib_id: u32) { fn EnableVertexAttribArray(&self, attrib_id: u32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::EnableVertexAttribArray(attrib_id))) .send(CanvasMsg::WebGL(WebGLCommand::EnableVertexAttribArray(attrib_id)))
.unwrap() .unwrap()
} }
@ -825,7 +825,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} }
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Hint(target, mode))) .send(CanvasMsg::WebGL(WebGLCommand::Hint(target, mode)))
.unwrap() .unwrap()
} }
@ -836,7 +836,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} }
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::LineWidth(width))) .send(CanvasMsg::WebGL(WebGLCommand::LineWidth(width)))
.unwrap() .unwrap()
} }
@ -889,21 +889,21 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
} }
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::PixelStorei(param_name, param_value))) .send(CanvasMsg::WebGL(WebGLCommand::PixelStorei(param_name, param_value)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn PolygonOffset(&self, factor: f32, units: f32) { fn PolygonOffset(&self, factor: f32, units: f32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::PolygonOffset(factor, units))) .send(CanvasMsg::WebGL(WebGLCommand::PolygonOffset(factor, units)))
.unwrap() .unwrap()
} }
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
fn Scissor(&self, x: i32, y: i32, width: i32, height: i32) { fn Scissor(&self, x: i32, y: i32, width: i32, height: i32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Scissor(x, y, width, height))) .send(CanvasMsg::WebGL(WebGLCommand::Scissor(x, y, width, height)))
.unwrap() .unwrap()
} }
@ -945,7 +945,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}; };
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform1f(uniform.id(), val))) .send(CanvasMsg::WebGL(WebGLCommand::Uniform1f(uniform.id(), val)))
.unwrap() .unwrap()
} }
@ -975,7 +975,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}; };
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform4f(uniform.id(), x, y, z, w))) .send(CanvasMsg::WebGL(WebGLCommand::Uniform4f(uniform.id(), x, y, z, w)))
.unwrap() .unwrap()
} }
@ -1086,7 +1086,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
normalized: bool, stride: i32, offset: i64) { normalized: bool, stride: i32, offset: i64) {
if let constants::FLOAT = data_type { if let constants::FLOAT = data_type {
let msg = CanvasMsg::WebGL( let msg = CanvasMsg::WebGL(
CanvasWebGLMsg::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset as u32)); WebGLCommand::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset as u32));
self.ipc_renderer.send(msg).unwrap() self.ipc_renderer.send(msg).unwrap()
} else { } else {
panic!("VertexAttribPointer: Data Type not supported") panic!("VertexAttribPointer: Data Type not supported")
@ -1096,7 +1096,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
fn Viewport(&self, x: i32, y: i32, width: i32, height: i32) { fn Viewport(&self, x: i32, y: i32, width: i32, height: i32) {
self.ipc_renderer self.ipc_renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Viewport(x, y, width, height))) .send(CanvasMsg::WebGL(WebGLCommand::Viewport(x, y, width, height)))
.unwrap() .unwrap()
} }
@ -1170,7 +1170,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}; };
// TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested // TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested
let msg = CanvasWebGLMsg::TexImage2D(target, level, internal_format as i32, let msg = WebGLCommand::TexImage2D(target, level, internal_format as i32,
size.width, size.height, size.width, size.height,
format, data_type, pixels); format, data_type, pixels);

Просмотреть файл

@ -4,7 +4,7 @@
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use angle::hl::{BuiltInResources, Output, ShaderValidator}; use angle::hl::{BuiltInResources, Output, ShaderValidator};
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLResult, WebGLParameter}; use canvas_traits::CanvasMsg;
use dom::bindings::cell::DOMRefCell; use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::WebGLShaderBinding; use dom::bindings::codegen::Bindings::WebGLShaderBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
@ -15,6 +15,7 @@ use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use std::sync::{ONCE_INIT, Once}; use std::sync::{ONCE_INIT, Once};
use util::str::DOMString; use util::str::DOMString;
use webrender_traits::{WebGLCommand, WebGLParameter, WebGLResult};
#[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)] #[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)]
pub enum ShaderCompilationStatus { pub enum ShaderCompilationStatus {
@ -63,7 +64,7 @@ impl WebGLShader {
renderer: IpcSender<CanvasMsg>, renderer: IpcSender<CanvasMsg>,
shader_type: u32) -> Option<Root<WebGLShader>> { shader_type: u32) -> Option<Root<WebGLShader>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateShader(shader_type, sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateShader(shader_type, sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|shader_id| WebGLShader::new(global, renderer, *shader_id, shader_type)) result.map(|shader_id| WebGLShader::new(global, renderer, *shader_id, shader_type))
@ -103,7 +104,7 @@ impl WebGLShader {
// NOTE: At this point we should be pretty sure that the compilation in the paint thread // NOTE: At this point we should be pretty sure that the compilation in the paint thread
// will succeed. // will succeed.
// It could be interesting to retrieve the info log from the paint thread though // It could be interesting to retrieve the info log from the paint thread though
let msg = CanvasWebGLMsg::CompileShader(self.id, translated_source); let msg = WebGLCommand::CompileShader(self.id, translated_source);
self.renderer.send(CanvasMsg::WebGL(msg)).unwrap(); self.renderer.send(CanvasMsg::WebGL(msg)).unwrap();
self.compilation_status.set(ShaderCompilationStatus::Succeeded); self.compilation_status.set(ShaderCompilationStatus::Succeeded);
}, },
@ -122,7 +123,7 @@ impl WebGLShader {
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteShader(self.id)));
} }
} }
@ -134,7 +135,7 @@ impl WebGLShader {
/// glGetParameter /// glGetParameter
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> { pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetShaderParameter(self.id, param_id, sender))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetShaderParameter(self.id, param_id, sender))).unwrap();
receiver.recv().unwrap() receiver.recv().unwrap()
} }

Просмотреть файл

@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl // https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult}; use canvas_traits::CanvasMsg;
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
use dom::bindings::codegen::Bindings::WebGLTextureBinding; use dom::bindings::codegen::Bindings::WebGLTextureBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
@ -12,6 +12,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::webglobject::WebGLObject; use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell; use std::cell::Cell;
use webrender_traits::{WebGLCommand, WebGLError, WebGLResult};
pub enum TexParameterValue { pub enum TexParameterValue {
Float(f32), Float(f32),
@ -43,7 +44,7 @@ impl WebGLTexture {
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>) pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
-> Option<Root<WebGLTexture>> { -> Option<Root<WebGLTexture>> {
let (sender, receiver) = ipc::channel().unwrap(); let (sender, receiver) = ipc::channel().unwrap();
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateTexture(sender))).unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateTexture(sender))).unwrap();
let result = receiver.recv().unwrap(); let result = receiver.recv().unwrap();
result.map(|texture_id| WebGLTexture::new(global, renderer, *texture_id)) result.map(|texture_id| WebGLTexture::new(global, renderer, *texture_id))
@ -70,7 +71,7 @@ impl WebGLTexture {
self.target.set(Some(target)); self.target.set(Some(target));
} }
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindTexture(target, self.id))).unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindTexture(target, self.id))).unwrap();
Ok(()) Ok(())
} }
@ -78,7 +79,7 @@ impl WebGLTexture {
pub fn delete(&self) { pub fn delete(&self) {
if !self.is_deleted.get() { if !self.is_deleted.get() {
self.is_deleted.set(true); self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteTexture(self.id))); let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteTexture(self.id)));
} }
} }
@ -104,7 +105,7 @@ impl WebGLTexture {
constants::NEAREST_MIPMAP_LINEAR | constants::NEAREST_MIPMAP_LINEAR |
constants::LINEAR_MIPMAP_LINEAR => { constants::LINEAR_MIPMAP_LINEAR => {
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value))) .send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
.unwrap(); .unwrap();
Ok(()) Ok(())
}, },
@ -117,7 +118,7 @@ impl WebGLTexture {
constants::NEAREST | constants::NEAREST |
constants::LINEAR => { constants::LINEAR => {
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value))) .send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
.unwrap(); .unwrap();
Ok(()) Ok(())
}, },
@ -132,7 +133,7 @@ impl WebGLTexture {
constants::MIRRORED_REPEAT | constants::MIRRORED_REPEAT |
constants::REPEAT => { constants::REPEAT => {
self.renderer self.renderer
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value))) .send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
.unwrap(); .unwrap();
Ok(()) Ok(())
}, },

Просмотреть файл

@ -76,6 +76,7 @@ extern crate url;
#[macro_use] #[macro_use]
extern crate util; extern crate util;
extern crate uuid; extern crate uuid;
extern crate webrender_traits;
extern crate websocket; extern crate websocket;
extern crate xml5ever; extern crate xml5ever;

1
servo/components/servo/Cargo.lock сгенерированный
Просмотреть файл

@ -1746,6 +1746,7 @@ dependencies = [
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1", "util 0.0.1",
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
] ]

1
servo/ports/cef/Cargo.lock сгенерированный
Просмотреть файл

@ -1613,6 +1613,7 @@ dependencies = [
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1", "util 0.0.1",
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
] ]

1
servo/ports/gonk/Cargo.lock сгенерированный
Просмотреть файл

@ -1595,6 +1595,7 @@ dependencies = [
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1", "util 0.0.1",
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
] ]