Commit Graph

156 Commits

Author SHA1 Message Date
sotaro
7de4743c25 Bug 1740675 - Cleanup device handling around RenderThread r=nical,gfx-reviewers
RenderCompositorANGLE::ShutdownEGLLibraryIfNecessary() is not necessary since Bug 1656034 fix. Device reset handling could be more platform independent.

Differential Revision: https://phabricator.services.mozilla.com/D130960
2021-11-25 02:49:29 +00:00
Alexandru Michis
bcb75201f7 Backed out changeset 413c914dd84b (bug 1740675) for causing geckoview failures.
CLOSED TREE
2021-11-17 04:50:58 +02:00
sotaro
f9f19c8e2c Bug 1740675 - Cleanup device handling around RenderThread r=nical,gfx-reviewers
RenderCompositorANGLE::ShutdownEGLLibraryIfNecessary() is not necessary since Bug 1656034 fix. Device reset handling could be more platform independent.

Differential Revision: https://phabricator.services.mozilla.com/D130960
2021-11-17 01:18:05 +00:00
Csoregi Natalia
3f9b37b13f Backed out changeset fb2f9cfe820d (bug 1716579) for valgrind bustage. CLOSED TREE 2021-06-17 19:40:08 +03:00
Nicolas Silva
170385691d Bug 1716579 - Minimize memory usage of windows that haven't been rendered for a long time. r=gfx-reviewers,bradwerth
Differential Revision: https://phabricator.services.mozilla.com/D117918
2021-06-17 12:42:02 +00:00
Jeff Muizelaar
504a5a2596 Bug 1713486. Fix per context swgl memory reporting. r=lsalzman
This passes the swgl context down from the renderer
instead of using the current context. This ensures
we report all of the contexts and don't double report.

Differential Revision: https://phabricator.services.mozilla.com/D116474
2021-06-02 15:40:46 +00:00
Csoregi Natalia
e14b9949e8 Backed out changeset 1e39147271cc (bug 1713486) for webrender bustage on webrender\src\device\gl.rs. CLOSED TREE 2021-06-02 16:08:43 +03:00
Jeff Muizelaar
0556363e25 Bug 1713486. Fix per context swgl memory reporting. r=lsalzman
This passes the swgl context down from the renderer
instead of using the current context. This ensures
we report all of the contexts and don't double report.

Differential Revision: https://phabricator.services.mozilla.com/D116474
2021-06-02 12:32:24 +00:00
sotaro
2c50788c9f Bug 1696105 - Remove aBridge argument from RenderThread::HandleDeviceReset() r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D107033
2021-03-03 10:29:40 +00:00
Barret Rennie
dab32a1dea Bug 1683217 - Require non-zero window size for profiler screenshots in WebRender r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D101685
2021-01-14 22:18:54 +00:00
sotaro
b7158d2d42 Bug 1685241 - Disable WebRender rendering when RenderCompositorEGL is paused r=nical
Crash could happen with WebRender rendering when RenderCompositorEGL is not ready for rendering. With the change, RenderCompositorEGL::BeginFrame() is not called when RenderCompositorEGL is not ready.

Differential Revision: https://phabricator.services.mozilla.com/D100871
2021-01-07 10:23:30 +00:00
Andrew Osmond
bcb55016cd Bug 1682876 - Better handle Linux NVIDIA device resets, and unflushed device resets. r=sotaro,jgilbert
These NVIDIA device resets are specific to Linux and trying to handle
them more gracefully is increasingly difficult. There are many
textures/buffers that we need to clear inside WebRender, but attempting
to add them to the list has proved difficult due to the number of places
we need to add, as well as race conditions with clearing them. Given
this shouldn't happen often, it doesn't seem worth optimizing for and we
should treat it just as an innocent device reset.

Testing this revealed an issue during recovery where unflushed device
resets were not handled as expected. When we checked for errors after
creating a new GL context, we would encounter a GL_CONTEXT_LOST error
which we failed to recover from. This is because we called
GLContext::fGetError instead of the GL method directly; the context lost
state was saved in mContextLost, and any subsequent calls to
GLContext::fGetError would continue to return GL_CONTEXT_LOST.

