Bug 1704927 - Allow Software WebRender for all popups on early beta and Fission users. r=gfx-reviewers,jrmuizel

This patch turns on Software WebRender for all widgets that don't get
acceleration by default on nightly and early beta, as well as for users
who are put into the Fission experiment. It also cleans up our prefs to
simply enable it for all popups, and not just those affected by Fission.

Differential Revision: https://phabricator.services.mozilla.com/D111958
This commit is contained in:
Andrew Osmond 2021-04-13 23:58:49 +00:00
Родитель 26f5a10a63
Коммит cb0f2694b3
5 изменённых файлов: 4 добавлений и 21 удалений

Просмотреть файл

@ -5059,14 +5059,7 @@
# software backend
- name: gfx.webrender.software.unaccelerated-widget.allow
type: RelaxedAtomicBool
value: false
mirror: always
# Whether to force widgets that don't support acceleration to use WebRender
# software backend
- name: gfx.webrender.software.unaccelerated-widget.force
type: RelaxedAtomicBool
value: false
value: @IS_EARLY_BETA_OR_EARLIER@
mirror: always
# Whether to force widgets to don't support acceleration to use WebRender

Просмотреть файл

@ -826,10 +826,6 @@ bool nsBaseWidget::ComputeShouldAccelerate() {
WidgetTypeSupportsAcceleration();
}
bool nsBaseWidget::WidgetTypePrefersSoftwareWebRender() const {
return StaticPrefs::gfx_webrender_software_unaccelerated_widget_force();
}
bool nsBaseWidget::UseAPZ() {
return (gfxPlatform::AsyncPanZoomEnabled() &&
(WindowType() == eWindowType_toplevel ||
@ -1226,7 +1222,9 @@ already_AddRefed<LayerManager> nsBaseWidget::CreateCompositorSession(
StaticPrefs::gfx_webrender_unaccelerated_widget_force()) {
enableWR = gfx::gfxVars::UseWebRender();
enableSWWR = gfx::gfxVars::UseSoftwareWebRender();
} else if (WidgetTypePrefersSoftwareWebRender()) {
} else if (gfxPlatform::DoesFissionForceWebRender() ||
StaticPrefs::
gfx_webrender_software_unaccelerated_widget_allow()) {
enableWR = enableSWWR = gfx::gfxVars::UseWebRender();
} else {
enableWR = enableSWWR = false;

Просмотреть файл

@ -292,7 +292,6 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
return NS_ERROR_NOT_IMPLEMENTED;
}
bool ComputeShouldAccelerate();
virtual bool WidgetTypePrefersSoftwareWebRender() const;
virtual bool WidgetTypeSupportsAcceleration() { return true; }
[[nodiscard]] virtual nsresult OnDefaultButtonLoaded(
const LayoutDeviceIntRect& aButtonRect) override {

Просмотреть файл

@ -8509,12 +8509,6 @@ void nsWindow::PickerClosed() {
}
}
bool nsWindow::WidgetTypePrefersSoftwareWebRender() const {
return (mTransparencyMode == eTransparencyTransparent &&
StaticPrefs::gfx_webrender_software_unaccelerated_widget_allow()) ||
nsBaseWidget::WidgetTypePrefersSoftwareWebRender();
}
bool nsWindow::WidgetTypeSupportsAcceleration() {
// We don't currently support using an accelerated layer manager with
// transparent windows so don't even try. I'm also not sure if we even

Просмотреть файл

@ -294,7 +294,6 @@ class nsWindow final : public nsWindowBase {
* Misc.
*/
virtual bool AutoErase(HDC dc);
bool WidgetTypePrefersSoftwareWebRender() const override;
bool WidgetTypeSupportsAcceleration() override;
void ForcePresent();