diff options
author | Imanol Fernandez <mortimergoro@gmail.com> | 2017-04-20 14:55:43 +0200 |
---|---|---|
committer | Imanol Fernandez <mortimergoro@gmail.com> | 2017-04-21 20:23:55 +0200 |
commit | 6b0c898e1a2cde3d47ca6593b8250b765cc06771 (patch) | |
tree | edeb0a8f7c2373abce26c334bdb67f8537b13935 /components/script/dom/webglrenderingcontext.rs | |
parent | 7f825d2119a480a64b103e1d60a2d469af98d3de (diff) | |
download | servo-6b0c898e1a2cde3d47ca6593b8250b765cc06771.tar.gz servo-6b0c898e1a2cde3d47ca6593b8250b765cc06771.zip |
Fix highp precision in shaders & Implement WebGL::GetShaderPrecisionFormat
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 8d99e1303d0..34f5b368a42 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -31,6 +31,7 @@ use dom::webglframebuffer::WebGLFramebuffer; use dom::webglprogram::WebGLProgram; use dom::webglrenderbuffer::WebGLRenderbuffer; use dom::webglshader::WebGLShader; +use dom::webglshaderprecisionformat::WebGLShaderPrecisionFormat; use dom::webgltexture::{TexParameterValue, WebGLTexture}; use dom::webgluniformlocation::WebGLUniformLocation; use dom::window::Window; @@ -1902,6 +1903,27 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 + fn GetShaderPrecisionFormat(&self, + shader_type: u32, + precision_type: u32) + -> Option<Root<WebGLShaderPrecisionFormat>> { + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); + self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::GetShaderPrecisionFormat(shader_type, + precision_type, + sender))) + .unwrap(); + match receiver.recv().unwrap() { + Ok((range_min, range_max, precision)) => { + Some(WebGLShaderPrecisionFormat::new(self.global().as_window(), range_min, range_max, precision)) + }, + Err(error) => { + self.webgl_error(error); + None + } + } + } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 fn GetUniformLocation(&self, program: Option<&WebGLProgram>, |