mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 01:05:45 +00:00
c746275523
On WebRender there is no layer tree structures so that we can't accumulate transform values up to the nearest APZ's scroll layer by walking up the layer tree, or we can't tell a given transform animation is inside a perspective layer to decide whether we need to apply the offset from the reference frame or not [1]. So we get the accumulated transform by using nsLayoutUtils::GetTransformToAncestor on the main-thread and inform it to the compositor thread, and also inform the offset which is set conditionally [2] so that we don't need to tell whether the transform animation is inside a perspective layer or not on the compositor thread. I am not yet 100% sure that these values are same both on WebRender and non WebRender in all cases, once after partial pre-rendering transforms have been used in the wild well enough and any problem has not appeared, even if there are problems we should fix them then the non WebRender version should eventually use this same setup instead of walking up the layer tree. [1] https://searchfox.org/mozilla-central/rev/85ae3b911d5fcabd38ef315725df32e25edef83b/gfx/layers/CompositorAnimationStorage.cpp#273-275 [2] https://searchfox.org/mozilla-central/rev/85ae3b911d5fcabd38ef315725df32e25edef83b/layout/painting/nsDisplayList.cpp#7879-7891 Differential Revision: https://phabricator.services.mozilla.com/D83201 |
||
---|---|---|
.. | ||
crashtests | ||
ActiveLayerTracker.cpp | ||
ActiveLayerTracker.h | ||
BorderCache.h | ||
BorderConsts.h | ||
DashedCornerFinder.cpp | ||
DashedCornerFinder.h | ||
DisplayItemClip.cpp | ||
DisplayItemClip.h | ||
DisplayItemClipChain.cpp | ||
DisplayItemClipChain.h | ||
DisplayListChecker.cpp | ||
DisplayListChecker.h | ||
DisplayListClipState.cpp | ||
DisplayListClipState.h | ||
DottedCornerFinder.cpp | ||
DottedCornerFinder.h | ||
FrameLayerBuilder.cpp | ||
FrameLayerBuilder.h | ||
LayerState.h | ||
MaskLayerImageCache.cpp | ||
MaskLayerImageCache.h | ||
MatrixStack.h | ||
moz.build | ||
nsCSSRendering.cpp | ||
nsCSSRendering.h | ||
nsCSSRenderingBorders.cpp | ||
nsCSSRenderingBorders.h | ||
nsCSSRenderingGradients.cpp | ||
nsCSSRenderingGradients.h | ||
nsDisplayItemTypes.h | ||
nsDisplayItemTypesList.h | ||
nsDisplayList.cpp | ||
nsDisplayList.h | ||
nsDisplayListArenaTypes.h | ||
nsDisplayListInvalidation.cpp | ||
nsDisplayListInvalidation.h | ||
nsImageRenderer.cpp | ||
nsImageRenderer.h | ||
PaintTracker.cpp | ||
PaintTracker.h | ||
RetainedDisplayListBuilder.cpp | ||
RetainedDisplayListBuilder.h | ||
RetainedDisplayListHelpers.h | ||
TransformClipNode.h |