Title: [281059] branches/safari-612.1.27.0-branch/Source
Revision
281059
Author
[email protected]
Date
2021-08-14 22:25:10 -0700 (Sat, 14 Aug 2021)

Log Message

Cherry-pick r281058. rdar://problem/81947517

    [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):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281058 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-612.1.27.0-branch/Source/WebCore/ChangeLog (281058 => 281059)


--- branches/safari-612.1.27.0-branch/Source/WebCore/ChangeLog	2021-08-14 23:22:58 UTC (rev 281058)
+++ branches/safari-612.1.27.0-branch/Source/WebCore/ChangeLog	2021-08-15 05:25:10 UTC (rev 281059)
@@ -1,3 +1,44 @@
+2021-08-14  Alan Coon  <[email protected]>
+
+        Cherry-pick r281058. rdar://problem/81947517
+
+    [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):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281058 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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-12  Alan Coon  <[email protected]>
 
         Cherry-pick r280776. rdar://problem/81861548

Modified: branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ConcreteImageBuffer.h (281058 => 281059)


--- branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ConcreteImageBuffer.h	2021-08-14 23:22:58 UTC (rev 281058)
+++ branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ConcreteImageBuffer.h	2021-08-15 05:25:10 UTC (rev 281059)
@@ -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: branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ImageBuffer.h (281058 => 281059)


--- branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ImageBuffer.h	2021-08-14 23:22:58 UTC (rev 281058)
+++ branches/safari-612.1.27.0-branch/Source/WebCore/platform/graphics/ImageBuffer.h	2021-08-15 05:25:10 UTC (rev 281059)
@@ -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: branches/safari-612.1.27.0-branch/Source/WebKit/ChangeLog (281058 => 281059)


--- branches/safari-612.1.27.0-branch/Source/WebKit/ChangeLog	2021-08-14 23:22:58 UTC (rev 281058)
+++ branches/safari-612.1.27.0-branch/Source/WebKit/ChangeLog	2021-08-15 05:25:10 UTC (rev 281059)
@@ -1,3 +1,45 @@
+2021-08-14  Alan Coon  <[email protected]>
+
+        Cherry-pick r281058. rdar://problem/81947517
+
+    [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):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281058 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    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  Alan Coon  <[email protected]>
 
         Cherry-pick r281044. rdar://problem/81918718

Modified: branches/safari-612.1.27.0-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp (281058 => 281059)


--- branches/safari-612.1.27.0-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2021-08-14 23:22:58 UTC (rev 281058)
+++ branches/safari-612.1.27.0-branch/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2021-08-15 05:25:10 UTC (rev 281059)
@@ -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

Reply via email to