Before using a single shared memory buffer for sending the DL items from WebP to GPUP, calling flushDrawingContext() was necessary to synchronize multiple ImageBuffers drawing. The single shared memory buffer guarantees the order of drawing is preserved even when an ImageBuffer is drawn into another ImageBuffer. So flushDrawingContext() should be called only when the drawing is finished and the backend of the ImageBuffer is about to be used.
<rdar://problem/72394086>
Created attachment 416720 [details] Patch
Comment on attachment 416720 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=416720&action=review > Source/WebCore/ChangeLog:8 > + Avoid calling lushDrawingContext() except when the drawing is finished Nit - flushDrawingContext() > Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:-185 > - imageBuffer.flushDrawingContext(); Just to confirm — we don't need to call CGContextFlush for the previous canvas's remote image buffer either? > Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:-387 > - size_t m_itemCountInCurrentDisplayList { 0 }; Nice.
Comment on attachment 416720 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=416720&action=review >> Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:-185 >> - imageBuffer.flushDrawingContext(); > > Just to confirm — we don't need to call CGContextFlush for the previous canvas's remote image buffer either? CG should take care of flushing when drawing one IOSurface-based CGContext into another.
Created attachment 416722 [details] Patch
*** Bug 219558 has been marked as a duplicate of this bug. ***
Committed r271079: <https://trac.webkit.org/changeset/271079> All reviewed patches have been landed. Closing bug and clearing flags on attachment 416722 [details].