Chromium Code Reviews
DescriptionUse more than double buffering in SoftwareOutputDeviceMac
Previously, this would flip between two buffers, but that had issues
because the IOSurfaces would sometimes still be being read by the
window server while the next frame was writing (leading to flashes).
Change this to a buffer queue very similar to the GPU output surface
BufferQueue. Use the IOSurfaceIsInUse function to ensure that buffers
are not painted to until they are not being read by the window server.
Limit the number of buffers being held in the queue to 4 (determined
empirically). If we need more than 4, then they will thrash (by
frequent allocation and discard). The window server will keep more
than 4 IOSurfaces alive (as many as it needs) regardless of our
purging here.
BUG=650484
Review-Url: https://codereview.chromium.org/2866683003
Cr-Commit-Position: refs/heads/master@{#469876}
Committed: https://chromium.googlesource.com/chromium/src/+/469d0548dfb4c3304c03571ba3f0f1a9bc58e2a4
Patch Set 1 #
Total comments: 4
Patch Set 2 : Review feedback and tests #Patch Set 3 : Review feedback and tests #Patch Set 4 : Fix compile #
Messages
Total messages: 21 (12 generated)
|
||||||||||||||||||||||||||||||||||||||||||||||