Граф коммитов

188 Коммитов

Автор SHA1 Сообщение Дата
Jamie Nicol ac9cef0aca Bug 1507074 - Don't block webrender due to lack of GL_OES_EGL_image_external_essl3 support. r=aosmond
Thanks to the previous patch in this series we can now play video
using the non-essl3 GL_OES_EGL_image_external extension, therefore we
no longer require the essl3 version.

It is assumed that all android devices support
GL_OES_EGL_image_external (non-essl3). Even if that is not the case,
webrender is no worse off than layers in that regard.

Differential Revision: https://phabricator.services.mozilla.com/D108909
2021-03-18 18:31:26 +00:00
Jamie Nicol 4fbbd0370b Bug 1692848 - Work around Mali driver crash caused by textureSize(samplerExternalOES). r=kvark
On some Mali devices we have encountered driver crashes caused by
calling textureSize(samplerExternalOES) in a shader without also
potentially sampling from the texture in the shader. ARM's suggested
workaround was to trick the driver in to thinking that the texture may
be sampled from (ie by sampling in a branch which is never dynamically
taken).

This is done by checking the value of a dummy uniform, and sampling
the texture if the value is non-default. Using a constant expression
did not work because the compiler would optimize the condition (and
therefore the sample) away.

Also re-enable webrender on Mali-72 and G76 devices, as it was blocked
due to this bug.

Differential Revision: https://phabricator.services.mozilla.com/D105493
2021-02-17 20:59:06 +00:00
Jamie Nicol 62ee003e4e Bug 1693082 - Enable webrender for Mali-Txxx devices on release. r=aosmond
Note that quite a few Mali-Txxx devices still won't get webrender, due
to lack of GL_OES_EGL_image_external_essl3 support. Bug 1507074 tracks
lifting this requirement.

Depends on D105338

Differential Revision: https://phabricator.services.mozilla.com/D105339
2021-02-16 16:46:36 +00:00
Jamie Nicol 55937b85b5 Bug 1693072 - Enable webrender for Adreno 505 and 506 devices on release. r=aosmond
Webrender has been enabled for most Adreno 5xx and 6xx devices for a
while now, but 505 and 506 were held back due to bug 1609191. We were
seeing a moderate number of crashes during what we suspected was
shader compilation.

The crashes on 505 and 506 have all but disappeared. Additionally,
after shipping to the wider release audience we saw the same crashes
on other 5xx devices, not just 505 and 506, but the numbers were never
so high as to be worrying. So we are safe to ship to 505 and 506 as
well.

Depends on D105337

Differential Revision: https://phabricator.services.mozilla.com/D105338
2021-02-16 16:46:36 +00:00
Jamie Nicol 1552fafd9d Bug 1693094 - Enable webrender for Adreno 4xx devices on nightly. r=aosmond
It appears to work well based on local testing, so let's enable in on
nightly and see if any bugs are reported.

Differential Revision: https://phabricator.services.mozilla.com/D105337
2021-02-16 16:46:36 +00:00
Jamie Nicol bb557e823d Bug 1688705 - Block webrender on Mali-G72 and G76 on Android 11. r=aosmond
In bug 1688017 we blocked webrender on Mali-G76 devices due to reports
of crashes when playing video. Based on more reports by users and
further investigation of the crash data, it appears that Mali-G72 GPUs
are also affected by the same bug, but only on Android 11 (for both
GPUs). Crashes on other Mali GPUs and earlier android versions do
exist, but in much lower numbers.

Update the block to include G72 as well as G76, but only for Android
11.

Differential Revision: https://phabricator.services.mozilla.com/D105047
2021-02-12 21:18:34 +00:00
Jamie Nicol 2bc946d133 Bug 1689064 - Disable optimized shaders on Mali-T6xx. r=aosmond
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
2021-02-11 13:47:59 +00:00
Brindusan Cristian 8859fc3907 Backed out changeset e602ff8fea83 (bug 1689064) for assertion failures in gfxFeature.cpp. CLOSED TREE 2021-02-11 13:28:24 +02:00
Jamie Nicol e97cf43b8c Bug 1689064 - Disable optimized shaders on Mali-T6xx. r=aosmond
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
2021-02-11 10:54:15 +00:00
Noemi Erli 06eb4d31ad Backed out changeset 5338c029ee7c (bug 1689064) for causing GTest failures CLOSED TREE 2021-02-11 02:02:45 +02:00
Jamie Nicol 6bd22ad430 Bug 1689064 - Disable optimized shaders on Mali-T6xx. r=aosmond
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
2021-02-10 23:09:19 +00:00
Jamie Nicol 9e0bc84dcd Bug 1691925 - Block webrender on android devices which don't support GL_OES_EGL_image_external_essl3 r=aosmond
Currently webrender requires the extension
GL_OES_EGL_image_external_essl3 to render video. There exist some
older GLES 3 devices which do not support this extension, and
attempting to render video on these devices results in a shader
compilation error and falling back to OpenGL layers.

In bug 1507074 we will implement a long term solution for such
devices, but in the meantime block webrender on devices which do not
support this extension.

Differential Revision: https://phabricator.services.mozilla.com/D104669
2021-02-10 16:00:16 +00:00
Narcis Beleuzu 2d9a1618aa Backed out changeset 6bdd49767079 (bug 1691925) for crashes on GLContext . CLOSED TREE 2021-02-10 15:17:53 +02:00
Jamie Nicol 34795f555a Bug 1691925 - Block webrender on android devices which don't support GL_OES_EGL_image_external_essl3 r=aosmond
Currently webrender requires the extension
GL_OES_EGL_image_external_essl3 to render video. There exist some
older GLES 3 devices which do not support this extension, and
attempting to render video on these devices results in a shader
compilation error and falling back to OpenGL layers.

In bug 1507074 we will implement a long term solution for such
devices, but in the meantime block webrender on devices which do not
support this extension.

Differential Revision: https://phabricator.services.mozilla.com/D104669
2021-02-10 12:12:43 +00:00
Jamie Nicol 341edfe510 Bug 1689947 - Disable webrender on Mali-G31 devices. r=aosmond
A user reported completely broken rendering on their Mali-G31 device,
starting when webrender was enabled. Block webrender on Mali-G31
devices until the cause has been identified and fixed.

Differential Revision: https://phabricator.services.mozilla.com/D103748
2021-02-02 16:42:51 +00:00
Andrew Osmond cb82d29e76 Bug 1680512 - Prefer EGL for glxtest detection and fallback to GLX if unavailable. r=rmader
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
2021-01-25 19:41:04 +00:00
Noemi Erli 1f192d6edb Backed out changeset 98349a6be0f6 (bug 1680512) for causing build bustages in GfxInfo.mm CLOSED TREE 2021-01-25 21:13:12 +02:00
Andrew Osmond b364e1738e Bug 1680512 - Prefer EGL for glxtest detection and fallback to GLX if unavailable. r=rmader
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
2021-01-25 17:31:27 +00:00
Jamie Nicol 360e32da4f Bug 1688017 - Disable webrender on Mali-G76 devices. r=nical,geckoview-reviewers,agi
We're seeing reports of crashes when users attempt to watch video on
Mali-G76 devices. Disable webrender for now on Mali-G76 until the
underlying problem is identified and fixed.

Differential Revision: https://phabricator.services.mozilla.com/D102903
2021-01-25 15:37:31 +00:00
Robert Mader 736a9e904d Bug 1588904 - [Linux/EGL] Use correct rendering device in multi-GPU setup, r=stransky,emilio,jgilbert,geckoview-reviewers,m_kato
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
2021-01-18 09:26:21 +00:00
Jamie Nicol fff551e1dd Bug 1662558 - Enable webrender for Mali-Gxx Android devices on all channels. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D96597
2020-11-10 17:24:34 +00:00
Jamie Nicol a20ad91067 Bug 1672196 - Enable webrender on Nightly for Mali-Txxx devices. r=ktaeleman
Differential Revision: https://phabricator.services.mozilla.com/D94118
2020-10-20 16:47:14 +00:00
sotaro ef4c798491 Bug 1665815 - Avoid using scissored glClear() on Android Emulator with SwiftShader r=geckoview-reviewers,jnicol,agi
Emulator with SwiftShader is buggy when attempting to clear picture cache textures with a scissor rect set.

Differential Revision: https://phabricator.services.mozilla.com/D90644
2020-09-24 09:43:21 +00:00
Jamie Nicol 25488144c9 Bug 1663355 - Always clear and render entire picture cache tiles on Mali-Gxx. r=gw,geckoview-reviewers,agi
On Mali-Gxx there is a driver bug which causes partial updates to offscreen
render targets to fail. This was originally encountered in bug 1558374, where we
thought that the problem was just to do with scissored glClear()s, so we used a
shader to clear the target instead of glClear(). On some sites, however, even
this is not enough, and sometimes renderering to the target fails leaving some
of the previous content in place.

We appear to be able to work around this by ensuring that the entire render
target is cleared, by calling glClear() with the scissor test disabled. This
means that for picture cache tiles we must ensure the entire valid region is
rendered. This patch also reverts the first attempt at a fix from bug 1558374,
as it is no longer necessary since the entire target is being cleared.

