Diff
Modified: branches/safari-603-branch/Source/WebCore/ChangeLog (210355 => 210356)
--- branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-05 17:09:54 UTC (rev 210356)
@@ -1,5 +1,30 @@
2017-01-05 Matthew Hanson <[email protected]>
+ Merge r210273. rdar://problem/29834093
+
+ 2017-01-04 Tim Horton <[email protected]>
+
+ Provide a setting for clients to always prefer low-power WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=166675
+ <rdar://problem/29834093>
+
+ Reviewed by Dan Bernstein.
+
+ No new tests; as noted in r204664, we don't know how to reliably test
+ automatic graphics switching. One could use the manual test introduced
+ in that commit; after this commit, with the setting switched on, on a
+ dual-GPU machine that is actively using integrated graphics, that test
+ should return the same result for both contexts.
+
+ * page/Settings.in:
+ Add a setting to prefer low-power WebGL.
+
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::create):
+ If said setting is enabled, set preferLowPowerToHighPerformance.
+
+2017-01-05 Matthew Hanson <[email protected]>
+
Merge r210266. rdar://problem/29447824
2017-01-03 Tim Horton <[email protected]>
Modified: branches/safari-603-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (210355 => 210356)
--- branches/safari-603-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2017-01-05 17:09:54 UTC (rev 210356)
@@ -399,6 +399,9 @@
if (frame->settings().forceSoftwareWebGLRendering())
attributes.forceSoftwareRenderer = true;
+ if (!attributes.preferLowPowerToHighPerformance && frame->settings().preferLowPowerWebGLRendering())
+ attributes.preferLowPowerToHighPerformance = true;
+
if (page)
attributes.devicePixelRatio = page->deviceScaleFactor();
Modified: branches/safari-603-branch/Source/WebCore/page/Settings.in (210355 => 210356)
--- branches/safari-603-branch/Source/WebCore/page/Settings.in 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebCore/page/Settings.in 2017-01-05 17:09:54 UTC (rev 210356)
@@ -108,6 +108,7 @@
webGLErrorsToConsoleEnabled initial=true
openGLMultisamplingEnabled initial=true
forceSoftwareWebGLRendering initial=false
+preferLowPowerWebGLRendering initial=false
accelerated2dCanvasEnabled initial=false
antialiased2dCanvasEnabled initial=true
loadDeferringEnabled initial=true
Modified: branches/safari-603-branch/Source/WebKit/mac/ChangeLog (210355 => 210356)
--- branches/safari-603-branch/Source/WebKit/mac/ChangeLog 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebKit/mac/ChangeLog 2017-01-05 17:09:54 UTC (rev 210356)
@@ -1,5 +1,27 @@
2017-01-05 Matthew Hanson <[email protected]>
+ Merge r210273. rdar://problem/29834093
+
+ 2017-01-04 Tim Horton <[email protected]>
+
+ Provide a setting for clients to always prefer low-power WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=166675
+ <rdar://problem/29834093>
+
+ Reviewed by Dan Bernstein.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences preferLowPowerWebGLRendering]):
+ (-[WebPreferences setPreferLowPowerWebGLRendering:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+ Expose a new private preferLowPowerWebGLRendering WebKit1 preference.
+
+2017-01-05 Matthew Hanson <[email protected]>
+
Merge r210266. rdar://problem/29447824
2017-01-03 Tim Horton <[email protected]>
Modified: branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (210355 => 210356)
--- branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2017-01-05 17:09:54 UTC (rev 210356)
@@ -111,6 +111,7 @@
#define WebKitWebGLEnabledPreferenceKey @"WebKitWebGLEnabled"
#define WebKitWebGL2EnabledPreferenceKey @"WebKitWebGL2Enabled"
#define WebKitForceSoftwareWebGLRenderingPreferenceKey @"WebKitForceSoftwareWebGLRendering"
+#define WebKitPreferLowPowerWebGLRenderingPreferenceKey @"WebKitPreferLowPowerWebGLRendering"
#define WebKitAccelerated2dCanvasEnabledPreferenceKey @"WebKitAccelerated2dCanvasEnabled"
#define WebKitFrameFlatteningEnabledPreferenceKey @"WebKitFrameFlatteningEnabled"
#define WebKitSpatialNavigationEnabledPreferenceKey @"WebKitSpatialNavigationEnabled"
Modified: branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferences.mm (210355 => 210356)
--- branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferences.mm 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferences.mm 2017-01-05 17:09:54 UTC (rev 210356)
@@ -504,6 +504,7 @@
[NSNumber numberWithBool:NO], WebKitShowRepaintCounterPreferenceKey,
[NSNumber numberWithBool:YES], WebKitWebGLEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitForceSoftwareWebGLRenderingPreferenceKey,
+ [NSNumber numberWithBool:NO], WebKitPreferLowPowerWebGLRenderingPreferenceKey,
[NSNumber numberWithBool:NO], WebKitAccelerated2dCanvasEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitSubpixelCSSOMElementMetricsEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitResourceLoadStatisticsEnabledPreferenceKey,
@@ -2026,6 +2027,16 @@
[self _setBoolValue:forced forKey:WebKitForceSoftwareWebGLRenderingPreferenceKey];
}
+- (BOOL)preferLowPowerWebGLRendering
+{
+ return [self _boolValueForKey:WebKitPreferLowPowerWebGLRenderingPreferenceKey];
+}
+
+- (void)setPreferLowPowerWebGLRendering:(BOOL)preferLowPower
+{
+ [self _setBoolValue:preferLowPower forKey:WebKitPreferLowPowerWebGLRenderingPreferenceKey];
+}
+
- (BOOL)accelerated2dCanvasEnabled
{
return [self _boolValueForKey:WebKitAccelerated2dCanvasEnabledPreferenceKey];
Modified: branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (210355 => 210356)
--- branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2017-01-05 17:09:54 UTC (rev 210356)
@@ -248,6 +248,9 @@
- (BOOL)forceSoftwareWebGLRendering;
- (void)setForceSoftwareWebGLRendering:(BOOL)forced;
+- (BOOL)preferLowPowerWebGLRendering;
+- (void)setPreferLowPowerWebGLRendering:(BOOL)preferLowPower;
+
- (BOOL)accelerated2dCanvasEnabled;
- (void)setAccelerated2dCanvasEnabled:(BOOL)enabled;
Modified: branches/safari-603-branch/Source/WebKit/mac/WebView/WebView.mm (210355 => 210356)
--- branches/safari-603-branch/Source/WebKit/mac/WebView/WebView.mm 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Source/WebKit/mac/WebView/WebView.mm 2017-01-05 17:09:54 UTC (rev 210356)
@@ -2661,6 +2661,7 @@
settings.setSubpixelCSSOMElementMetricsEnabled([preferences subpixelCSSOMElementMetricsEnabled]);
settings.setForceSoftwareWebGLRendering([preferences forceSoftwareWebGLRendering]);
+ settings.setPreferLowPowerWebGLRendering([preferences preferLowPowerWebGLRendering]);
settings.setAccelerated2dCanvasEnabled([preferences accelerated2dCanvasEnabled]);
settings.setLoadDeferringEnabled(shouldEnableLoadDeferring());
settings.setWindowFocusRestricted(shouldRestrictWindowFocus());
Modified: branches/safari-603-branch/Tools/ChangeLog (210355 => 210356)
--- branches/safari-603-branch/Tools/ChangeLog 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Tools/ChangeLog 2017-01-05 17:09:54 UTC (rev 210356)
@@ -1,5 +1,25 @@
2017-01-05 Matthew Hanson <[email protected]>
+ Merge r210273. rdar://problem/29834093
+
+ 2017-01-04 Tim Horton <[email protected]>
+
+ Provide a setting for clients to always prefer low-power WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=166675
+ <rdar://problem/29834093>
+
+ Reviewed by Dan Bernstein.
+
+ * MiniBrowser/mac/Info.plist:
+ Have MiniBrowser claim to be a modern app that supports
+ automatic graphics switching. WebKit needs to support automatic
+ graphics switching, so our test app might as well. Without this
+ Info.plist parameter, this change has no effect, and bringing up
+ a WebGL context still brings up the discrete GPU (also true of the
+ existing web-exposed preferLowPowerToHighPerformance API).
+
+2017-01-05 Matthew Hanson <[email protected]>
+
Merge r210266. rdar://problem/29447824
2017-01-03 Tim Horton <[email protected]>
Modified: branches/safari-603-branch/Tools/MiniBrowser/mac/Info.plist (210355 => 210356)
--- branches/safari-603-branch/Tools/MiniBrowser/mac/Info.plist 2017-01-05 17:09:49 UTC (rev 210355)
+++ branches/safari-603-branch/Tools/MiniBrowser/mac/Info.plist 2017-01-05 17:09:54 UTC (rev 210356)
@@ -33,5 +33,7 @@
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
+ <key>NSSupportsAutomaticGraphicsSwitching</key>
+ <true/>
</dict>
</plist>