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

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug

Blocking:
issue 563816



Sign in to add a comment

OffscreenCanvas commit() animations get progressively slower until the browser is unusable

Project Member Reported by junov@chromium.org, Apr 5 2017

Issue description

Running an commit based rendering loop in a worker keeps getting slower and slower.

Looking at a trace graph, I see that the worker continues to run in full swing at 60fps, but the Browser process keeps slowing down the rate at which it is presenting frames.  Looking at task manager, process sizes are steady, so it does not look like we are leaking anything, at least not anything big. Also the Browser process is not taking a lot of CPU, But the GPU process is busy.  I wonder if we are accumulating quads or something like that,

I am currently observing this on Mac.

Attached is a trace that shows the issue as observed on Mac with Chrome Canary 59.0.3054.0
 

Comment 1 by junov@chromium.org, Apr 5 2017

trace_janky_OffscreenCanvas.json.gz
1.0 MB Download

Comment 2 by junov@chromium.org, Apr 10 2017

Owner: junov@chromium.org
Status: Started (was: Available)
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 12 2017

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

commit b4efc8c9a47145a0d44414db4a6942d31bbde2c8
Author: junov <junov@chromium.org>
Date: Wed Apr 12 22:30:03 2017

Throttle frames in OffscreenCanvasFrameDispatcherImpl

Propagate gpu/compositor backpressure.  This prevents the browser from
hanging when OffscreenCanvas animations cannot render at 60fps because
they are GPU bound.

This change Makes OffscreenCanvas ignore the BeginFrame signal when
backpressure is detected.  It uses the call to
OffscreenCanvasFrameDispatcherImpl::DidReceiveCompositorFrameAck as a
signal to unblock the next animation frame.

BUG= 708709 

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

[modify] https://crrev.com/b4efc8c9a47145a0d44414db4a6942d31bbde2c8/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp
[modify] https://crrev.com/b4efc8c9a47145a0d44414db4a6942d31bbde2c8/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.h

Comment 4 by junov@chromium.org, Apr 13 2017

Status: Fixed (was: Started)

Sign in to add a comment