Differential Revision: https://phabricator.services.mozilla.com/D99905
2020-12-18 12:52:00 +00:00
sotaro
d07770a47f Bug 1681869 - Add screenshots and frame recording support to RenderCompositorD3D11SWGL r=mstange
Implementation mimics RenderCompositorNative and uses Compositor screenshot handling.

Differential Revision: https://phabricator.services.mozilla.com/D99418
2020-12-11 21:41:45 +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
Matt Woodrow
f86b268b7f Bug 1673983 - Add RenderTextureHostSWGL support to D3D11 RenderTextureHosts. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95799
2020-11-06 00:01:36 +00:00
Narcis Beleuzu
f50b91d160 Backed out 4 changesets (bug 1673983) for linting failure on moz.build CLOSED TREE
Backed out changeset f408fc890ba1 (bug 1673983)
Backed out changeset 49ae9de85ab9 (bug 1673983)
Backed out changeset 91d8f0f829fd (bug 1673983)
Backed out changeset 91cb8ee8ddd8 (bug 1673983)
2020-11-06 00:10:34 +02:00
Matt Woodrow
1d7b90750c Bug 1673983 - Add RenderTextureHostSWGL support to D3D11 RenderTextureHosts. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95799
2020-11-05 20:18:13 +00:00
smolnar
26b5b19adf Backed out 4 changesets (bug 1673983) for causing build bustages in RenderCompositorD3D11SWGL. CLOSED TREE
Backed out changeset 134e621d0902 (bug 1673983)
Backed out changeset 81601a02d9b7 (bug 1673983)
Backed out changeset 72d4bf5b093e (bug 1673983)
Backed out changeset 99b2e5c55a25 (bug 1673983)
2020-11-05 11:40:36 +02:00
Matt Woodrow
7a15ef0958 Bug 1673983 - Add RenderTextureHostSWGL support to D3D11 RenderTextureHosts. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95799
2020-11-05 09:15:05 +00:00
Glenn Watson
cd8af6c37e Bug 1675159 - Pt 1 - Pass buffer_age via render rather than callback. r=jnicol
Implementing the Draw compositor via the native compositor interface
is simpler if the buffer age is passed into the top level render method.

Differential Revision: https://phabricator.services.mozilla.com/D95824
2020-11-04 22:12:40 +00:00
Dorel Luca
99f9286b8e Backed out changeset 644505d8afbb (bug 1675159) for Browser-chrome failures in browser/base/content/test/general/browser_save_video_frame.js. CLOSED TREE 2020-11-05 00:08:32 +02:00
Glenn Watson
bea146816e Bug 1675159 - Pt 1 - Pass buffer_age via render rather than callback. r=jnicol
Implementing the Draw compositor via the native compositor interface
is simpler if the buffer age is passed into the top level render method.

Differential Revision: https://phabricator.services.mozilla.com/D95824
2020-11-04 20:04:02 +00:00
Lee Salzman
249e20a490 Bug 1670139 - surface origin for RenderCompositorSWGL is top left. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D94348
2020-10-21 20:44:46 +00:00
Nicolas Silva
7bb3623086 Bug 1671289 - Improve WebRender's integrated profiler. r=gw
In a (large-ish) nutshell:

 - Consolidate all counters under a single type.
 - Counters are all arranged in an array and referred to via index.
 - All counters can be displayed as average+max (float/int), graph, and change indicator.
 - Specify what to show and in what form via a pref.
 - All counters and visualizations support not having values every frame.
 - GPU time queries visualization is easier to read relative to the frame budget:
  - If the maximum value is under 16ms, the right side of the graph is fixed at 16ms.
  - If the maximum value is above 16ms, draw a vertical bar at 16ms.
 - Added a few new profile counters:
  - Total frame CPU time (from API send to the end of GPU command submission).
  - Visibility, Prepare, Batching and Glyph resolve times.

The main change is how profile counters are represented. Instead of having different types for different visualizations, every counter is represented the same way, tracking average/max values over half a ms and optionally recording a graph over a number of frames. Counters are stored in a vector and referred to via index (See constants at the top of profiler.rs).
The main motivation for this storage is to facilitate adding counters without having to think too much about where to store them and how to pass them to the renderer.

The profiler's UI is defined by a string with with a single syntax:
 - Comma separated list of tokens (leading and trailing spaces ignored), which can be:
  - A counter name:
   - If prefixed with a '#' character, the counter is shown as a graph.
   - If prefixed with a '*' character, the counter is shown as a change indicator
   - By default (counter name without prefix), the counter is shown as average and max over half a second.
  - A preset name:
   - A preset is a builtin UI string in the same syntax that can be nested in the main UI string.
   - Presets are defined towards the top of profiler.rs and can also refer to other presets.
  - An empty token adds a  bit of vertical space.
  - A '|' token begins a new column.
  - A '_' token begins a new row.

Differential Revision: https://phabricator.services.mozilla.com/D93603
2020-10-20 08:54:04 +00:00
Narcis Beleuzu
a80c3a6da1 Backed out 1 changesets (bug 1671289) for wrench bustages on profiler.rs . CLOSED TREE
Backed out changeset db80ac24d32f (bug 1671289)
2020-10-19 23:58:05 +03:00
Nicolas Silva
af00138764 Bug 1671289 - Improve WebRender's integrated profiler. r=gw
In a (large-ish) nutshell:

 - Consolidate all counters under a single type.
 - Counters are all arranged in an array and referred to via index.
 - All counters can be displayed as average+max (float/int), graph, and change indicator.
 - Specify what to show and in what form via a pref.
 - All counters and visualizations support not having values every frame.
 - GPU time queries visualization is easier to read relative to the frame budget:
  - If the maximum value is under 16ms, the right side of the graph is fixed at 16ms.
  - If the maximum value is above 16ms, draw a vertical bar at 16ms.
 - Added a few new profile counters:
  - Total frame CPU time (from API send to the end of GPU command submission).
  - Visibility, Prepare, Batching and Glyph resolve times.

The main change is how profile counters are represented. Instead of having different types for different visualizations, every counter is represented the same way, tracking average/max values over half a ms and optionally recording a graph over a number of frames. Counters are stored in a vector and referred to via index (See constants at the top of profiler.rs).
The main motivation for this storage is to facilitate adding counters without having to think too much about where to store them and how to pass them to the renderer.

The profiler's UI is defined by a string with with a single syntax:
 - Comma separated list of tokens (leading and trailing spaces ignored), which can be:
  - A counter name:
   - If prefixed with a '#' character, the counter is shown as a graph.
   - If prefixed with a '*' character, the counter is shown as a change indicator
   - By default (counter name without prefix), the counter is shown as average and max over half a second.
  - A preset name:
   - A preset is a builtin UI string in the same syntax that can be nested in the main UI string.
   - Presets are defined towards the top of profiler.rs and can also refer to other presets.
  - An empty token adds a  bit of vertical space.
  - A '|' token begins a new column.
  - A '_' token begins a new row.

Differential Revision: https://phabricator.services.mozilla.com/D93603
2020-10-19 20:07:54 +00:00
Markus Stange
f51c22a2d3 Bug 1664049 - Allow capturing recorded frames from NativeLayerSnapshotter. r=mattwoodrow
This makes the recording API work in the macOS + WR compositor configuration.

Differential Revision: https://phabricator.services.mozilla.com/D89868
2020-09-18 01:26:32 +00:00
Markus Stange
a5e7766fa1 Bug 1664049 - Move WebRenderCompositionRecorder functionality into RendererOGL. r=barret
I liked the separation, but having everything in RendererOGL.cpp makes the next patch easier.

One nice effect of this patch is that all the recorder-related wr_renderer_* functions
are now called from the same file. Previously, most of them were called in
WebRenderCompositionRecorder.cpp, but the cleanup function
wr_renderer_release_composition_recorder_structures was called from RendererOGL.cpp.

Differential Revision: https://phabricator.services.mozilla.com/D89867
2020-09-18 01:27:33 +00:00
Markus Stange
9cb900b66c Bug 1664049 - Move WebRenderCompositionRecorder into RendererOGL. r=barret
Rather than having two windowID -> [something] hash tables, this reduces it to
one: The renderer is already per-window so we just put the recorder into the
renderer.

Differential Revision: https://phabricator.services.mozilla.com/D89866
2020-09-18 19:32:14 +00:00
sotaro
91d0ed03d2 Bug 1658684 - Add android Fence handling to WebRender r=nical
Release fence is delivered from RenderCompositorEGL to WebRenderImageHost via AsyncImagePipelineManager. And the fence is sent to client side by ImageBridgeParent.

Differential Revision: https://phabricator.services.mozilla.com/D88158
2020-09-02 14:21:36 +00:00
Markus Stange
44706e7e13 Bug 1592031 - Use NativeLayerSnapshotter to capture profiler screenshots with WebRender on macOS. r=mattwoodrow
Depends on D59158

Differential Revision: https://phabricator.services.mozilla.com/D86880
2020-08-27 04:00:57 +00:00
Narcis Beleuzu
d525e228fa Backed out 4 changesets (bug 1658856, bug 1592031) for bustages on ScreenshotGrabber.h . CLOSED TREE
Backed out changeset 6d54a1050bbd (bug 1658856)
Backed out changeset 19145f742503 (bug 1592031)
Backed out changeset 5db68a6a5bc2 (bug 1592031)
Backed out changeset 925e3b179b9b (bug 1592031)
2020-08-22 02:06:39 +03:00
Markus Stange
46daa2ba14 Bug 1592031 - Use NativeLayerSnapshotter to capture profiler screenshots with WebRender on macOS. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D86880
2020-08-21 22:33:41 +00:00
Matt Woodrow
71b4f73582 Bug 1656818 - Move decision to flip WebRender readback closer to the source, and make it correct for SWGL. r=lsalzman,geckoview-reviewers,snorp
Differential Revision: https://phabricator.services.mozilla.com/D86892
2020-08-14 18:40:09 +00:00
Csoregi Natalia
d3dd708533 Backed out 4 changesets (bug 1656817, bug 1656818, bug 1658858) for bustage on RendererOGL.cpp. CLOSED TREE
Backed out changeset 9c8e4ec4e47c (bug 1656818)
Backed out changeset 92252cfd26de (bug 1656818)
Backed out changeset 1bebb79150d6 (bug 1656817)
Backed out changeset e1becb3a2fb5 (bug 1658858)
2020-08-14 00:25:44 +03:00
Matt Woodrow
3ab6d4a907 Bug 1656818 - Move decision to flip WebRender readback closer to the source, and make it correct for SWGL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D86892
2020-08-13 20:43:35 +00:00
Lee Salzman
b754aa0add Bug 1652894 - add SWGL RenderTextureHosts. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D86340
2020-08-12 21:25:17 +00:00
Mihai Alexandru Michis
49b0cb84ec Backed out 4 changesets (bug 1652894) for causing multiple reftest failures.
CLOSED TREE

