Bug 1250710 - Re-enable INVALID_ENUM checks. - r=jrmuizel draft
authorJeff Gilbert <jgilbert@mozilla.com>
Tue, 14 Jun 2016 10:13:27 -0700
changeset 380202 fddd5fbb74f5c3c474df38a2694959813d17c432
parent 380201 a188c0356e30fa3f12f36a6f257fb78edaad3c44
child 380203 96cbc580006098d6a77b5cf018baa1f6e7a521da
push id21161
push userbmo:jgilbert@mozilla.com
push dateTue, 21 Jun 2016 02:12:51 +0000
reviewersjrmuizel
bugs1250710
milestone50.0a1
Bug 1250710 - Re-enable INVALID_ENUM checks. - r=jrmuizel MozReview-Commit-ID: HTP0n4qV4uF
dom/canvas/WebGLContextGL.cpp
--- a/dom/canvas/WebGLContextGL.cpp
+++ b/dom/canvas/WebGLContextGL.cpp
@@ -1304,102 +1304,16 @@ WebGLContext::DoReadPixelsAndConvert(con
         }
 
         return true;
     }
 
     gl->fReadPixels(x, y, width, height, format, destType, destBytesOrOffset);
     return true;
 }
-/*
-static bool
-IsFormatAndTypeUnpackable(GLenum format, GLenum type, bool isWebGL2)
-{
-    switch (type) {
-    case LOCAL_GL_UNSIGNED_BYTE:
-        switch (format) {
-        case LOCAL_GL_LUMINANCE:
-        case LOCAL_GL_LUMINANCE_ALPHA:
-            return isWebGL2;
-        case LOCAL_GL_ALPHA:
-        case LOCAL_GL_RED:
-        case LOCAL_GL_RED_INTEGER:
-        case LOCAL_GL_RG:
-        case LOCAL_GL_RG_INTEGER:
-        case LOCAL_GL_RGB:
-        case LOCAL_GL_RGB_INTEGER:
-        case LOCAL_GL_RGBA:
-        case LOCAL_GL_RGBA_INTEGER:
-            return true;
-        default:
-            return false;
-        }
-
-    case LOCAL_GL_BYTE:
-        switch (format) {
-        case LOCAL_GL_RED:
-        case LOCAL_GL_RED_INTEGER:
-        case LOCAL_GL_RG:
-        case LOCAL_GL_RG_INTEGER:
-        case LOCAL_GL_RGB:
-        case LOCAL_GL_RGB_INTEGER:
-        case LOCAL_GL_RGBA:
-        case LOCAL_GL_RGBA_INTEGER:
-            return true;
-        default:
-            return false;
-        }
-
-    case LOCAL_GL_FLOAT:
-    case LOCAL_GL_HALF_FLOAT:
-    case LOCAL_GL_HALF_FLOAT_OES:
-        switch (format) {
-        case LOCAL_GL_RED:
-        case LOCAL_GL_RG:
-        case LOCAL_GL_RGB:
-        case LOCAL_GL_RGBA:
-            return true;
-
-        default:
-            return false;
-        }
-
-    case LOCAL_GL_UNSIGNED_SHORT:
-    case LOCAL_GL_SHORT:
-    case LOCAL_GL_UNSIGNED_INT:
-    case LOCAL_GL_INT:
-        switch (format) {
-        case LOCAL_GL_RED_INTEGER:
-        case LOCAL_GL_RG_INTEGER:
-        case LOCAL_GL_RGB_INTEGER:
-        case LOCAL_GL_RGBA_INTEGER:
-            return true;
-
-        default:
-            return false;
-        }
-
-    case LOCAL_GL_UNSIGNED_INT_2_10_10_10_REV:
-        return format == LOCAL_GL_RGBA ||
-               format == LOCAL_GL_RGBA_INTEGER;
-
-    case LOCAL_GL_UNSIGNED_SHORT_4_4_4_4:
-    case LOCAL_GL_UNSIGNED_SHORT_5_5_5_1:
-        return format == LOCAL_GL_RGBA;
-
-    case LOCAL_GL_UNSIGNED_SHORT_5_6_5:
-    case LOCAL_GL_UNSIGNED_INT_10F_11F_11F_REV:
-    case LOCAL_GL_UNSIGNED_INT_5_9_9_9_REV:
-        return format == LOCAL_GL_RGB;
-
-    default:
-        return false;
-    }
-}
-*/
 
 CheckedUint32
 WebGLContext::GetPackSize(uint32_t width, uint32_t height, uint8_t bytesPerPixel,
                           CheckedUint32* const out_startOffset,
                           CheckedUint32* const out_rowStride)
 {
     if (!width || !height) {
         *out_startOffset = 0;
@@ -1577,22 +1491,24 @@ WebGLContext::ValidateReadPixels(GLint x
 {
     if (rawWidth < 0 || rawHeight < 0) {
         ErrorInvalidValue("readPixels: negative size passed");
         return false;
     }
 
     const uint32_t width = uint32_t(rawWidth);
     const uint32_t height = uint32_t(rawHeight);
-/*
-    if (!IsFormatAndTypeUnpackable(format, type)) {
+
+    // So yeah, we are actually checking that these are valid as /unpack/ formats, instead
+    // of /pack/ formats here, but it should cover the INVALID_ENUM cases.
+    if (!mFormatUsage->AreUnpackEnumsValid(packFormat, packType)) {
         ErrorInvalidEnum("readPixels: Bad format or type.");
         return false;
     }
-*/
+
     const webgl::PackingInfo pi = {packFormat, packType};
     uint8_t bytesPerPixel;
     if (!webgl::GetBytesPerPixel(pi, &bytesPerPixel)) {
         ErrorInvalidEnum("readPixels: Bad format or type.");
         return false;
     }
 
     CheckedUint32 startOffset;