Files
sousa-gecko/testing/web-platform/mozilla/meta/mathml
Glenn Watson 0e084350ec Bug 2052391 - Align tile-invalidation quantize with the rasterizer's pixel rounding r=gfx-reviewers,lsalzman
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).

Differential Revision: https://phabricator.services.mozilla.com/D310211
2026-07-05 20:13:58 +00:00
..
…