compositing: Send CompositorDisplayListInfo as bytes to compositor#36484
compositing: Send CompositorDisplayListInfo as bytes to compositor#36484mrobinson merged 1 commit intoservo:mainfrom
CompositorDisplayListInfo as bytes to compositor#36484Conversation
`CompositorDisplayListInfo` is a large data structure that scales with the size of the display list. Serializing it onto the Compositor's IPC channel can cause deadlocks. This change serializes it with bincode and sends it alongside the rest of the serialized display list information on the IPC `bytes_channel`. This should prevent deadlocks when the compositor API is unified. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
|
🔨 Triggering try run (#14419634449) for Linux (WPT) |
|
Test results for linux-wpt from try job (#14419634449): Flaky unexpected result (26)
Stable unexpected results that are known to be intermittent (19)
|
|
✨ Try run (#14419634449) succeeded. |
|
Can you explain the source of the deadlock? I'm having trouble following. |
|
Here's what I think is happening, and I believe that there are three threads involved:
I think the main issue here is that |
|
Apologies for not including the details earlier. Let me know if you need more information. I'm happy to keep digging if something is missing! |
|
Ah, I forgot to mention that this is an issue because before, I believe that the router thread was buffering and blocking before, rather than the scene builder thread. #36443 removes the router thread from the mix and removes the extra buffering and copying. |
|
Oof! |
CompositorDisplayListInfois a large data structure that scales withthe size of the display list. Serializing it onto the Compositor's IPC
channel can cause deadlocks. This change serializes it with bincode and
sends it alongside the rest of the serialized display list information
on the IPC
bytes_channel. This should prevent deadlocks when thecompositor API is unified.
Testing: This is covered by existing WPT tests.
Signed-off-by: Martin Robinson mrobinson@igalia.com