Differential Revision: https://phabricator.services.mozilla.com/D90531
2020-09-17 20:37:11 +00:00
Sylvestre Ledru 9c192aa9ca Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D88713
2020-08-31 09:23:02 +00:00
Mihai Alexandru Michis 261d01524b Backed out changeset d0f173a90792 (bug 1519636) for causing bustages.
CLOSED TREE
2020-08-31 10:14:58 +03:00
Sylvestre Ledru 939dd426e6 Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D88713
2020-08-31 06:51:21 +00:00
Jamie Nicol 2a000b30b3 Bug 1659499 - Enable webrender on Nightly for Mali-Gxx devices. r=ktaeleman,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D87320
2020-08-17 17:18:50 +00:00
Jamie Nicol 16a9221376 Bug 1656554 - Enable webrender on Adreno 5xx GPUs excluding 505 and 506. r=ktaeleman,geckoview-reviewers,snorp
Differential Revision: https://phabricator.services.mozilla.com/D85740
2020-08-06 20:35:09 +00:00
Jamie Nicol f070646027 Bug 1558374 - Avoid using scissored glClear() on Mali-Gxx. r=kvark,geckoview-reviewers,snorp
On Mali-G71 and G72 we see artifacts when scrolling around pages, in the form of
black squares or bits of content appearing in the wrong location. This appears
to be due to a driver bug when calling glClear() to clear a picture cache tile
texture with a scissor rect set.

We encountered a similar issue on some Intel hardware in bug 1638672, and worked
around it by using a custom shader to clear the texture rather than
glClear. This change applies this work around to Mali-Gxx devices too.

Differential Revision: https://phabricator.services.mozilla.com/D85867
2020-08-05 18:50:12 +00:00
Kris Taeleman 415406886e Bug 1654032 - Enable Webrender on beta/release for Adreno 6xx devices. r=jnicol,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D84203
2020-07-20 21:05:10 +00:00
Daosheng Mu af1368e7aa Bug 1602072 - Add a gfxInfo flag determine Firefox is embedded by FxR for telemetry. r=thomasmo,chutten,froydnj,jrmuizel,geckoview-reviewers,rbarker,snorp
Differential Revision: https://phabricator.services.mozilla.com/D56233
2020-06-25 17:22:20 +00:00
Kartikaya Gupta f3ff31626e Bug 1647225 - Fix some comments. r=jrmuizel,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D80449
2020-06-23 15:21:36 +00:00
Narcis Beleuzu 1f50773a6e Backed out 8 changesets (bug 1647225) for xpcshell failures on test_gfxBlacklist_Version.js CLOSED TREE
Backed out changeset b6f88195da61 (bug 1647225)
Backed out changeset a5b3f54cb5f2 (bug 1647225)
Backed out changeset 6a1025189b0e (bug 1647225)
Backed out changeset b95de94b444e (bug 1647225)
Backed out changeset ed2c7dfd8373 (bug 1647225)
Backed out changeset 1adc99494bcb (bug 1647225)
Backed out changeset 5d0cf22c335a (bug 1647225)
Backed out changeset 956b43a8636f (bug 1647225)
2020-06-23 04:34:12 +03:00
Kartikaya Gupta 015478ec51 Bug 1647225 - Fix some comments. r=jrmuizel,geckoview-reviewers,agi
Depends on D80448

Differential Revision: https://phabricator.services.mozilla.com/D80449
2020-06-22 22:54:00 +00:00
Jeff Gilbert a97c615de2 Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-15 18:25:55 +00:00
Dorel Luca 255f146f14 Backed out 7 changesets (bug 1632249) for Gtest perma chrash in [@ mozilla::BlockingResourceBase::CheckAcquire()]. CLOSED TREE
Backed out changeset 4ff99aab3ee8 (bug 1632249)
Backed out changeset d5b7fe789001 (bug 1632249)
Backed out changeset 64fbb616a0f3 (bug 1632249)
Backed out changeset 6f19f43e0a0b (bug 1632249)
Backed out changeset 073302d26c5e (bug 1632249)
Backed out changeset 7c94d37c446e (bug 1632249)
Backed out changeset 204b899f436d (bug 1632249)
2020-06-11 19:44:20 +03:00
Jeff Gilbert cf3c8fedea Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-11 06:37:35 +00:00
Mihai Alexandru Michis 59ad7ed333 Backed out 6 changesets (bug 1632249) for causing bustages in CanvasRenderingContext2D.cpp
CLOSED TREE

