Auto merge of #10432 - autrilla:uniform, r=emilio

Added Uniform{1iv, 2f, 2fv}

The remaining ones need changes to webrender_traits, so I'll have to open a PR there too.

r? @emilio

<!-- 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/10432)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-04-07 02:38:03 +05:30
commit a5bc74be2f
2 changed files with 44 additions and 0 deletions

View file

@ -1008,6 +1008,27 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
.unwrap()
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
fn Uniform1iv(&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() < 1 {
return self.webgl_error(InvalidOperation);
}
self.Uniform1i(uniform, data[0]);
} else {
self.webgl_error(InvalidValue);
}
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
fn Uniform1fv(&self,
uniform: Option<&WebGLUniformLocation>,
@ -1038,6 +1059,27 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
.unwrap()
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
fn Uniform2fv(&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::<f32>(data) {
if data.len() < 2 {
return self.webgl_error(InvalidOperation);
}
self.Uniform2f(uniform, data[0], data[1]);
} else {
self.webgl_error(InvalidValue);
}
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
fn Uniform4i(&self,
uniform: Option<&WebGLUniformLocation>,

View file

@ -650,9 +650,11 @@ interface WebGLRenderingContextBase
void uniform1i(WebGLUniformLocation? location, GLint x);
//void uniform1iv(WebGLUniformLocation? location, Int32Array v);
//void uniform1iv(WebGLUniformLocation? location, sequence<long> v);
void uniform1iv(WebGLUniformLocation? location, optional object v);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
//void uniform2fv(WebGLUniformLocation? location, Float32Array v);
//void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform2fv(WebGLUniformLocation? location, optional object v);
//void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
//void uniform2iv(WebGLUniformLocation? location, Int32Array v);
//void uniform2iv(WebGLUniformLocation? location, sequence<long> v);