RESOLVED FIXED 219007
[GPU Process] Clean up recreating the ImageBufferBackend because of GPU crashing
https://bugs.webkit.org/show_bug.cgi?id=219007
Summary [GPU Process] Clean up recreating the ImageBufferBackend because of GPU crashing
Said Abou-Hallawa
Reported 2020-11-16 15:20:26 PST
No need to store the backend parameters in RemoteImageBufferProxy. They can be accessed from the current ImageBufferBackend via the ImageBuffer before the backend is cleared.
Attachments
Patch (27.39 KB, patch)
2020-11-16 16:41 PST, Said Abou-Hallawa
no flags
Patch (85.72 KB, patch)
2020-11-25 02:09 PST, Said Abou-Hallawa
ews-feeder: commit-queue-
Patch (96.21 KB, patch)
2020-11-25 21:49 PST, Said Abou-Hallawa
no flags
Patch (96.95 KB, patch)
2020-11-25 22:00 PST, Said Abou-Hallawa
no flags
Patch (99.01 KB, patch)
2020-11-26 00:47 PST, Said Abou-Hallawa
no flags
Patch (102.57 KB, patch)
2020-11-26 19:06 PST, Said Abou-Hallawa
no flags
Patch (103.05 KB, patch)
2020-11-27 03:08 PST, Said Abou-Hallawa
no flags
Patch (103.49 KB, patch)
2020-11-30 12:34 PST, Said Abou-Hallawa
no flags
Patch (103.44 KB, patch)
2020-11-30 12:43 PST, Said Abou-Hallawa
no flags
Patch (102.46 KB, patch)
2020-11-30 12:49 PST, Said Abou-Hallawa
no flags
Patch (99.65 KB, patch)
2020-11-30 13:30 PST, Said Abou-Hallawa
no flags
Patch (109.98 KB, patch)
2020-12-04 01:48 PST, Said Abou-Hallawa
simon.fraser: review+
Patch (109.94 KB, patch)
2020-12-04 11:21 PST, Said Abou-Hallawa
sabouhallawa: commit-queue-
Patch (110.13 KB, patch)
2020-12-04 12:31 PST, Said Abou-Hallawa
no flags
Said Abou-Hallawa
Comment 1 2020-11-16 16:41:54 PST
Simon Fraser (smfr)
Comment 2 2020-11-16 17:57:10 PST
Comment on attachment 414293 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414293&action=review > Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:187 > + void commitFlushDisplayList(WebCore::DisplayList::FlushIdentifier flushIdentifier) override We need to stop using "commit" and "flush" in ways we don't all understand.
Tim Horton
Comment 3 2020-11-16 18:40:09 PST
IMO (but obv. up for discussion): "submit" for "send display list/work to GPUP", like Wenson fixed elsewhere "flush" is "wait till all submitted work has actually been completed" "commit" should be just for the layer tree transactions (but is effectively the same as "submit" for a transaction) and no combination of the above means anything so we shouldn't see them adjacent to each other :)
Said Abou-Hallawa
Comment 4 2020-11-25 02:09:42 PST
Said Abou-Hallawa
Comment 5 2020-11-25 21:49:34 PST
Said Abou-Hallawa
Comment 6 2020-11-25 22:00:02 PST
Said Abou-Hallawa
Comment 7 2020-11-26 00:47:26 PST
Radar WebKit Bug Importer
Comment 8 2020-11-26 03:22:02 PST
Said Abou-Hallawa
Comment 9 2020-11-26 19:06:21 PST
Said Abou-Hallawa
Comment 10 2020-11-27 03:08:05 PST
Simon Fraser (smfr)
Comment 11 2020-11-30 10:50:10 PST
Comment on attachment 414935 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414935&action=review > Source/WebCore/platform/graphics/ConcreteImageBuffer.h:297 > + std::unique_ptr<ImageBufferBackend::Parameters> m_parameters; Why not just store a copy of the tiny struct? Much simpler. > Source/WebCore/platform/graphics/ImageBufferBackend.h:166 > + const Parameters& m_parameters; Who owns the original data? Would be safer to just store by value.
Said Abou-Hallawa
Comment 12 2020-11-30 12:34:53 PST
Said Abou-Hallawa
Comment 13 2020-11-30 12:43:17 PST
Said Abou-Hallawa
Comment 14 2020-11-30 12:49:24 PST
Said Abou-Hallawa
Comment 15 2020-11-30 13:30:29 PST
Said Abou-Hallawa
Comment 16 2020-11-30 13:34:37 PST
ImageBufferBackend::Parameters are saved by value in ImageBufferBackend and ConcreteImageBuffer. Renaming the flush/commit/flush functions was removed from this patch and will be addressed in a different patch.
Said Abou-Hallawa
Comment 17 2020-12-04 01:48:59 PST
Simon Fraser (smfr)
Comment 18 2020-12-04 10:54:41 PST
Comment on attachment 415395 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=415395&action=review > Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:124 > + auto backendSize = this->backendSize(); Doesn't seem worthwhile storing this in a local. > Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:108 > + return { static_cast<int>(CGBitmapContextGetWidth(context().platformContext())), static_cast<int>(CGBitmapContextGetHeight(context().platformContext())) }; Let's not fetch context().platformContext() twice.
Said Abou-Hallawa
Comment 19 2020-12-04 11:21:40 PST
Said Abou-Hallawa
Comment 20 2020-12-04 12:31:04 PST
Said Abou-Hallawa
Comment 21 2020-12-04 12:33:32 PST
Comment on attachment 415395 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=415395&action=review >> Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:124 >> + auto backendSize = this->backendSize(); > > Doesn't seem worthwhile storing this in a local. Actually it is worthy. sinkIntoNativeImage() destroys the backend. So we can't call backendSize() after calling sinkIntoNativeImage(). I put it back and I added a comment.
EWS
Comment 22 2020-12-04 14:30:50 PST
Committed r270458: <https://trac.webkit.org/changeset/270458> All reviewed patches have been landed. Closing bug and clearing flags on attachment 415445 [details].
Note You need to log in before you can comment on or make changes to this bug.