Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2fed4020085ce890460e9adaa800e7c01afa01b2
      
https://github.com/WebKit/WebKit/commit/2fed4020085ce890460e9adaa800e7c01afa01b2
  Author: Kimmo Kinnunen <kkinnu...@apple.com>
  Date:   2023-05-19 (Fri, 19 May 2023)

  Changed paths:
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
    M Source/WebKit/Resources/Signposts/SystemTracePoints.plist
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    R Source/WebKit/WebProcess/GPU/graphics/DisplayListRecorderFlushIdentifier.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h

  Log Message:
  -----------
  RemoteImageBufferProxy waits flushes in a dedicated work queue
https://bugs.webkit.org/show_bug.cgi?id=256694
rdar://109257081

Reviewed by Matt Woodrow.

The wait semaphore would be moved to dedicated work queue and waited
upon. When the semaphore would signal, the work queue would wake up
the possible multiple waiters. This behavior is a bit redundant.

Instead, first waiter waits on the semaphore, and subsequent waiters
query the result of the first waiter. The timeout is not exact, as
it will be at maximum the timeout of the first waiter. However, all
current waiters have the same timeout. Subsequent commits might make
this more rigorous, when the pattern will be moved to new abstraction
IPC::Fence.

Removes DisplayListRecorderFlushIdentifier, it is not useful or used.

* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/Resources/Signposts/SystemTracePoints.plist:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/DisplayListRecorderFlushIdentifier.h: 
Removed.
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxyFlushFence::create):
(WebKit::RemoteImageBufferProxyFlushFence::~RemoteImageBufferProxyFlushFence):
(WebKit::RemoteImageBufferProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferProxyFlushFence::forceSignal):
(WebKit::RemoteImageBufferProxyFlushFence::RemoteImageBufferProxyFlushFence):
(WebKit::RemoteImageBufferProxyFlushFence::WTF_GUARDED_BY_LOCK):
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):
(WebKit::RemoteImageBufferProxy::backingStoreWillChange):
(WebKit::RemoteImageBufferProxy::clearBackend):
(WebKit::RemoteImageBufferProxy::flushDrawingContext):
(WebKit::RemoteImageBufferProxy::flushDrawingContextAsync):
(WebKit::RemoteImageBufferProxy::createFlusher):
(WebKit::RemoteImageBufferProxy::prepareForBackingStoreChange):
(WebKit::RemoteImageBufferProxy::hasPendingFlush const): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::markCompletedFlush): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::identifierForCompletedFlush const): 
Deleted.
(WebKit::RemoteImageBufferProxyFlushState::cancel): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::lastSentFlushIdentifier const): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::addPendingFlush): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:

Canonical link: https://commits.webkit.org/264240@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to