Commit graph

83 commits

Author SHA1 Message Date
Mike Hommey
c70ca80cfd Bug 1884836 - Base graphics support for iOS. r=gfx-reviewers,bradwerth
Original work by Nika Layzell and Ted Mielczarek.

Of note:
- GLdouble and GLclampd are not defined in the iPhoneOS SDK opengl
  headers.
- GL_CONTEXT_PROVIDER_DEFAULT was defined too early for
  GLContextProviderEAGL to be used as intended.
- GLContextProviderEAGL::CreateForCompositorWidget was aligned with
  GLContextProviderCGL::CreateForCompositorWidget. There is a ton of
  overlap between both, but sharing more code was left out of scope.
- MacIOSurface::BindTexImage and
  SurfacePoolCA::LockedPool::GetFramebufferForSurface were left
  unimplemented.
- RootSnapshotter is disabled.

Differential Revision: https://phabricator.services.mozilla.com/D204323
2024-03-15 01:28:27 +00:00
Stanca Serban
25baf2ac1a Backed out 2 changesets (bug 1884836) for causing mochitests failures in test_2_conformance__textures__misc__texture-corner-case-videos.html. CLOSED TREE
Backed out changeset 56bbc2a419e8 (bug 1884836)
Backed out changeset cc464f6e2cfb (bug 1884836)
2024-03-15 01:59:29 +02:00
Mike Hommey
a58d54f79b Bug 1884836 - Base graphics support for iOS. r=gfx-reviewers,bradwerth
Original work by Nika Layzell and Ted Mielczarek.

Of note:
- GLdouble and GLclampd are not defined in the iPhoneOS SDK opengl
  headers.
- GL_CONTEXT_PROVIDER_DEFAULT was defined too early for
  GLContextProviderEAGL to be used as intended.
- GLContextProviderEAGL::CreateForCompositorWidget was aligned with
  GLContextProviderCGL::CreateForCompositorWidget. There is a ton of
  overlap between both, but sharing more code was left out of scope.
- MacIOSurface::BindTexImage and
  SurfacePoolCA::LockedPool::GetFramebufferForSurface were left
  unimplemented.
- RootSnapshotter is disabled.

Differential Revision: https://phabricator.services.mozilla.com/D204323
2024-03-14 20:56:50 +00:00
Nicolas Silva
255a5b7c14 Bug 1804914 - Represent compositor transforms using scale-offsets instead of 4x4 matrices. r=gw
The draw compositor's occlusion culling optimization relies on the transforms preserving axis alignment.

Differential Revision: https://phabricator.services.mozilla.com/D165141
2023-01-19 15:40:49 +00:00
Butkovits Atila
aeb018ca75 Backed out changeset 48381173c92c (bug 1780315) for causing bug 1782764. CLOSED TREE 2022-08-03 13:43:39 +03:00
Timothy Nikkel
5f9393c35d Bug 1780315. Use a timer to make sure all profiler screenshots get submitted. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D152232
2022-08-02 11:14:17 +00:00
Brad Werth
6af8eda593 Bug 1731136 Part 5: Make macOS native compositor and NativeLayerCA handle backdrop r=mstange
layers.


This makes the macOS native compositor claim the ability to handle color
layers and makes NativeLayerCA actually do it. Color layers have a different
structure than other layers. Color layers apply the color to the
wrappingCALayer, and have no contentCALayer at all. That means that the
color layers are always sized to the layer's clip rect.

This also contains a drive-by fix to handle the case where an mOpaquenessTintLayer
exists when mMutatedSpecializeVideo is set to true. Before this change, in such a
case, the opaqueness layer will not be associated with the recreated wrapping layer.

Depends on D128131

Differential Revision: https://phabricator.services.mozilla.com/D128545
2022-06-01 19:40:04 +00:00
Brad Werth
c979bb1fd6 Bug 1731136 Part 2: Allow native compositors to handle surface backdrops. r=gw
This only allows native compositors to claim this capability, without changing
any compositors to do so. In Part 4, the macOS native compositor claims this
capability in conjunction with adding the code that handles the color layers.

Differential Revision: https://phabricator.services.mozilla.com/D127175
2022-06-01 19:40:02 +00:00
Molnar Sandor
307fd4a744 Backed out 5 changesets (bug 1731136) for causing reftest failures in layout/reftests/bugs/299136-1.html CLOSED TREE
Backed out changeset d2a56d51c65b (bug 1731136)
Backed out changeset a24467137e9b (bug 1731136)
Backed out changeset e127e41e12da (bug 1731136)
Backed out changeset 7dfdcb74d1c1 (bug 1731136)
Backed out changeset 6b5626a7b82d (bug 1731136)
2022-06-01 04:12:55 +03:00
Brad Werth
47917e0be8 Bug 1731136 Part 5: Make macOS native compositor and NativeLayerCA handle backdrop r=mstange
layers.


This makes the macOS native compositor claim the ability to handle color
layers and makes NativeLayerCA actually do it. Color layers have a different
structure than other layers. Color layers apply the color to the
wrappingCALayer, and have no contentCALayer at all. That means that the
color layers are always sized to the layer's clip rect.

This also contains a drive-by fix to handle the case where an mOpaquenessTintLayer
exists when mMutatedSpecializeVideo is set to true. Before this change, in such a
case, the opaqueness layer will not be associated with the recreated wrapping layer.

Depends on D128131

Differential Revision: https://phabricator.services.mozilla.com/D128545
2022-05-31 22:21:15 +00:00
Brad Werth
4b0f3f3d0f Bug 1731136 Part 2: Allow native compositors to handle surface backdrops. r=gw
This only allows native compositors to claim this capability, without changing
any compositors to do so. In Part 4, the macOS native compositor claims this
capability in conjunction with adding the code that handles the color layers.

Differential Revision: https://phabricator.services.mozilla.com/D127175
2022-05-31 22:21:14 +00:00
criss
59b9e1210a Backed out 4 changesets (bug 1731136) for causing Bug 1771465 . CLOSED TREE
Backed out changeset c333a19d8712 (bug 1731136)
Backed out changeset 6b5b4b5eb1e9 (bug 1731136)
Backed out changeset 7afa3f4b5a85 (bug 1731136)
Backed out changeset b408a3230170 (bug 1731136)
2022-05-27 17:39:43 +03:00
Brad Werth
77aa170cdd Bug 1731136 Part 4: Make macOS native compositor and NativeLayerCA handle backdrop layers. r=mstange
This makes the macOS native compositor claim the ability to handle color
layers and makes NativeLayerCA actually do it. Color layers have a different
structure than other layers. Color layers apply the color to the
wrappingCALayer, and have no contentCALayer at all. That means that the
color layers are always sized to the layer's clip rect.

This also contains a drive-by fix to handle the case where an mOpaquenessTintLayer
exists when mMutatedSpecializeVideo is set to true. Before this change, in such a
case, the opaqueness layer will not be associated with the recreated wrapping layer.

Differential Revision: https://phabricator.services.mozilla.com/D128545
2022-05-26 15:24:13 +00:00
Brad Werth
49ab728ca4 Bug 1731136 Part 2: Allow native compositors to handle surface backdrops. r=gw
This only allows native compositors to claim this capability, without changing
any compositors to do so. In Part 4, the macOS native compositor claims this
capability in conjunction with adding the code that handles the color layers.

Differential Revision: https://phabricator.services.mozilla.com/D127175
2022-05-26 15:24:12 +00:00
Robert Mader
48aa55faf4 Bug 1752469 - Remove Gnome specific workaround using PauseCompositor(), r=gfx-reviewers,lsalzman
This was originally implemented in D111662 to work around a crash
that otherwise would get triggered in Gnome/Mutter.
The fix for that crash has been available for a couple of month now,
thus remove the workaround again.

This may help preventing flickering for menus in certain situations.

Differential Revision: https://phabricator.services.mozilla.com/D137251
2022-01-28 04:24:16 +00:00
Gerald Squelart
5399574d8b Bug 1738627 - profiler_thread_is_being_profiled_for_markers - r=canaltinova
`profiler_thread_is_being_profiled` is used a lot for markers, so it makes sense to have a specialized version, which is a bit shorter, and lives in ProfilerMarkers.h.

