Support webgl2 tex format tests. draft
authorJeff Gilbert <jdashg@gmail.com>
Thu, 17 Dec 2015 16:16:53 -0800
changeset 316098 a5ed99edf8f50b959efdcb0040253da035427a9b
parent 316097 a179841c8d07d2cda0c7c2afa2adbeac3c40d0d8
child 316099 106ebb2afd44f652c38b697d537f70de99026b99
push id8514
push userjgilbert@mozilla.com
push dateFri, 18 Dec 2015 00:24:33 +0000
milestone45.0a1
Support webgl2 tex format tests.
dom/canvas/TexUnpackBlob.cpp
dom/canvas/WebGLContextUtils.cpp
--- a/dom/canvas/TexUnpackBlob.cpp
+++ b/dom/canvas/TexUnpackBlob.cpp
@@ -438,46 +438,50 @@ GetFormatForPackingTuple(GLenum packingF
 
         case LOCAL_GL_RGBA:
             *out_texelFormat = WebGLTexelFormat::RGBA8;
             return true;
 
         default:
             break;
         }
+        break;
 
     case LOCAL_GL_UNSIGNED_SHORT_5_6_5:
         switch (packingFormat) {
         case LOCAL_GL_RGB:
             *out_texelFormat = WebGLTexelFormat::RGB565;
             return true;
 
         default:
             break;
         }
+        break;
 
     case LOCAL_GL_UNSIGNED_SHORT_5_5_5_1:
         switch (packingFormat) {
         case LOCAL_GL_RGBA:
             *out_texelFormat = WebGLTexelFormat::RGBA5551;
             return true;
 
         default:
             break;
         }
+        break;
 
     case LOCAL_GL_UNSIGNED_SHORT_4_4_4_4:
         switch (packingFormat) {
         case LOCAL_GL_RGBA:
             *out_texelFormat = WebGLTexelFormat::RGBA4444;
             return true;
 
         default:
             break;
         }
+        break;
 
     case LOCAL_GL_HALF_FLOAT:
     case LOCAL_GL_HALF_FLOAT_OES:
         switch (packingFormat) {
         case LOCAL_GL_RED:
         case LOCAL_GL_LUMINANCE:
             *out_texelFormat = WebGLTexelFormat::R16F;
             return true;
@@ -496,16 +500,17 @@ GetFormatForPackingTuple(GLenum packingF
 
         case LOCAL_GL_RGBA:
             *out_texelFormat = WebGLTexelFormat::RGBA16F;
             return true;
 
         default:
             break;
         }
+        break;
 
     case LOCAL_GL_FLOAT:
         switch (packingFormat) {
         case LOCAL_GL_RED:
         case LOCAL_GL_LUMINANCE:
             *out_texelFormat = WebGLTexelFormat::R32F;
             return true;
 
@@ -523,16 +528,17 @@ GetFormatForPackingTuple(GLenum packingF
 
         case LOCAL_GL_RGBA:
             *out_texelFormat = WebGLTexelFormat::RGBA32F;
             return true;
 
         default:
             break;
         }
+        break;
 
     default:
         break;
     }
 
     NS_ERROR("Unsupported EffectiveFormat dest format for DOM element upload.");
     return false;
 }
@@ -657,17 +663,18 @@ TexUnpackSurface::TexOrSubImage(bool isS
     bool outOfMemory;
 
     if (!ConvertSurface(webgl, dui, dataSurf, mIsAlphaPremult, &convertedBuffer,
                         &convertedAlignment, &outOfMemory))
     {
         if (outOfMemory) {
             *out_glError = LOCAL_GL_OUT_OF_MEMORY;
         } else {
-            MOZ_CRASH("Failed to convert surface.");
+            NS_ERROR("Failed to convert surface.");
+            *out_glError = LOCAL_GL_OUT_OF_MEMORY;
         }
         return;
     }
 
     ScopedUnpackReset scopedReset(webgl);
     webgl->gl->fPixelStorei(LOCAL_GL_UNPACK_ALIGNMENT, convertedAlignment);
 
     error = DoTexOrSubImage(isSubImage, webgl->gl, target.get(), level, dui, xOffset,
--- a/dom/canvas/WebGLContextUtils.cpp
+++ b/dom/canvas/WebGLContextUtils.cpp
@@ -26,30 +26,26 @@
 #include "WebGLContextUtils.h"
 
 namespace mozilla {
 
 TexTarget
 TexImageTargetToTexTarget(TexImageTarget texImageTarget)
 {
     switch (texImageTarget.get()) {
-    case LOCAL_GL_TEXTURE_2D:
-    case LOCAL_GL_TEXTURE_3D:
-        return texImageTarget.get();
     case LOCAL_GL_TEXTURE_CUBE_MAP_POSITIVE_X:
     case LOCAL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
     case LOCAL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
     case LOCAL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
     case LOCAL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
     case LOCAL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
         return LOCAL_GL_TEXTURE_CUBE_MAP;
+
     default:
-        MOZ_ASSERT(false, "Bad texture target");
-        // Should be caught by the constructor for TexTarget
-        return LOCAL_GL_NONE;
+        return texImageTarget.get();
     }
 }
 
 JS::Value
 StringValue(JSContext* cx, const char* chars, ErrorResult& rv)
 {
     JSString* str = JS_NewStringCopyZ(cx, chars);
     if (!str) {