searching for reviewer(aosmond)
dd77e98945c131f64e1784bbd23f7edb0c38cbae: Bug 1751603 - Fix inverted path comparison in PathCacheEntry::MatchesPath. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Mon, 24 Jan 2022 15:52:25 +0000 - rev 605330
Push 39190 by mlaza@mozilla.com at Mon, 24 Jan 2022 21:42:29 +0000
Bug 1751603 - Fix inverted path comparison in PathCacheEntry::MatchesPath. r=aosmond The intention of the if-clause in MatchesPath was was to early-out with false if the path geometry doesn't actually match as an artifact of how earlier versions of this code was written. Due to an accidental typo, the path comparison for this case got inverted. This fixes that by just cleaning up the inverted mess to be easier to read in the first place. Differential Revision: https://phabricator.services.mozilla.com/D136694
e947de18d5805af4d75a43ff1fc4a561a2fed3b5: Bug 1742994 - Bump required nvidia driver version for HW-WR to 470.82 (i.e. always use EGL), r=aosmond
Robert Mader <robert.mader@posteo.de> - Mon, 24 Jan 2022 10:50:18 +0000 - rev 605308
Push 39190 by mlaza@mozilla.com at Mon, 24 Jan 2022 21:42:29 +0000
Bug 1742994 - Bump required nvidia driver version for HW-WR to 470.82 (i.e. always use EGL), r=aosmond We currently require `460.32.03`, however the `460` driver series got succeeded by `470` LTS one, which supports the same hardware. Thus all users can (and should) already have updated to `470.82`. Distros like Ubuntu appear to ship the latest drivers as security updates to all supported versions. Bumping the requirement to `470.82` has the great advantage of being in sync with the required version for EGL, i.e. all Nvidia users with HW-WR will use EGL by default (minus bugs like bug 1739611). This solves a couple of Nvidia+GLX related bugs at the price of downgrading some users with outdated/unsupported drivers to SW-WR. For these users, SW-WR likely gives a more stable experience anyway. If they want the performance benefits of HW-WR, all they need to do is to update their drivers (again, something they should do anyway for security reasons). Differential Revision: https://phabricator.services.mozilla.com/D132162
91860e6f7448f14b5859f4269f79196a516fa2bc: Bug 1750740 - Avoid handling single-line stroked paths as generalized paths in DrawTargetWebgl. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Sat, 22 Jan 2022 09:47:18 +0000 - rev 605239
Push 39181 by abutkovits@mozilla.com at Sat, 22 Jan 2022 21:48:38 +0000
Bug 1750740 - Avoid handling single-line stroked paths as generalized paths in DrawTargetWebgl. r=aosmond It is not desirable or expedient to treat paths containing a single line as if they were general paths for caching purposes. This is rather wasteful and can require an entire large surface for a line that is suboptimally oriented (such as a diagonal line). This seems to be also causing unintentional visual artifacts. For now, just detect when a path is actually a line and send it explicitly along to StrokeLine. Differential Revision: https://phabricator.services.mozilla.com/D136555
ba18c6833fd629140b8e4757883f328450d5bd93: Bug 1749225 - Avoid casting function pointers in glsl-to-cxx. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Sat, 22 Jan 2022 09:46:58 +0000 - rev 605238
Push 39181 by abutkovits@mozilla.com at Sat, 22 Jan 2022 21:48:38 +0000
Bug 1749225 - Avoid casting function pointers in glsl-to-cxx. r=aosmond Due to the presence of multiple inheritance, casting between ShaderImpl and derived types in function pointers may be classified as undefined behavior. While the multiple inheritance chain tries to ensure that the ShaderImpl is the first in the list of class parents, this might not be sufficiently safe. Explicitly do the casting of individual parameters without casting the function pointers to work around this. Differential Revision: https://phabricator.services.mozilla.com/D136611
1346022922c6394ac28aef71b9f15946a8ec7481: Bug 1751426 - Expand the comment about Computed reference frames. r=aosmond
Jeff Muizelaar <jmuizelaar@mozilla.com> - Fri, 21 Jan 2022 16:07:54 +0000 - rev 605156
Push 39177 by apavel@mozilla.com at Fri, 21 Jan 2022 21:41:38 +0000
Bug 1751426 - Expand the comment about Computed reference frames. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D136622
563424398bd261f46d4d8432f12e5c041ef4425f: Bug 1733559 - createImageBitmap() resizeWidth and resizeHeight support, r=aosmond,emilio
Angus Sawyer <angus.sawyer@gmail.com> - Thu, 20 Jan 2022 15:38:01 +0000 - rev 605034
Push 39171 by malexandru@mozilla.com at Thu, 20 Jan 2022 21:43:17 +0000
Bug 1733559 - createImageBitmap() resizeWidth and resizeHeight support, r=aosmond,emilio Also fixed negative cropping width/height for blob images. Removes two unused class variables. Differential Revision: https://phabricator.services.mozilla.com/D127250
a4d493ab6376b3b5ee1494abc6e95436e2ce5aa1: Bug 1749183 - Fix RenderThread::HandleDeviceReset() for simulate device reset r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Thu, 20 Jan 2022 00:22:36 +0000 - rev 604959
Push 39167 by abutkovits@mozilla.com at Thu, 20 Jan 2022 10:04:01 +0000
Bug 1749183 - Fix RenderThread::HandleDeviceReset() for simulate device reset r=gfx-reviewers,aosmond Current RenderThread::HandleDeviceReset() does nothing for simulate device reset. Differential Revision: https://phabricator.services.mozilla.com/D135590
ab6935a5f0d46f3982a92455c3bfcbbe2063be04: Bug 1712836. Decrease number of iframes containing animated gifs so slower platforms have a chance to end test with no paints pending. r=aosmond
Timothy Nikkel <tnikkel@gmail.com> - Wed, 19 Jan 2022 21:11:12 +0000 - rev 604936
Push 39167 by abutkovits@mozilla.com at Thu, 20 Jan 2022 10:04:01 +0000
Bug 1712836. Decrease number of iframes containing animated gifs so slower platforms have a chance to end test with no paints pending. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D136310
96732a2f2846c158ac1c1dc9f1f2f9b1d676df83: Bug 1749174 - Enable wayland on supported environments by default on Nightly / Early Beta. r=stransky,jrmuizel,aosmond
Emilio Cobos Álvarez <emilio@crisal.io> - Wed, 19 Jan 2022 18:25:05 +0000 - rev 604911
Push 39165 by mlaza@mozilla.com at Wed, 19 Jan 2022 21:47:18 +0000
Bug 1749174 - Enable wayland on supported environments by default on Nightly / Early Beta. r=stransky,jrmuizel,aosmond There are pros and cons of doing this. Pros are: * Both Fedora and Ubuntu ship this by default. I haven't run the numbers but my guess is that with those two distros the amount of users on Wayland will probably be greater than the amount of users on XWayland. * Wayland touchscreen support, and a bunch of other features that XWayland doesn't have (I'm probably missing a bunch). Cons that come to mind are: * The main one is that we're still testing X11 on automation, though it is my understanding that Martin has Wayland tests running on the Fedora automation. I'd understand if we'd want to defer this until we have Wayland tests running on the Mozilla automation (bug 1725245), though arguably that hasn't stopped us from shipping X11+EGL (though arguably a smaller change, too). * I think the other annoyance of Wayland is the lack of proper PiP support (bug 1621261): Right now users need to right-click on the PiP Window. There (most likely) will be others pros and cons (and if we can't come up with others this patch should allow us to gather more feedback in Nightly / early-beta). Thoughts? Differential Revision: https://phabricator.services.mozilla.com/D135456
645247971d417c68f51231929c1d9f7ebbe41a73: Bug 1750557 - Clear RenderTextureHosts in RenderThread::ShutDownTask() r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Wed, 19 Jan 2022 00:05:48 +0000 - rev 604837
Push 39163 by ccozmuta@mozilla.com at Wed, 19 Jan 2022 09:34:35 +0000
Bug 1750557 - Clear RenderTextureHosts in RenderThread::ShutDownTask() r=gfx-reviewers,aosmond Need to destroy RenderTextureHosts in RenderThread::ShutDownTask(). Differential Revision: https://phabricator.services.mozilla.com/D136124
0b74118974193e5b9dade9bae7615dbf714db9dd: Bug 1748868 - support createImageBitmap colorSpaceConversion option, r=aosmond,emilio
Angus Sawyer <angus.sawyer@gmail.com> - Sat, 15 Jan 2022 15:14:32 +0000 - rev 604624
Push 39153 by malexandru@mozilla.com at Sat, 15 Jan 2022 21:32:36 +0000
Bug 1748868 - support createImageBitmap colorSpaceConversion option, r=aosmond,emilio Differential Revision: https://phabricator.services.mozilla.com/D135888
3b192b0c6080c3dcf98645c0ef12a31f1c4d7bbc: Bug 1745556 - Add support for stroked paths to path cache. r=gfx-reviewers,aosmond
Lee Salzman <lsalzman@mozilla.com> - Fri, 14 Jan 2022 17:30:22 +0000 - rev 604589
Push 39151 by mlaza@mozilla.com at Fri, 14 Jan 2022 22:01:51 +0000
Bug 1745556 - Add support for stroked paths to path cache. r=gfx-reviewers,aosmond Differential Revision: https://phabricator.services.mozilla.com/D135902
ae505acc7a28bf004be0c662f722fe2907ceb15b: Bug 1745556 - Cache paths to textures to avoid falling back to Skia. r=gfx-reviewers,aosmond
Lee Salzman <lsalzman@mozilla.com> - Fri, 14 Jan 2022 17:30:21 +0000 - rev 604588
Push 39151 by mlaza@mozilla.com at Fri, 14 Jan 2022 22:01:51 +0000
Bug 1745556 - Cache paths to textures to avoid falling back to Skia. r=gfx-reviewers,aosmond This generalizes the CacheEntry infrastructure to implement path caching. This allows us to cache recently drawn paths to a texture which can be then drawn without falling back to Skia. Paths using simple solid color patterns will be drawn as alpha masks that can then have the color applied in the shader. For now, other pattern types have the pattern baked into the texture to avoid having to complicate the shader setup for now. In the future, other pattern types could be supported with new shaders to allow those to be cached as alpha masks as well. In the service of this, comparison and cloning operators were added to the Pattern classes to make remembering and matching against them easier for cache entries. Differential Revision: https://phabricator.services.mozilla.com/D135261
c17c8ec1f577de245adad271d74fafe2a99bde7b: Bug 1745556 - Support layering of Skia and WebGL contexts in accelerated canvas. r=gfx-reviewers,aosmond
Lee Salzman <lsalzman@mozilla.com> - Fri, 14 Jan 2022 17:30:21 +0000 - rev 604587
Push 39151 by mlaza@mozilla.com at Fri, 14 Jan 2022 22:01:51 +0000
Bug 1745556 - Support layering of Skia and WebGL contexts in accelerated canvas. r=gfx-reviewers,aosmond Reading back from the WebGL context to the Skia context if we need to fall back software rasterization can be extremely expensive. In general, it is better to try to avoid this by rasterizing primitives in software and then uploading them to a texture. This generalizes that idea so that when using the default source-over blend mode, the Skia context can function as a layer that accumulates recently drawn primitives and blends them via source-over to the WebGL context when a flush is necessary. Differential Revision: https://phabricator.services.mozilla.com/D135260
9b4ae3d9d2ac3ce4898bcfcfce8866417298b0ba: Bug 1742569 - Create RemoteSurfaceAllocator in either parent or GPU process. r=agi,gfx-reviewers,aosmond
Jamie Nicol <jnicol@mozilla.com> - Fri, 14 Jan 2022 16:20:59 +0000 - rev 604577
Push 39151 by mlaza@mozilla.com at Fri, 14 Jan 2022 22:01:51 +0000
Bug 1742569 - Create RemoteSurfaceAllocator in either parent or GPU process. r=agi,gfx-reviewers,aosmond On Android we use SurfaceTextures and Surfaces to render video and webgl. These are allocated by content processes using the SurfaceAllocator, which connects to a SurfaceAllocatorService running in the parent process. The content process renders in to the Surface (by attaching it to a media codec, or creating a GL context with it for webgl), and the compositor renders the output SurfaceTexture in the parent process. With the GPU process this poses a difficulty, as we need to allocate SurfaceTextures in either the parent process or GPU process, depending on whether the GPU process is enabled. Additionally, we don't want to run extra android Services in child processes such as the GPU process, as process management is tricky and we want to contain it to a single place. This patch makes it so that SurfaceAllocatorService is not really an android Service any more, just an singleton object which implements the ISurfaceAllocator interface. It is renamed to RemoteSurfaceAllocator to reflect that. A new method getProcessManager() is added to the IProcessManager interface, which child processes can use to fetch the surface allocator. It returns either the parent process instance, or fetches the instance from the GPU process using IChildProcess.getSurfaceAllocator(). Differential Revision: https://phabricator.services.mozilla.com/D133107
ac3d2fbba1fbf1d1f71b5d66344c1567423b8a4d: Bug 1749745 - Initialize AndroidCompositorWidget with initial size. r=aosmond,geckoview-reviewers,agi
Jamie Nicol <jnicol@mozilla.com> - Wed, 12 Jan 2022 16:43:51 +0000 - rev 604398
Push 39143 by abutkovits@mozilla.com at Wed, 12 Jan 2022 21:30:02 +0000
Bug 1749745 - Initialize AndroidCompositorWidget with initial size. r=aosmond,geckoview-reviewers,agi Since bug 1747116 landed, if the compositor is reinitialized whilst the Android Surface is invalid, we avoid crashing when querying the window size and instead keep the compositor in a paused state. However, in this case we will believe the widget size is 0x0 until the compositor is eventually resumed. If webrender receives a display list during this time, it will set an empty view rect. This means when the compositor is subsequently resumed webrender believes it has nothing to render, and we get stuck in a state where nothing is ever rendered to the screen. This patch initializes the AndroidCompositorWidget with an initial size, which avoids the problem. Differential Revision: https://phabricator.services.mozilla.com/D135711
d62c3f84d38c0259fc187ca21b9bcd75d8acac43: Bug 1747345 - Include parent snapping transform in node equality test r=gfx-reviewers,aosmond
Glenn Watson <git@intuitionlibrary.com> - Tue, 11 Jan 2022 01:40:00 +0000 - rev 604104
Push 39138 by ccozmuta@mozilla.com at Tue, 11 Jan 2022 09:38:27 +0000
Bug 1747345 - Include parent snapping transform in node equality test r=gfx-reviewers,aosmond We need to include the parent snapping transform in the test for whether a spatial node needs to be updated from scene -> frame. Differential Revision: https://phabricator.services.mozilla.com/D135465
2984af6718ee4fb22c1fd19afd74f8514e4217b3: Bug 1747857 - Invalidate partial dirty rects when surface counts change r=gfx-reviewers,aosmond
Glenn Watson <git@intuitionlibrary.com> - Mon, 10 Jan 2022 20:10:20 +0000 - rev 604092
Push 39137 by nerli@mozilla.com at Tue, 11 Jan 2022 03:49:34 +0000
Bug 1747857 - Invalidate partial dirty rects when surface counts change r=gfx-reviewers,aosmond This is a sufficient fix to handle this case, we should definitely invalidate the dirty rect validity if the compositor surface count has changed. There are likely other cases where the surface count remains the same but we also need to invalidate dirty rect validity (we can handle these as follow ups and/or as we encounter other cases). Differential Revision: https://phabricator.services.mozilla.com/D135462
73b2b5a8685adcc29f991bf67d2cbb7e3f892367: Bug 1742821 - Allow GPU process to be blocklisted on all platforms. r=aosmond
Jamie Nicol <jnicol@mozilla.com> - Mon, 10 Jan 2022 16:27:52 +0000 - rev 604068
Push 39136 by malexandru@mozilla.com at Mon, 10 Jan 2022 21:31:34 +0000
Bug 1742821 - Allow GPU process to be blocklisted on all platforms. r=aosmond Previously we checked the blocklist status for the GPU process in gfxWindowsPlatform::InitGPUProcessSupport, which is only executed on Windows. This patch moves the check to gfxPlatform::InitGPUProcessPrefs which runs on all platforms. As a consequence we now only check the status at initialization time rather than on device reset as well, but that is okay. Differential Revision: https://phabricator.services.mozilla.com/D135515
3adb5c71ca3b5482cad0fa16ebf458a2fadb73c7: Bug 1747116 - Guard against null native window in AndroidCompositorWidget r=gfx-reviewers,geckoview-reviewers,aosmond,m_kato
Jamie Nicol <jnicol@mozilla.com> - Fri, 07 Jan 2022 10:25:53 +0000 - rev 603951
Push 39126 by mlaza@mozilla.com at Fri, 07 Jan 2022 15:55:14 +0000
Bug 1747116 - Guard against null native window in AndroidCompositorWidget r=gfx-reviewers,geckoview-reviewers,aosmond,m_kato If AndroidCompositorWidget's surface reference points to a surface that has been destroyed, we can end up with a null ANativeWindow pointer. This can result in crashes when using it to query the window size. This patch makes it so that we use the native window to query the size only when the surface has changed rather than for every call to GetClientSize(). This allows us to guard against a null pointer in a single place. If we have a null pointer then return false from OnCompositorSurfaceChanged(). CompositorBridgeParent::ResumeComposition() will handle that by not resuming the compositor, like it already does if WebRenderBridgeParent::Resume() fails. Additonally, when we receive a pause event from GeckoView ensure that we always set the mCompositorPaused flag to true, even if the UiCompositorController is null. This avoids a possible cause of the situation described above - if we receive a pause event (eg the app is minimised) during compositor reinitialization (while the UiCompositorController is temporarily null) we would not set that flag to true, and would therefore resume compositing in to an invalid surface. Depends on D135117 Differential Revision: https://phabricator.services.mozilla.com/D135118
7fc30867f03da567de17c3db30a091e7bdbdda2e: Bug 1748438 - Check for null surface in ImageBitmapRenderingContext::GetImageBuffer. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Thu, 06 Jan 2022 21:12:57 +0000 - rev 603921
Push 39124 by smolnar@mozilla.com at Fri, 07 Jan 2022 03:49:10 +0000
Bug 1748438 - Check for null surface in ImageBitmapRenderingContext::GetImageBuffer. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D135253
2d5ff6c2237cf862f8a91d437104af0092a020a6: Bug 1688686 - Don't assert on OOM/throttle in ClientWebGLContext::BackBufferSnapshot. r=gfx-reviewers,aosmond
Kelsey Gilbert <jgilbert@mozilla.com> - Thu, 30 Dec 2021 09:54:43 +0000 - rev 603461
Push 39103 by nfay@mozilla.com at Thu, 30 Dec 2021 21:29:24 +0000
Bug 1688686 - Don't assert on OOM/throttle in ClientWebGLContext::BackBufferSnapshot. r=gfx-reviewers,aosmond It's more common to hit the 500MB limit for e.g. 13k x 13k requests than OOM, but we can treat them the same. Differential Revision: https://phabricator.services.mozilla.com/D134720
4a17c3f49d0d2df846e0bd9017bd015dc54e1ba6: Bug 1745608 - Add additional AVIF telemetry for unimplemented features. r=aosmond CLOSED TREE
Jon Bauman <jbauman@mozilla.com> - Sat, 18 Dec 2021 20:05:19 +0000 - rev 602776
Push 39081 by mlaza@mozilla.com at Tue, 21 Dec 2021 04:41:29 +0000
Bug 1745608 - Add additional AVIF telemetry for unimplemented features. r=aosmond CLOSED TREE Differential Revision: https://phabricator.services.mozilla.com/D133580
e5c53da802b9722afbef2c201e651c73322c1ad5: Bug 1730936 - Use EGL_DRM_RENDER_NODE_FILE_EXT in glxtest, r=gfx-reviewers,aosmond
Robert Mader <robert.mader@posteo.de> - Mon, 20 Dec 2021 21:59:35 +0000 - rev 602771
Push 39081 by mlaza@mozilla.com at Tue, 21 Dec 2021 04:41:29 +0000
Bug 1730936 - Use EGL_DRM_RENDER_NODE_FILE_EXT in glxtest, r=gfx-reviewers,aosmond We have a custom render node discovery code (needed for DMABUF) that predates the `EGL_DRM_RENDER_NODE_FILE_EXT` extension. It has additional value that it helps us discover the right vendor and device ID on multi-GPU setups (there's a EGL extension far that backing, but not ready yet). In case our custom code fails - notably split display/render SoCs, which are common in the ARM world - lets use `EGL_DRM_RENDER_NODE_FILE_EXT` as fallback. This will ensure we get a valid render node path on all devices, assuming the driver supports that extension right. These SoCs are usually no multi-GPU systems. If they are, we still don't get the right IDs - but an extension for that is in the making. Note: Mesa does *not* implement this right for such SoCs, i.e. it will fail just as our own custom code. However, there's a MR in review - once it lands, things should start working, see https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12796 Depends on D134254 Differential Revision: https://phabricator.services.mozilla.com/D134322
f69c775a102481fe04f5bf14008c87af32ec5da9: Bug 1746658 - Allow more GPU process restarts before fallback / disabling on Android. r=aosmond
Jamie Nicol <jnicol@mozilla.com> - Fri, 17 Dec 2021 20:29:15 +0000 - rev 602444
Push 39074 by nbeleuzu@mozilla.com at Sat, 18 Dec 2021 09:43:08 +0000
Bug 1746658 - Allow more GPU process restarts before fallback / disabling on Android. r=aosmond This brings Android in line with the behaviour on other platforms which have a GPU process. On Android this is especially important as we really want to avoid SWGL if possible. Differential Revision: https://phabricator.services.mozilla.com/D134170
1ddf68e26a4ae35cfb6ff0554d941f48b3c53e1d: Bug 1746065 - Use a static pref for dcomp overlay. r=aosmond
Jeff Muizelaar <jmuizelaar@mozilla.com> - Wed, 15 Dec 2021 02:16:26 +0000 - rev 602066
Push 39066 by ctuns@mozilla.com at Wed, 15 Dec 2021 09:11:58 +0000
Bug 1746065 - Use a static pref for dcomp overlay. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D133783
06c7b4e2d14be1ee8050d6c1eb1ab1bab19ac3c2: Bug 1596772 - Make nsICanvasRenderingContextInternal::GetParentObject off-screen compatible. r=aosmond
Tom Schuster <evilpies@gmail.com> - Tue, 14 Dec 2021 14:21:10 +0000 - rev 602017
Push 39064 by ncsoregi@mozilla.com at Tue, 14 Dec 2021 21:34:09 +0000
Bug 1596772 - Make nsICanvasRenderingContextInternal::GetParentObject off-screen compatible. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D133571
36dc359531fc1993d990b04f109bb41b258dac0b: Bug 1744468. Change annotation for gfx/tests/reftest/1724901-2.html. r=aosmond
Timothy Nikkel <tnikkel@gmail.com> - Tue, 14 Dec 2021 09:43:53 +0000 - rev 601994
Push 39064 by ncsoregi@mozilla.com at Tue, 14 Dec 2021 21:34:09 +0000
Bug 1744468. Change annotation for gfx/tests/reftest/1724901-2.html. r=aosmond This test has a downscaled image, that is inside of an OOP iframe, and the iframe has a large transform scale to counter act the downscaled image inside the iframe. drawSnapshot does not take into account into scaling that happens to OOP iframes. If we don't pass the high quality scaling flag then we return the image as the intrinsic scale and we have a much better rendering here. If we pass the high quality scale we return the downscaled image, which we then try to upscale, and we get a worse rendering then before the patches of this bug. So this is an edge that we will be making worse. If it's important then we should fix drawSnapshot to handle this. Differential Revision: https://phabricator.services.mozilla.com/D133569
20c0dc7a0122e5110076da1e9fb138934c30c737: Bug 1744468. Make drawSnapshot request high quality scaling by default. r=aosmond
Timothy Nikkel <tnikkel@gmail.com> - Tue, 14 Dec 2021 09:43:52 +0000 - rev 601992
Push 39064 by ncsoregi@mozilla.com at Tue, 14 Dec 2021 21:34:09 +0000
Bug 1744468. Make drawSnapshot request high quality scaling by default. r=aosmond Most of the time this is just going to going to request the same frame that we used when painting to the screen. So it should be higher quality and faster in the common case. This isn't the default for drawWindow or drawSnapshot. I know that it would be a waste to request high quality scaling without sync decode because if that triggers new decoding by the time the frame is ready it's too late to use it. drawSnapshot only supports syncdecoding so far, so that's not an issue, and we could disable this is async decoding was requested in the future. Anything else I'm missing? Differential Revision: https://phabricator.services.mozilla.com/D133567
ddb45ca4c2281eb97a2dd539562442b45fd6153c: Bug 1740031 - Add crashtest. r=aosmond
Ryan VanderMeulen <ryanvm@gmail.com> - Fri, 10 Dec 2021 15:11:29 +0000 - rev 601762
Push 39054 by nbeleuzu@mozilla.com at Fri, 10 Dec 2021 21:58:52 +0000
Bug 1740031 - Add crashtest. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D133490
49bfa085c1aca3b8c7c3cb0ddeb236318dd6a3d0: Bug 1743454 - Add junit test to ensure GPU process crash triggers GeckoView crash reporter. r=agi,aosmond
Jamie Nicol <jnicol@mozilla.com> - Wed, 08 Dec 2021 19:08:17 +0000 - rev 601429
Push 39048 by nfay@mozilla.com at Thu, 09 Dec 2021 09:32:28 +0000
Bug 1743454 - Add junit test to ensure GPU process crash triggers GeckoView crash reporter. r=agi,aosmond 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
452eef165731f8096a5e6b8ee6d3d03d0faf4765: Bug 1743454 - Ensure GPU process crash reports are generated regardless of which IPC actor dies first. r=aosmond
Jamie Nicol <jnicol@mozilla.com> - Wed, 08 Dec 2021 19:08:17 +0000 - rev 601428
Push 39048 by nfay@mozilla.com at Thu, 09 Dec 2021 09:32:28 +0000
Bug 1743454 - Ensure GPU process crash reports are generated regardless of which IPC actor dies first. r=aosmond GPU process crash reports are handled by calling GenerateCrashReport() in GPUChild::ActorDestroy() if the reason is AbnormalShutdown. This ensures we only create crash report if the process actually crashed, and not when it was deliberately stopped. However, sometimes actors other than GPUChild are the first to be destroyed immediately after a crash, for example CompositorBridgeChild or UiCompositorControllerChild. If such an actor receives an ActorDestroy message with AbnormalShutdown as the reason, they will call GPUProcessManager::NotifyRemoteActorDestroyed(), which leads to GPUProcessHost::Shutdown(), which will close the PGPU channel. This creates a race condition after a GPU process crash, where sometimes the channel gets closed gracefully and ActorDestroy will receive a NormalShutdown reason rather than AbnormalShutdown. This patch adds a flag to GPUProcessHost::Shutdown() indicating whether it is being called in response to an unexpected shutdown being detected by another actor. If set, it sets a flag on the GPUChild. When GPUChild::ActorDestroy() eventually gets called, it knows to act in response to a crash if either the reason is AbnormalShutdown or this flag has been set. Differential Revision: https://phabricator.services.mozilla.com/D132811
bc587029a02117da9eb56fc51f0476bf6ed504eb: Bug 1743454 - Notify GeckoView crash handler of GPU process crashes. r=agi,aosmond
Jamie Nicol <jnicol@mozilla.com> - Wed, 08 Dec 2021 19:08:16 +0000 - rev 601427
Push 39048 by nfay@mozilla.com at Thu, 09 Dec 2021 09:32:28 +0000
Bug 1743454 - Notify GeckoView crash handler of GPU process crashes. r=agi,aosmond Rename ContentCrashHandler.jsm to ChildCrashHandler.jsm as it is now responsible for all types of child process crashes. Have it observe "compositor:process-aborted" in addition to "ipc:content-shutdown". Additionally, rename the "GeckoView:ContentCrashReport" event it sends to "GeckoView:ChildCrashReport". In GPUChild::ActorDestroy, provide an out variable for GenerateCrashReport to return the dump ID, and stuff this in to a property bag, along with "abnormal: true", sent to "compositor:process-aborted" observers. In ChildCrashHandler, set the "processType" argument sent with the GeckoView:ChildCrashReport event to BACKGROUND_CHILD for GPU process crashes, and FOREGROUND_CHILD otherwise. Differential Revision: https://phabricator.services.mozilla.com/D132810
5e72027b3a9d737b14a685862bb778d974791bd0: Bug 1687658 - Recursive createImageBitmap ignores source cropping r=aosmond
aardgoose <angus.sawyer@gmail.com> - Wed, 08 Dec 2021 03:47:56 +0000 - rev 601294
Push 39046 by ctuns@mozilla.com at Wed, 08 Dec 2021 09:53:39 +0000
Bug 1687658 - Recursive createImageBitmap ignores source cropping r=aosmond Note: if the original imageBitmap has been use for display, the source surface will have been cropped and the original cropping IntRect has been lost, in this case use cropped mSurface instead of mdata. If some of the new clip rect falls outside the source we have to crop the source if it hasn't been cropped. Q: Should I attempt to get tests for this added to WPT? Differential Revision: https://phabricator.services.mozilla.com/D124607
0ef43ef362e679c48069a939edbdeb005770808e: Bug 1730812 - Check for loongson mmi support in mips64 build for libjpeg-turbo. r=aosmond
Mike Hommey <mh+mozilla@glandium.org> - Tue, 07 Dec 2021 00:27:11 +0000 - rev 601159
Push 39042 by apavel@mozilla.com at Tue, 07 Dec 2021 04:09:38 +0000
Bug 1730812 - Check for loongson mmi support in mips64 build for libjpeg-turbo. r=aosmond Original patch by Andrew Osmond, reviewed by myself. Differential Revision: https://phabricator.services.mozilla.com/D126001
cbf7c304b4eb6f7422317e682942a0fc61d8df5b: Bug 1743335 - Clean up ImageBridgeChild::UpdateTextureFactoryIdentifier() r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Tue, 07 Dec 2021 00:09:44 +0000 - rev 601154
Push 39042 by apavel@mozilla.com at Tue, 07 Dec 2021 04:09:38 +0000
Bug 1743335 - Clean up ImageBridgeChild::UpdateTextureFactoryIdentifier() r=gfx-reviewers,aosmond Drop ImageClient was necessary, since ImageHost and WebRenderImageHost was incompatible. It is not necessary any more. Differential Revision: https://phabricator.services.mozilla.com/D132327
ae34b453317acafbe25ab7fa19f17213efb63803: Bug 1336591 - Push clips when applying D2D gradients. r=gfx-reviewers,aosmond
Lee Salzman <lsalzman@mozilla.com> - Sat, 04 Dec 2021 19:32:44 +0000 - rev 601059
Push 39036 by ccozmuta@mozilla.com at Mon, 06 Dec 2021 09:23:40 +0000
Bug 1336591 - Push clips when applying D2D gradients. r=gfx-reviewers,aosmond Differential Revision: https://phabricator.services.mozilla.com/D132865
88a709403fc465aeef61330a1071da9615a686c1: Bug 1741156 - Ensure deliberate CompositorSession shutdown doesn't take down GPU process. r=aosmond
Jamie Nicol <jnicol@mozilla.com> - Mon, 29 Nov 2021 20:52:32 +0000 - rev 600536
Push 39022 by imoraru@mozilla.com at Tue, 30 Nov 2021 04:22:47 +0000
Bug 1741156 - Ensure deliberate CompositorSession shutdown doesn't take down GPU process. r=aosmond When certain IPDL actors owned by the CompositorSession are destroyed, such as CompositorBridgeChild or UiCompositorControllerChild, we call GPUProcessManager::NotifyRemoteActorDestroyed() to notify the GPU process manager that the connection to the GPU process has been lost, causing it to restart or disable the GPU process. To avoid doing this when the compositor session has been deliberately destroyed (which occurs whenever a tab is closed on android, as each tab has its own widget) we give each actor a "process token". This token gets cleared when the actor is deliberately destroyed, and we only notify the GPU process manager in ActorDestroy if the process token is still set. During an old refactoring of UiCompositorControllerChild, the deliberate clearing of the process token was removed. This hasn't been an issue up until now, as UiCompositorControllerChild is only created on Android and there has been no GPU process on Android. However, with the GPU process being implemented in this patch series, we now run in to this issue: whenever a tab is closed we accidentally bring down the GPU process. This patch makes it so that we clear the process token once again in UiCompositorControllerChild::Destroy, preventing us from accidentally tearing down the GPU process. Differential Revision: https://phabricator.services.mozilla.com/D131234
ab8777eb33731d4ddff34e520fa5ca69730c0401: Bug 1741156 - Initialize FreeType library in GPU process on Android. r=aosmond
Jamie Nicol <jnicol@mozilla.com> - Mon, 29 Nov 2021 20:52:32 +0000 - rev 600535
Push 39022 by imoraru@mozilla.com at Tue, 30 Nov 2021 04:22:47 +0000
Bug 1741156 - Initialize FreeType library in GPU process on Android. r=aosmond In order to render text using Skia (as webrender does for blob images) we must ensure that the Freetype library has been initialized. In the parent process this is done by gfxPlatform, but the GPU process does not have a gfxPlatform so we should do so in GPUParent instead. We already did this on Gtk, but this patch makes us do so on Android too. Differential Revision: https://phabricator.services.mozilla.com/D131233
8e95531fa96c4d98b39b3359acd83afa4b59f8a4: Bug 1741156 - Reinitialize compositor and request repaint after GPU process restart. r=aosmond,geckoview-reviewers,agi
Jamie Nicol <jnicol@mozilla.com> - Mon, 29 Nov 2021 20:52:31 +0000 - rev 600534
Push 39022 by imoraru@mozilla.com at Tue, 30 Nov 2021 04:22:47 +0000
Bug 1741156 - Reinitialize compositor and request repaint after GPU process restart. r=aosmond,geckoview-reviewers,agi This patch ensures that, following a GPU process crash, we re-initialize the compositor and resume painting on Android. nsWindow::GetWindowRenderer() is made to always reinitialize the window renderer if there is none, like on other platforms. We therefore no longer need to track whether webrender is being disabled, as this is no longer a special case. Previously we started the compositor as initially paused in nsBaseWidget::CreateCompositorSession only if the widget did not yet have a surface. Now we must unconditionally (re)start it as initially paused, as even though the widget in the parent process may have a surface, we will not have been able to send it to the GPU process yet. We will send the surface to the compositor once control flow returns to nsWindow::CreateLayerManager, where we will also now resume the compositor if required. Finally, we must ensure that we manually trigger a paint, both in the parent and content processes. On other platforms this occurs automatically following a GPU process loss through various refresh driver events. On Android, however, nothing causes the refresh driver to paint by itself, and we cannot receive input without first initializing our APZ controllers, which does not happen until the compositor receives a display list. We therefore must manually schedule a paint. We do so from nsWindow::NotifyCompositorSessionLost for the parent process, and BrowserChild::ReinitRendering for content processes. Differential Revision: https://phabricator.services.mozilla.com/D131232
4407622410e4cd8f445e965c555882445cda93ca: Bug 1741156 - Initial GPU process implementation on Android. r=aosmond,agi
Jamie Nicol <jnicol@mozilla.com> - Mon, 29 Nov 2021 20:52:31 +0000 - rev 600533
Push 39022 by imoraru@mozilla.com at Tue, 30 Nov 2021 04:22:47 +0000
Bug 1741156 - Initial GPU process implementation on Android. r=aosmond,agi Declare a GPU process and corresponding Service in the AndroidManifest. This is of a new class GeckoServiceGpuProcess which inherits from GeckoServiceChildProcess, and provides a binder interface ICompositorSurfaceManager which allows the parent process to set the compositor Surface for a given widget ID, and the compositor in the GPU process to look up the Surface for a widget ID. The ICompositorSurfaceManager interface is exposed to the parent process through a new method getCompositorSurfaceManager() in the IChildProcess interface. Add a new connection type for GPU processes to GeckoProcessManager, along with a function to look up the GPU process connection and fetch the ICompositorSurfaceManager binder. When the GPU process is launched we store the returned binder in the GPUProcessHost, and when each widget's compositor is created we store a reference to the binder in the UiCompositorControllerChild. Each nsWindow is given a unique ID, and whenever the Surface changes due to an Android resume event, it sends the new surface for that ID to the GPU process (if enabled) by calling ICompositorSurfaceManager.onSurfaceChanged(). Stop inheriting AndroidCompositorWidget from InProcessCompositorWidget and instead inherit from CompositorWidget directly. This class holds a reference to the Surface that will be rendered in to. The CompositorBridgeParent notifies the CompositorWidget whenever it has been resumed, allowing it to fetch the new Surface. For the cross-process CompositorWidgetParent implementation it fetches that Surface from the CompositorSurfaceManagerService, whereas the InProcessAndroidCompositorWidget can read it directly from the real widget. AndroidCompositorWidget::GetClientSize() can now calculate its size from the Surface, rather than racily reading the value from the nsWindow. This means RenderCompositorEGL and RenderCompositorOGLSWGL can now use GetClientSize() again rather than querying their own size from the Surface. With this patch, setting layers.gpu-process.enabled to true will cause us to launch a GPU process and render from it. We do not yet gracefully recover from a GPU process crash, nor can we render anything using SurfaceTextures (eg video or webgl). Those will come in future patches. Differential Revision: https://phabricator.services.mozilla.com/D131231
62d3854e2849832119ea9611c16b7fbc781f5497: Bug 1743377 - Remove imgLoader::PreferLoadFromCache. r=aosmond
Emilio Cobos Álvarez <emilio@crisal.io> - Mon, 29 Nov 2021 15:18:14 +0000 - rev 600377
Push 39021 by ncsoregi@mozilla.com at Mon, 29 Nov 2021 21:53:24 +0000
Bug 1743377 - Remove imgLoader::PreferLoadFromCache. r=aosmond Instead treat these protocols as "never-expiring" protocols, and clean up revalidation code while at it. Depends on D132347 Differential Revision: https://phabricator.services.mozilla.com/D132348
d08c33b14cc304240a02efacaa19ea832b01d5e0: Bug 1743319 - Update WrapWithWebRenderTextureHost() r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Mon, 29 Nov 2021 15:04:16 +0000 - rev 600373
Push 39021 by ncsoregi@mozilla.com at Mon, 29 Nov 2021 21:53:24 +0000
Bug 1743319 - Update WrapWithWebRenderTextureHost() r=gfx-reviewers,aosmond LayersBackend should be always LayersBackend::LAYERS_WR now. Differential Revision: https://phabricator.services.mozilla.com/D132315
e58934d10d15652881615fdfe67a082ab26164bb: Bug 1743332 - Remove MaybeNotifyUnlocked() r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Mon, 29 Nov 2021 15:03:43 +0000 - rev 600372
Push 39021 by ncsoregi@mozilla.com at Mon, 29 Nov 2021 21:53:24 +0000
Bug 1743332 - Remove MaybeNotifyUnlocked() r=gfx-reviewers,aosmond MaybeNotifyUnlocked() is not used. Differential Revision: https://phabricator.services.mozilla.com/D132325
61f3d1f7a83d652cb8c1742e66293851cf1cac17: Bug 1743075 - Update log of ProcessEventHookCallback() r=gfx-reviewers,aosmond
sotaro <sotaro.ikeda.g@gmail.com> - Mon, 29 Nov 2021 00:12:20 +0000 - rev 600346
Push 39019 by nerli@mozilla.com at Mon, 29 Nov 2021 09:42:59 +0000
Bug 1743075 - Update log of ProcessEventHookCallback() r=gfx-reviewers,aosmond Add aEvent value to log. Differential Revision: https://phabricator.services.mozilla.com/D132214
0ede5360576f894d339e07c030964b1d3a3da636: Bug 1742987 - Block webrender on Android on PowerVR Rogue G6110 GPUs. r=gfx-reviewers,aosmond
Jamie Nicol <jnicol@mozilla.com> - Thu, 25 Nov 2021 20:47:17 +0000 - rev 600169
Push 39011 by mlaza@mozilla.com at Fri, 26 Nov 2021 05:06:50 +0000
Bug 1742987 - Block webrender on Android on PowerVR Rogue G6110 GPUs. r=gfx-reviewers,aosmond Due to bug 1742986 and bug 1717863 we are blocking webrender on Android devices PowerVR Rogue G6110 GPUs. These devices will use software webrender instead. Differential Revision: https://phabricator.services.mozilla.com/D132170
1eafd70b4049182099fe64e12057221760f64e6e: Bug 1739454 - Don't allow write-mapping of SourceSurfaceSharedData after Finalize. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Fri, 19 Nov 2021 18:46:47 +0000 - rev 599682
Push 38994 by smolnar@mozilla.com at Sat, 20 Nov 2021 09:04:21 +0000
Bug 1739454 - Don't allow write-mapping of SourceSurfaceSharedData after Finalize. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D131584
18fdb7a13e63cc8331902b6cf6148674c60b543e: Bug 1739454 - Don't allow write-mapping of SourceSurfaceSharedData after Finalize. r=aosmond
Lee Salzman <lsalzman@mozilla.com> - Fri, 19 Nov 2021 16:22:09 +0000 - rev 599673
Push 38994 by smolnar@mozilla.com at Sat, 20 Nov 2021 09:04:21 +0000
Bug 1739454 - Don't allow write-mapping of SourceSurfaceSharedData after Finalize. r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D131584
4fa87a5c4f2205a92a3dbf4e530bdb043c9ac509: Bug 1740031 - throw exception if croping/copying operation fails r=aosmond
aardgoose <angus.sawyer@gmail.com> - Fri, 19 Nov 2021 13:24:06 +0000 - rev 599648
Push 38992 by malexandru@mozilla.com at Fri, 19 Nov 2021 15:55:53 +0000
Bug 1740031 - throw exception if croping/copying operation fails r=aosmond Differential Revision: https://phabricator.services.mozilla.com/D130796
a156b0d1ff43fafba9f4e77a1723453f502d53de: Bug 1740612 - Switch WebRender on Intel from allowlist to blocklist. r=aosmond
Jeff Muizelaar <jmuizelaar@mozilla.com> - Tue, 16 Nov 2021 20:16:08 +0000 - rev 599370
Push 38984 by malexandru@mozilla.com at Wed, 17 Nov 2021 03:41:08 +0000
Bug 1740612 - Switch WebRender on Intel from allowlist to blocklist. r=aosmond This ends up enabling hw-wr on nightly on gen6 which was left disabled for testing sw-wr, but should otherwise have no (or at least limited) impact. Differential Revision: https://phabricator.services.mozilla.com/D130926