Differential Revision: https://phabricator.services.mozilla.com/D130009
2021-11-08 23:59:35 +00:00
Cristian Tuns
1aeac93d23 Backed out 5 changesets (bug 1738627) for causing xpcshell failures on test_ext_geckoProfiler_schema.js CLOSED TREE
Backed out changeset 42d385d7da97 (bug 1738627)
Backed out changeset edeb3a338954 (bug 1738627)
Backed out changeset 98f02e35134d (bug 1738627)
Backed out changeset 711daa6dd24b (bug 1738627)
Backed out changeset 49e12753a40c (bug 1738627)
2021-11-05 05:12:28 -04:00
Gerald Squelart
7fa084ae7c Bug 1738627 - profiler_thread_is_being_profiled_for_markers - r=canaltinova
`profiler_thread_is_being_profiled` is used a lot for markers, so it makes sense to have a specialized version, which is a bit shorter, and lives in ProfilerMarkers.h.

Differential Revision: https://phabricator.services.mozilla.com/D130009
2021-11-05 05:52:28 +00:00
sotaro
641ab17cd9 Bug 1727511 - Add mozlog around WebRenderBridgeParent and RenderThread r=gfx-reviewers,jrmuizel,aosmond
Differential Revision: https://phabricator.services.mozilla.com/D123616
2021-09-01 22:27:15 +00:00
criss
10c4c4351f Backed out changeset 25acfe977062 (bug 1727511) for causing valgrind build bustages. CLOSED TREE 2021-08-27 18:24:28 +03:00
sotaro
a4dae9b314 Bug 1727511 - Add mozlog around WebRenderBridgeParent and RenderThread r=gfx-reviewers,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D123616
2021-08-27 06:37:32 +00:00
Robert Mader
7aea8e97e7 Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman
Note: Sorry in advance that this patch is so big. Unfortunately
splitting it up would create lots of redundant changes.
This should be the last big refactoring for the Wayland compositor
backend for now.

Up until now SurfacePoolWayland was a pool of actual `wl_surface`s,
as before bug 1718569 we had no direct access to `wl_buffer`s when
using EGL. However, the way `SurfacePoolCA` manages native surfaces
is closer to what in Wayland terminology would be a buffer pool:
buffers are heavy-weight and expansive to allocate, while
`wl_surface` objects are cheap to recreate.

