diff --git a/b2g/app/b2g.js b/b2g/app/b2g.js index 6f3c691fb864..c649ce0a6de8 100644 --- a/b2g/app/b2g.js +++ b/b2g/app/b2g.js @@ -298,6 +298,7 @@ pref("ui.dragThresholdY", 25); // Layers Acceleration. We can only have nice things on gonk, because // they're not maintained anywhere else. +pref("layers.offmainthreadcomposition.enabled", true); #ifndef MOZ_WIDGET_GONK pref("dom.ipc.tabs.disabled", true); #else diff --git a/b2g/components/OopCommandLine.js b/b2g/components/OopCommandLine.js index 658bbdde52dd..cfe13ed914b0 100644 --- a/b2g/components/OopCommandLine.js +++ b/b2g/components/OopCommandLine.js @@ -26,6 +26,7 @@ oopCommandlineHandler.prototype = { // environment branch.setBoolPref("dom.ipc.tabs.disabled", false); branch.setBoolPref("layers.acceleration.disabled", false); + branch.setBoolPref("layers.offmainthreadcomposition.enabled", true); branch.setBoolPref("layers.offmainthreadcomposition.async-animations", true); branch.setBoolPref("layers.async-video.enabled", true); branch.setBoolPref("layers.async-pan-zoom.enabled", true); diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 22d57d960bce..1efedf0b30fa 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -3867,10 +3867,10 @@ function OpenBrowserWindow(options) if (options && options.remote) { // If we're using remote tabs by default, then OMTC will be force-enabled, // despite the preference returning as false. - let omtcEnabled = !gPrefService.getBoolPref("layers.offmainthreadcomposition.force-disabled") + let omtcEnabled = gPrefService.getBoolPref("layers.offmainthreadcomposition.enabled") || Services.appinfo.browserTabsRemoteAutostart; if (!omtcEnabled) { - alert("To use out-of-process tabs, you must unset the layers.offmainthreadcomposition.force-disabled preference and restart. Opening a normal window instead."); + alert("To use out-of-process tabs, you must set the layers.offmainthreadcomposition.enabled preference and restart. Opening a normal window instead."); } else { extraFeatures += ",remote"; } diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp index 2019fe1e073f..998141d6dfa2 100644 --- a/gfx/gl/GLLibraryEGL.cpp +++ b/gfx/gl/GLLibraryEGL.cpp @@ -161,7 +161,7 @@ GetAndInitDisplayForAccelANGLE(GLLibraryEGL& egl) // D3D11 ANGLE only works with OMTC; there's a bug in the non-OMTC layer // manager, and it's pointless to try to fix it. We also don't try // D3D11 ANGLE if the layer manager is prefering D3D9 (hrm, do we care?) - if (!gfxPrefs::LayersOffMainThreadCompositionForceDisabled() && + if (gfxPrefs::LayersOffMainThreadCompositionEnabled() && !gfxPrefs::LayersPreferD3D9()) { if (gfxPrefs::WebGLANGLEForceD3D11()) diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 0ce48ac7001d..b720ed980a4f 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -599,12 +599,13 @@ gfxPlatform::Init() gfxPrefs::Direct2DForceEnabled(), gfxPrefs::DirectWriteFontRenderingForceEnabled()); // Layers prefs - forcedPrefs.AppendPrintf("-L%d%d%d%d%d", + forcedPrefs.AppendPrintf("-L%d%d%d%d%d%d", gfxPrefs::LayersAMDSwitchableGfxEnabled(), gfxPrefs::LayersAccelerationDisabled(), gfxPrefs::LayersAccelerationForceEnabled(), gfxPrefs::LayersD3D11DisableWARP(), - gfxPrefs::LayersD3D11ForceWARP()); + gfxPrefs::LayersD3D11ForceWARP(), + gfxPrefs::LayersOffMainThreadCompositionForceEnabled()); // WebGL prefs forcedPrefs.AppendPrintf("-W%d%d%d%d%d%d%d%d", gfxPrefs::WebGLANGLEForceD3D11(), @@ -2219,7 +2220,8 @@ gfxPlatform::UsesOffMainThreadCompositing() if (firstTime) { result = sPrefBrowserTabsRemoteAutostart || - !gfxPrefs::LayersOffMainThreadCompositionForceDisabled(); + gfxPrefs::LayersOffMainThreadCompositionEnabled() || + gfxPrefs::LayersOffMainThreadCompositionForceEnabled(); #if defined(MOZ_WIDGET_GTK) // Linux users who chose OpenGL are being grandfathered in to OMTC result |= gfxPrefs::LayersAccelerationForceEnabled(); diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h index ade19143431c..853b18912fc7 100644 --- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -369,7 +369,8 @@ private: DECL_GFX_PREF(Live, "layers.low-precision-opacity", LowPrecisionOpacity, float, 1.0f); DECL_GFX_PREF(Live, "layers.low-precision-resolution", LowPrecisionResolution, float, 0.25f); DECL_GFX_PREF(Live, "layers.max-active", MaxActiveLayers, int32_t, -1); - DECL_GFX_PREF(Once, "layers.offmainthreadcomposition.force-disabled", LayersOffMainThreadCompositionForceDisabled, bool, false); + DECL_GFX_PREF(Once, "layers.offmainthreadcomposition.enabled", LayersOffMainThreadCompositionEnabled, bool, false); + DECL_GFX_PREF(Once, "layers.offmainthreadcomposition.force-enabled", LayersOffMainThreadCompositionForceEnabled, bool, false); DECL_GFX_PREF(Live, "layers.offmainthreadcomposition.frame-rate", LayersCompositionFrameRate, int32_t,-1); DECL_GFX_PREF(Live, "layers.orientation.sync.timeout", OrientationSyncMillis, uint32_t, (uint32_t)0); DECL_GFX_PREF(Once, "layers.overzealous-gralloc-unlocking", OverzealousGrallocUnlocking, bool, false); diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 956ca1cc96e9..6dd959c52421 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -580,6 +580,7 @@ pref("ui.dragThresholdX", 25); pref("ui.dragThresholdY", 25); pref("layers.acceleration.disabled", false); +pref("layers.offmainthreadcomposition.enabled", true); pref("layers.async-video.enabled", true); #ifdef MOZ_ANDROID_APZ diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 751a5a93fa00..7d78e7dbb993 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -4422,6 +4422,8 @@ pref("layers.max-active", -1); // if you change the tile size. pref("layers.tiles.adjust", true); +// Set the default values, and then override per-platform as needed +pref("layers.offmainthreadcomposition.enabled", true); // Compositor target frame rate. NOTE: If vsync is enabled the compositor // frame rate will still be capped. // -1 -> default (match layout.frame_rate or 60 FPS) diff --git a/testing/mozharness/configs/unittests/win_unittest.py b/testing/mozharness/configs/unittests/win_unittest.py index fb2d0c8c822b..1c6a6c3834c0 100644 --- a/testing/mozharness/configs/unittests/win_unittest.py +++ b/testing/mozharness/configs/unittests/win_unittest.py @@ -196,6 +196,11 @@ config = { "--setpref=layers.acceleration.disabled=true"], "tests": ["tests/reftest/tests/layout/reftests/reftest.list"] }, + "reftest-omtc": { + "options": ["--suite=reftest", + "--setpref=layers.offmainthreadcomposition.enabled=true"], + "tests": ["tests/reftest/tests/layout/reftests/reftest.list"] + }, "crashtest-ipc": { "options": ["--suite=crashtest", '--setpref=browser.tabs.remote=true', diff --git a/toolkit/components/telemetry/TelemetryEnvironment.jsm b/toolkit/components/telemetry/TelemetryEnvironment.jsm index 3a6ed9835b6e..142f8312e60d 100644 --- a/toolkit/components/telemetry/TelemetryEnvironment.jsm +++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm @@ -146,7 +146,7 @@ const DEFAULT_ENVIRONMENT_PREFS = new Map([ ["layers.componentalpha.enabled", {what: RECORD_PREF_VALUE}], ["layers.d3d11.disable-warp", {what: RECORD_PREF_VALUE}], ["layers.d3d11.force-warp", {what: RECORD_PREF_VALUE}], - ["layers.offmainthreadcomposition.force-disabled", {what: RECORD_PREF_VALUE}], + ["layers.offmainthreadcomposition.enabled", {what: RECORD_PREF_VALUE}], ["layers.prefer-d3d9", {what: RECORD_PREF_VALUE}], ["layers.prefer-opengl", {what: RECORD_PREF_VALUE}], ["layout.css.devPixelsPerPx", {what: RECORD_PREF_VALUE}],