The display-list builder reconstitutes a reference frame's origin as a scrolled-space value plus a re-added external scroll offset. At large scroll magnitudes that f32 round-trip loses a few low bits, leaving the origin a fraction off its intended sub-pixel position. When that lands on the device-pixel snap tie, snapped content inside the reference frame (e.g. a position:sticky element) flips +/-1px frame-to-frame as the scene is rebuilt while scrolling. Quantize the origin to a 1/128 px grid in SceneSpatialNode::new_reference_frame. This removes the float noise while preserving genuine sub-pixel placement, and operates in WebRender coordinate space so it is device-pixel-scale independent. Note that this is a kludge - we should eventually aim to do this math in exact coordinates such that we don't have this float accuracy loss. Differential Revision: https://phabricator.services.mozilla.com/D307686
7 lines
203 B
INI
7 lines
203 B
INI
[transform-input-019.html]
|
|
fuzzy:
|
|
if os == "win": maxDifference=0-127;totalPixels=0-378
|
|
if os == "mac": maxDifference=0-150;totalPixels=0-500
|
|
expected:
|
|
if (os == "android"): [FAIL, PASS]
|