aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-03-06 09:48:56 -0500
committerGitHub <noreply@github.com>2018-03-06 09:48:56 -0500
commitf5037cf6219cafbc86bfaf6483b81b4ffb3496fa (patch)
tree22d5cbf1464bac93e3f5221d0dadabbb9e1d2036 /components/script
parent226d9a5b0e69185b95c62e79b81044beba477654 (diff)
parent288ef50fb79aaab771b93e4e06d077656500ebb9 (diff)
downloadservo-f5037cf6219cafbc86bfaf6483b81b4ffb3496fa.tar.gz
servo-f5037cf6219cafbc86bfaf6483b81b4ffb3496fa.zip
Auto merge of #20144 - mkollaro:gettexparameter, r=jdm
Add WebGL function glGetTexParameter <!-- Please describe your changes on the following line: --> Add WebGL function glGetTexParameter --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix part of #10209 <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20144) <!-- Reviewable:end -->
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/webgl2renderingcontext.rs6
-rw-r--r--components/script/dom/webglrenderingcontext.rs31
-rw-r--r--components/script/dom/webidls/WebGLRenderingContext.webidl2
3 files changed, 38 insertions, 1 deletions
diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs
index 9bf016f9631..2a25c450b08 100644
--- a/components/script/dom/webgl2renderingcontext.rs
+++ b/components/script/dom/webgl2renderingcontext.rs
@@ -115,6 +115,12 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
self.base.GetParameter(cx, parameter)
}
+ #[allow(unsafe_code)]
+ /// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
+ unsafe fn GetTexParameter(&self, cx: *mut JSContext, target: u32, pname: u32) -> JSVal {
+ self.base.GetTexParameter(cx, target, pname)
+ }
+
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn GetError(&self) -> u32 {
self.base.GetError()
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 61f05a923e8..fa1015582cf 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -1336,6 +1336,37 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
}
+ #[allow(unsafe_code)]
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
+ unsafe fn GetTexParameter(&self, _cx: *mut JSContext, target: u32, pname: u32) -> JSVal {
+ let texture = match target {
+ constants::TEXTURE_2D |
+ constants::TEXTURE_CUBE_MAP => self.bound_texture(target),
+ _ => {
+ self.webgl_error(InvalidEnum);
+ return NullValue();
+ }
+ };
+ if texture.is_some() {
+ let (sender, receiver) = webgl_channel().unwrap();
+ self.send_command(WebGLCommand::GetTexParameter(target, pname, sender));
+ match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
+ WebGLParameter::Int(val) => Int32Value(val),
+ WebGLParameter::Bool(_) => panic!("Texture parameter should not be bool"),
+ WebGLParameter::Float(_) => panic!("Texture parameter should not be float"),
+ WebGLParameter::FloatArray(_) => panic!("Texture parameter should not be float array"),
+ WebGLParameter::String(_) => panic!("Texture parameter should not be string"),
+ WebGLParameter::Invalid => {
+ self.webgl_error(InvalidEnum);
+ NullValue()
+ }
+ }
+ } else {
+ self.webgl_error(InvalidOperation);
+ NullValue()
+ }
+ }
+
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn GetError(&self) -> u32 {
let error_code = if let Some(error) = self.last_error.get() {
diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl
index ec729d1b5fb..3f845126701 100644
--- a/components/script/dom/webidls/WebGLRenderingContext.webidl
+++ b/components/script/dom/webidls/WebGLRenderingContext.webidl
@@ -600,7 +600,7 @@ interface WebGLRenderingContextBase
DOMString? getShaderSource(WebGLShader? shader);
- //any getTexParameter(GLenum target, GLenum pname);
+ any getTexParameter(GLenum target, GLenum pname);
//any getUniform(WebGLProgram? program, WebGLUniformLocation? location);