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

Issue 734942 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Scrolling janks on android after opening app

Project Member Reported by eseckler@chromium.org, Jun 20 2017

Issue description

Chrome Version: 61.0.3129.3, with chrome home enabled.
OS: Android

What steps will reproduce the problem?
(1) Open Chrome app, load a page, scroll to bottom.
(2) Exit chrome app.
(3) Open Chrome app again, fling-scroll upwards.
(4) Notice degraded 30fps scrolling.
(5) Scroll downwards again, notice normal scrolling at 60fps.

Attached a trace, this seems to be related to our new DisplayScheduler logic for early deadlines. For some reason, the DisplayScheduler seems to ignore SurfaceDamageExpected for the RenderWidget's surface after restoring the app. When the surface changes (due to home bar sliding away and the resulting size change), the SurfaceDamageExpected for the new surface is honored. Trace attached, will debug a bit further.
 
trace_scrolling_after_restore_app.json.gz
3.7 MB Download
Looks like this is because a new DisplayScheduler is created, but it doesn't receive a OnSurfaceCreated call because the RWHV's Surface did already exist before. I think we could simply get away without relying on OnSurfaceCreated in DisplayScheduler. Patch to fix is out at https://crrev.com/c/541278.
Labels: -Pri-3 Pri-2
Status: Started (was: Assigned)
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 20 2017

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

commit 18478f664a4e90a0416f782902c8d7a292cf355b
Author: Eric Seckler <eseckler@chromium.org>
Date: Tue Jun 20 20:18:10 2017

[cc] Track surface state without OnSurfaceCreated in DisplayScheduler.

OnSurfaceCreated is not called for pre-existing surfaces. This leads
to the DisplayScheduler ignoring expected surface damage. This patch
removes the use of OnSurfaceCreated and initializes tracking state in
OnSurfaceDamageExpected instead.

Bug:  734942 ,  697086 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I737293e3b72202aa5fc7fdb4dd6aab4937aabea7
Reviewed-on: https://chromium-review.googlesource.com/541278
Commit-Queue: Eric Seckler <eseckler@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#480929}
[modify] https://crrev.com/18478f664a4e90a0416f782902c8d7a292cf355b/cc/surfaces/compositor_frame_sink_support.cc
[modify] https://crrev.com/18478f664a4e90a0416f782902c8d7a292cf355b/cc/surfaces/display_scheduler.cc
[modify] https://crrev.com/18478f664a4e90a0416f782902c8d7a292cf355b/cc/surfaces/display_scheduler_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment