It looks like it was too hopeful that we would be able to get rid of all usage
of GfxInfo::Init() from content process. Since it looks like there may be
some rare cases where the browser asserts, we should preface the assertions
to only happen with Win32k lockdown enabled to allow the user to continue
to use their browser while foxfooding this feature.
Differential Revision: https://phabricator.services.mozilla.com/D113984
Make it so that GfxInfo::Init() no longer does anything and add some asserts
to several GfxInfo APIs to ensure that they are not called by accident from
content process, as calling them now will return invalid data.
Minor cleanup - While I'm at it, might as well make GfxInfo.h and
GfxInfo.cpp line up a bit better with the coding standards
Differential Revision: https://phabricator.services.mozilla.com/D112199
This loosens the allow list for AMD and relies on blocking instead.
I don't expect it to cause any actual change in who gets WebRender.
Differential Revision: https://phabricator.services.mozilla.com/D110800
Windows users on Basic / without D3D11 compositing, with the GPU
process, and with small screens may get Software WebRender on the
late beta and release channel.
Differential Revision: https://phabricator.services.mozilla.com/D107920
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
As we make the transition to using EGL over GLX, we will need our
detection code to be sufficient without EGL to determine the device in
use. This patch makes us always use the EGL testing code over the GLX
testing code, regardless of the pref/envvar setting.
At the very least, we need to know the vendor ID of the device in use.
We can determine this if there is only one GPU on the PCI list, if we
get a driver name from Mesa, or if it is a proprietary driver (i.e.
NVIDIA) which includes its name in the vendor ID. If we know the vendor
ID, we can usually derive the device ID from the PCI list.
We now also track which path glxtest took. If we successfully did the
test via EGL, then we will allow the pref/envvar to use EGL instead of
GLX. If the test reverted to GLX, then it will use GLX regardless of the
pref/envvar. This is necessary because we need to know if the libraries
are available or not -- some systems may be missing one or the other.
Differential Revision: https://phabricator.services.mozilla.com/D102933
As we make the transition to using EGL over GLX, we will need our
detection code to be sufficient without EGL to determine the device in
use. This patch makes us always use the EGL testing code over the GLX
testing code, regardless of the pref/envvar setting.
At the very least, we need to know the vendor ID of the device in use.
We can determine this if there is only one GPU on the PCI list, if we
get a driver name from Mesa, or if it is a proprietary driver (i.e.
NVIDIA) which includes its name in the vendor ID. If we know the vendor
ID, we can usually derive the device ID from the PCI list.
We now also track which path glxtest took. If we successfully did the
test via EGL, then we will allow the pref/envvar to use EGL instead of
GLX. If the test reverted to GLX, then it will use GLX regardless of the
pref/envvar. This is necessary because we need to know if the libraries
are available or not -- some systems may be missing one or the other.
Differential Revision: https://phabricator.services.mozilla.com/D102933
Fetch the DRM device in the EGL version of glxtest, set it in gfxInfo and pass
it to gfxVars. Finally, use it in nsDMABufDevice::Configure().
While on it, also clean up EGL typedefs and defines a bit to match how it's
done for GLX.
Inspired by and copied from wlroots and Xwayland. Thanks to emersion!
Differential Revision: https://phabricator.services.mozilla.com/D98108
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
By default, anything we do for one Sandy Bridge gpu
we should do for all of them. See bug 1678388 for an
example of how we screwed this up.
Differential Revision: https://phabricator.services.mozilla.com/D97649