Title: [265418] trunk/Source
Revision
265418
Author
[email protected]
Date
2020-08-09 11:23:44 -0700 (Sun, 09 Aug 2020)

Log Message

Preload graphics drivers in Mac WebProcess
https://bugs.webkit.org/show_bug.cgi?id=215183

Reviewed by Darin Adler.

Source/WebCore:

In newer versions of Mac OS, graphics drivers are no longer part of the shared cache due to
size restrictions. This can cause first render to be blocked by ~10 ms when we dlopen those
drivers. To work around this, we preload the drivers when prewarming the WebProcess.

* page/ProcessWarming.cpp:
(WebCore::ProcessWarming::prewarmGlobally):

Source/WTF:

Enable GPU driver preheating in versions of the OS that might not have the drivers in the dyld
shared cache due to size restrictions.

* wtf/PlatformEnableCocoa.h:

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (265417 => 265418)


--- trunk/Source/WTF/ChangeLog	2020-08-09 15:34:01 UTC (rev 265417)
+++ trunk/Source/WTF/ChangeLog	2020-08-09 18:23:44 UTC (rev 265418)
@@ -1,3 +1,15 @@
+2020-08-09  Ben Nham  <[email protected]>
+
+        Preload graphics drivers in Mac WebProcess
+        https://bugs.webkit.org/show_bug.cgi?id=215183
+
+        Reviewed by Darin Adler.
+
+        Enable GPU driver preheating in versions of the OS that might not have the drivers in the dyld
+        shared cache due to size restrictions.
+
+        * wtf/PlatformEnableCocoa.h:
+
 2020-08-09  Commit Queue  <[email protected]>
 
         Unreviewed, reverting r263195, r263252, and r265394.

Modified: trunk/Source/WTF/wtf/PlatformEnableCocoa.h (265417 => 265418)


--- trunk/Source/WTF/wtf/PlatformEnableCocoa.h	2020-08-09 15:34:01 UTC (rev 265417)
+++ trunk/Source/WTF/wtf/PlatformEnableCocoa.h	2020-08-09 18:23:44 UTC (rev 265418)
@@ -224,6 +224,10 @@
 #define ENABLE_GPU_PROCESS 1
 #endif
 
+#if !defined(ENABLE_GPU_DRIVER_PREWARMING) && PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101600
+#define ENABLE_GPU_DRIVER_PREWARMING 1
+#endif
+
 #if !defined(ENABLE_INDEXED_DATABASE)
 #define ENABLE_INDEXED_DATABASE 1
 #endif

Modified: trunk/Source/WebCore/ChangeLog (265417 => 265418)


--- trunk/Source/WebCore/ChangeLog	2020-08-09 15:34:01 UTC (rev 265417)
+++ trunk/Source/WebCore/ChangeLog	2020-08-09 18:23:44 UTC (rev 265418)
@@ -1,3 +1,17 @@
+2020-08-09  Ben Nham  <[email protected]>
+
+        Preload graphics drivers in Mac WebProcess
+        https://bugs.webkit.org/show_bug.cgi?id=215183
+
+        Reviewed by Darin Adler.
+
+        In newer versions of Mac OS, graphics drivers are no longer part of the shared cache due to
+        size restrictions. This can cause first render to be blocked by ~10 ms when we dlopen those
+        drivers. To work around this, we preload the drivers when prewarming the WebProcess.
+
+        * page/ProcessWarming.cpp:
+        (WebCore::ProcessWarming::prewarmGlobally):
+
 2020-08-09  Youenn Fablet  <[email protected]>
 
         Always resolve ReadableStream's tee()'s cancel promise after the stream closes or errors

Modified: trunk/Source/WebCore/page/ProcessWarming.cpp (265417 => 265418)


--- trunk/Source/WebCore/page/ProcessWarming.cpp	2020-08-09 15:34:01 UTC (rev 265417)
+++ trunk/Source/WebCore/page/ProcessWarming.cpp	2020-08-09 18:23:44 UTC (rev 265418)
@@ -43,6 +43,11 @@
 #include "XMLNSNames.h"
 #include "XMLNames.h"
 
+#if ENABLE(GPU_DRIVER_PREWARMING)
+#include "GPUDevice.h"
+#include "GPURequestAdapterOptions.h"
+#endif
+
 namespace WebCore {
 
 void ProcessWarming::initializeNames()
@@ -78,6 +83,10 @@
 #if ENABLE(TELEPHONE_NUMBER_DETECTION)
     TelephoneNumberDetector::isSupported();
 #endif
+
+#if ENABLE(GPU_DRIVER_PREWARMING)
+    GPUDevice::tryCreate(WTF::nullopt);
+#endif
 }
 
 WebCore::PrewarmInformation ProcessWarming::collectPrewarmInformation()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to