Title: [269943] trunk/Source/WebKit
Revision
269943
Author
[email protected]
Date
2020-11-17 22:15:45 -0800 (Tue, 17 Nov 2020)

Log Message

GPU-process-hosted RemoteLayerBackingStore should flush off the main thread
https://bugs.webkit.org/show_bug.cgi?id=219063

Reviewed by Simon Fraser.

* GPUProcess/graphics/RemoteRenderingBackend.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::display):
Construct the ImageBuffer flusher /after/ submitting the final DisplayList,
so that it takes the correct flush identifier.

* GPUProcess/graphics/RemoteImageBuffer.h:
* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didFlush):
(WebKit::RemoteRenderingBackend::flushDisplayListWasCommitted): Deleted.
* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::didFlush):
(WebKit::RemoteImageBufferProxy::lastSentFlushIdentifier const):
(WebKit::RemoteImageBufferProxy::waitForDidFlushOnSecondaryThread):
(WebKit::RemoteImageBufferProxy::hasPendingFlush const):
(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):
(WebKit::ThreadSafeRemoteImageBufferFlusher::ThreadSafeRemoteImageBufferFlusher):
(WebKit::RemoteImageBufferProxy::commitFlushDisplayList): Deleted.
(WebKit::RemoteImageBufferProxy::isPendingFlush const): Deleted.
(WebKit::RemoteImageBufferProxy::timeoutWaitForFlushDisplayListWasCommitted): Deleted.
Some renames:

Rename flushDisplayListWasCommitted to didFlush; this is the back-message from
GPU process to Web Content process that a FlushContext display list item was completed successfully.
Rename isPendingFlush to hasPendingFlush, for grammar.
Rename timeoutWaitForFlushDisplayListWasCommitted to waitForDidFlushWithTimeout, for similar reasons.
Rename waitForFlushDisplayListWasCommitted to waitForDidFlush.
Rename commitFlushDisplayList to didFlush.

* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
(WebKit::RemoteRenderingBackendProxy::didFlush):
(WebKit::RemoteRenderingBackendProxy::waitForFlushDisplayListWasCommitted): Deleted.
(WebKit::RemoteRenderingBackendProxy::flushDisplayListWasCommitted): Deleted.
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
Reimplement ThreadSafeRemoteImageBufferFlusher such that it waits
(on the RemoteLayerTreeDrawingArea CommitQueue, in the only current use of it)
for the correct flush reply to come in before continuing. This is analogous
to what we do for in-process buffers, where we call CGContextFlush()
in the flusher.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (269942 => 269943)


--- trunk/Source/WebKit/ChangeLog	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/ChangeLog	2020-11-18 06:15:45 UTC (rev 269943)
@@ -1,3 +1,52 @@
+2020-11-17  Tim Horton  <[email protected]>
+
+        GPU-process-hosted RemoteLayerBackingStore should flush off the main thread
+        https://bugs.webkit.org/show_bug.cgi?id=219063
+
+        Reviewed by Simon Fraser.
+
+        * GPUProcess/graphics/RemoteRenderingBackend.h:
+        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
+        (WebKit::RemoteLayerBackingStore::display):
+        Construct the ImageBuffer flusher /after/ submitting the final DisplayList,
+        so that it takes the correct flush identifier.
+
+        * GPUProcess/graphics/RemoteImageBuffer.h:
+        * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+        (WebKit::RemoteRenderingBackend::didFlush):
+        (WebKit::RemoteRenderingBackend::flushDisplayListWasCommitted): Deleted.
+        * WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
+        (WebKit::RemoteImageBufferProxy::didFlush):
+        (WebKit::RemoteImageBufferProxy::lastSentFlushIdentifier const):
+        (WebKit::RemoteImageBufferProxy::waitForDidFlushOnSecondaryThread):
+        (WebKit::RemoteImageBufferProxy::hasPendingFlush const):
+        (WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):
+        (WebKit::ThreadSafeRemoteImageBufferFlusher::ThreadSafeRemoteImageBufferFlusher):
+        (WebKit::RemoteImageBufferProxy::commitFlushDisplayList): Deleted.
+        (WebKit::RemoteImageBufferProxy::isPendingFlush const): Deleted.
+        (WebKit::RemoteImageBufferProxy::timeoutWaitForFlushDisplayListWasCommitted): Deleted.
+        Some renames:
+
+        Rename flushDisplayListWasCommitted to didFlush; this is the back-message from
+        GPU process to Web Content process that a FlushContext display list item was completed successfully.
+        Rename isPendingFlush to hasPendingFlush, for grammar.
+        Rename timeoutWaitForFlushDisplayListWasCommitted to waitForDidFlushWithTimeout, for similar reasons.
+        Rename waitForFlushDisplayListWasCommitted to waitForDidFlush.
+        Rename commitFlushDisplayList to didFlush.
+
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
+        (WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
+        (WebKit::RemoteRenderingBackendProxy::didFlush):
+        (WebKit::RemoteRenderingBackendProxy::waitForFlushDisplayListWasCommitted): Deleted.
+        (WebKit::RemoteRenderingBackendProxy::flushDisplayListWasCommitted): Deleted.
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
+        Reimplement ThreadSafeRemoteImageBufferFlusher such that it waits
+        (on the RemoteLayerTreeDrawingArea CommitQueue, in the only current use of it)
+        for the correct flush reply to come in before continuing. This is analogous
+        to what we do for in-process buffers, where we call CGContextFlush()
+        in the flusher.
+
 2020-11-17  Chris Dumez  <[email protected]>
 
         [iOS] ASSERTION FAILED: Completion handler should always be called under WebKit::GPUProcess::didReceiveMessage

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h (269942 => 269943)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h	2020-11-18 06:15:45 UTC (rev 269943)
@@ -87,7 +87,7 @@
         if (item.is<WebCore::DisplayList::FlushContext>()) {
             BaseConcreteImageBuffer::flushContext();
             auto identifier = item.get<WebCore::DisplayList::FlushContext>().identifier();
-            m_remoteRenderingBackend.flushDisplayListWasCommitted(identifier, m_renderingResourceIdentifier);
+            m_remoteRenderingBackend.didFlush(identifier, m_renderingResourceIdentifier);
             return true;
         }
 

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (269942 => 269943)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2020-11-18 06:15:45 UTC (rev 269943)
@@ -104,9 +104,9 @@
     send(Messages::RemoteRenderingBackendProxy::ImageBufferBackendWasCreated(logicalSize, backendSize, resolutionScale, colorSpace, pixelFormat, WTFMove(handle), renderingResourceIdentifier), m_renderingBackendIdentifier);
 }
 
-void RemoteRenderingBackend::flushDisplayListWasCommitted(DisplayList::FlushIdentifier flushIdentifier, RenderingResourceIdentifier renderingResourceIdentifier)
+void RemoteRenderingBackend::didFlush(DisplayList::FlushIdentifier flushIdentifier, RenderingResourceIdentifier renderingResourceIdentifier)
 {
-    send(Messages::RemoteRenderingBackendProxy::FlushDisplayListWasCommitted(flushIdentifier, renderingResourceIdentifier), m_renderingBackendIdentifier);
+    send(Messages::RemoteRenderingBackendProxy::DidFlush(flushIdentifier, renderingResourceIdentifier), m_renderingBackendIdentifier);
 }
 
 void RemoteRenderingBackend::createImageBuffer(const FloatSize& logicalSize, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace, PixelFormat pixelFormat, RenderingResourceIdentifier renderingResourceIdentifier)

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h (269942 => 269943)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h	2020-11-18 06:15:45 UTC (rev 269943)
@@ -71,7 +71,7 @@
 
     // Messages to be sent.
     void imageBufferBackendWasCreated(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& backendSize, float resolutionScale, WebCore::ColorSpace, WebCore::PixelFormat, ImageBufferBackendHandle, WebCore::RenderingResourceIdentifier);
-    void flushDisplayListWasCommitted(WebCore::DisplayList::FlushIdentifier, WebCore::RenderingResourceIdentifier);
+    void didFlush(WebCore::DisplayList::FlushIdentifier, WebCore::RenderingResourceIdentifier);
 
     void setNextItemBufferToRead(WebCore::DisplayList::ItemBufferIdentifier);
 

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm (269942 => 269943)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm	2020-11-18 06:15:45 UTC (rev 269943)
@@ -313,13 +313,13 @@
     m_dirtyRegion = WebCore::Region();
     m_paintingRects.clear();
 
-    m_frontBufferFlusher = m_frontBuffer.imageBuffer->createFlusher();
-
     m_layer->owner()->platformCALayerLayerDidDisplay(m_layer);
 
     // FIXME: This method has a weird name. This is "submit work".
     m_frontBuffer.imageBuffer->flushDrawingContextAndCommit();
 
+    m_frontBufferFlusher = m_frontBuffer.imageBuffer->createFlusher();
+
     return true;
 }
 

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h (269942 => 269943)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h	2020-11-18 06:15:45 UTC (rev 269943)
@@ -34,29 +34,15 @@
 #include <WebCore/DisplayListImageBuffer.h>
 #include <WebCore/DisplayListItems.h>
 #include <WebCore/DisplayListRecorder.h>
+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
 #include <wtf/SystemTracing.h>
 
 namespace WebKit {
 
 class RemoteRenderingBackend;
+template<typename BackendType> class ThreadSafeRemoteImageBufferFlusher;
 
-class ThreadSafeRemoteImageBufferFlusher : public WebCore::ThreadSafeImageBufferFlusher {
-    WTF_MAKE_FAST_ALLOCATED;
-public:
-    ThreadSafeRemoteImageBufferFlusher(WebCore::ImageBuffer& imageBuffer)
-    {
-        // FIXME: We shouldn't synchronously wait on the flush until flush() is called, but have to invent
-        // a thread-safe way to wait on the incoming message.
-        imageBuffer.flushDrawingContext();
-    }
-
-    void flush() override
-    {
-    }
-
-private:
-};
-
 template<typename BackendType>
 class RemoteImageBufferProxy : public WebCore::DisplayList::ImageBuffer<BackendType>, public WebCore::DisplayList::Recorder::Delegate, public WebCore::DisplayList::ItemBufferWritingClient {
     using BaseDisplayListImageBuffer = WebCore::DisplayList::ImageBuffer<BackendType>;
@@ -90,9 +76,11 @@
         m_backend = BackendType::create(logicalSize, backendSize, resolutionScale, colorSpace, pixelFormat, WTFMove(handle));
     }
 
-    void commitFlushDisplayList(WebCore::DisplayList::FlushIdentifier flushIdentifier)
+    void didFlush(WebCore::DisplayList::FlushIdentifier flushIdentifier)
     {
+        auto locker = holdLock(m_receivedFlushIdentifierLock);
         m_receivedFlushIdentifier = flushIdentifier;
+        m_receivedFlushIdentifierChangedCondition.notifyAll();
     }
 
     const WebCore::FloatSize& size() const { return m_size; }
@@ -107,7 +95,23 @@
         return m_backend->createImageBufferBackendHandle();
     }
 
+    WebCore::DisplayList::FlushIdentifier lastSentFlushIdentifier() const { return m_sentFlushIdentifier; }
+
+    void waitForDidFlushOnSecondaryThread(WebCore::DisplayList::FlushIdentifier targetFlushIdentifier)
+    {
+        ASSERT(!isMainThread());
+        auto locker = holdLock(m_receivedFlushIdentifierLock);
+        m_receivedFlushIdentifierChangedCondition.wait(m_receivedFlushIdentifierLock, [&] {
+            return m_receivedFlushIdentifier == targetFlushIdentifier;
+        });
+
+        // Nothing should have sent more drawing commands to the GPU process
+        // while waiting for this ImageBuffer to be flushed.
+        ASSERT(m_sentFlushIdentifier == targetFlushIdentifier);
+    }
+
 protected:
+    friend class RemoteRenderingBackend;
     RemoteImageBufferProxy(const WebCore::FloatSize& size, WebCore::RenderingMode renderingMode, float resolutionScale, WebCore::ColorSpace colorSpace, WebCore::PixelFormat pixelFormat, RemoteRenderingBackendProxy& remoteRenderingBackendProxy)
         : BaseDisplayListImageBuffer(size, this)
         , m_remoteRenderingBackendProxy(makeWeakPtr(remoteRenderingBackendProxy))
@@ -124,9 +128,9 @@
         m_drawingContext.displayList().setTracksDrawingItemExtents(false);
     }
 
-    bool isPendingFlush() const { return m_sentFlushIdentifier != m_receivedFlushIdentifier; }
+    bool hasPendingFlush() const { return m_sentFlushIdentifier != m_receivedFlushIdentifier; }
 
-    void timeoutWaitForFlushDisplayListWasCommitted()
+    void waitForDidFlushWithTimeout()
     {
         if (!m_remoteRenderingBackendProxy)
             return;
@@ -133,8 +137,8 @@
 
         // Wait for our DisplayList to be flushed but do not hang.
         static constexpr unsigned maxWaitingFlush = 3;
-        for (unsigned numWaitingFlush = 0; numWaitingFlush < maxWaitingFlush && isPendingFlush(); ++numWaitingFlush)
-            m_remoteRenderingBackendProxy->waitForFlushDisplayListWasCommitted();
+        for (unsigned numWaitingFlush = 0; numWaitingFlush < maxWaitingFlush && hasPendingFlush(); ++numWaitingFlush)
+            m_remoteRenderingBackendProxy->waitForDidFlush();
     }
 
     BackendType* ensureBackendCreated() const override
@@ -181,7 +185,7 @@
     {
         TraceScope tracingScope(FlushRemoteImageBufferStart, FlushRemoteImageBufferEnd);
         flushDrawingContextAndCommit();
-        timeoutWaitForFlushDisplayListWasCommitted();
+        waitForDidFlushWithTimeout();
     }
 
     void flushDrawingContextAndCommit() override
@@ -337,10 +341,12 @@
 
     std::unique_ptr<WebCore::ThreadSafeImageBufferFlusher> createFlusher() override
     {
-        return WTF::makeUnique<ThreadSafeRemoteImageBufferFlusher>(*this);
+        return WTF::makeUnique<ThreadSafeRemoteImageBufferFlusher<BackendType>>(*this);
     }
 
     WebCore::DisplayList::FlushIdentifier m_sentFlushIdentifier;
+    Lock m_receivedFlushIdentifierLock;
+    Condition m_receivedFlushIdentifierChangedCondition;
     WebCore::DisplayList::FlushIdentifier m_receivedFlushIdentifier;
     WeakPtr<RemoteRenderingBackendProxy> m_remoteRenderingBackendProxy;
     size_t m_itemCountInCurrentDisplayList { 0 };
@@ -351,6 +357,26 @@
     WebCore::PixelFormat m_pixelFormat;
 };
 
+template<typename BackendType>
+class ThreadSafeRemoteImageBufferFlusher final : public WebCore::ThreadSafeImageBufferFlusher {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    ThreadSafeRemoteImageBufferFlusher(RemoteImageBufferProxy<BackendType>& imageBuffer)
+        : m_imageBuffer(imageBuffer)
+        , m_targetFlushIdentifier(imageBuffer.lastSentFlushIdentifier())
+    {
+    }
+
+    void flush() final
+    {
+        m_imageBuffer->waitForDidFlushOnSecondaryThread(m_targetFlushIdentifier);
+    }
+
+private:
+    Ref<RemoteImageBufferProxy<BackendType>> m_imageBuffer;
+    WebCore::DisplayList::FlushIdentifier m_targetFlushIdentifier;
+};
+
 } // namespace WebKit
 
 #endif // ENABLE(GPU_PROCESS)

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp (269942 => 269943)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2020-11-18 06:15:45 UTC (rev 269943)
@@ -118,10 +118,10 @@
     return connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::ImageBufferBackendWasCreated>(m_renderingBackendIdentifier, 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
 }
 
-bool RemoteRenderingBackendProxy::waitForFlushDisplayListWasCommitted()
+bool RemoteRenderingBackendProxy::waitForDidFlush()
 {
     Ref<IPC::Connection> connection = WebProcess::singleton().ensureGPUProcessConnection().connection();
-    return connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::FlushDisplayListWasCommitted>(m_renderingBackendIdentifier, 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
+    return connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::DidFlush>(m_renderingBackendIdentifier, 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
 }
 
 RefPtr<ImageBuffer> RemoteRenderingBackendProxy::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace, PixelFormat pixelFormat)
@@ -195,7 +195,7 @@
         downcast<UnacceleratedRemoteImageBufferProxy>(*imageBuffer).createBackend(logicalSize, backendSize, resolutionScale, colorSpace, pixelFormat, WTFMove(handle));
 }
 
-void RemoteRenderingBackendProxy::flushDisplayListWasCommitted(DisplayList::FlushIdentifier flushIdentifier, RenderingResourceIdentifier renderingResourceIdentifier)
+void RemoteRenderingBackendProxy::didFlush(DisplayList::FlushIdentifier flushIdentifier, RenderingResourceIdentifier renderingResourceIdentifier)
 {
     auto imageBuffer = m_remoteResourceCacheProxy.cachedImageBuffer(renderingResourceIdentifier);
     if (!imageBuffer)
@@ -202,9 +202,9 @@
         return;
 
     if (imageBuffer->isAccelerated())
-        downcast<AcceleratedRemoteImageBufferProxy>(*imageBuffer).commitFlushDisplayList(flushIdentifier);
+        downcast<AcceleratedRemoteImageBufferProxy>(*imageBuffer).didFlush(flushIdentifier);
     else
-        downcast<UnacceleratedRemoteImageBufferProxy>(*imageBuffer).commitFlushDisplayList(flushIdentifier);
+        downcast<UnacceleratedRemoteImageBufferProxy>(*imageBuffer).didFlush(flushIdentifier);
 }
 
 void RemoteRenderingBackendProxy::updateReusableHandles()

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h (269942 => 269943)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2020-11-18 06:15:45 UTC (rev 269943)
@@ -82,7 +82,7 @@
     void releaseRemoteResource(WebCore::RenderingResourceIdentifier);
 
     bool waitForImageBufferBackendWasCreated();
-    bool waitForFlushDisplayListWasCommitted();
+    bool waitForDidFlush();
 
 private:
     RemoteRenderingBackendProxy();
@@ -96,7 +96,7 @@
 
     // Messages to be received.
     void imageBufferBackendWasCreated(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& backendSize, float resolutionScale, WebCore::ColorSpace, WebCore::PixelFormat, ImageBufferBackendHandle, WebCore::RenderingResourceIdentifier);
-    void flushDisplayListWasCommitted(WebCore::DisplayList::FlushIdentifier, WebCore::RenderingResourceIdentifier);
+    void didFlush(WebCore::DisplayList::FlushIdentifier, WebCore::RenderingResourceIdentifier);
 
     RemoteResourceCacheProxy m_remoteResourceCacheProxy { *this };
     HashMap<WebCore::DisplayList::ItemBufferIdentifier, RefPtr<DisplayListWriterHandle>> m_sharedDisplayListHandles;

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in (269942 => 269943)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in	2020-11-18 05:09:50 UTC (rev 269942)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in	2020-11-18 06:15:45 UTC (rev 269943)
@@ -24,7 +24,7 @@
 
 messages -> RemoteRenderingBackendProxy NotRefCounted {
     ImageBufferBackendWasCreated(WebCore::FloatSize logicalSize, WebCore::IntSize backendSize, float resolutionScale, WebCore::ColorSpace colorSpace, enum:uint8_t WebCore::PixelFormat pixelFormat, WebKit::ImageBufferBackendHandle handle, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
-    FlushDisplayListWasCommitted(WebCore::DisplayList::FlushIdentifier flushIdentifier, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
+    DidFlush(WebCore::DisplayList::FlushIdentifier flushIdentifier, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
 }
 
 #endif // ENABLE(GPU_PROCESS)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to