Closed Bug 1634616 Opened 5 years ago Closed 5 years ago

Expand partial prerender ares as much as possible for cases where the tranformed rect is outside of the overflow area

Categories

(Core :: Graphics: Layers, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla78
Tracking Status
firefox78 --- fixed

People

(Reporter: hiro, Assigned: hiro)

References

Details

Attachments

(8 files)

Attached file t.html

Attaching file has a transform animation "translateX(100%) -> translateX(0%)" on a large element (width: 200%, height: 100%). On the initial frame of the animation, the transformed rect is completely outside of the viewport, so it's collapsed in nsDisplayTransform::UntransformRect, thus when this transform animation runs on the compositor, we don't use the partial prerender size limit effectively.

I am going to attach the recording what happens with enabling layout.animation.prerender.partial.

Attached video The recording

The bottom window is the latest nightly, you can see white area at the right of the animating element.
The top window is a local build with fixing this issue.

Attachment #9144936 - Attachment description: Bug 1634616 - Expand partial prerender area as much as possible. r?botond,mattwoodrow → Bug 1634616 - Use un-transformed dirty rect to compute partial prerender area. r?botond

This change will bring better results for continuous rotate animations.
For discontinuous rotate animations such as animations with step timing
functions this change might not bring better results but such kinds of
animations look originally janky, so it wouldn't be a problem at all.

Depends on D73404

Attachment #9147000 - Attachment description: Bug 1634616 - Adjust the partial prerender area for rotation transforms. r?botond → Bug 1634616 - Calculate a perfect square based on the viewport size to adjust the partial prerender area for rotation transforms. r?botond
Attachment #9147000 - Attachment description: Bug 1634616 - Calculate a perfect square based on the viewport size to adjust the partial prerender area for rotation transforms. r?botond → Bug 1634616 - Calculate a perfect square based on the viewport size and rotate it to adjust the partial prerender area for rotation transforms. r?botond
Pushed by hikezoe.birchill@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/4279b1647e47 Unscale pre-render area for transform animations too. r=botond https://hg.mozilla.org/integration/autoland/rev/60271de42eb8 Use un-transformed dirty rect to compute partial prerender area. r=botond https://hg.mozilla.org/integration/autoland/rev/53da1ae188f4 Calculate a perfect square based on the viewport size and rotate it to adjust the partial prerender area for rotation transforms. r=botond
Flags: needinfo?(hikezoe.birchill)

Looks like there appeared boundaries' lines of TiledLayer... I think it's a pre-existing issue. I am going to skip the reftest on Windows7.

Flags: needinfo?(hikezoe.birchill)

What about just adding some fuzz for Windows 7 only? The rendering is pretty close.

Pushed by hikezoe.birchill@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/ca2b5b79e488 Unscale pre-render area for transform animations too. r=botond https://hg.mozilla.org/integration/autoland/rev/f17da81e3e57 Use un-transformed dirty rect to compute partial prerender area. r=botond https://hg.mozilla.org/integration/autoland/rev/1256cc14812b Calculate a perfect square based on the viewport size and rotate it to adjust the partial prerender area for rotation transforms. r=botond

(In reply to Timothy Nikkel (:tnikkel) from comment #11)

What about just adding some fuzz for Windows 7 only? The rendering is pretty close.

Huh, I missed your comment. Yeah, adding fuzzy value is an idea. I will try to reproduce the failure locally on Linux, and hope to find the failure reason (IIRC there is a preference value related to this kind of TiledLayer boundary case). Once I couldn't find the reason I will consider using fuzzy there. Anyway I will file a bug for this.

Filed bug 1637432.

Depends on: 1637432
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla78
See Also: → 1647186
No longer depends on: 1637432
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: