[webkit-reviews] review granted: [Bug 219641] WebGL GPU process IPC should use shared memory for asynchronous messages : [Attachment 420824] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Feb 18 16:34:05 PST 2021


Geoffrey Garen <ggaren at apple.com> has granted Kimmo Kinnunen
<kkinnunen at apple.com>'s request for review:
Bug 219641: WebGL GPU process IPC should use shared memory for asynchronous
messages
https://bugs.webkit.org/show_bug.cgi?id=219641

Attachment 420824: Patch

https://bugs.webkit.org/attachment.cgi?id=420824&action=review




--- Comment #39 from Geoffrey Garen <ggaren at apple.com> ---
Comment on attachment 420824
  --> https://bugs.webkit.org/attachment.cgi?id=420824
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=420824&action=review

r=me

I wasn't able to review the synchronization details as thoroughly as I'd like,
but I guess we can refine more once this is in-tree.

EWS failures seem like they were caused by an unrelated transient bug in media
streams. Still, I'd suggest re-uploading and hitting cq+ to make sure this
lands cleanly.

> Source/WebKit/Platform/IPC/StreamClientConnection.h:167
> +    // Not notifying on wake up since the out-of-stream message will do
that.
> +    (void) release(encoder.size());

WebKit style is to use the UNUSED_VARIABLE macro here.

> Source/WebKit/Platform/IPC/StreamClientConnection.h:193
> +    return WTF::nullopt;

Are there any valid conditions under which we would receive some data, but not
enough data to be a valid message? If so, let's document them here. If not,
let's ASSERT.

> Source/WebKit/Platform/IPC/StreamClientConnection.h:205
> +    if (receiverLimit != expectedReceiverLimit)
> +	   return WakeUpReceiver::Yes;

I think this would be clearer as "if (receiverLimit &
senderOffsetReceiverIsSleepingTag)". Maybe also add an ASSERT that
(receiverLimit & ~senderOffsetReceiverIsSleepingTag) == expectedReceiverLimit.

> Source/WebKit/Platform/IPC/StreamServerConnection.cpp:89
> +    size_t oldReceiverOffset =
sharedReceiverOffset().exchange(receiverOffset, std::memory_order_acq_rel);
> +    // If the sender wrote over receiverOffset, it means the sender is
waiting.
> +    if (oldReceiverOffset != m_receiverOffset)

I think this would be clearer as "if (oldReceiverOffset &
receiverOffsetSenderIsWaitingTag)". Same comment about adding an assert.


More information about the webkit-reviews mailing list