Closed Bug 1690835 Opened 5 years ago Closed 5 years ago

CSS rotation animation jitters

Categories

(Core :: Graphics: WebRender, defect)

Firefox 87
defect

Tracking

()

VERIFIED FIXED
87 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox85 --- unaffected
firefox86 --- verified
firefox87 --- verified

People

(Reporter: nayinain, Assigned: gw)

References

(Regression)

Details

(Keywords: regression)

Attachments

(3 files)

Attached file testcase.html

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0

Steps to reproduce:

  1. Open the testcase.html

Actual results:

Icons rotate jitter.

Expected results:

Icons rotate smoothly.

Attached video Capture.webm

Regression window:

2021-02-05T00:12:04.708000: INFO : platform_buildid: 20210119200209
2021-02-05T00:12:04.708000: INFO : platform_changeset: e2cc4497cada527659f40f95ebd2424c18e3cec6
2021-02-05T00:12:04.708000: INFO : platform_repository: https://hg.mozilla.org/integration/autoland
2021-02-05T00:12:04.708000: INFO : platform_version: 86.0a1
2021-02-05T00:12:27.778000: INFO : Narrowed integration regression window from [0d5d7994, cfdebb86] (3 builds) to [0d5d7994, e2cc4497] (2 builds) (~1 steps left)
2021-02-05T00:12:27.786000: DEBUG : Starting merge handling...
2021-02-05T00:12:27.786000: DEBUG : Using url: https://hg.mozilla.org/integration/autoland/json-pushes?changeset=e2cc4497cada527659f40f95ebd2424c18e3cec6&full=1
2021-02-05T00:12:27.786000: DEBUG : redo: attempt 1/3
2021-02-05T00:12:27.786000: DEBUG : redo: retry: calling _default_get with args: ('https://hg.mozilla.org/integration/autoland/json-pushes?changeset=e2cc4497cada527659f40f95ebd2424c18e3cec6&full=1',), kwargs: {}, attempt #1
2021-02-05T00:12:27.791000: DEBUG : urllib3.connectionpool: Resetting dropped connection: hg.mozilla.org
2021-02-05T00:12:29.641000: DEBUG : urllib3.connectionpool: https://hg.mozilla.org:443 "GET /integration/autoland/json-pushes?changeset=e2cc4497cada527659f40f95ebd2424c18e3cec6&full=1 HTTP/1.1" 200 None
2021-02-05T00:12:29.700000: DEBUG : Found commit message:
Bug 1687409 - Use offscreen surface for backface visibility + non-preserve3d stacking contexts r=nical

Removes another case of pass through pictures, by handling the rare
case of a stacking context with backface-visibility: false that is
not part of a 3d rendering context as an offscreen surface.

Differential Revision: https://phabricator.services.mozilla.com/D102251

2021-02-05T00:12:29.700000: DEBUG : Did not find a branch, checking all integration branches
2021-02-05T00:12:29.701000: INFO : The bisection is done.
2021-02-05T00:12:29.702000: INFO : Stopped

Has Regression Range: --- → yes
Has STR: --- → yes
Keywords: regression
Regressed by: 1687409
Status: UNCONFIRMED → NEW
Ever confirmed: true

The testcase uses a lot of CPU. I filed bug 1690840

See Also: → 1690840

Set release status flags based on info from the regressing bug 1687409

Glenn, that patch removed the use of pass-through pictures for some cases. Does it affect this case? If I understand correctly, you are trying to remove them so that we can re-organize the render task graph. In this case, wouldn't this cause extra overhead for rendering into an intermediate picture? I wonder if the jittering is just the result of us doing it slower than before.

Severity: -- → S3
Flags: needinfo?(gwatson)
Assignee: nobody → gwatson
Flags: needinfo?(gwatson)

Bug 1691188 is a similar looking bug.

I can reproduce with the attached test case, thanks. Investigating today, and it does sound likely that whatever causes this is also the same as https://bugzilla.mozilla.org/show_bug.cgi?id=1691188 and https://bugzilla.mozilla.org/show_bug.cgi?id=1689910

The pushlog found by mozregression has two changes (https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=0d5d7994edd462a194a00773922ef7b9471fa273&tochange=e2cc4497cada527659f40f95ebd2424c18e3cec6).

https://phabricator.services.mozilla.com/D102244 appears to be the patch that caused the regression - this makes more sense since the other patch mentioned above should only affect stacking contexts with backface visibility flags set, which is not the case for this test case.

It seems that the snapping behavior is different with this change - still investigating.

In bug 1687394, the semantics of requested_raster_space were
changed to only take effect when an intermediate surface was
created.

However, this causes a regression to snapping with text runs
that are animated on the root surface (such as loading spinner
glyphs).

To fix that, while also keeping the functionality of the previous
patch (removing a source of pass-through pictures), there is now
a stack of requested raster space pushed and popped for each
stacking context. This is read and stored by text runs during
scene building, ensuring that these animated glyphs select the
correct raster space to avoid snapping / jittering bugs.

Could you start a try build (if that hasn't happened yet, I am not familiar with the Mozilla workflow) so that I can test the patch to see if it also fixes bug 1689910? I could also try to build locally, but that would take at least 2 hours if it doesn't run out of memory because I only have 4 GB RAM.

What platform do you need? There is a try push here
https://treeherder.mozilla.org/jobs?repo=try&revision=10cfe3bfbd168c09560e33b7f2bce7ca4766f243
Click on the build type you want, click artifacts on the bottom and scroll until you find target.zip/target.dmg/target.tar.bz2

(In reply to Timothy Nikkel (:tnikkel) from comment #11)

What platform do you need? There is a try push here
https://treeherder.mozilla.org/jobs?repo=try&revision=10cfe3bfbd168c09560e33b7f2bce7ca4766f243

I tested it on Linux x86-64, it also fixes bug 1689910.

Pushed by gwatson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a56e2560f0b3 Fix animation jitter regression. r=nical
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → 87 Branch
Blocks: 1690840
See Also: 1690840

Glenn, do you want to uplift the fix to beta?

Flags: needinfo?(gwatson)

Do we know if this problem exists in beta?

It looks like the regression was introduced after the last beta merge, but the merge dates are close, so maybe it is a problem in beta?

If it exists in beta, we should definitely uplift.

Flags: needinfo?(gwatson) → needinfo?(viktor_jaegerskuepper)

I see bug 1691188 in beta.

I see this bug and the duplicates in the current beta (86.0b8).

Flags: needinfo?(viktor_jaegerskuepper)

Comment on attachment 9201698 [details]
Bug 1690835 - Fix animation jitter regression.

Beta/Release Uplift Approval Request

  • User impact if declined: Jittering animations on loading spinners etc for the majority of our users.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: Yes
  • If yes, steps to reproduce: With the included test case in the bug.
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): The patch is relatively simple, and fixes a very noticeable visual regression.
  • String changes made/needed:
Attachment #9201698 - Flags: approval-mozilla-beta?
Flags: qe-verify+

Comment on attachment 9201698 [details]
Bug 1690835 - Fix animation jitter regression.

Approved for 86 beta 9, thanks.

Attachment #9201698 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

This needs a rebased patch for Beta.

Flags: needinfo?(gwatson)

The patch here applies cleanly on beta if we also uplift https://bugzilla.mozilla.org/show_bug.cgi?id=1687604, which is mostly a refactoring patch but also a slight performance optimization.

Would it be reasonable to uplift both of those? The rebase is a bit tricky to do cleanly, but I can manually try to merge them if we don't want to uplift both patches.

Flags: needinfo?(gwatson) → needinfo?(ryanvm)
Flags: needinfo?(ryanvm) → needinfo?(pascalc)
QA Whiteboard: [qa-triaged]

I was able to reproduce the issue on Firefox 87.0a1 (2021-02-04) under Ubuntu 20.04 using the testcase in Comment 0.

The issue is fixed on Firefox 87.0a1 (2021-02-10). Tests were performed on Ubuntu 20.04, macOS 10.15.7 and Windows 7.

Will verify this in beta as well as soon as it will be uplifted.

Depends on: 1687604

Verified on 86.0b9 and the issue is fixed. Tests were performed on Ubuntu 20.04, macOS 11.2.1 and Windows 7

Status: RESOLVED → VERIFIED
Flags: qe-verify+
Flags: needinfo?(pascalc)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: