Bug 1742985 added the test helper_zoom_after_gpu_process_restart.html,
but it doesn't actually get run on any platform with the GPU process
enabled. (Due to bug 1495580 on windows, and because the GPU process
isn't yet enabled on android.)
The test kills the GPU process, then tries to wait for it to be
restarted before proceeding. However, the function
ensureGPUProcessReadyForTests doesn't always work as intended, as the
GPUProcessManager may not have yet noticed that the process has been
killed, and therefore may return immediately from EnsureGPUReady.
This patch removes the buggy ensureGPUProcessReadyForTests function,
and instead makes the test wait for the "compositor-reinitialized"
topic to be observed.
Differential Revision: https://phabricator.services.mozilla.com/D138125
Add KillGPUProcessForTests, which kills the GPU process without
generating a crash dump (unlike the existing CrashGPUProcessForTests).
Additionally add EnsureGPUProcessReadyForTests, which returns a
promise that resolves to true when the GPU process is enabled and
ready, and false if it is disabled. If called while the GPU process is
being (re)started, it will not resolve until it has finished launching
(or was disabled due to error).
Finally, make GPUProcessHost::IsConnected check whether the process
handle is valid. This ensures it returns false immediately following a
call to KillProcess but prior to the GPUChild being destroyed. This
means tests can call EnsureGPUProcessReadyForTests immediately after
KillGPUProcessForTests or CrashGPUProcessForTests, and it will
reliably wait for the new process to launch, as intended.
Depends on D135207
Differential Revision: https://phabricator.services.mozilla.com/D135328
Add a function to GPUProcessManager to force the GPU process to crash,
and expose it through gfxInfo. Expose this to geckoview tests via the
test-support webextension.
Add a junit test GpuCrashTest, which triggers a GPU process crash and
ensures the crash reporter was notified.
Additionally, ensure the TestCrashHandler service is stopped in
between tests, as otherwise only the first crash test to run will be
notified of the crash.
Differential Revision: https://phabricator.services.mozilla.com/D132812
Currently, reftest-content uses GfxInfo::GetInfo() to obtain information about
the Azure backend. GetInfo() uses Win32k APIs, and therefore will mostly
return garbage in content processes.
This adds a new way to obtain the same information directly from GfxInfo
without using Win32k APIs.
Differential Revision: https://phabricator.services.mozilla.com/D111890
Loading cached shaders with glProgramBinary fails consistently for all
but the most trivial of our shaders on Adreno 3xx, so caching and
attempting to load them is a waste of time. Chromium and other
projects also appear to have disabled their shader caches on Adreno
3xx due to bugs.
This patch moves the gfx.webrender.program-binary-disk pref
declaration from all.js to StaticPrefList.yaml. Rather than directly
using the value of the pref to decide whether to create the shader
cache, we now initialize a Feature in gfxConfigManager with a default
value from the pref and then configure it from the blocklist. On
Android we block the feature on Adreno 3xx devices. The pref remains
true by default on Android and Windows, and false by default on Linux
and Macos.
Differential Revision: https://phabricator.services.mozilla.com/D111427
Webrender's pre-optimized shaders result in completely broken
rendering on a Huawei MediaPad M2 (Mali-T628). As a precaution,
disable optimized shaders on all Mali-T6xx devices.
Differential Revision: https://phabricator.services.mozilla.com/D104752
Webrender's pre-optimized shaders result in completely broken
rendering on a Huawei MediaPad M2 (Mali-T628). As a precaution,
disable optimized shaders on all Mali-T6xx devices.
Differential Revision: https://phabricator.services.mozilla.com/D104752
Webrender's pre-optimized shaders result in completely broken
rendering on a Huawei MediaPad M2 (Mali-T628). As a precaution,
disable optimized shaders on all Mali-T6xx devices.
Differential Revision: https://phabricator.services.mozilla.com/D104752
GfxInfo::RefreshMonitors() could not be called in ScreenHelperWin::RefreshScreens(), since the RefreshScreens() is called within nsAppShell::Init(). Then GfxInfo::RefreshMonitors() is called during WM_DISPLAYCHANGE event handling.
Differential Revision: https://phabricator.services.mozilla.com/D103661
GfxInfo::RefreshMonitors() could not be called in ScreenHelperWin::RefreshScreens(), since the RefreshScreens() is called within nsAppShell::Init(). Then GfxInfo::RefreshMonitors() is called during WM_DISPLAYCHANGE event handling.
Differential Revision: https://phabricator.services.mozilla.com/D103661
We have noticed that a sizeable number of Fenix users are not getting
webrender when they should be. On desktop the existing
gfx.feature.webrender telemetry probe is used to determine why
webrender is not enabled. Expose this to geckoview_streaming telemetry
so we can tell the same for Fenix users.
Differential Revision: https://phabricator.services.mozilla.com/D102213
nsTSubstring::Split used to heap-allocate an array to store all tokens.
However, most uses of Split just use it to iterate in a range-based for loop.
The few remaining uses also don't need to iterate multiple times over all
tokens, so it's better to just use nsTokenizedRange, which tokenizes lazily.
Differential Revision: https://phabricator.services.mozilla.com/D99234
Since Software WebRender is the replacement for Basic compositor, we
should not allow generic blocklist rules which block all features to
block Software WebRender. This feature must work under all
configurations, including safe mode, so it doesn't make sense to allow
blocking it.
This does not however prevent rules specifically targeting SW-WR from
blocking/allowing it.
Differential Revision: https://phabricator.services.mozilla.com/D99834
Since Software WebRender is the replacement for Basic compositor, we
should not allow generic blocklist rules which block all features to
block Software WebRender. This feature must work under all
configurations, including safe mode, so it doesn't make sense to allow
blocking it.
This does not however prevent rules specifically targeting SW-WR from
blocking/allowing it.
Differential Revision: https://phabricator.services.mozilla.com/D99834
GfxInfo generally wants to be main-thread, so WebGL (especially
out-of-process) runs into problems sometimes.
Also rename to UNUSED_FEATURE_WEBGL_MSAA, pending removal.
Differential Revision: https://phabricator.services.mozilla.com/D91208
GfxInfo generally wants to be main-thread, so WebGL (especially
out-of-process) runs into problems sometimes.
Also remove obsolete FEATURE_WEBGL_MSAA.
Differential Revision: https://phabricator.services.mozilla.com/D91208
GfxInfo generally wants to be main-thread, so WebGL (especially
out-of-process) runs into problems sometimes.
Also remove obsolete FEATURE_WEBGL_MSAA.
Differential Revision: https://phabricator.services.mozilla.com/D91208
We don't collect telemetry stats on why users don't get HW ANGLE,
however we can just share failure IDs with HW ANGLE when we disable
WebRender with UnavailableNoAngle.
Differential Revision: https://phabricator.services.mozilla.com/D90867
Also ship to release if the Intel driver is 21.20.16.4550 or later.
Add Intel Gen 6 GT1 (Sandybridge) and allow it to ride to early beta.
Differential Revision: https://phabricator.services.mozilla.com/D89613
Like an earlier patch in the series, this uses `Split()` to return dependent
substrings into the blocklist string, rather than copying each individual
entry out for parsing. We also, in passing, eliminate a copy from the
converted UTF8 string into an entirely separate string.
Depends on D89169
Differential Revision: https://phabricator.services.mozilla.com/D89170
Instead of splitting the entire entry into an `nsTArray`, we can use
`nsTSubstring::Split` to provide dependent strings into the entry. We copy
the actual keys and values later, so this should be perfectly safe.
Depends on D89168
Differential Revision: https://phabricator.services.mozilla.com/D89169
There's a lot of string splitting here, which needlessly copies, and then
there's a lot of copies out of the split arrays. This patch at least
addresses the latter by using references where possible.
Differential Revision: https://phabricator.services.mozilla.com/D89168