Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Issue 2895793002: Track transform animation content readiness on TransformNode. (Closed)

Created:
3 years, 7 months ago by wkorman
Modified:
3 years, 6 months ago
Reviewers:
jaydasika, pdr., enne (OOO)
CC:
cc-bugs_chromium.org, chromium-reviews, vmpstr
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Track transform animation content readiness on TransformNode. Removes one LayerByElementId call site in LayerTreeHostImpl. Logic was originally added to track when a layer with a transform animation has no missing tiles in http://crrev.com/1461243003 for http://crbug.com/554924. This patch is a step toward removing animation system dependency on layers. Animation subsystem logic should ideally involve only element ids and their involved property tree nodes. BUG=702777, 709137 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Patch Set 1 #

Total comments: 10
Unified diffs Side-by-side diffs Delta from patch set Stats (+29 lines, -31 lines) Patch
M cc/layers/layer_impl.h View 2 chunks +0 lines, -12 lines 0 comments Download
M cc/layers/layer_impl.cc View 1 chunk +0 lines, -1 line 0 comments Download
M cc/trees/layer_tree_host_impl.cc View 2 chunks +6 lines, -8 lines 3 comments Download
M cc/trees/layer_tree_host_impl_unittest.cc View 7 chunks +17 lines, -7 lines 0 comments Download
M cc/trees/layer_tree_impl.cc View 1 chunk +0 lines, -3 lines 1 comment Download
M cc/trees/property_tree.cc View 1 chunk +1 line, -0 lines 1 comment Download
M cc/trees/transform_node.h View 1 chunk +4 lines, -0 lines 5 comments Download
M cc/trees/transform_node.cc View 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 21 (10 generated)
wkorman
Hi Jayadev, I happened to hit this TODO again while working on something else and ...
3 years, 7 months ago (2017-05-20 01:31:28 UTC) #4
pdr.
https://codereview.chromium.org/2895793002/diff/1/cc/trees/layer_tree_host_impl.cc File cc/trees/layer_tree_host_impl.cc (right): https://codereview.chromium.org/2895793002/diff/1/cc/trees/layer_tree_host_impl.cc#newcode948 cc/trees/layer_tree_host_impl.cc:948: layer->transform_tree_index()); On 2017/05/20 at 01:31:27, wkorman wrote: > Are ...
3 years, 7 months ago (2017-05-22 17:03:34 UTC) #10
wkorman
https://codereview.chromium.org/2895793002/diff/1/cc/trees/transform_node.h File cc/trees/transform_node.h (right): https://codereview.chromium.org/2895793002/diff/1/cc/trees/transform_node.h#newcode128 cc/trees/transform_node.h:128: bool ready_since_animation : 1; On 2017/05/22 17:03:34, pdr. wrote: ...
3 years, 7 months ago (2017-05-22 17:18:25 UTC) #11
wkorman
+enne with our other OWNERS reviewer OOO.
3 years, 7 months ago (2017-05-22 17:33:40 UTC) #13
pdr.
On 2017/05/22 at 17:33:40, wkorman wrote: > +enne with our other OWNERS reviewer OOO. LGTM ...
3 years, 7 months ago (2017-05-22 17:34:27 UTC) #15
jaydasika
https://codereview.chromium.org/2895793002/diff/1/cc/trees/layer_tree_host_impl.cc File cc/trees/layer_tree_host_impl.cc (right): https://codereview.chromium.org/2895793002/diff/1/cc/trees/layer_tree_host_impl.cc#newcode954 cc/trees/layer_tree_host_impl.cc:954: transform_node->ready_since_animation = true; As layer->transform node is not 1:1, ...
3 years, 7 months ago (2017-05-22 18:11:29 UTC) #16
enne (OOO)
+vmpstr who originally added this tracking, in case we happen to not need it anymore ...
3 years, 7 months ago (2017-05-22 18:52:00 UTC) #17
wkorman
https://codereview.chromium.org/2895793002/diff/1/cc/trees/transform_node.h File cc/trees/transform_node.h (right): https://codereview.chromium.org/2895793002/diff/1/cc/trees/transform_node.h#newcode128 cc/trees/transform_node.h:128: bool ready_since_animation : 1; On 2017/05/22 18:51:59, enne wrote: ...
3 years, 7 months ago (2017-05-22 18:55:52 UTC) #18
enne (OOO)
Just so that I don't say no without giving other suggestions here. I realize that ...
3 years, 7 months ago (2017-05-22 18:58:53 UTC) #19
wkorman
On 2017/05/22 18:58:53, enne wrote: > Just so that I don't say no without giving ...
3 years, 7 months ago (2017-05-22 19:11:26 UTC) #20
wkorman
3 years, 7 months ago (2017-05-23 18:20:26 UTC) #21
On 2017/05/22 19:11:26, wkorman wrote:
> On 2017/05/22 18:58:53, enne wrote:
> > Just so that I don't say no without giving other suggestions here.  I
realize
> > that we don't really want a mapping of transform node -> layers affected by
> it. 
> > We also don't want to iterate through all the layers unnecessarily.
> > 
> > Brainstorming here, but I think if we need to keep this optimization, then
one
> > option could have transform node have a "last compositor frame number
updated
> > on" value, and then individual layers could check that during AppendQuads
> > (maybe?) and then set or unset their "ever ready since last update" flag
> > internally on a layer by layer basis.  That way transform node just knows
> about
> > transform updates only.
> 
> OK, thanks. We did consider just removing the optimization. It really seems
like
> what we have is sort of a workaround fix. We have a unit test, but no failing
> layout test. Jayadev had said that he was unable to reproduce the issue on the
> original site linked in the bug. But they could have changed their code, or
> we've changed ours in some way that fixes that case, while underlying issue
> could remain.
> 
> I actually did read vmpstr@ change and the discussion on the bug in depth. I
> thought first step to just port this, but realized I may have over-simplified
> (as you and Jayadev have confirmed) re: transform/layer interaction.
> 
> But given more work needed, perhaps just removing and seeing if issue
persists.
> 
> I will see if we can create a web page test case that fails, with
was-ever-ready
> logic removed, based on knowledge from prior issue. That seems like it could
> usefully inform next step.

I can't repro locally or on their site. Many things have surely changed since
the original patch http://crrev.com/1461243003 landed. Two that come to mind
are (1) image decode changes that perhaps affect when/whether the image content
being animated is ready, and (2) synchronized paint and interest rect changes
(see for example http://crrev.com/1393083003.

Logically from the bug description in http://crbug.com/554924 it sounds like
the issue could still exist, but without a known failing real world test case
I am not sure maintaining the code complexity is worthwhile. From earlier
discussion in this bug it does not sound like it would be too hard to restore
in a modern agreed-upon manner if we find it's needed during next beta.

I will put up a patch to remove the logic and solicit feedback.

Powered by Google App Engine
This is Rietveld 408576698