Commit Graph

274 Commits

Author SHA1 Message Date
sotaro
c59ee5cf77 Bug 1742017 - include CompositorWidget.h before #ifdef MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING r=gfx-reviewers,jrmuizel
We need to include "mozilla/widget/CompositorWidget.h" before "#ifdef MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING",

Differential Revision: https://phabricator.services.mozilla.com/D131575
2021-11-19 02:44:22 +00:00
sotaro
fa70252c37 Bug 1740673 - Ensure d3d device re-creation before sessions re-creation in GPUProcessManager::OnInProcessDeviceReset() r=nical,gfx-reviewers
Current code is not explicit about device recreation before session re-creation. It is actually done by nsWindow::OnPaint() before OnInProcessDeviceReset() call. But it is not explicit.

gfxWindowsPlatform::HandleDeviceReset() does d3d device re-creation if it is necessary.

Differential Revision: https://phabricator.services.mozilla.com/D130957
2021-11-16 08:25:09 +00:00
Alexandre Lissy
f5f5ac9496 Bug 1723505 - Convert IPC processes to GeckoArgs r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D123186
2021-10-26 19:42:03 +00:00
Marian-Vasile Laza
3c70ea54ad Backed out changeset fe716ee1a126 (bug 1723505) for causing build bustages. CLOSED TREE 2021-10-26 20:45:47 +03:00
Alexandre Lissy
3ac1867331 Bug 1723505 - Convert IPC processes to GeckoArgs r=nika,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D123186
2021-10-26 17:14:13 +00:00
stransky
a0b0a19e14 Bug 1733680 [Linux] Check mGPUChild at GPUProcessManager::SimulateDeviceReset(), r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D127317
2021-10-15 17:51:26 +00:00
Matt Woodrow
0f8591792b Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D124433
2021-09-05 22:36:45 +00:00
Andrew Osmond
6c85645ce4 Bug 1707610 - Make GPU process restart criteria depend on rendering frames and uptime. r=jrmuizel
Originally, we would restart the GPU process a fixed number of attempts
based on the layers.gpu-process.max_restarts pref. With this patch, we
now use this pref to control how many "unstable" restarts we allow. A
restart is "stable" if and only if the process uptime exceeds the pref
layers.gpu-process.stable.min-uptime-ts and if the process renders a
total number of frames exceeding the pref
layers.gpu-process.stable.frame-threshold. This allows users to keep the
GPU process for a lot longer if they are encountering infrequent
crashes. Should the user experience the GPU process crashing quickly
and/or without rendering many frames, we will disable it as before after
a few attempts and move into the parent process.

Differential Revision: https://phabricator.services.mozilla.com/D114531
2021-05-06 19:47:38 +00:00
Andrew Osmond
5e1c61dccd Bug 1709476 - Allow falling back to Software WebRender from D3D11/WebRender in release. r=jrmuizel
If a user is able to get D3D11, and Software WebRender hasn't been
forced on (either by the Fission experiment or our pref), then we prefer
D3D11 in late beta and release. This will allow users who start with
D3D11 in the GPU process, to fallback to Software WebRender in the GPU
process.

Differential Revision: https://phabricator.services.mozilla.com/D114286
2021-05-05 14:31:46 +00:00
Jeff Muizelaar
6ea7c24d95 Bug 1703099 - Separate out BEGIN_DRAW errors from NEW_SURFACE. r=aosmond
This NEW_SURFACE is one of the top reasons for basic. Let's
separate out it to narrow down what's going on.

Differential Revision: https://phabricator.services.mozilla.com/D110861
2021-04-14 12:51:16 +00:00
Andrew Osmond
b9a5fd3999 Bug 1689203 - Allow fallback from WebRender to Software WebRender. r=jrmuizel
We can disable WebRender because the GPU process crashed, or we
encountered a graceful runtime error in WebRender. This patch adds two
new prefs to control how that fallback works.

gfx.webrender.fallback.software-d3d11 controls if WebRender falls back
to Software WebRender + D3D11 compositing. If true, and the user is
allowed to get Software WebRender, we will fallback to Software
WebRender with the D3D11 compositor first.

gfx.webrender.fallback.software controls if WebRender falls back to
Software WebRender. If true, and the user is allowed to get Software
WebRender, we will fallback to Software WebRender without the D3D11
compositor.

gfx.webrender.fallback.basic controls if WebRender or Software
WebRender falls back to Basic. If true, it falls back to Basic.
Otherwise it continues to use Software WebRender without the D3D11
compositor. Note that this means OpenGL on Android.

This patch also means that gfx.webrender.all=true and MOZ_WEBRENDER=1
no longer disables Software WebRender. It will still prefer (Hardware)
WebRender but we want to allow fallback to Software WebRender for
configurations that forced WebRender on.

Differential Revision: https://phabricator.services.mozilla.com/D103491
2021-02-01 23:36:36 +00:00
Butkovits Atila
bc6a593950 Backed out changeset 7ba7ce64acae (bug 1689203) for causing failure on GfxConfigManager. CLOSED TREE 2021-02-02 01:33:00 +02:00
Andrew Osmond
faa2dc53cb Bug 1689203 - Allow fallback from WebRender to Software WebRender. r=jrmuizel
We can disable WebRender because the GPU process crashed, or we
encountered a graceful runtime error in WebRender. This patch adds two
new prefs to control how that fallback works.

gfx.webrender.fallback.software-d3d11 controls if WebRender falls back
to Software WebRender + D3D11 compositing. If true, and the user is
allowed to get Software WebRender, we will fallback to Software
WebRender with the D3D11 compositor first.

gfx.webrender.fallback.software controls if WebRender falls back to
Software WebRender. If true, and the user is allowed to get Software
WebRender, we will fallback to Software WebRender without the D3D11
compositor.

gfx.webrender.fallback.basic controls if WebRender or Software
WebRender falls back to Basic. If true, it falls back to Basic.
Otherwise it continues to use Software WebRender without the D3D11
compositor. Note that this means OpenGL on Android.

This patch also means that gfx.webrender.all=true and MOZ_WEBRENDER=1
no longer disables Software WebRender. It will still prefer (Hardware)
WebRender but we want to allow fallback to Software WebRender for
configurations that forced WebRender on.

Differential Revision: https://phabricator.services.mozilla.com/D103491
2021-02-01 22:27:11 +00:00
Butkovits Atila
e1ada82ab0 Backed out changeset a3c9fce26dd1 (bug 1689203) for causing build bustages on GPUProcessManager.cpp. CLOSED TREE 2021-02-02 00:22:59 +02:00
Andrew Osmond
96faa939ff Bug 1689203 - Allow fallback from WebRender to Software WebRender. r=jrmuizel
We can disable WebRender because the GPU process crashed, or we
encountered a graceful runtime error in WebRender. This patch adds two
new prefs to control how that fallback works.

gfx.webrender.fallback.software-d3d11 controls if WebRender falls back
to Software WebRender + D3D11 compositing. If true, and the user is
allowed to get Software WebRender, we will fallback to Software
WebRender with the D3D11 compositor first.

gfx.webrender.fallback.software controls if WebRender falls back to
Software WebRender. If true, and the user is allowed to get Software
WebRender, we will fallback to Software WebRender without the D3D11
compositor.

gfx.webrender.fallback.basic controls if WebRender or Software
WebRender falls back to Basic. If true, it falls back to Basic.
Otherwise it continues to use Software WebRender without the D3D11
compositor. Note that this means OpenGL on Android.

This patch also means that gfx.webrender.all=true and MOZ_WEBRENDER=1
no longer disables Software WebRender. It will still prefer (Hardware)
WebRender but we want to allow fallback to Software WebRender for
configurations that forced WebRender on.

Differential Revision: https://phabricator.services.mozilla.com/D103491
2021-02-01 20:41:09 +00:00
Andrew Osmond
3c26d96569 Bug 1684170 - Decouple WebRender and Software WebRender gfxConfig features. r=jrmuizel
Lack of support of (hardware) WebRender should not block Software
WebRender support. This can happen when ANGLE isn't supported, for
example.

