New issue
Advanced search Search tips

Issue 855702 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 29
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 836897



Sign in to add a comment

[BGPT] internals.isCompositedAnimation appears broken

Project Member Reported by petermayo@chromium.org, Jun 22 2018

Issue description

virtual/threaded/animations/composited-filter-webkit-filter.html
virtual/threaded/animations/compositor-independent-transform-cancel.html


appear to fail because under blink-gen-property-trees we return an unexpected value from isCompositedAnimation


 
Blocking: 836897
virtual/threaded/animations/img-element-transform.html too
Running through this case I think I may have found the underlying cause, we do in fact composite the element, but we composite it with a namespace for the filter effect.

I.e. paint_property_tree_builder.cc assigns a namespace according to the effect type, in this case filter:
https://cs.chromium.org/search/?q=file:paint_property_tree_builder.cc+CompositorElementIdNamespace::&type=cs

This results in us getting an element_id of 147 for the filter "element".

Then when we run Animation::CheckCanStartAnimationOnCompositorInternal we use the primary namespaced element id to check if the element has been composited. This results in the code assuming it hasn't:

https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/animation/animation.cc?type=cs&q=file:animation.cc+CompositorElementIdNamespace::kPrimary&g=0&l=870
I think the way to fix this is to move the has composited element check down into CompositorAnimations::CheckCanStartEffectOnCompositor:
https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/animation/compositor_animations.cc?type=cs&q=function:blink::CompositorAnimations::CheckCanStartEffectOnCompositor&g=0&l=149

Since this has the targeted properties, it knows which namespace of element we should be checking for on the compositor.

We'll also have to verify that this doesn't break existing animations (i.e. that the elements with the filter namespace do exist today).
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f2800076a2fab07efda29f119fff3ca9d8f4f6ba

commit f2800076a2fab07efda29f119fff3ca9d8f4f6ba
Author: Peter Mayo <petermayo@chromium.org>
Date: Wed Aug 29 15:24:27 2018

[BGPT] move composited element check down.

Move the composited element check from CanStartAnimationOnCompositor to
CheckCanStartEffectOnCompositor because the effect has sufficient context
to use the correct namespace to map the object ID to the compositor
element ID, whereas the animation does not.

Bug:  855702 
Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ia490fb07780586ddd5b5059671c3611139a25ce8
Reviewed-on: https://chromium-review.googlesource.com/1170238
Commit-Queue: Peter Mayo <petermayo@chromium.org>
Reviewed-by: Robert Flack <flackr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587124}
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-gen-property-trees
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/WebKit/LayoutTests/animations/responsive/filter-responsive-neutral-keyframe.html
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/WebKit/LayoutTests/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/animation.cc
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/animation.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/animation_test.cc
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/compositor_animations.cc
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/compositor_animations.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/compositor_animations_test.cc
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/keyframe.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/keyframe_effect.cc
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/keyframe_effect.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/animation/string_keyframe.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/core/paint/fragment_data.h
[modify] https://crrev.com/f2800076a2fab07efda29f119fff3ca9d8f4f6ba/third_party/blink/renderer/modules/animationworklet/worklet_animation.cc

Status: Fixed (was: Assigned)

Sign in to add a comment