aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs51
1 files changed, 41 insertions, 10 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 7481b161a77..701ae737ba8 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -930,30 +930,61 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
}
- #[allow(unsafe_code)]
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
- fn Uniform4fv(&self,
- _cx: *mut JSContext,
+ fn Uniform1f(&self,
uniform: Option<&WebGLUniformLocation>,
- data: Option<*mut JSObject>) {
+ val: f32) {
let uniform_id = match uniform {
Some(uniform) => uniform.id(),
None => return,
};
+ self.ipc_renderer
+ .send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform1f(uniform_id, val)))
+ .unwrap()
+ }
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
+ fn Uniform1fv(&self,
+ uniform: Option<&WebGLUniformLocation>,
+ data: Vec<f32>) {
+ if data.is_empty() {
+ return self.webgl_error(InvalidValue);
+ }
+
+ self.Uniform1f(uniform, data[0]);
+ }
+
+ // 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) {
+ let uniform_id = match uniform {
+ Some(uniform) => uniform.id(),
+ None => return,
+ };
+
+ self.ipc_renderer
+ .send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform4f(uniform_id, x, y, z, w)))
+ .unwrap()
+ }
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
+ fn Uniform4fv(&self,
+ _cx: *mut JSContext,
+ uniform: Option<&WebGLUniformLocation>,
+ data: Option<*mut JSObject>) {
let data = match data {
Some(data) => data,
- None => return,
+ None => return self.webgl_error(InvalidValue),
};
- if let Some(data_vec) = array_buffer_view_to_vec_checked::<f32>(data) {
- if data_vec.len() < 4 {
+ if let Some(data) = array_buffer_view_to_vec_checked::<f32>(data) {
+ if data.len() < 4 {
return self.webgl_error(InvalidOperation);
}
- self.ipc_renderer
- .send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform4fv(uniform_id, data_vec)))
- .unwrap()
+ self.Uniform4f(uniform, data[0], data[1], data[2], data[3]);
} else {
self.webgl_error(InvalidValue);
}