ozone/drm overlay checking is indecisive |
|||
Issue description
In ozone/drm OverlayCandidatesOzone::CheckOverlaySupport, overlay determination is not stable and flicks off several times before consisting returning true when given a OverlaySurfaceCandidateList specifying a OverlaySurfaceCandidate that can be placed in an overlay.
This results in unnecessary CPU and GPU work on the behalf of the display compositor.
Easy replication: run on device:
./ozone_demo --enable-overlay --trace-to-console'='hwoverlays
watch the overlay checker demo code cycle back forth a few times:
SurfacelessGlRenderer::OverlayChecker[hwoverlays], {canihaz:true, display_rect:"9.000000,744.000000 320.000000x212.000000"}
[0621/164759.556161:ERROR:trace_log.cc(1464)] : SurfacelessGlRenderer::OverlayChecker[hwoverlays], {canihaz:true, display_rect:"9.000000,744.000000 320.000000x212.000000"} (0.125 ms)
...
SurfacelessGlRenderer::OverlayChecker[hwoverlays], {canihaz:false, display_rect:"9.000000,744.000000 320.000000x212.000000"}
[0621/164759.556161:ERROR:trace_log.cc(1464)] : SurfacelessGlRenderer::OverlayChecker[hwoverlays], {canihaz:false, display_rect:"9.000000,744.000000 320.000000x212.000000"} (0.125 ms)
before settling in the true state.
,
Aug 30 2017
Overlay determination not being stable is actually the intended behavior until we address crbug.com/756454 and we do the validation in the same process. Here is a patch (crrev.com/c/644351) that changes ozone_demo so that the overlay moves every n frames. In that way the validation converges after a while.
,
Aug 31 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5d4c0cf9dd3f457fe3511a8358a5e6e578234c06 commit 5d4c0cf9dd3f457fe3511a8358a5e6e578234c06 Author: Daniele Castagna <dcastagna@chromium.org> Date: Thu Aug 31 02:13:40 2017 ozone_demo: Use result of CheckOverlaySupport. ozone_demo has the option to display one hardware overlay on top of the primary plane, and it uses CheckOverlaySupport functionality to query if a configuartion of overlays is supported. Currently, the result of the query is not used, and an HW overlay is always scheduled if requested. This CL uses the result of the query and avoids scheduling the overlay if the result says it is not supported. In order to do that this CL has to: - Add the primary plane, when present, to the list of overlays to be tested, since the primary plane contributes significantly to the scanout bandwith and its presence is determinant to the feasibility of scanning out a set of overlays. - Get rid of the continuous overlay animation, and instead replace it with a stepped animation every n frames. HW overlays validations are asynchronous and results are sent back after a few frames, while originally perceived as a bug crbug.com/735640, this is the intended behavior. Validating configurations is costly and we can't afford to validate once per frame. We validate HW overlay configurations only after they're stable for a few frames. Moving the HW overlays every n frames allows the configuration of overlays to be stable for a few frames. - Add double buffering to the overlay. Since the continuous animation has been removed, we now have two buffers with different colors for the overlay and we flip those. This makes it visible we're updating the HW overlay along with the background color. Bug: 735640 Test: ozone_demo on eve, with/without enable-overlay/disable-primary-plane Change-Id: I652fbc75ce385b0a1f6563d4a85005b643226128 Reviewed-on: https://chromium-review.googlesource.com/644351 Commit-Queue: Daniele Castagna <dcastagna@chromium.org> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Reviewed-by: Daniel Nicoara <dnicoara@chromium.org> Cr-Commit-Position: refs/heads/master@{#498724} [modify] https://crrev.com/5d4c0cf9dd3f457fe3511a8358a5e6e578234c06/ui/ozone/demo/surfaceless_gl_renderer.cc [modify] https://crrev.com/5d4c0cf9dd3f457fe3511a8358a5e6e578234c06/ui/ozone/demo/surfaceless_gl_renderer.h
,
Sep 17
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Sep 17
|
|||
►
Sign in to add a comment |
|||
Comment 1 by rjkroege@chromium.org
, Jun 21 2017