Bug 224781 - GPUConnectionToWebProcess::CreateRenderingBackend IPC should be asynchronous
Summary: GPUConnectionToWebProcess::CreateRenderingBackend IPC should be asynchronous
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on: 224778
Blocks:
  Show dependency treegraph
 
Reported: 2021-04-19 13:32 PDT by Chris Dumez
Modified: 2021-04-23 02:49 PDT (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Dumez 2021-04-19 13:32:37 PDT
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.
Comment 1 Chris Dumez 2021-04-19 14:11:30 PDT
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.
Comment 2 Chris Dumez 2021-04-19 14:19:16 PDT
(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.
Comment 3 Chris Dumez 2021-04-20 07:52:22 PDT
<https://commits.webkit.org/236786@main>
Comment 4 Ling Ho 2021-04-23 02:49:34 PDT
rdar://76898311