So instead of having a pool of surfaces, each of them having its
own pool of buffers, make `wl_surface`s part of tiles and make
`SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or
DMABuf buffers). This will allow us to share buffers (especially
depth buffers) more efficiently, reducing VRAM usage and allocation
times.
Apart from that it will also simplify our tile management logic.
Most importantly, we'll need to reorder `wl_surface`s less often and
less complex (no `place_below` the parent surface) and can also drop
reattaching subsurfaces to compositors. Especially the former will
likely decrease CPU time in compositors.

Overall this patch makes `NativeLayerWayland` behave more like
`NativeLayerCA` while taking in lessons learned from
`WindowSurfaceWaylandMB`.

Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 12:43:21 +00:00
Markus Stange
bbac1f4919 Bug 1717889 - Make sure we don't call NextSurfaceAsFramebuffer on zero-sized native layers. r=mkaply
Differential Revision: https://phabricator.services.mozilla.com/D119676
2021-07-16 15:20:17 +00:00
Tom Ritter
1b9b6b72db Bug 1666222: Cut over a ton of NowUnfuzzed calls -> Now 4/5 r=smaug,extension-reviewers,zombie
With Fuzzyfox removed, Now() does what NowUnfuzzed() did.

Differential Revision: https://phabricator.services.mozilla.com/D119639
2021-07-14 18:18:17 +00:00
Robert Mader
1dbe34f5cc Bug 1711244 - Register native layers for GDK frame callbacks,
Analogous to D102835 we need to make GDK aware of opaque surfaces
so frame callbacks get emitted for these surfaces as well. Otherwise
GDK may get stuck waiting on callbacks when used on compositors
that don't emit callbacks for occluded surfaces (which is explicitly
encouraged by the Wayland spec).

GDK runs on the main thread, so we need to dispatch these action
to the main thread as well.

Differential Revision: https://phabricator.services.mozilla.com/D116747
2021-06-03 17:42:29 +00:00
Narcis Beleuzu
1c1dfcf888 Backed out changeset 37aeebaea4bb (bug 1711244) for clang bustages on NativeLayerWayland.cpp . CLOSED TREE 2021-06-03 20:11:32 +03:00
Robert Mader
f7b6df5c89 Bug 1711244 - Register native layers for GDK frame callbacks,
Analogous to D102835 we need to make GDK aware of opaque surfaces
so frame callbacks get emitted for these surfaces as well. Otherwise
GDK may get stuck waiting on callbacks when used on compositors
that don't emit callbacks for occluded surfaces (which is explicitly
encouraged by the Wayland spec).

GDK runs on the main thread, so we need to dispatch these action
to the main thread as well.

Differential Revision: https://phabricator.services.mozilla.com/D116722
2021-06-03 14:46:48 +00:00
Nicolas Silva
fd03e01f61 Bug 1711648 - Move all device rects to the Box2D representations. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D116401
2021-06-02 12:47:03 +00:00
Csoregi Natalia
511356a7c1 Backed out 3 changesets (bug 1713544, bug 1711648) for valgrind failures. CLOSED TREE
Backed out changeset 9449ea40b4fd (bug 1713544)
Backed out changeset 3d51bfaa0d8d (bug 1711648)
Backed out changeset c6c83dc97cbb (bug 1711648)
2021-06-02 10:43:16 +03:00
Nicolas Silva
2c30dfddef Bug 1711648 - Move all device rects to the Box2D representations. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D116401

Depends on D116266
2021-06-01 21:25:19 +00:00
Butkovits Atila
34ce52667e Backed out 2 changesets (bug 1711648) for causing wrench bustages. CLOSED TREE
Backed out changeset 7f1ae1fdd305 (bug 1711648)
Backed out changeset 71807d4e6302 (bug 1711648)
2021-06-02 01:28:29 +03:00
Nicolas Silva
7f7de00ea8 Bug 1711648 - Move all device rects to the Box2D representations. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D116401
2021-06-01 21:25:19 +00:00
Butkovits Atila
3af9a07178 Backed out 2 changesets (bug 1711648) for causing failures at grid-max-sizing-flex-002.html. CLOSED TREE
Backed out changeset 9cf4e612dbac (bug 1711648)
Backed out changeset 7d8bba559407 (bug 1711648)
2021-06-01 21:07:34 +03:00
Nicolas Silva
8aa37de340 Bug 1711648 - Move all device rects to the Box2D representations. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D116401
2021-06-01 16:30:36 +00:00
Glenn Watson
f459eaca0d Bug 1712871 - Move max_update_rects into CompositorCapabilities r=lsalzman,gfx-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D115954
2021-05-26 20:09:58 +00:00
Robert Mader
89349d8182 Bug 1699985 - Implement basic native Wayland compositor backend, r=stransky,mstange,aosmond
This implements a mostly working native backend for Wayland. It can
be enabled via `gfx.webrender.compositor.force-enabled`.

The focus here was to get a basic structure in place while mini-
mising changes in shared code.

Known issues and limitations:
 - No readback - this will likely require an internal compositor
   again, as Wayland doesn't allow easily allow readback of the
   composited image, at least not without asking for permission.
   Alternatively, a new Wayland extension could be written for it.
 - Frame-call related issues when using a compositor that optimizes
   them (e.g. Gnome-Shell). This will be fixed in a follow-up, in
   the mean time disabling `widget.wayland.opaque-region.enabled`
   and `widget.wayland.vsync.enabled` works around the issues.
 - Only works on Weston or very recent versions of Gnome-Shell, see
   bug 1699754

Differential Revision: https://phabricator.services.mozilla.com/D111662
2021-05-11 13:38:59 +00:00
Robert Mader
68fa6c04b1 Bug 1707943 - webrender_bindings: Fix warnings and apply suggestions form static analysis, r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D113603
2021-04-28 12:33:55 +00:00
sotaro
1001dc3ad6 Bug 1700524 - Rename aWebRender of CreateForCompositorWidget() to aHardwareWebRender r=jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D109570
2021-04-07 07:04:43 +00:00
Robert Mader
d48b91e66d Bug 1680128 - Do not flip surface when not using native compositor, r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D110398
2021-04-01 10:18:31 +00:00
Florian Quèze
8ad1e5d0aa Bug 1699742 - Remove MOZ_GECKO_PROFILER ifdefs that are no longer needed, r=gerald.
Differential Revision: https://phabricator.services.mozilla.com/D109078
2021-03-22 16:29:52 +00:00
sotaro
429fab5354 Bug 1699001 - Rename RenderThread::SharedGL() to SingletonGL() r=nical
Name of Singleton is commonly used in gecko.

Name of SharedGL is confusing. It looks like "shared context", but it is not. The GL context is actually a singleton GLContext that is used by all WebRender. Each window creates one EGLSurface for each window. EGLSurface is switched for each window rendering.

Differential Revision: https://phabricator.services.mozilla.com/D108714
2021-03-17 10:51:45 +00:00
Lee Salzman
f2c57b81f4 Bug 1690216 - Report whether to redraw on invalidation to WR. r=mattwoodrow
This requires us to plumb CompositorCapabilities to support the extra field.
This is complicated by the fact that since it is a Rust struct, it has no
default constructor that can pass through to C++ via bindings, so every
one of our RenderCompositors was forced to manually initialize fields. To
get around this brittle footgun, instead the structure is initialized on
the Rust side, and RenderCompositor's are encouraged to only change fields
that actually diverge from the defaults as passed in via pointer.

Finally, we can then do what we need to do, which is just to send the
ForceRedraw message that needs to happen based on what we know about
CompositorCapabilities.

Differential Revision: https://phabricator.services.mozilla.com/D106246
2021-02-24 14:15:02 +00:00
Andreea Pavel
4d15e7e3f1 Backed out changeset 45b36995cfd6 (bug 1690216) for build bustages at rules.mk on a CLOSED TREE 2021-02-24 12:03:14 +02:00
Lee Salzman
e746523892 Bug 1690216 - Report whether to redraw on invalidation to WR. r=mattwoodrow
This requires us to plumb CompositorCapabilities to support the extra field.
This is complicated by the fact that since it is a Rust struct, it has no
default constructor that can pass through to C++ via bindings, so every
one of our RenderCompositors was forced to manually initialize fields. To
get around this brittle footgun, instead the structure is initialized on
the Rust side, and RenderCompositor's are encouraged to only change fields
that actually diverge from the defaults as passed in via pointer.

Finally, we can then do what we need to do, which is just to send the
ForceRedraw message that needs to happen based on what we know about
CompositorCapabilities.

Differential Revision: https://phabricator.services.mozilla.com/D106246
2021-02-24 09:18:33 +00:00
Gerald Squelart
2416d881e2 Bug 1691589 - Reduce reliance on GeckoProfiler.h when only labels (and maybe markers) are needed - r=necko-reviewers,geckoview-reviewers,sg,agi,florian
There are no code changes, only #include changes.
It was a fairly mechanical process: Search for all "AUTO_PROFILER_LABEL", and in each file, if only labels are used, convert "GeckoProfiler.h" into "ProfilerLabels.h" (or just add that last one where needed).
In some files, there were also some marker calls but no other profiler-related calls, in these cases "GeckoProfiler.h" was replaced with both "ProfilerLabels.h" and "ProfilerMarkers.h", which still helps in reducing the use of the all-encompassing "GeckoProfiler.h".

Differential Revision: https://phabricator.services.mozilla.com/D104588
2021-02-16 04:44:19 +00:00
Markus Stange
222784d009 Bug 1691176 - Fix includes and namespace annotations in RenderCompositorNative. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D104304
2021-02-06 05:20:24 +00:00
Lee Salzman
8f06a347bd Bug 1687265 - clear out old SWGL framebuffer after frame ends. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D102493
2021-01-21 00:42:11 +00:00
Brad Werth
3e6d3530c3 Bug 1685046: Hoist release asserts in RenderCompositorNativeOGL::Bind to crash earlier. r=jrmuizel
This change spreads the release asserts to functions that are invoked by other
callers, potentially increasing the cases where the assert will fail. This is
being done intentionally; we want additional information on the reasons for
the crashes.

Differential Revision: https://phabricator.services.mozilla.com/D101063
2021-01-11 15:49:09 +00:00
Lee Salzman
50180b37c8 Bug 1679215 - limit SWGL compositing to dirty region. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D101256
2021-01-10 23:27:01 +00:00
sotaro
9cba7102e4 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