Commit graph

101 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
stransky
be6d95b423 Bug 1833855 [Linux] Build dmabuf support on Linux/Gtk and don't request Wayland for it r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D178634
2023-06-22 13:42:38 +00:00
Cristian Tuns
ac8a8744d7 Backed out 14 changesets (bug 1833855) for causing build bustages in DMABufSurface.cpp CLOSED TREE
Backed out changeset b8daeb03b670 (bug 1833855)
Backed out changeset cc17af8bae3d (bug 1833855)
Backed out changeset 2d4f6b8ad5d3 (bug 1833855)
Backed out changeset 3b75e59357bb (bug 1833855)
Backed out changeset 86948033f163 (bug 1833855)
Backed out changeset 3e6387b95e39 (bug 1833855)
Backed out changeset 7f22e082786c (bug 1833855)
Backed out changeset 9d5ae056d3c8 (bug 1833855)
Backed out changeset b0a7ca2dfbd6 (bug 1833855)
Backed out changeset ac0947e6e601 (bug 1833855)
Backed out changeset a058367a436a (bug 1833855)
Backed out changeset 7b4da292159c (bug 1833855)
Backed out changeset d50ae530998d (bug 1833855)
Backed out changeset 895b93846598 (bug 1833855)
2023-06-22 08:05:40 -04:00
stransky
8753e5afaf Bug 1833855 [Linux] Build dmabuf support on Linux/Gtk and don't request Wayland for it r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D178634
2023-06-22 11:17:23 +00:00
Cristian Tuns
684fec2fef Backed out 14 changesets (bug 1833855) for causing build bustages in SharedSurface.cpp CLOSED TREE
Backed out changeset c3f7d1963902 (bug 1833855)
Backed out changeset 347c47f5542a (bug 1833855)
Backed out changeset 2c0807d0b39a (bug 1833855)
Backed out changeset 013d1d16194d (bug 1833855)
Backed out changeset 2e49d43a627c (bug 1833855)
Backed out changeset ea21e90a71dd (bug 1833855)
Backed out changeset 8d5d0690668c (bug 1833855)
Backed out changeset 4eb11068275d (bug 1833855)
Backed out changeset 15120d9c5b24 (bug 1833855)
Backed out changeset b75750bb7596 (bug 1833855)
Backed out changeset 6f94e3f002ed (bug 1833855)
Backed out changeset 3235825211f9 (bug 1833855)
Backed out changeset 47a6e9ed8828 (bug 1833855)
Backed out changeset b8013c43aa20 (bug 1833855)
2023-06-22 05:29:12 -04:00
stransky
a5e8bfe6b4 Bug 1833855 [Linux] Build dmabuf support on Linux/Gtk and don't request Wayland for it r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D178634
2023-06-22 08:35:56 +00:00
Brad Werth
6c7a45e39b Bug 1731136 Part 1: Extend compositor to manage backdrop surfaces. r=gw
This is all scaffolding that will be used by later parts of this patch
series.

Differential Revision: https://phabricator.services.mozilla.com/D128130
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
5455eef7f6 Bug 1731136 Part 1: Extend compositor to manage backdrop surfaces. r=gw
This is all scaffolding that will be used by later parts of this patch
series.

Differential Revision: https://phabricator.services.mozilla.com/D128130
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
4af362a7f6 Bug 1731136 Part 1: Extend compositor to manage backdrop surfaces. r=gw
This is all scaffolding that will be used by later parts of this patch
series.

Differential Revision: https://phabricator.services.mozilla.com/D128130
2022-05-26 15:24:12 +00:00
sotaro
5477d7dc1d Bug 1742440 - Add debug capability to check window visibility state by overlay r=gfx-reviewers,nical
It is helpful if window visibility state could be checked by debug overlay.
For now, it works only on Windows with compositor.

Differential Revision: https://phabricator.services.mozilla.com/D131807
2021-11-25 11:33:46 +00:00
Jamie Nicol
790229886f Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro
Fenix makes use of the default clear color by setting it to a dark
color when the dark theme is enabled to avoid white flashes while
pages are loading. In bug 1663732 we hooked this functionality up to
webrender, however, it was only used by the draw compositor. Now with
software webrender on Android, we sometimes use
RenderCompositorLayersSWGL rather than the draw compositor, and users
are therefore experiencing white flashes during page loads.

This adds a clear_color argument to StartCompositing(), which
RenderCompositorLayersSWGL uses to set the CompositorOGL's clear
color. This patch also makes Renderer::clear_color not an Option
type, as we only ever used it in Some form, and that simplifies the
FFI.

Differential Revision: https://phabricator.services.mozilla.com/D119272
2021-07-08 11:46:37 +00:00
Sandor Molnar
53b20ea46f Backed out changeset b5ad7d43bc54 (bug 1719367) for causing build bustages. CLOSED TREE 2021-07-08 12:28:55 +03:00
Jamie Nicol
8ee6c18a77 Bug 1719367 - Hook up default clear color to RenderCompositorLayersSWGL. r=sotaro
Fenix makes use of the default clear color by setting it to a dark
color when the dark theme is enabled to avoid white flashes while
pages are loading. In bug 1663732 we hooked this functionality up to
webrender, however, it was only used by the draw compositor. Now with
software webrender on Android, we sometimes use
RenderCompositorLayersSWGL rather than the draw compositor, and users
are therefore experiencing white flashes during page loads.

This adds a clear_color argument to StartCompositing(), which
RenderCompositorLayersSWGL uses to set the CompositorOGL's clear
color. This patch also makes Renderer::clear_color not an Option
type, as we only ever used it in Some form, and that simplifies the
FFI.

Differential Revision: https://phabricator.services.mozilla.com/D119272
2021-07-08 09:01:28 +00:00
Robert Mader
da50a756c0 Bug 1713468 - Support RenderCompositorEGL on X11-only builds,
Right now X11-only builds will use `RendenderCompositorOGL` with EGL,
which could lead to unexpected bugs that are hard to diagnose.

It also makes code harder to read if code in `MOZ_WAYLAND` blocks
is used by the X11 backend.

While on it, rename and reorder `PauseRemoteRenderer()` so it matches
its counterpart `MaybeResumeCompositor()` better.

Note: This revision was accepted in D116315 but some bug in lando
required a recreation.

Differential Revision: https://phabricator.services.mozilla.com/D116530
2021-06-01 23:55:28 +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
067d78ddef Bug 1711224 - Add Wayland support for RenderCompositorNativeSWGL,
In order to do that, move buffer type specific code into
`NativeSurfaceWayland` and create subclasses for SHM and EGL
buffers.

This should help identify bugs, improve the code structure for
additional buffer types (e.g. YUV) and makes us get closer
to the CA backend.

Also includes some minor unrelated cleanups.

Differential Revision: https://phabricator.services.mozilla.com/D115938
2021-05-25 21:14:39 +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
502d8c18c3 Bug 1700532 - Block fallback from RenderCompositorOGLSWGL to RenderCompositorSWGL in RenderCompositor::Create() r=nical
On Android, we do not want to fallback from RenderCompositorOGLSWGL to RenderCompositorSWGL.

Differential Revision: https://phabricator.services.mozilla.com/D109573
2021-03-24 23:49:36 +00:00
Andrew Osmond
08a4397790 Bug 1688096 - Part 2. Add flag to CompositorOptions to allow SW-WR on a per widget basis. r=mattwoodrow
The pref gfx.webrender.software.unaccelerated-widget.allow may be used
to allow software WebRender to be used with new windows/popups that have
transparency on Windows. Otherwise they would fallback to basic layers.

Similarly, the pref gfx.webrender.software.unaccelerated-widget.force
may be used to force software WebRender for all windows that would
fallback to basic layers.

Differential Revision: https://phabricator.services.mozilla.com/D104855
2021-02-24 19:40:00 +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
sotaro
9d6fd76b93 Bug 1677459 - Split platform independent part to RenderCompositorCompositorSWGL r=mattwoodrow
The change is a preparation of Bug 1673342

Differential Revision: https://phabricator.services.mozilla.com/D99046
2021-02-23 08:57:27 +00:00
Mihai Alexandru Michis
5fff3c0a33 Backed out changeset 8908ec20b487 (bug 1677459) for causing reftest assertion failures in LayersTypes.cpp
CLOSED TREE
2021-02-23 03:11:50 +02:00
sotaro
5758b0e880 Bug 1677459 - Split platform independent part to RenderCompositorCompositorSWGL r=mattwoodrow
The change is a preparation of Bug 1673342

Differential Revision: https://phabricator.services.mozilla.com/D99046
2021-02-22 21:55:50 +00:00
Cosmin Sabou
0e81627e87 Backed out 2 changesets (bug 1688096) for win webrender sw_compositor related crashes. CLOSED TREE
Backed out changeset aa0d1698aff8 (bug 1688096)
Backed out changeset 3ad2f4d0c317 (bug 1688096)
2021-02-18 19:52:29 +02:00
Andrew Osmond
c068c92afd Bug 1688096 - Part 2. Add/use flag to CompositorOptions to allow SW-WR on a per widget basis. r=mattwoodrow
The pref gfx.webrender.software.unaccelerated-widget.allow may be used
to allow software WebRender to be used with new windows/popups that have
transparency on Windows. Otherwise they would fallback to basic layers.

