Source code

Revision control

Copy as Markdown

Other Tools

# An SVGFE *backdrop* filter mid-async-scroll. APZ has moved the scroll frame to
# 100 but the display list was painted at 50, so the offset baked into the item
# coordinates (external-scroll-offset) lags the sampled offset by an async delta
# of 50. This is the state a wheel or fling produces between paints, and the one
# a subregion offset derived once from the enclosing reference frame cannot
# handle: it would be wrong by exactly the async delta.
#
# Sampled total scroll is scroll-offset + external-scroll-offset, so 50 + 50 =
# 100 here. Items are authored in painted coordinates (y=50); WebRender adds the
# baked 50 at push time and the scroll node subtracts the current 100, landing
# the red backdrop at y=0. The subregion must make the same round trip, and is
# authored in the same space as the geometry. If it is not normalized it ends up
# 50px low and red shows through the bottom half. See bug 1975275.
root:
items:
- type: scroll-frame
bounds: [0, 0, 100, 100]
content-size: [100, 1000]
external-scroll-offset: [0, 50]
scroll-offset: [0, 50]
items:
- type: rect
color: red
bounds: [0, 50, 100, 100]
- type: backdrop-filter
bounds: [0, 50, 100, 100]
filters:
- svgfe: SourceGraphic
- svgfe: flood
linear: false
color: green
subregion: [0, 50, 100, 50]
- svgfe: compositeover
linear: false
subregion: [0, 50, 100, 100]
in: 1
in2: 0