Chromium Code Reviews
DescriptionWorkaround for Mac video flickering
The partial swap support on Mac (GLRendererLayerTree) is brittle because
it allows drawing to an IOSurface while that IOSurface is being used as
a CALayer's contents.
This happens to not cause problems because the compositor usually draws
the entire page in one chunk. If we introduce a glFlush to the middle
of this, then we can end up with partially drawn content appearing
on-screen (in the case of the issue that the bug was filed on, black
tiles behind a YouTube video).
The texture deletion in GLImageIOSurface happens in the middle of the
compositor frame being drawn, and causes an implicit glFlush.
Avoid this deletion and implicit glFlush by scoping the textures used
by GLImageIOSurface to the YUVToRGBConverter structure.
The long-term solution is to have the GLRendererLayerTree not support
partial swap, and make BufferQueue not allow re-use of a backbuffer
until IOSurfaceIsInUse is no longer true.
BUG=611551
Review-Url: https://codereview.chromium.org/1980183002
Cr-Commit-Position: refs/heads/master@{#394290}
(cherry picked from commit ded54a2ab9cf36b048b1d9e26f97397aa54dc46f)
Committed: https://chromium.googlesource.com/chromium/src/+/efc4b4f2155ce94b83bb773bc2e6e8f9ff69a4a1
Patch Set 1 #
Messages
Total messages: 2 (1 generated)
|
|||||||||||||||||||||||||||||||||||||