Similarly, the pref gfx.webrender.software.unaccelerated-widget.force
may be used to force software WebRender for all windows that would
fallback to basic layers.

Differential Revision: https://phabricator.services.mozilla.com/D104855
2021-02-18 15:37:47 +00:00
smolnar
0757c7413f Backed out 2 changesets (bug 1688096) for linux debug build bustage in KnowsCompositor. CLOSED TREE
Backed out changeset 6cdfa0af2278 (bug 1688096)
Backed out changeset 6471b0910f45 (bug 1688096)
2021-02-18 14:34:49 +02:00
Andrew Osmond
6528a201ab Bug 1688096 - Part 2. Add/use flag to CompositorOptions to allow SW-WR on a per widget basis. r=mattwoodrow
The pref gfx.webrender.software.unaccelerated-widget.allow may be used
to allow software WebRender to be used with new windows/popups that have
transparency on Windows. Otherwise they would fallback to basic layers.

Similarly, the pref gfx.webrender.software.unaccelerated-widget.force
may be used to force software WebRender for all windows that would
fallback to basic layers.

Differential Revision: https://phabricator.services.mozilla.com/D104855
2021-02-18 11:50:06 +00:00
Andrew Osmond
b12f12554f Bug 1686946 - Ship Software WebRender to OSX early beta/nightly users without (full) WebRender. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D101933
2021-02-11 17:53:40 +00:00
Bogdan Tara
33fb6dff31 Backed out changeset b149d1f43e95 (bug 1691964) for wd failures on minimize.py CLOSED TREE 2021-02-10 20:11:58 +02:00
Mihai Alexandru Michis
74e3e203a8 Backed out changeset 1bf5a1f1db9a (bug 1686946) for causing bc failures in browser_policy_hardware_acceleration.js
CLOSED TREE
2021-02-10 19:46:27 +02:00
Andrew Osmond
3ceb6196c4 Bug 1691964 - Avoid accelerated compositing for headless tests with software WebRender. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D104694
2021-02-10 15:11:58 +00:00
Andrew Osmond
d5e27e6220 Bug 1686946 - Ship Software WebRender to OSX early beta/nightly users without (full) WebRender. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D101933
2021-02-10 14:12:09 +00:00
Matt Woodrow
eb7fe574cb Bug 1687124 - Make SwCompositor compute the set of opaque rectangles, and forward this to the RenderCompositor. r=gw,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D102665
2021-01-27 03:17:16 +00:00
Bogdan Tara
5eded5baf9 Backed out 3 changesets (bug 1687124) for webrender_bindings related failure CLOSED TREE
Backed out changeset 8832f33fa266 (bug 1687124)
Backed out changeset 27de9357456e (bug 1687124)
Backed out changeset b9ca229672d5 (bug 1687124)
2021-01-27 04:04:10 +02:00
Matt Woodrow
1875a8e5ab Bug 1687124 - Make SwCompositor compute the set of opaque rectangles, and forward this to the RenderCompositor. r=gw,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D102665
2021-01-26 06:53:05 +00:00
Lee Salzman
8bee9f98ac Bug 1679215 - add support for StartCompositing hook to RenderCompositor. r=mattwoodrow
We need to be able to delay instantiation of the drawing region until after we have the
dirty rects from start_compositing. This was currently not routed to RenderCompositor,
which is required to do this. Further, SwCompositor needs to always keep track of the
RenderCompositor that it is associated with regardless of whether or not it is a native
compositor so that this hook can be properly engaged.

Differential Revision: https://phabricator.services.mozilla.com/D100974
2021-01-10 23:26:23 +00:00
Andi-Bogdan Postelnicu
7b246e293f Bug 1683551 - Make gfx buildable outside of unified-build environment. r=sg,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D100209
2021-01-04 14:20:17 +00:00
Andrew Osmond
45b5262f91 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
603d0db408 Bug 1673983 - Add D3D11 RenderCompositor for SWGL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95797
2020-11-06 00:00:47 +00:00
Narcis Beleuzu
37bd723824 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
50873a9666 Bug 1673983 - Add D3D11 RenderCompositor for SWGL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95797
2020-11-05 19:26:21 +00:00
smolnar
625b8a74be 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
f9fe60e315 Bug 1673983 - Add D3D11 RenderCompositor for SWGL. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D95797
2020-11-05 09:14:52 +00:00