Title: [276567] trunk/Source/ThirdParty/ANGLE
Revision
276567
Author
[email protected]
Date
2021-04-25 12:06:07 -0700 (Sun, 25 Apr 2021)

Log Message

[Metal ANGLE] Select proper IOSurface backing format for WebGL environment
https://bugs.webkit.org/show_bug.cgi?id=224948
<rdar://76284889>

Depending on the architecture, WebCore expects different
IOSurface texture targets for the main buffer. When running catalyst on
Arm64 devices, Metal-ANGLE needs to select the TEXTURE_2D texture target for our
IOSurface/Pbuffer bind point, rather than TEXTURE_RECTANGLE.

	Reviewed by Dean Jackson.

Patch by Kyle Piddington <[email protected]> on 2021-04-25

* src/libANGLE/renderer/metal/DisplayMtl.h:
* src/libANGLE/renderer/metal/DisplayMtl.mm:
(rx::needsEAGLOnMac):
(rx::DisplayMtl::EGLDrawingBufferTextureTarget):
(rx::DisplayMtl::generateConfigs):

Modified Paths

Diff

Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (276566 => 276567)


--- trunk/Source/ThirdParty/ANGLE/ChangeLog	2021-04-25 18:35:56 UTC (rev 276566)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog	2021-04-25 19:06:07 UTC (rev 276567)
@@ -1,3 +1,22 @@
+2021-04-25  Kyle Piddington  <[email protected]>
+
+        [Metal ANGLE] Select proper IOSurface backing format for WebGL environment
+        https://bugs.webkit.org/show_bug.cgi?id=224948
+        <rdar://76284889>
+
+        Depending on the architecture, WebCore expects different 
+        IOSurface texture targets for the main buffer. When running catalyst on 
+        Arm64 devices, Metal-ANGLE needs to select the TEXTURE_2D texture target for our
+        IOSurface/Pbuffer bind point, rather than TEXTURE_RECTANGLE.
+
+	Reviewed by Dean Jackson.
+
+        * src/libANGLE/renderer/metal/DisplayMtl.h:
+        * src/libANGLE/renderer/metal/DisplayMtl.mm:
+        (rx::needsEAGLOnMac):
+        (rx::DisplayMtl::EGLDrawingBufferTextureTarget):
+        (rx::DisplayMtl::generateConfigs):
+
 2021-04-23  Truitt Savell  <[email protected]>
 
         Unreviewed, reverting r276190.

Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.h (276566 => 276567)


--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.h	2021-04-25 18:35:56 UTC (rev 276566)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.h	2021-04-25 19:06:07 UTC (rev 276567)
@@ -165,6 +165,7 @@
     void initializeTextureCaps() const;
     void initializeFeatures();
     void initializeLimitations();
+    EGLenum EGLDrawingBufferTextureTarget();
     id<MTLDevice> getMetalDeviceMatchingAttribute(const egl::AttributeMap &attribs);
     angle::Result initializeShaderLibrary();
 

Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm (276566 => 276567)


--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm	2021-04-25 18:35:56 UTC (rev 276566)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/DisplayMtl.mm	2021-04-25 19:06:07 UTC (rev 276567)
@@ -437,6 +437,29 @@
 
 void DisplayMtl::populateFeatureList(angle::FeatureList *features) {}
 
+#if TARGET_OS_MACCATALYST
+static bool needsEAGLOnMac()
+{
+#if defined(__arm64__) || defined(__aarch64__)
+    return true;
+#else
+    return false;
+#endif
+}
+#endif
+
+EGLenum DisplayMtl::EGLDrawingBufferTextureTarget()
+{
+#if TARGET_OS_MACCATALYST
+    if (needsEAGLOnMac())
+        return EGL_TEXTURE_2D;
+    return EGL_TEXTURE_RECTANGLE_ANGLE;
+#elif TARGET_OS_OSX
+    return EGL_TEXTURE_RECTANGLE_ANGLE;
+#else
+    return EGL_TEXTURE_2D;
+#endif
+}
 egl::ConfigSet DisplayMtl::generateConfigs()
 {
     // NOTE(hqle): generate more config permutations
@@ -460,11 +483,7 @@
     config.transparentType = EGL_NONE;
 
     // Pbuffer
-#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
-    config.bindToTextureTarget = EGL_TEXTURE_RECTANGLE_ANGLE;
-#else
-    config.bindToTextureTarget = EGL_TEXTURE_2D;
-#endif
+    config.bindToTextureTarget = EGLDrawingBufferTextureTarget();
     config.maxPBufferWidth  = 4096;
     config.maxPBufferHeight = 4096;
     config.maxPBufferPixels = 4096 * 4096;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to