Chromium Code Reviews
DescriptionAndroid: Fix GPU recovery issues
a)
The swap accounting is a bit unreliable when the GPU process
crashes or the context is lost. We might end up thinking that
too many swap acks are pending (which will never arrive) and
bail out of CompositorImpl::Composite() early.
Ignore the swap limit when deciding to composite if we know
the context was lost. Then calling Composite() will cause the
output surface to get recreated.
b)
Fix infinite retry loops of which there are two:
One is that we could indefinitely early-out of Composite()
and repost if the GPU process keeps crashing at startup before
LTH ever gets a chance to try create a context.
Fix regression with https://codereview.chromium.org/738983002/
which both removed the LOG(FATAL) for too many successive retry
attempts (used to happen inside LTH), and added a similar retry
loop where we might never call SetOutputSurface and keep
relaunching the GPU process.
Also essentially revert https://codereview.chromium.org/750643003/
to simplify things. We don't need to early-out in Composite()
anymore if the GPU channel is lost. This is handled better in
cc now and we can just attempt to Composite(). It will schedule
OutputSurface creation. Even if we call Composite() again in the
meantime, that should be harmless. And after we eventually call
SetOutputSurface(), this will trigger ScheduleComposite().
BUG=453511, 453671, 453819, 453649, 448549
NOTRY=True
Committed: https://crrev.com/bce21923514e1b1d92d5dd743785830fe9c10ad3
Cr-Commit-Position: refs/heads/master@{#315390}
Patch Set 1 #Patch Set 2 : fix retry loops #Patch Set 3 : address Eric's offline comment #Patch Set 4 : cancel OS tasks when LTH gets destroyed #Patch Set 5 : #
Messages
Total messages: 14 (6 generated)
|
||||||||||||||||||||||||||||