New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 663516 link

Starred by 8 users

Issue metadata

Status: Fixed
Merged: issue 661946
Owner:
Closed: Nov 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: ----



Sign in to add a comment

Tab switcher dropping frames

Project Member Reported by aurimas@chromium.org, Nov 8 2016

Issue description

Application Version (from "Chrome Settings > About Chrome"): 56.0.2913.4
Android Build Number (from "Android Settings > About Phone/Tablet"): NMF26F
Device: Pixel 

Steps to reproduce: 
1. Open a tab.
2. Go to tab switcher
3. Try to swipe tabs away.

Observed behavior: 
Canary has a noticeably worse frame rate when swiping away tabs than Chrome stable. (see attached video)
 
switcher.mp4
6.3 MB View Download
Mergedinto: 661946
Status: Duplicate (was: Untriaged)
Cc: aelias@chromium.org
Labels: ReleaseBlock-Stable M-56
Status: Assigned (was: Duplicate)
Not clear this is a dupe, the repro scenario is very different.

mdjones@, could you take a trace with CC/GPU/browser categories and post it on this bug?

Comment 3 by aelias@chromium.org, Nov 15 2016

Cc: mdjones@chromium.org ian...@chromium.org tedc...@chromium.org
 Issue 661946  has been merged into this issue.

Comment 4 by aelias@chromium.org, Nov 15 2016

Cc: rbyers@chromium.org briander...@chromium.org
 Issue 664754  has been merged into this issue.

Comment 5 by aelias@chromium.org, Nov 15 2016

Cc: danakj@chromium.org boliu@chromium.org vollick@chromium.org enne@chromium.org sunn...@chromium.org
Labels: -ReleaseBlock-Stable ReleaseBlock-Beta
Owner: samans@chromium.org
I did an exact bisect to https://codereview.chromium.org/2449853004 "Getting rid of DelegatedFrameData"

I'm upgrading this to M56 beta blocker because every kind of browser-driven animation has been degraded from 60fps to ~20fps, and I expect to see a lot of complaints if we push this to beta.  It seems this change broke the vsync model on the Clank browser side.

I duped into this bug because it's easiest to see in the tab switcher (just open two tabs and move them around).

I appreciate this patch may be difficult to revert, but either way please make it your top priority to find the cause and fix it.

Comment 6 by aelias@chromium.org, Nov 15 2016

Labels: -Restrict-View-Google

Comment 7 by samans@chromium.org, Nov 15 2016

I'm sorry for the trouble that has been caused. I'll look into it.

Comment 8 by aelias@chromium.org, Nov 15 2016

Cc: -rbyers@chromium.org samans@chromium.org rbers@chromium.org
Owner: aelias@chromium.org
OK, it still reverts cleanly enough, I'm preparing the revert.

Comment 9 by aelias@chromium.org, Nov 15 2016

Cc: -rbers@chromium.org
Cc: fsam...@chromium.org
Cc: -ian...@chromium.org
Cc: jbau...@chromium.org
I suspect maybe Display::UpdateRootSurfaceResourcesLocked isn't working anymore, because Surface::HasFrame() will never return false after the surface has been given its first frame, even when DirectCompositorFrameSink::ForceReclaimResources() has been called to reclaim resources.

This causes the surfaceaggregator to try to draw even when there are no resources. This will probably cause unnecessary damage, and the blank frames will cause the surfaceaggregator to return resources, which means the next frame it'll need to wait on sync tokens and bind them to textures all over again.
Saman were you able to reproduce the perf change locally with your patch yet?
Owner: samans@chromium.org
OK, I confirmed jbauman@'s proposed fix https://codereview.chromium.org/2504033002/ works.  I didn't manage to fully resolve conflicts in the revert yet, so I'll leave it in given that we can expect to have that fix in M56.  Thanks!
OK, since the fix has a bit of controversy, I'm going ahead with the revert as https://codereview.chromium.org/2503203002/
Project Member

Comment 16 by bugdroid1@chromium.org, Nov 16 2016

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

commit eb9ecefc55d1e3cf8498d0865568097fb9bbf285
Author: aelias <aelias@chromium.org>
Date: Wed Nov 16 06:27:00 2016

Revert "Getting rid of DelegatedFrameData"

This reverts commit 4ba3a0e9d06bf66b3d900fec44bcf8ee4a2964a2, which
caused a browser-animation framerate regression on Android.

NOTRY=true
TBR=boliu@chromium.org,danakj@chromium.org,fsamuel@chromium.org,dtrainor@chromium.org,piman@chromium.org,reveman@chromium.org,sky@chromium.org,tsepez@chromium.org
BUG= 663516 , 653741 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2503203002
Cr-Commit-Position: refs/heads/master@{#432390}

[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/android_webview/browser/browser_view_renderer.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/android_webview/browser/hardware_renderer.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/android_webview/browser/surfaces_instance.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/android_webview/browser/test/rendering_test.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/blimp/client/core/compositor/blimp_compositor.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/BUILD.gn
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/cc_param_traits.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/cc_param_traits.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/cc_param_traits_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/cc_serialization_perftest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/compositor_frame_struct_traits.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/compositor_frame_struct_traits.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/ipc/struct_traits_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/output/compositor_frame.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/output/compositor_frame.h
[add] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/output/delegated_frame_data.cc
[add] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/output/delegated_frame_data.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/direct_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/direct_compositor_frame_sink_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/display.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/display_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_aggregator.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_aggregator_perftest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_aggregator_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_factory.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_factory_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_hittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surface_hittest_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/surfaces/surfaces_pixeltest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/test/fake_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/test/surface_aggregator_test_helpers.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/test/surface_hittest_test_helpers.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/test/test_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/cc/trees/layer_tree_host_unittest_context.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/components/exo/surface.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/components/exo/surface_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/bad_message.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/compositor/mus_browser_compositor_output_surface.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/frame_host/render_widget_host_view_child_frame.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/frame_host/render_widget_host_view_guest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/browser_compositor_view_mac.mm
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/browser/renderer_host/render_widget_host_view_mac.mm
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/content/renderer/android/synchronous_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/demo/bitmap_uploader.cc
[add] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/surfaces/display_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/ws/frame_generator.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/ws/gpu_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/ws/platform_display.cc
[add] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/ws/server_window_compositor_frame_sink.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/services/ui/ws/window_tree_client_unittest.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/tools/ipc_fuzzer/fuzzer/fuzzer.cc
[modify] https://crrev.com/eb9ecefc55d1e3cf8498d0865568097fb9bbf285/ui/android/delegated_frame_host_android.cc

Status: Fixed (was: Assigned)

Comment 18 by bokan@chromium.org, Nov 28 2016

Cc: tdres...@chromium.org bokan@chromium.org
 Issue 668509  has been merged into this issue.

Sign in to add a comment