VizProcessContextProvider should handle lost context |
|||
Issue descriptionVizProcessContextProvider AddObserver() and RemoveObserver() both do nothing. VizProcessContextProvider should have an observer list and should register a context lost callback with gles2::GLES2Implementation so it can notify observers. We also need RootCompositorFrameSinkImpl (or something similar) to register itself as a ContextLostObserver and handle lost display compositor contexts.
,
Jul 13
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/899d48111bce2be643d6da2fcd236ad1b33d53da commit 899d48111bce2be643d6da2fcd236ad1b33d53da Author: kylechar <kylechar@chromium.org> Date: Fri Jul 13 19:25:50 2018 Handle context loss in VizProcessContextProvider. Register a context loss callback with the GLES2Implementation to find out about lost context. Implement AddObserver() and RemoveObserver() for VizProcessContextProvider to notify the observers on context loss. viz::Display is already registered as the context loss observer for the ContextProvider. It gets notified and calls out to DisplayClient. Implement a handler for DisplayOutputSurfaceLost() so the root CompositorFrameSink shuts down the display on context loss. The client will see a connection error and reinitialize the display. Also make VizProcessContextProvider log UMA on context loss. This requires moving ContextLossReason enum somewhere visible to VizProcessContextProvider and adding a new histogram for GPU.ContextLost.DisplayCompositor. Bug: 859068 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I4c1fb6f00a893003e9b65dde1a7c5802a8f27692 Reviewed-on: https://chromium-review.googlesource.com/1126482 Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Reviewed-by: Robert Kaplow (slow) <rkaplow@chromium.org> Commit-Queue: kylechar <kylechar@chromium.org> Cr-Commit-Position: refs/heads/master@{#575016} [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/common/BUILD.gn [add] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/common/gpu/context_lost_reason.cc [add] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/common/gpu/context_lost_reason.h [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/service/display_embedder/viz_process_context_provider.cc [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/service/display_embedder/viz_process_context_provider.h [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/gpu/ipc/gl_in_process_context.cc [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/gpu/ipc/gl_in_process_context.h [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/services/ui/public/cpp/gpu/command_buffer_metrics.cc [modify] https://crrev.com/899d48111bce2be643d6da2fcd236ad1b33d53da/tools/metrics/histograms/histograms.xml
,
Aug 2
,
Aug 3
|
|||
►
Sign in to add a comment |
|||
Comment 1 by bugdroid1@chromium.org
, Jul 11