Backed out changeset c93972b05d4f (bug 1632249)
Backed out changeset 04f5127c85d5 (bug 1632249)
Backed out changeset b15d91e64a25 (bug 1632249)
Backed out changeset 71ad2ed8e9ba (bug 1632249)
Backed out changeset 6e9a89ead3a5 (bug 1632249)
Backed out changeset dd00e2da3a0f (bug 1632249)
2020-06-11 02:43:35 +03:00
Jeff Gilbert 9b09e54345 Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-10 22:21:02 +00:00
Dorel Luca 7289b66d6f Backed out 4 changesets (bug 1632249) for Build bustages and mda failures. CLOSED TREE
Backed out changeset cdaa8a4e9e36 (bug 1632249)
Backed out changeset 9ff26bcc580c (bug 1632249)
Backed out changeset 16d84439756f (bug 1632249)
Backed out changeset bbfe23c61add (bug 1632249)
2020-06-09 03:19:48 +03:00
Dzmitry Malyshau 59b6551dd5 Bug 1638672 - Use shaders to clear texture cache regions r=geckoview-reviewers,gw,snorp
This is a suggested workaround for an interesting visual bug that we see on
some platforms with Intel Broadwell GPUs.

Also reverts https://phabricator.services.mozilla.com/D57100

Differential Revision: https://phabricator.services.mozilla.com/D78705
2020-06-08 21:05:03 +00:00
Jeff Gilbert de6377896c Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol
* Majorly simplity CanvasRenderer
* Replace GLScreenBuffer with trivial GLSwapChain
* Use descriptor structs so that future SharedSurface changes aren't so painful
  to propagate
* Mortgage/strip out more OffscreenCanvas code for now

Differential Revision: https://phabricator.services.mozilla.com/D75055
2020-06-08 20:34:15 +00:00
Emilio Cobos Álvarez 54fd961a29 Bug 1641245 - Make string comparators not virtual. r=froydnj,necko-reviewers,geckoview-reviewers,jgilbert,agi,valentin
There's no use case for stateful comparators, so they can be just plain
function pointers.

This is used in some hot places like CSS selector matching.

Differential Revision: https://phabricator.services.mozilla.com/D77084
2020-05-27 18:11:12 +00:00
Kris Taeleman 0ec13882ab Bug 1607322 - Enable webrender for Pixel 2/3 on release r=jnicol
Preparing change to enable webrender on Fenix once the shader compilation changes are in.

Differential Revision: https://phabricator.services.mozilla.com/D70944
2020-04-17 16:34:10 +00:00
Andrew Osmond 759c48f75e Bug 1614377 - Switch the WebRender rollout to use allowlist rules. r=jrmuizel
Now that GfxInfo supports allowlisting, we can port our existing
configuration in gfxPlatform to using allowlist rules. This will
greatly increase maintainability and certainty that the expected
devices are getting WebRender.

Differential Revision: https://phabricator.services.mozilla.com/D62325

--HG--
extra : moz-landing-system : lando
2020-02-18 13:56:10 +00:00
Andrew Osmond db39fa490d Bug 1614798 - Refactor the blocklist rules to hide more of the boilerplate. r=jrmuizel
We would like to get to a world where we compare/store enums instead of
strings, and this is a step towards.

Differential Revision: https://phabricator.services.mozilla.com/D62503

--HG--
extra : moz-landing-system : lando
2020-02-13 22:39:10 +00:00
Andrew Osmond cbd1d387e2 Bug 1614376 - Part 2. Add blocklist support for battery/screen size filters. r=jrmuizel
As part of the WebRender rollout, we have been only allowing users
meeting particular platform, battery and screen size requirements (among
others) to get WebRender by default. This patch adds support for battery
and screen size filters in the blocklist rules to allow us to control
that more easily. It also adds kludgey support for checking for recent
Windows 10 build numbers for allowlist purposes; implementing this the
proper way would require an implementation like driver version checks,
which are much more complicated than most of the rules.

Differential Revision: https://phabricator.services.mozilla.com/D62323

--HG--
extra : moz-landing-system : lando
2020-02-13 15:51:32 +00:00
Csoregi Natalia 743b1f8b4b Backed out 3 changesets (bug 1614376) for assertion failures on GfxInfoBase.cpp. CLOSED TREE
Backed out changeset b239f4b49722 (bug 1614376)
Backed out changeset c5ac550f4966 (bug 1614376)
Backed out changeset e11c62eba5f1 (bug 1614376)
2020-02-13 14:35:26 +02:00
Andrew Osmond 1374c13c07 Bug 1614376 - Part 2. Add blocklist support for battery/screen size filters. r=jrmuizel
As part of the WebRender rollout, we have been only allowing users
meeting particular platform, battery and screen size requirements (among
others) to get WebRender by default. This patch adds support for battery
and screen size filters in the blocklist rules to allow us to control
that more easily. It also adds kludgey support for checking for recent
Windows 10 build numbers for allowlist purposes; implementing this the
proper way would require an implementation like driver version checks,
which are much more complicated than most of the rules.

Differential Revision: https://phabricator.services.mozilla.com/D62323

--HG--
extra : moz-landing-system : lando
2020-02-11 22:36:39 +00:00