diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-11-17 16:10:14 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-11-20 10:14:50 +0100 |
commit | ca62b5c318bc101dce49be99302dae0abed1dfd2 (patch) | |
tree | 252acbd57e633ce33d49233b2c0862002e875bc9 /components/script/dom/webglrenderingcontext.rs | |
parent | 5f9e3d8bb999b29f7b9092a31552e47ceed7da02 (diff) | |
download | servo-ca62b5c318bc101dce49be99302dae0abed1dfd2.tar.gz servo-ca62b5c318bc101dce49be99302dae0abed1dfd2.zip |
Call prepare_pixels on the WebGL thread
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 1435c9133c9..4e8c835f7bf 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -6,7 +6,7 @@ use backtrace::Backtrace; use canvas_traits::webgl::WebGLError::*; use canvas_traits::webgl::{ - self, webgl_channel, AlphaTreatment, DOMToTextureCommand, Parameter, TexDataType, TexFormat, + webgl_channel, AlphaTreatment, DOMToTextureCommand, Parameter, TexDataType, TexFormat, TexParameter, TexSource, WebGLCommand, WebGLCommandBacktrace, WebGLContextShareMode, WebGLError, WebGLFramebufferBindingRequest, WebGLMsg, WebGLMsgSender, WebGLProgramId, WebGLResult, WebGLSLVersion, WebGLSender, WebGLVersion, WebVRCommand, YAxisTreatment, @@ -643,7 +643,7 @@ impl WebGLRenderingContext { texture: &WebGLTexture, target: TexImageTarget, data_type: TexDataType, - internal_format: TexFormat, + format: TexFormat, level: u32, _border: u32, unpacking_alignment: u32, @@ -658,7 +658,7 @@ impl WebGLRenderingContext { pixels.size.width, pixels.size.height, 1, - internal_format, + format, level, Some(data_type) ) @@ -679,36 +679,30 @@ impl WebGLRenderingContext { YAxisTreatment::AsIs }; - let buff = webgl::prepare_pixels( - internal_format, - data_type, - pixels.size, - unpacking_alignment, - alpha_treatment, - y_axis_treatment, - tex_source, - pixels.data, - ); - - let format = internal_format.as_gl_constant(); - let data_type = data_type.as_gl_constant(); - let internal_format = self + let effective_internal_format = self .extension_manager - .get_effective_tex_internal_format(format, data_type); + .get_effective_tex_internal_format(format.as_gl_constant(), data_type.as_gl_constant()); + let effective_data_type = self + .extension_manager + .effective_type(data_type.as_gl_constant()); // TODO(emilio): convert colorspace if requested let (sender, receiver) = ipc::bytes_channel().unwrap(); self.send_command(WebGLCommand::TexImage2D { target: target.as_gl_constant(), level, - internal_format, + effective_internal_format, size: pixels.size, format, - data_type: self.extension_manager.effective_type(data_type), + data_type, + effective_data_type, unpacking_alignment, + alpha_treatment, + y_axis_treatment, + tex_source, receiver, }); - sender.send(&buff).unwrap(); + sender.send(&pixels.data).unwrap(); if let Some(fb) = self.bound_framebuffer.get() { fb.invalidate_texture(&*texture); @@ -765,16 +759,9 @@ impl WebGLRenderingContext { YAxisTreatment::AsIs }; - let buff = webgl::prepare_pixels( - format, - data_type, - pixels.size, - unpacking_alignment, - alpha_treatment, - y_axis_treatment, - tex_source, - pixels.data, - ); + let effective_data_type = self + .extension_manager + .effective_type(data_type.as_gl_constant()); // TODO(emilio): convert colorspace if requested let (sender, receiver) = ipc::bytes_channel().unwrap(); @@ -784,14 +771,16 @@ impl WebGLRenderingContext { xoffset, yoffset, size: pixels.size, - format: format.as_gl_constant(), - data_type: self - .extension_manager - .effective_type(data_type.as_gl_constant()), + format, + data_type, + effective_data_type, unpacking_alignment, + alpha_treatment, + y_axis_treatment, + tex_source, receiver, }); - sender.send(&buff).unwrap(); + sender.send(&pixels.data).unwrap(); } fn get_gl_extensions(&self) -> String { |