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