Title: [276241] trunk/Source/WebCore
Revision
276241
Author
[email protected]
Date
2021-04-19 02:03:52 -0700 (Mon, 19 Apr 2021)

Log Message

Enable GL_ANGLE_instanced_arrays WebGL extension in WPE
https://bugs.webkit.org/show_bug.cgi?id=224438

Reviewed by Darin Adler.

Tested by WebGL WPT.

* html/canvas/ANGLEInstancedArrays.cpp:
(WebCore::ANGLEInstancedArrays::supported):
* platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:
(WebCore::ExtensionsGLOpenGLES::supportsExtension):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (276240 => 276241)


--- trunk/Source/WebCore/ChangeLog	2021-04-19 08:39:04 UTC (rev 276240)
+++ trunk/Source/WebCore/ChangeLog	2021-04-19 09:03:52 UTC (rev 276241)
@@ -1,3 +1,17 @@
+2021-04-19  Imanol Fernandez  <[email protected]>
+
+        Enable GL_ANGLE_instanced_arrays WebGL extension in WPE
+        https://bugs.webkit.org/show_bug.cgi?id=224438
+
+        Reviewed by Darin Adler.
+
+        Tested by WebGL WPT.
+
+        * html/canvas/ANGLEInstancedArrays.cpp:
+        (WebCore::ANGLEInstancedArrays::supported):
+        * platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:
+        (WebCore::ExtensionsGLOpenGLES::supportsExtension):
+
 2021-04-19  Felipe Erias  <[email protected]>
 
         [css-flexbox] Table layout disregards overriding height

Modified: trunk/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp (276240 => 276241)


--- trunk/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp	2021-04-19 08:39:04 UTC (rev 276240)
+++ trunk/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp	2021-04-19 09:03:52 UTC (rev 276241)
@@ -28,7 +28,7 @@
 #if ENABLE(WEBGL)
 #include "ANGLEInstancedArrays.h"
 
-#if PLATFORM(GTK) || USE(ANGLE)
+#if PLATFORM(GTK) || USE(ANGLE) || PLATFORM(WPE)
 #include "ExtensionsGL.h"
 #endif
 
@@ -55,7 +55,7 @@
 
 bool ANGLEInstancedArrays::supported(WebGLRenderingContextBase& context)
 {
-#if USE(ANGLE) || PLATFORM(GTK)
+#if USE(ANGLE) || PLATFORM(GTK) || PLATFORM(WPE)
     return context.graphicsContextGL()->getExtensions().supports("GL_ANGLE_instanced_arrays");
 #else
     UNUSED_PARAM(context);

Modified: trunk/Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.cpp (276240 => 276241)


--- trunk/Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.cpp	2021-04-19 08:39:04 UTC (rev 276240)
+++ trunk/Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.cpp	2021-04-19 09:03:52 UTC (rev 276241)
@@ -272,6 +272,27 @@
 
 bool ExtensionsGLOpenGLES::supportsExtension(const String& name)
 {
+    if (name == "GL_ANGLE_instanced_arrays") {
+        auto majorVersion = []() {
+            GLint version = 0;
+            ::glGetIntegerv(GL_MAJOR_VERSION, &version);
+            return version;
+        };
+
+        if (m_availableExtensions.contains(name)) {
+            m_glVertexAttribDivisorANGLE = reinterpret_cast<PFNGLVERTEXATTRIBDIVISORANGLEPROC>(eglGetProcAddress("glVertexAttribDivisorANGLE"));
+            m_glDrawArraysInstancedANGLE = reinterpret_cast<PFNGLDRAWARRAYSINSTANCEDANGLEPROC >(eglGetProcAddress("glDrawArraysInstancedANGLE"));
+            m_glDrawElementsInstancedANGLE = reinterpret_cast<PFNGLDRAWELEMENTSINSTANCEDANGLEPROC >(eglGetProcAddress("glDrawElementsInstancedANGLE"));
+            m_supportsANGLEinstancedArrays = true;
+        } else if (majorVersion() >= 3 || (m_availableExtensions.contains("GL_EXT_instanced_arrays") && m_availableExtensions.contains("GL_EXT_draw_instanced"))) {
+            m_glVertexAttribDivisorANGLE = ::glVertexAttribDivisor;
+            m_glDrawArraysInstancedANGLE = ::glDrawArraysInstanced;
+            m_glDrawElementsInstancedANGLE = ::glDrawElementsInstanced;
+            m_supportsANGLEinstancedArrays = true;
+        }
+        return m_supportsANGLEinstancedArrays;
+    }
+    
     if (m_availableExtensions.contains(name)) {
         if (!m_supportsOESvertexArrayObject && name == "GL_OES_vertex_array_object") {
             m_glBindVertexArrayOES = reinterpret_cast<PFNGLBINDVERTEXARRAYOESPROC>(eglGetProcAddress("glBindVertexArrayOES"));
@@ -288,11 +309,6 @@
             m_glReadnPixelsEXT = reinterpret_cast<PFNGLREADNPIXELSEXTPROC>(eglGetProcAddress("glReadnPixelsEXT"));
             m_glGetnUniformfvEXT = reinterpret_cast<PFNGLGETNUNIFORMFVEXTPROC>(eglGetProcAddress("glGetnUniformfvEXT"));
             m_glGetnUniformivEXT = reinterpret_cast<PFNGLGETNUNIFORMIVEXTPROC>(eglGetProcAddress("glGetnUniformivEXT"));
-        } else if (!m_supportsANGLEinstancedArrays && name == "GL_ANGLE_instanced_arrays") {
-            m_glVertexAttribDivisorANGLE = reinterpret_cast<PFNGLVERTEXATTRIBDIVISORANGLEPROC>(eglGetProcAddress("glVertexAttribDivisorANGLE"));
-            m_glDrawArraysInstancedANGLE = reinterpret_cast<PFNGLDRAWARRAYSINSTANCEDANGLEPROC >(eglGetProcAddress("glDrawArraysInstancedANGLE"));
-            m_glDrawElementsInstancedANGLE = reinterpret_cast<PFNGLDRAWELEMENTSINSTANCEDANGLEPROC >(eglGetProcAddress("glDrawElementsInstancedANGLE"));
-            m_supportsANGLEinstancedArrays = true;
         } else if (name == "GL_EXT_draw_buffers") {
             // FIXME: implement the support.
             return false;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to