Not all error paths in CompositorFrameSinkSupport::MaybeSubmitCompositorFrame clean up a rejected frame |
||||
Issue descriptionI traced back a lack of a wl_buffer::release() call from the exo (Wayland) interface for a particular frame to the compositor code. It turned out that when MaybeSubmitCompositorFrame() calls Surface::QueueFrame(), and that call returns false that the resources for the rejected frame do not get released. There are three total error return paths in MaybeSubmitCompositorFrame(). Only one of them makes calls to clean things up. I'll have a fix with test coverage shortly.
,
Jun 5 2018
,
Jun 7 2018
Ok, we are going to not complicate the exo code with additional logic for trying to release buffers properly if a frame is rejected. See discussion here: https://chromium-review.googlesource.com/c/chromium/src/+/1087316 I still have the a patch to be more consistent in error handling in viz here: https://chromium-review.googlesource.com/c/chromium/src/+/1070714
,
Jun 11 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8e2f3d3f4cc694638a9ee012759689db59e8fbf0 commit 8e2f3d3f4cc694638a9ee012759689db59e8fbf0 Author: Lloyd Pique <lpique@chromium.org> Date: Mon Jun 11 20:35:37 2018 [viz] Release frame resources on frame rejection If a frame is rejected for any reason, the resources for the rejected frame still need to be released. To enforce this, a ScopedClosureRunner is created by the frame sink, and passed to the surface. The surface will reset the closure so the callback is called once it has passed some sanity checks. All existing (but inconsistently performed) cleanup code has been unified in the new callback. Bug: 844800 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel Change-Id: Id07c89ac39c850d1e3603b0a6beee1787489181a Reviewed-on: https://chromium-review.googlesource.com/1070714 Commit-Queue: Lloyd Pique <lpique@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Cr-Commit-Position: refs/heads/master@{#566134} [modify] https://crrev.com/8e2f3d3f4cc694638a9ee012759689db59e8fbf0/components/viz/service/frame_sinks/compositor_frame_sink_support.cc [modify] https://crrev.com/8e2f3d3f4cc694638a9ee012759689db59e8fbf0/components/viz/service/frame_sinks/compositor_frame_sink_support.h [modify] https://crrev.com/8e2f3d3f4cc694638a9ee012759689db59e8fbf0/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc [modify] https://crrev.com/8e2f3d3f4cc694638a9ee012759689db59e8fbf0/components/viz/service/surfaces/surface.cc [modify] https://crrev.com/8e2f3d3f4cc694638a9ee012759689db59e8fbf0/components/viz/service/surfaces/surface.h
,
Jun 11 2018
|
||||
►
Sign in to add a comment |
||||
Comment 1 by lpique@chromium.org
, May 30 2018