DescriptionReland of cc: Remove frame queuing from the scheduler.
Original issue's description:
> cc: Remove frame queuing from the scheduler.
>
> CC scheduler has a frame queuing mechanism called "retro frames". This
> has been responsible for a lot of complexity and hard to fix bugs. The
> original intent for adding retro frames was to allow the scheduler to
> handle multiple frames in flight but that goal doesn't seem feasible or
> even desirable any more. This CL removes the retro frames queue and
> instead makes the Scheduler end the previous frame when it receives a
> BeginFrame message.
>
> One surprising behavior was that SyntheticBFS MISSED frames would be
> queued as retro frames and this would convert the synchronous begin
> frame call (inside Scheduler::ProcessScheduledActions) to an
> asynchronous retro frame PostTask. To work around this the Scheduler
> keeps track of a single CancelableClosure that's used for MISSED frames.
>
> The above behavior was also causing the BeginFramesNotFromClient tests
> to work even though there was an extra MISSED frame in the queue. This
> is more elegantly solved in another way by using frame number to advance
> the task runner instead of just running pending tasks.
>
> Lastly SchedulerStateMachine is modified so that it's possible to end
> the previous frame and still have the same behavior as before in the
> commit to active tree (browser compositor) mode.
R=brianderson@chromium.org,danakj@chromium.org,enne@chromium.org
BUG=602485, 644992, 651387
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
Committed: https://crrev.com/da928f0adc826e2e5e32ba08da7019eb9a0ed912
Cr-Commit-Position: refs/heads/master@{#424027}
Patch Set 1 #Patch Set 2 : rebase #Patch Set 3 : Notify scheduler of context loss on compositor teardown. #Patch Set 4 : Add a way to stop the scheduler. #Patch Set 5 : rebase #
Messages
Total messages: 16 (11 generated)
|