Closed Bug 2028326 Opened 5 months ago Closed 4 months ago

Categories

(Core :: Graphics: WebRender, defect, P1)

defect

Tracking

()

VERIFIED FIXED
151 Branch
Webcompat Priority P3
Webcompat Score 3
Tracking Status
firefox150 --- verified
firefox151 --- verified

People

(Reporter: jrmuizel, Assigned: nical)

References

(Regression, )

Details

(Keywords: regression, webcompat:needs-diagnosis, webcompat:site-report)

User Story

platform:windows,mac,linux,android
impact:significant-visual
configuration:general
affects:few
branch:release
user-impact-score:40
diagnosis-team:graphics

Attachments

(3 files, 1 obsolete file)

Regressed by: 2020923, 2019934

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

For more information, please visit BugBot documentation.

Flags: needinfo?(nical.bugzilla)
Severity: -- → S4
User Story: (updated)
Webcompat Priority: --- → P3
Webcompat Score: --- → 1
Priority: -- → P1
User Story: (updated)
User Story: (updated)
Webcompat Score: 1 → 3
Assignee: nobody → nical.bugzilla
User Story: (updated)
Flags: needinfo?(nical.bugzilla)

The problem comes from the interaction of the tiled rendering strategy and repeated primitives. We set the parameter of the tiled rendering strategy based on the entire primitive and then apply it to each repetition separately. I suspect that computing the rendering strategy per repetition would fix the issue.

Another direction is to work towards addressing the tiling interacting poorly with repetitions. I noticed that we do a bunch of computation that affect (among other things) tile classification using the projected clip coverage rect for the entire primitive. Restricting the coverage rect to a conservative part that is closer to what the tile touches fixes the glitch.

This patch does two things to improve the interaction between tiles and repeated primitives:

  • it tightens the clipped_surface_rect (which the tile classifier goes over) by interecting it against the projected local rects of the primitive. This avoids producing tiles outside of the primitive and gives the classifier more accurate information about what it has to deal with.
  • it moves the computation of the number of tiles to a later stage where we have this more accurate coverage rect in device space.

This means that sometimes we'll end up picking the tiled strategy based on the coverage of the entire primitive even though each individual repetition will only use a single tile. It's a bit silly but the better fix is to reorganize the code so that we have better information about the device space coverage earlier when we chose the rendering strategy. Since this will need to get uplifted I want to land a less invasive change first.

Pushed by asilaghi@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/e6e8ddc779a6 https://hg.mozilla.org/integration/autoland/rev/b2b9f822fc64 Revert "Bug 2028326 - Better handle tiles with repeated primitives. r=gw" for causing wrench failures

Backed out for causing wrench failures
Backout Link
Push with failures
Failure Log
Failure line subprocess.CalledProcessError: Command '['../target/debug/wrench', '--no-scissor', '--headless', 'reftest']' died with <Signals.SIGABRT: 6>.

Flags: needinfo?(nical.bugzilla)
Flags: needinfo?(nical.bugzilla)
Status: NEW → RESOLVED
Closed: 4 months ago
Resolution: --- → FIXED
Target Milestone: --- → 151 Branch

This patch does two things to improve the interaction between tiles and repeated primitives:

  • it tightens the clipped_surface_rect (which the tile classifier goes over) by interecting it against the projected local rects of the primitive. This avoids producing tiles outside of the primitive and gives the classifier more accurate information about what it has to deal with.
  • it moves the computation of the number of tiles to a later stage where we have this more accurate coverage rect in device space.

This means that sometimes we'll end up picking the tiled strategy based on the coverage of the entire primitive even though each individual repetition will only use a single tile. It's a bit silly but the better fix is to reorganize the code so that we have better information about the device space coverage earlier when we chose the rendering strategy. Since this will need to get uplifted I want to land a less invasive change first.

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

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: Visual glitches
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing:
  • Risk associated with taking this patch: low
  • Explanation of risk level: Each patch fix a regression and the patches are fairly simple. These are 3 patches that already went through the uplift requests but did not apply cleanly on beta so I had to rebase them manually.
  • String changes made/needed?: None.
  • Is Android affected?: yes
Attachment #9570928 - Flags: approval-mozilla-beta?

This patch does two things to improve the interaction between tiles and repeated primitives:

  • it tightens the clipped_surface_rect (which the tile classifier goes over) by interecting it against the projected local rects of the primitive. This avoids producing tiles outside of the primitive and gives the classifier more accurate information about what it has to deal with.
  • it moves the computation of the number of tiles to a later stage where we have this more accurate coverage rect in device space.

This means that sometimes we'll end up picking the tiled strategy based on the coverage of the entire primitive even though each individual repetition will only use a single tile. It's a bit silly but the better fix is to reorganize the code so that we have better information about the device space coverage earlier when we chose the rendering strategy. Since this will need to get uplifted I want to land a less invasive change first.

Attachment #9570925 - Attachment is obsolete: true
Attachment #9570925 - Flags: approval-mozilla-beta?

Comment on attachment 9570928 [details]
Bug 2028326 - Better handle tiles with repeated primitives (Beta version).

Moving flag to release for consideration in the 150 dot release.

Attachment #9570928 - Flags: approval-mozilla-beta? → approval-mozilla-release?
Attachment #9570928 - Flags: approval-mozilla-release? → approval-mozilla-release+
QA Whiteboard: [qa-ver-needed-c152/b151]
Flags: qe-verify+

I was able to reproduce the issue on macOS 12 using Firefox Release 150.
Verified as fixed using Firefox 150.0.1 RC and latest beta 151.0b3 across Win 10, macOS 12 and Ubuntu 24.

Status: RESOLVED → VERIFIED
QA Whiteboard: [qa-ver-needed-c152/b151] → [qa-ver-done-c152/b151]
Flags: qe-verify+
QA Contact: btot
Component: Site Reports → Graphics: WebRender
Product: Web Compatibility → Core
Blocks: 2035958
Regressions: 2059996
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: