Closed Bug 2056306 Opened 18 days ago Closed 17 days ago

Animated text remains blurry after animation is completed until being invalidated (transform transition)

Categories

(Core :: Graphics: WebRender, defect)

Firefox 154
defect

Tracking

()

RESOLVED FIXED
155 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox-esr140 --- unaffected
firefox-esr153 --- unaffected
firefox153 --- unaffected
firefox154 --- fixed
firefox155 --- fixed

People

(Reporter: ke5trel, Assigned: gw)

References

(Regression)

Details

(Keywords: regression)

Attachments

(4 files)

STR:

  1. Launch latest Nightly 154.0a1 on Ubuntu 26.04 (100% display scaling).
  2. Open test case with animated text (transform transition).
  3. Hover mouse cursor over text so that it animates, then move cursor away.
  4. Repeat several times.

Expected:
Text is always crisp after being animated.

Actual:
Parts of text remain blurry after animation has completed until tile is invalidated.

Happens with both SW-WR and HW-WR.

Regression window:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=f1de2266f7beb35067a6341a3cda326dca9822b6&tochange=a41a5b4f1d2ceef77a40efd5ca1557c0d1271580

Regressed by Bug 2053638.

:gw, since you are the author of the regressor, bug 2053638, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(mozilla)

Text under an animated transform is rasterized in local space (bug 2053638).
When the animation ends the raster space returns to the device path, but the
transform value, prim_uid and raster-space corners are unchanged from the last
animating frame, so nothing invalidated the tile and it kept the stale (blurry)
local-raster text. Add an AnimatedRasterSpace tile dependency for text runs,
emitted while the spatial node is animating, so the tile invalidates when the
animation ends.

Also extend the wrench yaml reader to emit a property-bound reference-frame
transform (transform-binding), and add an invalidation test.

Assignee: nobody → mozilla
Status: NEW → ASSIGNED
Flags: needinfo?(mozilla)
Attachment #9613727 - Attachment description: Bug 2056306 - Invalidate picture cache tiles when text leaves an animated transform → Bug 2056306 - Invalidate picture cache tiles when text stops animating
Status: ASSIGNED → RESOLVED
Closed: 17 days ago
Resolution: --- → FIXED
Target Milestone: --- → 155 Branch

The patch landed in nightly and beta is affected.
:gw, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(mozilla)

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

Uplift request created.

Flags: needinfo?(mozilla)

Text under an animated transform is rasterized in local space (bug 2053638).
A reference frame was treated as animating whenever its transform was bound to
a property, even if the value never moved, so bound-but-static text (a held or
settled animation) was rasterized locally and looked blurry at a fractional
device offset (bug 2051166). And when the animation ended the raster space
returned to the device path, but nothing invalidated the tile, so it kept the
stale local-raster text.

Redefine "animating" as "the bound transform has been observed to move", using
a monotonic per-binding latch in SceneProperties: bound-but-static text stays on
the crisp device path, while a genuinely moving transform still rasterizes in
local space to avoid per-frame snap jitter.

Add an AnimatedRasterSpace picture-cache dependency for text runs, present only
while animating, so the tile invalidates when the animation ends (the binding is
removed) and the raster-space flip alone would otherwise change neither prim_uid
nor the vertex corners.

Also extend the wrench yaml reader with property-bound reference-frame
transforms (transform-binding) and dynamic transform-property values, and add an
invalidation test.

Original Revision: https://phabricator.services.mozilla.com/D313123

Attachment #9614614 - Flags: approval-mozilla-beta?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: Possible blurry rendering on some pages.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: yes
  • Steps to reproduce for manual QE testing: As per bug report.
  • Risk associated with taking this patch: medium
  • Explanation of risk level: There are a lot of recent changes around fractional scrolling and snapping - I think this should be safe to uplift by itself.
  • String changes made/needed?: No
  • Is Android affected?: yes
Flags: qe-verify+
Attachment #9614614 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
QA Whiteboard: [uplift][qa-ver-needed-c155/b154]

Hello! Is this issue only related to Ubuntu 26 or some specific hardware? I have tried to reproduce this on Ubuntu 24.04 with an Nvidia GPU but I have no blurry text animation with the html from comment 1.

Flags: needinfo?(ke5trel)

I can reproduce it on Ubuntu 24.04 with Nightly build 2026-07-20. It is fixed on latest Nightly 155.0a1 and Beta 154.0b4. Be sure to test with 100% display scaling.

Flags: needinfo?(ke5trel)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: