aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-04-03 11:48:47 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-04-03 11:48:47 +0530
commit88d29e537cb3e92cc39804eabca7cb347c1417e9 (patch)
treeb97d48153cb0f8653a39722c865272ee1480cbd0 /components/script/dom/webglrenderingcontext.rs
parent8b32e63db843b4ac534c33a87ed53a4acf9b6da7 (diff)
parentbd1448ab5661e808e92185ea40b4b95d1d392f6f (diff)
downloadservo-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.rs41
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) {