Align tile-invalidation quantize with the rasterizer's pixel rounding
Categories
(Core :: Graphics: WebRender, task)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox154 | --- | fixed |
People
(Reporter: gw, Assigned: gw)
References
Details
Attachments
(1 file)
| Assignee | ||
Updated•15 days ago
|
| Assignee | ||
Comment 1•15 days ago
|
||
The picture-cache invalidation stores prim corners quantized to 1/4px via
round(v * 4). Those buckets are centered on the .5 boundary, which is exactly
where the rasterizer's whole-pixel round() flips device pixels. So two corners
that render to different device pixels (e.g. 20.4 -> 20 and 20.5 -> 21) can share
one invalidation key, and a tile is not re-rasterized when it should be, leaving
stale content. This was masked while prims were device-snapped (integer corners
quantize unambiguously); it surfaces once prims carry sub-pixel positions.
Truncate toward zero instead. This places the 1/4px bucket boundaries on every
half-integer with the same sign-aware tie-ownership as round() (half away from
zero), so a quant key uniquely determines the rendered device pixel for both
positive and negative coordinates, while keeping the 1/4px tolerance for
anti-aliased content. Verified: a full sweep over [-300, 300] including exact
half-integers has zero keys mapping to two device pixels (600 with the old
round).
Updated•15 days ago
|
Backed out for causing wr failures
(In reply to amarc from comment #5)
Backed out for causing wr failures
Hi, @Glenn, it also caused a permanent failure on Beta simulations
- Failure line: TEST-UNEXPECTED-FAIL | /_mozilla/mathml/menclose/menclose-2-roundedbox.html | Testing http://web-platform.test:8000/_mozilla/mathml/menclose/menclose-2-roundedbox.html == http://web-platform.test:8000/_mozilla/mathml/menclose/menclose-2-roundedbox-ref.html
- Failure log
- Beta sim push with failures
- How to run these simulations
Comment 7•14 days ago
|
||
Backout merged to central: https://hg-edge.mozilla.org/mozilla-central/rev/c8d58387f362
| Assignee | ||
Comment 8•12 days ago
|
||
Confirmed that the first failure is an extra 1 pixel fuzziness, so updated test annotation for that. The beta failure was not previously fuzzy, but I was able to reproduce the exact same failure on my local machine on main/origin and then confirm it wasn't affected by this patch - so I've added fuzziness annotation for this.
Comment 10•12 days ago
|
||
| bugherder | ||
Description
•