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

Issue 865597 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Aug 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 730193



Sign in to add a comment

Handle GPU crash for OOPIFs with OOP-D.

Project Member Reported by kylec...@chromium.org, Jul 19

Issue description

With OOP-D enabled when the GPU process crashes all surfaces are destroyed (since they're in the GPU process). DelegatedFrameHost::OnLostResources() gets called when the GPU crashes  and clears the fallback SurfaceId on the renderer SurfaceLayer. This allows surface sync to kick in and wait for the renderer to submit a new CompositorFrame. We want the same behaviour for OOPIF SurfaceLayers in the renderer process.

+fsamuel for triage
 
Each client should add all primary surface ids into activation dependencies on context loss.
I actually don't believe resetting fallback SurfaceId in the browser process do much other than avoiding missing surface errors. If the primary is not in activation dependencies it won't trigger surface sync.
Yea, we can also just skip the error in SurfaceAggregator...
Status: Assigned (was: Untriaged)
I'm just going to get rid of the error case in SurfaceAggregator.
Project Member

Comment 6 by bugdroid1@chromium.org, Jul 25

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

commit aec1f1576ed70cbdb40837814b6cf9c09e1f5bd0
Author: Fady Samuel <fsamuel@chromium.org>
Date: Wed Jul 25 21:05:11 2018

SurfaceAggregator: Remove Missing Surfaces report

With OOP-D, after a Viz process crash, clients will start
resubmitting CompositorFrames in no paritcular order and
some references may not yet exist at aggregation time. In that
transient period, we shouldn't spew errors to console or to UMA
because this is an expected transient period. This CL simply
removes that error state. In the absence of a fallback surface,
we use the default background color of the SurfaceDrawQuad to fill
in the surface's area.

Bug:  865597 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I45d10c9a1880ea9df04dd7a95ef76048abc4a830
Reviewed-on: https://chromium-review.googlesource.com/1150574
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Saman Sami <samans@chromium.org>
Commit-Queue: Fady Samuel <fsamuel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578060}
[modify] https://crrev.com/aec1f1576ed70cbdb40837814b6cf9c09e1f5bd0/components/viz/service/display/surface_aggregator.cc
[modify] https://crrev.com/aec1f1576ed70cbdb40837814b6cf9c09e1f5bd0/components/viz/service/display/surface_aggregator.h
[modify] https://crrev.com/aec1f1576ed70cbdb40837814b6cf9c09e1f5bd0/tools/metrics/histograms/histograms.xml

FYI this is still broken. It's no longer reporting missing surfaces but the OOPIFs don't necessarily show up until something else (eg. mouse move) triggers a new DrawAndSwap().

My guess is this is because the renderer surface can't add a reference to a OOPIF surface that doesn't exist. The renderer doesn't need to submit another CF because nothing changes when it gets the OnFirstSurfaceActivation() message for the OOPIF surface, so nothing changes and nothing triggers the next DrawAndSwap().
Status: Fixed (was: Assigned)
Saman fixed this in another bug so I'm marking as FIXED.

Sign in to add a comment