Differential Revision: https://phabricator.services.mozilla.com/D100445
2021-01-14 19:59:10 +00:00
Mihai Alexandru Michis
9d73149900 Backed out changeset 465526830144 (bug 1684170) for causing talos failures.
CLOSED TREE
2020-12-25 07:04:27 +02:00
Andrew Osmond
78b2fc9c37 Bug 1684170 - Decouple WebRender and Software WebRender gfxConfig features. r=jrmuizel
Lack of support of (hardware) WebRender should not block Software
WebRender support. This can happen when ANGLE isn't supported, for
example.

Differential Revision: https://phabricator.services.mozilla.com/D100445
2020-12-24 18:23:29 +00:00
Andrew Osmond
6bfc87d19c Bug 1681563 - Record WebRender device resets in telemetry and crash reports on non-Windows. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D99346
2020-12-10 14:26:32 +00:00
Andrew Osmond
6a9e5d825f Bug 1632698 - Better handle device resets when we don't have a GPU process. r=sotaro,kvark,nical
Aside from on Windows, we do not appear to handle device resets properly
without the GPU process. This patch adds in the necessary plumbing to
handle the device reset properly. It also ensures that whenever we check
for a device reset reason, we handle all of the reasons (e.g. not just
the NV video memory purge reset reason) to ensure they are not lost, and
handles them all consistently in the same manner.

It also tracks the number of device resets for thresholding purposes
with an in process compositor. While it will only disable WebRender on
Linux at this time, it will put a note in the critical log if the
threshold was exceeded on all platforms. This may prove useful in
evaluating whether or not we should do the same everywhere.

Differential Revision: https://phabricator.services.mozilla.com/D98705
2020-12-07 20:36:11 +00:00
Bogdan Tara
ae083ac406 Backed out changeset b6eb6c19057d (bug 1677094) for WebRender related crashes CLOSED TREE 2020-12-02 21:12:42 +02:00
Andrew Osmond
28cb9da25c Bug 1677094 - Assert if we lose WebRender if forced via MOZ_WEBRENDER env var. r=jrmuizel
We use MOZ_WEBRENDER to force WebRender on in our testing
infrastructure. We may silently fallback to basic during our tests if we
encounter an error and the test may pass as a result. It would be best
if we asserted we don't lose WebRender while testing.

Differential Revision: https://phabricator.services.mozilla.com/D97004
2020-12-02 17:03:12 +00:00
Simon Giesecke
5b5a5dbfcc Bug 1677466 - Split Endpoint.h and ProtocolMessageUtils.h from ProtocolUtils.h. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D93568

Depends on D93567
2020-11-23 16:06:42 +00:00
Andrew Osmond
4fcbdbe039 Bug 1677825 - Disable hardware acceleration if WebRender fails to initialize on Linux. r=jrmuizel
If we don't disable hardware acceleration when we lose WebRender, we
will likely fallback to OpenGL compositing. This is not a supported
configuration. We already do this step if we decide against using
WebRender during configuration, but not if it was lost at runtime.

Differential Revision: https://phabricator.services.mozilla.com/D97355
2020-11-18 02:44:03 +00:00
Bob Owen
f2e618d76a Bug 1654477 P4: Add pref to crash the browser if the GPU process crashes for testing. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D93673
2020-10-16 10:38:40 +00:00
Jeff Muizelaar
d3ca67c715 Bug 1668385 - Add a failure id to GPUProcess::FallbackToSoftware. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D91992
2020-09-30 23:05:38 +00:00
sotaro
fafc8a4ee8 Bug 1460499 - Use DirectComposition for hardware decoded video on Windows r=nical
Use ID3D11VideoProcessor for video frame rendering.

WebRenderError::VIDEO_OVERLAY does not cause disabling WebRender. It just change gfxVars::UseWebRenderDCompVideoOverlayWin() to false.

Differential Revision: https://phabricator.services.mozilla.com/D88763
2020-09-09 01:04:53 +00:00
Andrew Osmond
272f98121e Bug 1662836 - Expose detailed initialization failure reason for WebRender. r=kvark
We don't know why we see initialization failures in the telemetry which
makes it hard to investigate why users aren't getting WebRender and
instead fallback to basic. Let's expose the detailed error message
WebRender already generates and puts in the critical log.

Differential Revision: https://phabricator.services.mozilla.com/D89185
2020-09-08 02:03:26 +00:00
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Andrew McCreight
027e9c7ba7 Bug 1647795 - Remove some uses of "blacklist" from dom/ipc/. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D80694
2020-06-23 17:50:23 +00:00
Botond Ballo
97449edf59 Bug 1627482 - Fix non-unified build errors in gfx/ipc. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D69732
2020-04-05 03:50:33 +00:00
Haik Aftandilian
6368fb8a25 Bug 1595420 - OOM in GPUProcessManager::OnPreferenceChange and RDDProcessManager::OnPreferenceChange on macOS r=mjf,jya
Change GPUProcessManager::OnPreferenceChange() and
RDDProcessManager::OnPreferenceChange() to only queue preference changes when
the child process is in the act of launching. And don't start observing
preference changes until we launch the child process rather that at startup.

Differential Revision: https://phabricator.services.mozilla.com/D62112
2020-02-18 15:57:14 +00:00
Simon Giesecke
9bcfd47601 Bug 1611415 - Prefer using std::move over forget. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980
2020-02-13 14:38:48 +00:00
shindli
6bb3487209 Backed out changeset 0c982bc69cb3 (bug 1611415) for causing build bustages in /builds/worker/workspace/build/src/obj-firefox/dist/include/nsCOMPtr CLOSED TREE 2020-02-12 20:13:29 +02:00
Simon Giesecke
d45525793f Bug 1611415 - Applied FixItHints from mozilla-non-std-move. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980
2020-02-12 17:24:41 +00:00
Andrew Osmond
553047b799 Bug 1609268 - Make WebRender debug prefs apply live without the GPU process. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D60055
2020-01-15 20:22:29 +00:00
Chris Martin
466cc89105 Bug 1604412 - Give CompositorWidgetChild more window info r=sotaro
CompositorWidgetChild is about to be responsible for creating,
destroying, and presenting a shared buffer that CompositorWidgetParent
will draw into. To do this, it will need the window handle,
transparency mode changes, window size changes, and window size mode
changes.

Its creation is also about to become fallible, so it needs a separate
initialization routine.

Differential Revision: https://phabricator.services.mozilla.com/D57430
2020-01-08 18:37:38 +00:00
Chris Martin
ba9cc7e07d Bug 1604412 - Clarify purpose of PlatformCompositorWidgetDelegate r=sotaro
PlatformCompositorWidgetDelegate was meant to be a pure virtual base
class for all the functions that nsWindow could call that would
either go to an in-process compositor widget or an OMTC widget.

By that definition, it does not seem like CompositorWidgetParent should
be a subclass, since nsWindow cannot directly call its methods and
currently CompositorWidgetParent has several "do nothing"
implementations of the interface methods because they don't really
belong.

This changeset remedies this by refactoring CompositorWidgetParent so
it is no longer an implementor of PlatformCompositorWidgetDelegate. Now
the only implementors are CompositorWidgetChild and InProcessWin-
CompositorWidget, which makes sense because they are both directly
called through the nsWindow delegate.

It also eliminates some of the methods that seem like they don't belong
in PlatformCompositorWidgetDelegate.

Differential Revision: https://phabricator.services.mozilla.com/D57429
2020-01-08 18:36:30 +00:00
Sylvestre Ledru
0f8c6db00f Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D54686
2019-11-26 14:35:02 +00:00
Dan Glastonbury
a8dfa07d69 Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D50401
2019-11-04 03:41:57 +00:00
Razvan Maries
98ac13b776 Backed out 6 changesets (bug 1561179) for perma fails on browser_timeout_throttling_with_audio_playback.js. CLOSED TREE
Backed out changeset 5d8059472045 (bug 1561179)
Backed out changeset 90c207dd2cc2 (bug 1561179)
Backed out changeset e90af73ef3c4 (bug 1561179)
Backed out changeset 4678da971197 (bug 1561179)
Backed out changeset 55340b999a4e (bug 1561179)
Backed out changeset 4037cce56491 (bug 1561179)
2019-10-31 03:21:24 +02:00
Dan Glastonbury
dece7cbba6 Bug 1561179 - P4: Create PVideoBridge between RDDProcess and GPUProcess. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D50401
2019-10-30 23:48:31 +00:00
Nika Layzell
2bd1de16e1 Bug 1570369 - Part 2: Use IPDL refcounted for PAPZInputBridge, r=rhunt
Differential Revision: https://phabricator.services.mozilla.com/D40253
2019-08-08 16:46:22 +00:00
Nicholas Nethercote
c4aacd8403 Bug 1563139 - Remove StaticPrefs.h. r=glandium
This requires replacing inclusions of it with inclusions of more specific prefs
files.

The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.

Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.

Differential Revision: https://phabricator.services.mozilla.com/D39138
2019-07-26 01:10:23 +00:00
Nicholas Nethercote
462059ba06 Bug 1567329 - Append _AtStartup to once static pref getters. r=erahm
Currently it's completely unclear at use sites that the getters for `once`
static prefs return the pref value from startup, rather than the current pref
value. (Bugs have been caused by this.) This commit improves things by changing
the getter name to make it clear that the pref value obtained is from startup.

This required changing things within libpref so it distinguishes between the
"base id" (`foo_bar`) and the "full id" (`foo_bar` or
`foo_bar_DoNotUseDirectly` or `foo_bar_AtStartup` or
`foo_bar_AtStartup_DoNotUseDirectly`; the name used depends on the `mirror` and
`do_not_use_directly` values in the YAML definition.) The "full id" is used in
most places, while the "base id" is used for the `GetPrefName_*` and
`GetPrefDefault_*` functions.

(This is a nice demonstration of the benefits of the YAML file, BTW. Making
this change with the old code would have involved adding an entry to every
single pref in StaticPrefList.h.)

The patch also rejigs the comment at the top of StaticPrefList.yaml, to clarify
some things.

Differential Revision: https://phabricator.services.mozilla.com/D38604
2019-07-22 02:10:14 +00:00
sotaro
10d10766c3 Bug 1564720 - Fallback from WebRender when EGLSurface creation failed in RenderCompositorEGL::BeginFrame() r=nical
Differential Revision: https://phabricator.services.mozilla.com/D37520
2019-07-10 11:14:40 +00:00
sotaro
04d00e3ba4 Bug 1562847 - Disable double buffering with compositor when device reset happens r=nical,bas
When double buffering is enable with compositor, DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL is used without DirectComposition. There are some devices that swap chain with DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL does not work well. In this case, device reset happens very often. To avoid the situation, the double buffering needs to be disabled when device reset happens.

Differential Revision: https://phabricator.services.mozilla.com/D36579
2019-07-09 06:37:45 +00:00
Nicholas Nethercote
8069550dc0 Bug 1562331 - Make media.* static prefs follow the naming convention. r=KrisWright
This also removes the following prefs, because they're unused:
- media.autoplay.allow-muted pref
- media.autoplay.blackList-override-default

Differential Revision: https://phabricator.services.mozilla.com/D36396
2019-06-28 14:09:05 +10:00
Nicholas Nethercote
fbaa00b1eb Bug 1561825 - Make layers.* static prefs follow the naming convention. r=KrisWright
The patch also removes the layers.mlgpu.enable-container-resizing pref, because
it's dead.

Differential Revision: https://phabricator.services.mozilla.com/D36159
2019-06-27 14:48:58 +10:00
Nicholas Nethercote
840e8cfa27 Bug 1561491 - Make gfx.* static prefs follow the naming convention. r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D35975
2019-06-26 10:38:09 +10:00