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.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 710b61fc162..408558d3031 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -304,10 +304,13 @@ impl WebGLRenderingContext {
// If an attempt is made to call this function with no
// WebGLTexture bound, an INVALID_OPERATION error is generated.
- if texture.is_none() {
- self.webgl_error(InvalidOperation);
- return false;
- }
+ let texture = match texture {
+ Some(texture) => texture,
+ None => {
+ self.webgl_error(InvalidOperation);
+ return false;
+ }
+ };
// GL_INVALID_ENUM is generated if data_type is not an accepted value.
match data_type {
@@ -372,6 +375,13 @@ impl WebGLRenderingContext {
return false;
}
+ // GL_INVALID_VALUE is generated if level is greater than zero and the
+ // texture and the texture is not power of two.
+ if level > 0 && !texture.is_power_of_two() {
+ self.webgl_error(InvalidValue);
+ return false;
+ }
+
// GL_INVALID_VALUE is generated if border is not 0.
if border != 0 {
self.webgl_error(InvalidValue);