From 65d1b11929f73075492a3a66da9f3710be14ac55 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Thu, 15 Nov 2018 10:32:20 +0100 Subject: [PATCH] Make TexImage2D and TexSubImage2D struct variants --- components/canvas/webgl_thread.rs | 62 ++++++++++--------- components/canvas_traits/webgl.rs | 23 ++++++- .../script/dom/webglrenderingcontext.rs | 32 +++++----- 3 files changed, 70 insertions(+), 47 deletions(-) diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 67ac2f497891..c1839e19e322 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -1042,47 +1042,51 @@ impl WebGLImpl { WebGLCommand::SetViewport(x, y, width, height) => { ctx.gl().viewport(x, y, width, height); }, - WebGLCommand::TexImage2D( + WebGLCommand::TexImage2D { target, level, - internal, - width, - height, - format, - data_type, - ref chan, - ) => ctx.gl().tex_image_2d( - target, - level, - internal, + internal_format, width, height, - 0, format, data_type, - Some(&chan.recv().unwrap()), - ), - WebGLCommand::TexSubImage2D( - target, - level, - xoffset, - yoffset, - x, - y, - width, - height, - ref chan, - ) => ctx.gl().tex_sub_image_2d( + ref receiver, + } => { + ctx.gl().tex_image_2d( + target, + level as i32, + internal_format as i32, + width as i32, + height as i32, + 0, + format, + data_type, + Some(&receiver.recv().unwrap()), + ); + }, + WebGLCommand::TexSubImage2D { target, level, xoffset, yoffset, - x, - y, width, height, - &chan.recv().unwrap(), - ), + format, + data_type, + ref receiver, + } => { + ctx.gl().tex_sub_image_2d( + target, + level as i32, + xoffset, + yoffset, + width as i32, + height as i32, + format, + data_type, + &receiver.recv().unwrap(), + ); + }, WebGLCommand::DrawingBufferWidth(ref sender) => sender .send(ctx.borrow_draw_buffer().unwrap().size().width) .unwrap(), diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 29236615b798..ae12c9410e14 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -272,8 +272,27 @@ pub enum WebGLCommand { VertexAttribPointer(u32, i32, u32, bool, i32, u32), VertexAttribPointer2f(u32, i32, bool, i32, u32), SetViewport(i32, i32, i32, i32), - TexImage2D(u32, i32, i32, i32, i32, u32, u32, IpcBytesReceiver), - TexSubImage2D(u32, i32, i32, i32, i32, i32, u32, u32, IpcBytesReceiver), + TexImage2D { + target: u32, + level: u32, + internal_format: u32, + width: u32, + height: u32, + format: u32, + data_type: u32, + receiver: IpcBytesReceiver, + }, + TexSubImage2D { + target: u32, + level: u32, + xoffset: i32, + yoffset: i32, + width: u32, + height: u32, + format: u32, + data_type: u32, + receiver: IpcBytesReceiver, + }, DrawingBufferWidth(WebGLSender), DrawingBufferHeight(WebGLSender), Finish(WebGLSender<()>), diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 97e35b058e88..eb40bc5ac024 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -739,16 +739,16 @@ impl WebGLRenderingContext { // TODO(emilio): convert colorspace if requested let (sender, receiver) = ipc::bytes_channel().unwrap(); - self.send_command(WebGLCommand::TexImage2D( - target.as_gl_constant(), - level as i32, - internal_format as i32, - width as i32, - height as i32, + self.send_command(WebGLCommand::TexImage2D { + target: target.as_gl_constant(), + level, + internal_format, + width, + height, format, - self.extension_manager.effective_type(data_type), + data_type: self.extension_manager.effective_type(data_type), receiver, - )); + }); sender.send(&pixels).unwrap(); if let Some(fb) = self.bound_framebuffer.get() { @@ -817,17 +817,17 @@ impl WebGLRenderingContext { // TODO(emilio): convert colorspace if requested let (sender, receiver) = ipc::bytes_channel().unwrap(); - self.send_command(WebGLCommand::TexSubImage2D( - target.as_gl_constant(), - level as i32, + self.send_command(WebGLCommand::TexSubImage2D { + target: target.as_gl_constant(), + level, xoffset, yoffset, - width as i32, - height as i32, - format.as_gl_constant(), - data_type.as_gl_constant(), + width, + height, + format: format.as_gl_constant(), + data_type: data_type.as_gl_constant(), receiver, - )); + }); sender.send(&pixels).unwrap(); }