The change perturbs the drawing of the scrollbar endcaps for a handful of
APZ-related reftests, mostly with WR enabled. This just updates the fuzz numbers
to match the new values.
Depends on D92677
Differential Revision: https://phabricator.services.mozilla.com/D92678
These tests only failed on android, probably because the visual viewport size is different so we get a different result from the scrollbar calculation.
These tests seem to have an inconsistent mix of overflow: hidden and scrollbar-width: none. The desktop zooming scrollbars sometimes create scrollbars for overflow hidden now, so overflow hidden isn't enough, we need scrollbar-width: none.
layout/reftests/transform/compound-1-fail.html is the only file modified here that doesn't have overflow hidden or scrollbar-width: none already. Looking at the test it does not seem to be wanting to be anti-ref because of scrollbars (the transformed item looks different), so this seems to be an improvement (ie we won't pass because only the scrollbar differed).
Differential Revision: https://phabricator.services.mozilla.com/D90008
Instead of using overflow:hidden on the body to hide the scrollbar, this
patch sets scrollbar-width:none on the html element. In some cases
overflow:hidden is set on non-root scrollers (i.e. div elements); in those
cases it is replaced by overflow:scroll;scrollbar-width:none to get an
equivalent effect.
One test had a pre-existing visible scrollbar on a nested scrollframe, but
which started failing with a small fuzz difference. I left the scrollbar as-is
and added an annotation to the reftest.list file.
Note that this only updates the tests that use reftest-async-scroll as those
were the cases that were easily detectable, and causing problems with the
apz.allow_zooming=true pref.
Differential Revision: https://phabricator.services.mozilla.com/D82032
Instead of using overflow:hidden on the body to hide the scrollbar, this
patch sets scrollbar-width:none on the html element. In some cases
overflow:hidden is set on non-root scrollers (i.e. div elements); in those
cases it is replaced by overflow:scroll;scrollbar-width:none to get an
equivalent effect.
One test had a pre-existing visible scrollbar on a nested scrollframe, but
which started failing with a small fuzz difference. I left the scrollbar as-is
and added an annotation to the reftest.list file.
Note that this only updates the tests that use reftest-async-scroll as those
were the cases that were easily detectable, and causing problems with the
apz.allow_zooming=true pref.
Differential Revision: https://phabricator.services.mozilla.com/D82032
Bug 1635406 made it so that webrender snaps the offsets of animated
transforms before accumulating them in to the reference frame
transform. Unfortunately, however, this causes jittery animations. The
original intention was just to snap the visual viewport offset when
scrolling, to avoid excessive picture cache invalidation.
To avoid this, make it so that we only snap for reference frames of
kind ReferenceFrameKind::Zoom. This will mean that most animations are
unaffected. There may however still be some jitter when zooming, but
this is outweighed by the benefit of not invalidating picture cache
tiles every frame when scrolling.
Differential Revision: https://phabricator.services.mozilla.com/D77679
Bug 1620014 attempted to fix an issue where an animated visual
viewport offset (eg due to scrolling while being zoomed in) was
causing the fractional offset of a descendant scroll frame's content
transform to change, causing too much picture cache invalidation.
It did so by snapping the coordinate-system-relative offset when using
it to calculate the content_transform. This value of course includes
the animated visual viewport offset (as the axis-aligned zoom
transform cannot reset the coordinate system). However, it also
includes non-animated offsets, which were now being incorrectly
snapped, causing blurry/clipped text.
This change reverts that original fix. And instead, it snaps the
source_transform of the reference frame itself when it is sampled,
rather than the accumulated coordinate-system-relative scale_offset of
the scroll frame. Additionally, it only snaps the offset if it is an
animation (including zoom), and static offsets are left unsnapped.
Differential Revision: https://phabricator.services.mozilla.com/D76298
i.e. remove annotations that manually enable the property, and remove the
property_database.js check that tests for the property being enabled.
We've been shipping with the property enabled ever since Firefox 69, so we're
realistically not going to default-disable it at this point, which means these
annotations (and the property_database.js check) are just cruft.
Differential Revision: https://phabricator.services.mozilla.com/D69128
As described in bug 1630274, this has some unfixed cases, but it should
give good results in most real-world cases, where the magnitude of transient
async scrolling is relatively low.
Depends on D71083
Differential Revision: https://phabricator.services.mozilla.com/D71084
--HG--
extra : moz-landing-system : lando
This patch just ensures the changes in the previous patches get applied
to the WR codepath, and is sufficient to make all the remaining sticky
tests pass on Android+WR.
Differential Revision: https://phabricator.services.mozilla.com/D70911
--HG--
extra : moz-landing-system : lando
The WR code that computed the sticky_offset didn't properly combine the offsets
from the top- and bottom- sticky calculations if an item had both. This patch
fixes the calculation, which makes the remaining test failure (in the
configuration without any dynamic toolbar) pass.
Depends on D70679
Differential Revision: https://phabricator.services.mozilla.com/D70680
--HG--
extra : moz-landing-system : lando
The sticky info emitted by Gecko to WR wasn't quite correct in some cases
where sticky items had both top and bottom sticky ranges. This corrects
the info emitted by Gecko. This change makes a few of the failing tests
pass, but also makes one fail. That one failure was previously passing due
to two bugs canceling each other out, and is fixed up in the next patch.
Differential Revision: https://phabricator.services.mozilla.com/D70679
--HG--
extra : moz-landing-system : lando
Failures will be addressed in later bugs. Refer to the text in the reftest.list
file for a brief overview of how the tests are structured.
Depends on D70459
Differential Revision: https://phabricator.services.mozilla.com/D70460
--HG--
extra : moz-landing-system : lando
Note that the sticky-top test still fails on non-WebRender, but that's outside
the scope of this bug.
Differential Revision: https://phabricator.services.mozilla.com/D69560
--HG--
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-fixed-top-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-bottom-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-top-1.html
extra : moz-landing-system : lando
This makes the existing test for this codepath start passing on geckoview-qr.
Differential Revision: https://phabricator.services.mozilla.com/D69558
--HG--
extra : moz-landing-system : lando
Note that the sticky-top test still fails on non-WebRender, but that's outside
the scope of this bug.
Differential Revision: https://phabricator.services.mozilla.com/D69560
--HG--
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-fixed-top-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-bottom-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-top-1.html
extra : moz-landing-system : lando
This makes the existing test for this codepath start passing on geckoview-qr.
Differential Revision: https://phabricator.services.mozilla.com/D69558
--HG--
extra : moz-landing-system : lando
Note that the sticky-top test still fails on non-WebRender, but that's outside
the scope of this bug.
Differential Revision: https://phabricator.services.mozilla.com/D69560
--HG--
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-fixed-top-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-bottom-1.html
rename : layout/reftests/async-scrolling/dynamic-toolbar-fixed-bottom-1.html => layout/reftests/async-scrolling/dynamic-toolbar-sticky-top-1.html
extra : moz-landing-system : lando
This makes the existing test for this codepath start passing on geckoview-qr.
Depends on D69557
Differential Revision: https://phabricator.services.mozilla.com/D69558
--HG--
extra : moz-landing-system : lando
In order for the test to pass the scroll event handler needs to run so that a scroll linked effect is detected and apz is disabled. It is triggered by the scrollTo call in the load handler. Which then removes reftest-wait off a setTimeout(..., 0). The scroll event is dispatched from the refresh driver so it can happen after this setTimeout runs. So the scroll handler runs too late to affect the test.
Differential Revision: https://phabricator.services.mozilla.com/D62387
--HG--
extra : moz-landing-system : lando
With the new 'defaults' key being added, 'default-preferences' is now
redundant. This commit converts all existing uses of 'default-preferences' to
use 'defaults' instead.
Differential Revision: https://phabricator.services.mozilla.com/D63247
--HG--
extra : moz-landing-system : lando
Add a reftest that would fail in webrender before the corresponding
fix landed.
Ensures that there is an async zoom and that both the layout and
visual viewports have async scroll offsets. To pass, we must apply
each of the layout and visual offsets in their correct coordinate
spaces.
Differential Revision: https://phabricator.services.mozilla.com/D61788
--HG--
extra : moz-landing-system : lando
Add a reftest that would fail in webrender before the corresponding
fix landed.
Ensures that there is an async zoom and that both the layout and
visual viewports have async scroll offsets. To pass, we must apply
each of the layout and visual offsets in their correct coordinate
spaces.
Differential Revision: https://phabricator.services.mozilla.com/D61788
--HG--
extra : moz-landing-system : lando
Changes:
Tighten reftest pixel differences now that reftest has been migrated fully over to ubuntu1804.
Differential Revision: https://phabricator.services.mozilla.com/D59595
--HG--
extra : moz-landing-system : lando
Changes:
Most tests have smaller value for the `minDiff` side of things, and a slightly larger value for the `maxPixelCount` side of things when ubunt1804 runs the test. Adjust the expectation so that ubuntu1604 and ubuntu1804 both pass for the time being, then tighten the values once ubuntu1604 is decommissioned.
Differential Revision: https://phabricator.services.mozilla.com/D57560
--HG--
extra : moz-landing-system : lando
We enable the pref in the harness so that local testing with --enable-fission will get the same results as treeherder.
Differential Revision: https://phabricator.services.mozilla.com/D56313
--HG--
extra : moz-landing-system : lando
Previously, WR needed to update and track dependencies for all
allocated picture cache tiles in the virtual display port. This
means doing extra CPU work (dependency updates) and in some cases,
extra GPU work (larger off-screen child surfaces) than are strictly
required.
With this patch, each tile determines if it is currently visible in
pre_update. If the tile isn't visible, we skip doing dependency
updates until it is on screen again. More importantly, this is
used to reduce the world culling rect for primitive preparation,
which also means large child surfaces only require allocations
large enough to enclose the visible tiles, rather than the
display port.
Differential Revision: https://phabricator.services.mozilla.com/D51006
--HG--
extra : moz-landing-system : lando
Once this patch lands, all content drawn by WebRender is drawn into
a picture cache surface.
This will incur some extra GPU memory overhead since there are extra
GPU texture buffers. Much of this can be reduced by adding a couple
of simple optimizations in future to detect tiles that are solid
colors only.
With this change, we'll now be able to provide exact dirty rects for
the entire screen without any hacks, and start the work to draw into
OS compositor surfaces directly.
Differential Revision: https://phabricator.services.mozilla.com/D47395
--HG--
extra : moz-landing-system : lando
Once this patch lands, all content drawn by WebRender is drawn into
a picture cache surface.
This will incur some extra GPU memory overhead since there are extra
GPU texture buffers. Much of this can be reduced by adding a couple
of simple optimizations in future to detect tiles that are solid
colors only.
With this change, we'll now be able to provide exact dirty rects for
the entire screen without any hacks, and start the work to draw into
OS compositor surfaces directly.
Differential Revision: https://phabricator.services.mozilla.com/D47395
--HG--
extra : moz-landing-system : lando
Once this patch lands, all content drawn by WebRender is drawn into
a picture cache surface.
This will incur some extra GPU memory overhead since there are extra
GPU texture buffers. Much of this can be reduced by adding a couple
of simple optimizations in future to detect tiles that are solid
colors only.
With this change, we'll now be able to provide exact dirty rects for
the entire screen without any hacks, and start the work to draw into
OS compositor surfaces directly.
Differential Revision: https://phabricator.services.mozilla.com/D47395
--HG--
extra : moz-landing-system : lando
Previously, the setup_picture_caching function was hard coded
to support only a very specific shape of display list. With this
change, flags are added to PrimitiveCluster that can specify
if a picture cache slice should be created before / after this
cluster when picture caching is set up.
The usage of these flags in this patch matches the old behaviour,
so should not have any functional effect.
However, in future we will make use of this functionality to
create picture slices for a number of different use cases, such as:
* Creating cache tiles for the UI.
* Slicing the scene where there are video elements, in order to
allow these to be composited directly by the OS. This may also
apply to WebGL and/or canvas elements.
* Slicing the scene when there is a very large fixed position
background image or other element, to avoid invalidating the
entire tile cache each frame.
Differential Revision: https://phabricator.services.mozilla.com/D46125
--HG--
extra : moz-landing-system : lando
Previously, the setup_picture_caching function was hard coded
to support only a very specific shape of display list. With this
change, flags are added to PrimitiveCluster that can specify
if a picture cache slice should be created before / after this
cluster when picture caching is set up.
The usage of these flags in this patch matches the old behaviour,
so should not have any functional effect.
However, in future we will make use of this functionality to
create picture slices for a number of different use cases, such as:
* Creating cache tiles for the UI.
* Slicing the scene where there are video elements, in order to
allow these to be composited directly by the OS. This may also
apply to WebGL and/or canvas elements.
* Slicing the scene when there is a very large fixed position
background image or other element, to avoid invalidating the
entire tile cache each frame.
Differential Revision: https://phabricator.services.mozilla.com/D46125
--HG--
extra : moz-landing-system : lando