Backed out changeset d6786fcf717b (bug 1652894)
Backed out changeset 97df16d3b738 (bug 1652894)
Backed out changeset 8a1f8b9e2524 (bug 1652894)
Backed out changeset 96bca5729430 (bug 1652894)
2020-08-12 02:08:28 +03:00
Lee Salzman
dca51388e1 Bug 1652894 - add SWGL RenderTextureHosts. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D86340
2020-08-11 15:53:15 +00:00
Csoregi Natalia
71ee51a3de Backed out 4 changesets (bug 1652894) for texture related crashes. CLOSED TREE
Backed out changeset 714ad1b01cb2 (bug 1652894)
Backed out changeset e3b4753fd09c (bug 1652894)
Backed out changeset 8abaf47071d8 (bug 1652894)
Backed out changeset 175df7659c3f (bug 1652894)
2020-08-11 15:50:07 +03:00
Lee Salzman
f3981d51c5 Bug 1652894 - add SWGL RenderTextureHosts. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D86340
2020-08-11 07:38:10 +00:00
Csoregi Natalia
3cf113b7a8 Backed out 4 changesets (bug 1652894) for bustages on RenderThread.cpp. CLOSED TREE
Backed out changeset 0e0107226c9e (bug 1652894)
Backed out changeset ff5e4bffb497 (bug 1652894)
Backed out changeset 2e4c7cced692 (bug 1652894)
Backed out changeset a8b850455c90 (bug 1652894)
2020-08-11 08:52:47 +03:00
Lee Salzman
9dd99a1647 Bug 1652894 - add SWGL RenderTextureHosts. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D86340
2020-08-11 05:24:04 +00:00
Lee Salzman
878ec1e2b1 Bug 1646835 - move SWGL context creation into specific SWGL RenderCompositors. r=jrmuizel
Currently RendererOGL has mixed-in details of SWGL context creation which becomes messy
and slightly unanticipated based on the nomenclature and structure of RendererOGL. Based
on other work in bug 1646835, it becomes more natural to move this context creation into
the specific SWGL RenderCompositors so that RendererOGL can be agnostic to any SWGL
details.

Differential Revision: https://phabricator.services.mozilla.com/D80273
2020-06-24 01:23:43 +00:00
Lee Salzman
dfc17c5a11 Bug 1646835 - implement basic SWGL compositor. r=jrmuizel
This is a first implementation of a software-only SWGL RenderCompositor
that relies on the existing widget hooks for Basic compositing. It attempts
to lock the widget and get a DT whose underlying data it can supply directly
to SWGL to composite to. Critically, it does not rely on OpenGL or any other
form of HW accel to function. The interface between the RenderCompositor and
SWGL will be further refined in follow-up patches.

Differential Revision: https://phabricator.services.mozilla.com/D80268
2020-06-24 00:53:39 +00:00
Jean-Yves Avenard
647b901352 Bug 1634253 - P6. Remove MessageLoop use from gfx. r=kats,mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D73825
2020-05-08 20:20:44 +00:00
Narcis Beleuzu
221d9102fa Backed out 9 changesets (bug 1634253) for bc failures on browser_bug295977_autoscroll_overflow.js . CLOSED TREE
Backed out changeset d41b75c1f7ec (bug 1634253)
Backed out changeset 5f8a1ee17b81 (bug 1634253)
Backed out changeset 43eda078b405 (bug 1634253)
Backed out changeset e98212a74709 (bug 1634253)
Backed out changeset 855e222ceb14 (bug 1634253)
Backed out changeset 9f01acdf4367 (bug 1634253)
Backed out changeset ea62cb1ec472 (bug 1634253)
Backed out changeset fa3e7588e7d6 (bug 1634253)
Backed out changeset 139e7035e736 (bug 1634253)
2020-05-08 23:09:31 +03:00
Jean-Yves Avenard
859532c46d Bug 1634253 - P6. Remove MessageLoop use from gfx. r=kats,mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D73825
2020-05-07 08:04:53 +00:00
Dorel Luca
68273599af Backed out 11 changesets (bug 1635001, bug 1634253) for Browser-chrome failures in browser_bug295977_autoscroll_overflow.js
Backed out changeset c3c27cb46db6 (bug 1635001)
Backed out changeset 6cea251e5910 (bug 1635001)
Backed out changeset 3cb0a05be7fc (bug 1635001)
Backed out changeset 1cbb2866a3ad (bug 1634253)
Backed out changeset 53fd00dcf95c (bug 1634253)
Backed out changeset e3acd9db7065 (bug 1634253)
Backed out changeset 5c0b7aa99406 (bug 1634253)
Backed out changeset dc7e17f772be (bug 1634253)
Backed out changeset 6e47af64396a (bug 1634253)
Backed out changeset 8865de9ae0ef (bug 1634253)
Backed out changeset 6fac93b596c2 (bug 1634253)
2020-05-07 11:00:04 +03:00
Jean-Yves Avenard
e3857f0cf2 Bug 1634253 - P6. Remove MessageLoop use from gfx. r=kats,mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D73825
2020-05-07 05:03:42 +00:00