Bug 1026404 - Disable OES_EGL_image and OES_EGL_image_external on SGX 544 MP devices. r=eflores
authorJamie Nicol <jnicol@mozilla.com>
Wed, 26 Oct 2016 15:28:08 +0100
changeset 319712 1ba26e18f7cabe9f232780081d8b66366c7ddef4
parent 319711 2199f815eaa9478cc781bed08291162f20e59bd5
child 319713 09b9bd35cf63d6b26fcbbcacee6043c8e82e38d8
push id20748
push userphilringnalda@gmail.com
push dateFri, 28 Oct 2016 03:39:55 +0000
treeherderfx-team@715360440695 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerseflores
bugs1026404
milestone52.0a1
Bug 1026404 - Disable OES_EGL_image and OES_EGL_image_external on SGX 544 MP devices. r=eflores EGLImageTargetTexture2D crashes on SGX 544 MP GPUs on Kit Kat with either GL_TEXTURE_2D or GL_TEXTURE_EXTERNAL as the texture target. This means that both OES_EGL_image and OES_EGL_image_external extensions do not work and must be avoided. MozReview-Commit-ID: DJmtUL6kexC
gfx/gl/GLContext.cpp
gfx/gl/GLContext.h
--- a/gfx/gl/GLContext.cpp
+++ b/gfx/gl/GLContext.cpp
@@ -820,16 +820,17 @@ GLContext::InitWithPrefixImpl(const char
         "Adreno (TM) 305",
         "Adreno (TM) 320",
         "Adreno (TM) 330",
         "Adreno (TM) 420",
         "Mali-400 MP",
         "Mali-450 MP",
         "PowerVR SGX 530",
         "PowerVR SGX 540",
+        "PowerVR SGX 544MP",
         "NVIDIA Tegra",
         "Android Emulator",
         "Gallium 0.4 on llvmpipe",
         "Intel HD Graphics 3000 OpenGL Engine",
         "Microsoft Basic Render Driver",
         "Unknown"
     };
 
@@ -1796,16 +1797,27 @@ GLContext::InitExtensions()
 
         if (Vendor() == GLVendor::Imagination &&
             Renderer() == GLRenderer::SGX540)
         {
             // Bug 980048
             MarkExtensionUnsupported(OES_EGL_sync);
         }
 
+#ifdef MOZ_WIDGET_ANDROID
+        if (Vendor() == GLVendor::Imagination &&
+            Renderer() == GLRenderer::SGX544MP &&
+            AndroidBridge::Bridge()->GetAPIVersion() < 21)
+        {
+            // Bug 1026404
+            MarkExtensionUnsupported(OES_EGL_image);
+            MarkExtensionUnsupported(OES_EGL_image_external);
+        }
+#endif
+
         if (Vendor() == GLVendor::ARM &&
             (Renderer() == GLRenderer::Mali400MP ||
              Renderer() == GLRenderer::Mali450MP))
         {
             // Bug 1264505
             MarkExtensionUnsupported(OES_EGL_image_external);
         }
 
--- a/gfx/gl/GLContext.h
+++ b/gfx/gl/GLContext.h
@@ -175,16 +175,17 @@ enum class GLRenderer {
     AdrenoTM305,
     AdrenoTM320,
     AdrenoTM330,
     AdrenoTM420,
     Mali400MP,
     Mali450MP,
     SGX530,
     SGX540,
+    SGX544MP,
     Tegra,
     AndroidEmulator,
     GalliumLlvmpipe,
     IntelHD3000,
     MicrosoftBasicRenderDriver,
     Other
 };