Bug 231484

Summary: Introduce RemoteDisplayListRecorderProxy and RemoteDisplayListRecorder
Product: WebKit Reporter: Wenson Hsieh <wenson_hsieh>
Component: WebKit Misc.Assignee: Wenson Hsieh <wenson_hsieh>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, ews-watchlist, gyuyoung.kim, mmaxfield, ryuan.choi, sabouhallawa, sergio, simon.fraser, thorton, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=231980
Bug Depends on:    
Bug Blocks: 230860    
Attachments:
Description Flags
For EWS
ews-feeder: commit-queue-
For EWS
ews-feeder: commit-queue-
For EWS
ews-feeder: commit-queue-
Fix typo
none
For EWS none

Wenson Hsieh
Reported 2021-10-09 17:06:47 PDT
.
Attachments
For EWS (96.24 KB, patch)
2021-10-10 16:06 PDT, Wenson Hsieh
ews-feeder: commit-queue-
For EWS (96.77 KB, patch)
2021-10-10 16:34 PDT, Wenson Hsieh
ews-feeder: commit-queue-
For EWS (97.24 KB, patch)
2021-10-10 17:18 PDT, Wenson Hsieh
ews-feeder: commit-queue-
Fix typo (97.21 KB, patch)
2021-10-10 17:32 PDT, Wenson Hsieh
no flags
For EWS (97.22 KB, patch)
2021-10-11 12:45 PDT, Wenson Hsieh
no flags
Wenson Hsieh
Comment 1 2021-10-10 16:06:53 PDT Comment hidden (obsolete)
Wenson Hsieh
Comment 2 2021-10-10 16:34:55 PDT Comment hidden (obsolete)
Wenson Hsieh
Comment 3 2021-10-10 17:18:44 PDT Comment hidden (obsolete)
Wenson Hsieh
Comment 4 2021-10-10 17:32:11 PDT
Created attachment 440746 [details] Fix typo
Simon Fraser (smfr)
Comment 5 2021-10-11 11:07:36 PDT
Comment on attachment 440746 [details] Fix typo View in context: https://bugs.webkit.org/attachment.cgi?id=440746&action=review > Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:46 > + static Ref<RemoteDisplayListRecorder> create(WebCore::ImageBuffer& imageBuffer, QualifiedRenderingResourceIdentifier imageBufferIdentifier, RemoteRenderingBackend& renderingBackend) Can this ImageBuffer type be template-qualified so that we know at compile time that it's the right kind of image buffer? > Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:52 > + void startListeningForIPC(); > + void stopListeningForIPC(); These feel a bit weird on this API. > Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:42 > + RemoteDisplayListRecorderProxy(WebCore::ImageBuffer&, RemoteRenderingBackendProxy&, const WebCore::FloatRect& initialClip, const WebCore::AffineTransform&, WebCore::DrawGlyphsRecorder::DeconstructDrawGlyphs = WebCore::DrawGlyphsRecorder::DeconstructDrawGlyphs::Yes); Same question: can ImageBuffer be specialized? It's a concrete image buffer here, right? > Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:45 > + ~RemoteDisplayListRecorderProxy() { } = default?
Wenson Hsieh
Comment 6 2021-10-11 12:35:54 PDT
Comment on attachment 440746 [details] Fix typo View in context: https://bugs.webkit.org/attachment.cgi?id=440746&action=review Thanks for the review! >> Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:46 >> + static Ref<RemoteDisplayListRecorder> create(WebCore::ImageBuffer& imageBuffer, QualifiedRenderingResourceIdentifier imageBufferIdentifier, RemoteRenderingBackend& renderingBackend) > > Can this ImageBuffer type be template-qualified so that we know at compile time that it's the right kind of image buffer? I think it's possible, but then we'll need to templatize RemoteDisplayListRecorder with an ImageBufferBackendType as well, since the remote image buffer could be a AcceleratedRemoteImageBuffer or UnacceleratedRemoteImageBuffer. This means we'll need to teach the IPC message receiver generator to take template arguments for a given message receiver, such that the generated message receiver implementation can take this form: ``` template <typename ImageBufferBackendType> void RemoteDisplayListRecorder<ImageBufferBackendType>::didReceiveStreamMessage(IPC::StreamServerConnectionBase& connection, IPC::Decoder& decoder) ``` Let's tackle this separately in a followup bug. >> Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:52 >> + void stopListeningForIPC(); > > These feel a bit weird on this API. I believe `(start|stop)ListeningForIPC` is the established pattern for setting up and tearing down IPC message receivers in the GPU Process; but now that I think more about it, we only need to expose `stopListeningForIPC()` here to make it work with ScopedActiveMessageReceiveQueue, since we should always `startListeningForIPC()` right after creating this object anyways. I'll adjust this so that `startListeningForIPC()` is just a private helper method that's invoked in `RemoteDisplayListRecorder::create`, which is consistent with `RemoteRenderingBackend::create`. >> Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:45 >> + ~RemoteDisplayListRecorderProxy() { } > > = default? Fixed!
Wenson Hsieh
Comment 7 2021-10-11 12:45:07 PDT
EWS
Comment 8 2021-10-11 15:37:12 PDT
Committed r283941 (242800@main): <https://commits.webkit.org/242800@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 440824 [details].
Radar WebKit Bug Importer
Comment 9 2021-10-11 15:38:23 PDT
Note You need to log in before you can comment on or make changes to this bug.