[Webkit-unassigned] [Bug 220649] [GPU Process] Make getImageData use display list with shared memory instead of sending a sync IPC
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Jan 18 16:45:56 PST 2021
https://bugs.webkit.org/show_bug.cgi?id=220649
--- Comment #4 from Wenson Hsieh <wenson_hsieh at apple.com> ---
(In reply to Ryosuke Niwa from comment #2)
> With this WIP patch, we can sometimes get stuck in
> RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::
> getImageData forever. As far as I can tell, we never wake up the GPU Process.
>
> Wenson, am I doing something wrong here in
> RemoteImageBufferProxy<WebKit::ImageBufferShareableMappedIOSurfaceBackend>::
> getImageData by sending flushDrawingContextAsync?
The previous patch was hanging in the case where the wakeup message is sent for some destination image buffer A, but a sync GetImageData is later appended for a different destination image buffer B. In this case, since we're directly appending the item to the display list, we bypass the DisplayList::Recorder delegate methods, which call out to the recorder client (in this case, RemoteImageBufferProxy::willAppendItemOfType), which is what ultimately allows us to append "change destination image buffer" items when synchronizing display list items between multiple destination image buffers.
As a result, the GPUP (in RemoteRenderingBackend) never learned that it needed to switch from image buffer A to image buffer B, and thus never processed the GetImageData.
To fix this, I added a DisplayList::Recorder method for getImageData that calls into the recorder client hooks, and used that instead of the DisplayList method in RemoteImageBufferProxy::getImageData. MotionMark Images seems to run smoothly after this adjustment.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20210119/d5073303/attachment.htm>
More information about the webkit-unassigned
mailing list