WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
231484
Introduce RemoteDisplayListRecorderProxy and RemoteDisplayListRecorder
https://bugs.webkit.org/show_bug.cgi?id=231484
Summary
Introduce RemoteDisplayListRecorderProxy and RemoteDisplayListRecorder
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-
Details
Formatted Diff
Diff
For EWS
(96.77 KB, patch)
2021-10-10 16:34 PDT
,
Wenson Hsieh
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
For EWS
(97.24 KB, patch)
2021-10-10 17:18 PDT
,
Wenson Hsieh
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
Fix typo
(97.21 KB, patch)
2021-10-10 17:32 PDT
,
Wenson Hsieh
no flags
Details
Formatted Diff
Diff
For EWS
(97.22 KB, patch)
2021-10-11 12:45 PDT
,
Wenson Hsieh
no flags
Details
Formatted Diff
Diff
Show Obsolete
(4)
View All
Add attachment
proposed patch, testcase, etc.
Wenson Hsieh
Comment 1
2021-10-10 16:06:53 PDT
Comment hidden (obsolete)
Created
attachment 440739
[details]
For EWS
Wenson Hsieh
Comment 2
2021-10-10 16:34:55 PDT
Comment hidden (obsolete)
Created
attachment 440740
[details]
For EWS
Wenson Hsieh
Comment 3
2021-10-10 17:18:44 PDT
Comment hidden (obsolete)
Created
attachment 440745
[details]
For EWS
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
Created
attachment 440824
[details]
For EWS
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
<
rdar://problem/84119482
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug