diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-08-02 17:42:12 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-08-02 18:06:58 +0200 |
commit | f7124886bc64158dd2ce2487a1f98990e157f3fe (patch) | |
tree | 1c8bf9aae2be16e3099f9a22c412e12f88f182d7 /components/script/dom/webglrenderingcontext.rs | |
parent | 9e912be4ea0b04f69987cf456ed126943f02abd8 (diff) | |
download | servo-f7124886bc64158dd2ce2487a1f98990e157f3fe.tar.gz servo-f7124886bc64158dd2ce2487a1f98990e157f3fe.zip |
Use the DOM cache for gl.getTexParameter(gl.TEXTURE_*_FILTER)
Part of #20596.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index afdbda09dfe..ee314b5f8b3 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -440,22 +440,22 @@ impl WebGLRenderingContext { handle_potential_webgl_error!(self, f(location)); } - fn tex_parameter(&self, target: u32, name: u32, value: TexParameterValue) { + fn tex_parameter(&self, target: u32, param: u32, value: TexParameterValue) { let texture = match target { constants::TEXTURE_2D | constants::TEXTURE_CUBE_MAP => self.bound_texture(target), _ => return self.webgl_error(InvalidEnum), }; - if !self.extension_manager.is_get_tex_parameter_name_enabled(name) { - return self.webgl_error(InvalidEnum); - } - - let param = handle_potential_webgl_error!(self, TexParameter::from_u32(name), return); let texture = match texture { Some(tex) => tex, None => return self.webgl_error(InvalidOperation), }; + + if !self.extension_manager.is_get_tex_parameter_name_enabled(param) { + return self.webgl_error(InvalidEnum); + } + handle_potential_webgl_error!(self, texture.tex_parameter(param, value), return); // Validate non filterable TEXTURE_2D data_types @@ -1658,9 +1658,18 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { return NullValue(); } - if self.bound_texture(target).is_none() { - self.webgl_error(InvalidOperation); - return NullValue(); + let texture = match self.bound_texture(target) { + Some(texture) => texture, + None => { + self.webgl_error(InvalidOperation); + return NullValue(); + } + }; + + match pname { + constants::TEXTURE_MAG_FILTER => return UInt32Value(texture.mag_filter()), + constants::TEXTURE_MIN_FILTER => return UInt32Value(texture.min_filter()), + _ => {} } match handle_potential_webgl_error!(self, TexParameter::from_u32(pname), return NullValue()) { |