GPUConnectionToWebProcess::CreateRenderingBackend IPC should be asynchronous. We had to make it synchronous as a temporary workaround for Bug 224778. We need to find the underlying cause of Bug 224778 and make the IPC async again.
When running MotionMark's Canvas-Arcs, in the success case, I see RemoteRenderingBackend::didCreateSharedDisplayListHandle() getting called at least 4 times. However, in the failure case, it seems RemoteRenderingBackend::didCreateSharedDisplayListHandle() is only called once. In both failure and success cases, I see many calls to RemoteRenderingBackend::wakeUpAndApplyDisplayList() and the initialization stage (GPUConnectionToWebProcess::createRenderingBackend & RemoteRenderingBackend::createImageBuffer) looks the same.
(In reply to Chris Dumez from comment #1) > When running MotionMark's Canvas-Arcs, in the success case, I see > RemoteRenderingBackend::didCreateSharedDisplayListHandle() getting called at > least 4 times. However, in the failure case, it seems > RemoteRenderingBackend::didCreateSharedDisplayListHandle() is only called > once. > > In both failure and success cases, I see many calls to > RemoteRenderingBackend::wakeUpAndApplyDisplayList() and the initialization > stage (GPUConnectionToWebProcess::createRenderingBackend & > RemoteRenderingBackend::createImageBuffer) looks the same. Note that I haven't been able to reproduce on macOS. On iOS with iPad, it is flaky but fairly easily reproducible.
<https://commits.webkit.org/236786@main>
rdar://76898311