diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-04-03 11:48:47 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2016-04-03 11:48:47 +0530 |
commit | 88d29e537cb3e92cc39804eabca7cb347c1417e9 (patch) | |
tree | b97d48153cb0f8653a39722c865272ee1480cbd0 /components/script/dom/webglrenderingcontext.rs | |
parent | 8b32e63db843b4ac534c33a87ed53a4acf9b6da7 (diff) | |
parent | bd1448ab5661e808e92185ea40b4b95d1d392f6f (diff) | |
download | servo-88d29e537cb3e92cc39804eabca7cb347c1417e9.tar.gz servo-88d29e537cb3e92cc39804eabca7cb347c1417e9.zip |
Auto merge of #10369 - autrilla:Uniform4iv, r=emilio
Issue #10368: Implemented Uniform4iv and Uniform4i
Uniform4iv can make use of Uniform4i, so I implemented both.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10369)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index d08a9456624..62b1fb6dbea 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1020,6 +1020,47 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 + fn Uniform4i(&self, + uniform: Option<&WebGLUniformLocation>, + x: i32, y: i32, z: i32, w: i32) { + let uniform = match uniform { + Some(uniform) => uniform, + None => return, + }; + + match self.current_program.get() { + Some(ref program) if program.id() == uniform.program_id() => {}, + _ => return self.webgl_error(InvalidOperation), + }; + + self.ipc_renderer + .send(CanvasMsg::WebGL(WebGLCommand::Uniform4i(uniform.id(), x, y, z, w))) + .unwrap() + } + + + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 + fn Uniform4iv(&self, + _cx: *mut JSContext, + uniform: Option<&WebGLUniformLocation>, + data: Option<*mut JSObject>) { + let data = match data { + Some(data) => data, + None => return self.webgl_error(InvalidValue), + }; + + if let Some(data) = array_buffer_view_to_vec_checked::<i32>(data) { + if data.len() < 4 { + return self.webgl_error(InvalidOperation); + } + + self.Uniform4i(uniform, data[0], data[1], data[2], data[3]); + } else { + self.webgl_error(InvalidValue); + } + } + + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 fn Uniform4f(&self, uniform: Option<&WebGLUniformLocation>, x: f32, y: f32, z: f32, w: f32) { |