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
Committed: https://crrev.com/ded54a2ab9cf36b048b1d9e26f97397aa54dc46f
Cr-Commit-Position: refs/heads/master@{#394290}
Patch Set 1 #
Total comments: 2
Patch Set 2 : Incorporate review feedback #Patch Set 3 : Incorporate review feedback #
Messages
Total messages: 10 (4 generated)
|
|||||||||||||||||||||||||||||||||||||