Not immediately necessary but when cached quads or patterns that read a texture are implemented, There will be opaque segments taking render tasks as input. Currently the code is a bit error prone because some parts of the code advertize a certain behavior that is later overruled. This patch makes things more explicit and flexible.
Differential Revision: https://phabricator.services.mozilla.com/D208508
The two cases share some code, but the next patch will add extra logic
specific to the StickyFrame case, which makes it cleaner to split them.
Differential Revision: https://phabricator.services.mozilla.com/D208236
The two cases share some code, but the next patch will add extra logic
specific to the StickyFrame case, which makes it cleaner to split them.
Differential Revision: https://phabricator.services.mozilla.com/D208236
To determine whether to work around a known driver bug (bug 1787520)
affecting certain Mali drivers, we parse the GL_VERSION string which
follows a common format on Mali devices.
In this bug, however, we encountered a device with a slightly
different version format. The "v", "r" and "p" numbers we care about
are still present, but the trailing string that begins with a "-" was
not. This was tripping up our parsing logic even though we ignore its
value. This patch handles the case where the trailing string is not
present, meaning we correctly apply the existing workaround, and avoid
the bug on this device.
Differential Revision: https://phabricator.services.mozilla.com/D209004
Extend the sync IPC timeout mechanism in CompositorManagerChild to
additionally cover UiCompositorControllerChild. As
UiCompositorControllerChild runs on the Android UI thread, we ensure
GPUProcessManager::KillProcess dispatches to the gecko main thread.
Along with the previous patch in this series this should provide us
with crash reports when the Android UI thread is hung waiting for the
GPU process to reply.
Differential Revision: https://phabricator.services.mozilla.com/D202167
When sync IPC under the top-level PCompositorManager protocol does not
reply within a certain time threshold we purposefully kill the GPU
process. While this allows the user to recover from a stuck GPU
process, we have little visibility about the underlying cause.
This patch makes it so that we generate a paired minidump for the GPU
and parent processes prior to killing the GPU process in
GPUProcessHost::KillHard(). The implementation roughly follows the
equivalent for content processes in ContentParent::KillHard().
As the GPU process can be purposefully killed during normal operation,
and because generating minidumps can be expensive, we are careful to
only do so when the new argument aGenerateMinidump is true. We
additionally remove the aReason argument as it is unused (and
currently innacurate in some places).
As these minidumps may not automatically submitted we limit the
minidumps generation to twice per session in order to avoid
accumulating a large number of unsubmitted minidumps on disk.
Differential Revision: https://phabricator.services.mozilla.com/D202166
During display list and scene building, there are two coordinate
remapping steps that occur:
1) From stacking context coords -> reference frame relative coords
2) From pre-scrolled coords -> removed external scrolling offsets
These were previously handled in one place, however we want to
split these up so that we can apply snapping _after_ step 1 but
prior to step 2. This will allow us to have fractional external
scroll offsets that don't affect snapping. These will be snapped
later on during frame build after applying any (possibly fractional
APZ scroll offsets). This is a cheap operation during frame building
as we only need to snap and modify the transform matrices, not
individual primitives.
This patch should have no functional changes, it's prep work for
the changes referenced above. It does move all of step 1 to be
done during DL building in the content process, and all of step
2 to be done during scene building in the GPU process. In future,
if/when we resolve the issues we have with reliance on cross-iframe
knowledge for fractional snapping, we can move step 2 (including
snapping) in to the content process as well.
Further, as part of the DL bypass work, we will need to remap coord
spaces during DL building in a differeny way, which this simplifies.
Differential Revision: https://phabricator.services.mozilla.com/D208427
`device_hardware_decoding_support` was previously only recorded on
Windows and we want to extend this probe to other platforms as well.
Differential Revision: https://phabricator.services.mozilla.com/D208245
If this is the source of the crash, this assert will change the crash
signature, but that will pinpoint the cause. In such a case, applying
D208682 should fix the crash.
Differential Revision: https://phabricator.services.mozilla.com/D208694
`device_hardware_decoding_support` was previously only recorded on
Windows and we want to extend this probe to other platforms as well.
Differential Revision: https://phabricator.services.mozilla.com/D208245
We should continue to use a wheel transaction for wheel events when the
browsing context changes from the current context. Avoiding the override
of the event target with the current wheel transaction can halt a page
scroll when the mouse moves over content in a different presentation
context.
Differential Revision: https://phabricator.services.mozilla.com/D205495
There are modifications needed for PDMfactory and the decoder modules in
order to run their methods on non-mainthread and keep them threadsafe.
Differential Revision: https://phabricator.services.mozilla.com/D206420