Scheduling and buffer release logic is non-optimal in sommelier |
|
Issue descriptionPresentation timing protocol should be exposed to crostini clients so they can be smarter about scheduling. Sommelier can also use this to implement smarter frame callbacks and buffer release logic. We're too aggressive about releasing buffers today. It's causing dropped frames as allocating a large buffer is expensive. For now, it's probably best to remove the aggressive buffer release logic and just allow the buffer queue to grow as large as needed. We can make that smarter as part of implementing support for the presentation feedback protocol.
,
Jun 14 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6a449226652734caeb1483e0da474b204be7169d commit 6a449226652734caeb1483e0da474b204be7169d Author: David Reveman <reveman@chromium.org> Date: Thu Jun 14 16:42:23 2018 exo: Improve frame callbacks. Use the compositor frame ack instead of begin-frame callback to trigger these callbacks. The frame ack is sufficient to prevent frames from being dropped, and provides minimal latency back-pressure for clients that implement more advanced scheduling. This makes it possible to improve scheduling of frames for Linux apps significantly. Sommelier can have the next frame prepared as a dmabuf and ready to commit when we receive the callback. This minimizes the chance that we'll miss a frame. BUG=845659 TEST=exo_unittests --gtest_filter=SurfaceTest.RequestFrameCallback TEST=sommelier /usr/lib/weston/weston-simple-shm TEST=sommelier -X glxgears Change-Id: I20f06618d9d550ab501f3945b3d25d4a5c20c218 Reviewed-on: https://chromium-review.googlesource.com/1097776 Reviewed-by: Daniele Castagna <dcastagna@chromium.org> Commit-Queue: David Reveman <reveman@chromium.org> Cr-Commit-Position: refs/heads/master@{#567301} [modify] https://crrev.com/6a449226652734caeb1483e0da474b204be7169d/components/exo/layer_tree_frame_sink_holder.cc [modify] https://crrev.com/6a449226652734caeb1483e0da474b204be7169d/components/exo/layer_tree_frame_sink_holder.h [modify] https://crrev.com/6a449226652734caeb1483e0da474b204be7169d/components/exo/surface_tree_host.cc [modify] https://crrev.com/6a449226652734caeb1483e0da474b204be7169d/components/exo/surface_tree_host.h [modify] https://crrev.com/6a449226652734caeb1483e0da474b204be7169d/components/exo/surface_unittest.cc |
|
►
Sign in to add a comment |
|
Comment 1 by bugdroid1@chromium.org
, May 23 2018