Title: [281058] trunk/Source
- Revision
- 281058
- Author
- [email protected]
- Date
- 2021-08-14 16:22:58 -0700 (Sat, 14 Aug 2021)
Log Message
[GPU Process] REGRESSION: WebContent often crashes when opening a Google spreadsheet with charts
https://bugs.webkit.org/show_bug.cgi?id=229106
<rdar://81806877>
Reviewed by Wenson Hsieh.
Source/WebCore:
Add a method to return the backend of the ImageBuffer.
* platform/graphics/ConcreteImageBuffer.h:
* platform/graphics/ImageBuffer.h:
Source/WebKit:
Don't resume processing the DisplayList of an ImageBuffer until its
backend is created.
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::didAppendData):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (281057 => 281058)
--- trunk/Source/WebCore/ChangeLog 2021-08-14 17:38:26 UTC (rev 281057)
+++ trunk/Source/WebCore/ChangeLog 2021-08-14 23:22:58 UTC (rev 281058)
@@ -1,3 +1,16 @@
+2021-08-14 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] REGRESSION: WebContent often crashes when opening a Google spreadsheet with charts
+ https://bugs.webkit.org/show_bug.cgi?id=229106
+ <rdar://81806877>
+
+ Reviewed by Wenson Hsieh.
+
+ Add a method to return the backend of the ImageBuffer.
+
+ * platform/graphics/ConcreteImageBuffer.h:
+ * platform/graphics/ImageBuffer.h:
+
2021-08-13 Chris Dumez <[email protected]>
Add Cross-Origin-Embedder-Policy support for Blob URLs
Modified: trunk/Source/WebCore/platform/graphics/ConcreteImageBuffer.h (281057 => 281058)
--- trunk/Source/WebCore/platform/graphics/ConcreteImageBuffer.h 2021-08-14 17:38:26 UTC (rev 281057)
+++ trunk/Source/WebCore/platform/graphics/ConcreteImageBuffer.h 2021-08-14 23:22:58 UTC (rev 281058)
@@ -71,6 +71,7 @@
}
void clearBackend() override { m_backend = nullptr; }
+ ImageBufferBackend* backend() const override { return m_backend.get(); }
ImageBufferBackend* ensureBackendCreated() const override { return m_backend.get(); }
RenderingResourceIdentifier renderingResourceIdentifier() const override { return m_renderingResourceIdentifier; }
Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.h (281057 => 281058)
--- trunk/Source/WebCore/platform/graphics/ImageBuffer.h 2021-08-14 17:38:26 UTC (rev 281057)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.h 2021-08-14 23:22:58 UTC (rev 281058)
@@ -66,6 +66,7 @@
virtual void setBackend(std::unique_ptr<ImageBufferBackend>&&) = 0;
virtual void clearBackend() = 0;
+ virtual ImageBufferBackend* backend() const = 0;
virtual ImageBufferBackend* ensureBackendCreated() const = 0;
virtual RenderingMode renderingMode() const = 0;
Modified: trunk/Source/WebKit/ChangeLog (281057 => 281058)
--- trunk/Source/WebKit/ChangeLog 2021-08-14 17:38:26 UTC (rev 281057)
+++ trunk/Source/WebKit/ChangeLog 2021-08-14 23:22:58 UTC (rev 281058)
@@ -1,3 +1,17 @@
+2021-08-14 Said Abou-Hallawa <[email protected]>
+
+ [GPU Process] REGRESSION: WebContent often crashes when opening a Google spreadsheet with charts
+ https://bugs.webkit.org/show_bug.cgi?id=229106
+ <rdar://81806877>
+
+ Reviewed by Wenson Hsieh.
+
+ Don't resume processing the DisplayList of an ImageBuffer until its
+ backend is created.
+
+ * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
+ (WebKit::RemoteRenderingBackendProxy::didAppendData):
+
2021-08-13 Kate Cheney <[email protected]>
Check quarantine bits before rendering local files
Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp (281057 => 281058)
--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp 2021-08-14 17:38:26 UTC (rev 281057)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp 2021-08-14 23:22:58 UTC (rev 281058)
@@ -344,7 +344,8 @@
bool wasEmpty = sharedHandle->advance(numberOfBytes) == numberOfBytes;
if (!wasEmpty || didChangeItemBuffer == DisplayList::DidChangeItemBuffer::Yes) {
if (m_deferredWakeupMessageArguments) {
- if (sharedHandle->tryToResume({ m_deferredWakeupMessageArguments->offset, m_deferredWakeupMessageArguments->destinationImageBufferIdentifier.toUInt64() })) {
+ auto imageBuffer = m_remoteResourceCacheProxy.cachedImageBuffer(m_deferredWakeupMessageArguments->destinationImageBufferIdentifier);
+ if (imageBuffer && imageBuffer->backend() && sharedHandle->tryToResume({ m_deferredWakeupMessageArguments->offset, m_deferredWakeupMessageArguments->destinationImageBufferIdentifier.toUInt64() })) {
m_parameters.resumeDisplayListSemaphore.signal();
m_deferredWakeupMessageArguments = std::nullopt;
m_remainingItemsToAppendBeforeSendingWakeup = 0;
@@ -358,8 +359,9 @@
sendDeferredWakeupMessageIfNeeded();
+ auto imageBuffer = m_remoteResourceCacheProxy.cachedImageBuffer(destinationImageBuffer);
auto offsetToRead = sharedHandle->writableOffset() - numberOfBytes;
- if (sharedHandle->tryToResume({ offsetToRead, destinationImageBuffer.toUInt64() })) {
+ if (imageBuffer && imageBuffer->backend() && sharedHandle->tryToResume({ offsetToRead, destinationImageBuffer.toUInt64() })) {
m_parameters.resumeDisplayListSemaphore.signal();
return;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes