Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b3f5ccb38cd2800b166d39aeb366186f94a38f93
https://github.com/WebKit/WebKit/commit/b3f5ccb38cd2800b166d39aeb366186f94a38f93
Author: Matt Woodrow <[email protected]>
Date: 2024-03-20 (Wed, 20 Mar 2024)
Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
Log Message:
-----------
Speedometer 3: buildTransaction spends a lot of time destroying mach port
objects.
https://bugs.webkit.org/show_bug.cgi?id=270549
<rdar://123661156>
Reviewed by Kimmo Kinnunen.
Flusing a RemoteImageBufferSetProxy waits on both the `didPrepareForDisplay`
message
to be delivered to the WorkQueue, and the semaphore to be signaled when drawing
command
flushing is completed.
This was previously required, since building of the transaction on the main
thread was
blocked on the didPrepareForDisplay message, so it was delivered as early as
possible.
The current state is that all waiting happens on a background thread, so
there's no
longer any benefit to having two separate notifications.
This changes moves sending of the didPrepareForDisplay message to happen once
drawing
flushing is completed, and removes the seamphore signaling.
This should be a small performance win in some cases, since we no longer need
to allocate
and destroy the semaphore objects.
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::RemoteImageBufferSet):
(WebKit::RemoteImageBufferSet::endPrepareForDisplay):
(WebKit::RemoteImageBufferSet::ensureBufferForDisplay):
(WebKit::RemoteImageBufferSet::setFlushSignal): Deleted.
(WebKit::RemoteImageBufferSet::flush): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay):
(WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp:
(WebKit::RemoteImageBufferSetProxyFlushFence::create):
(WebKit::RemoteImageBufferSetProxyFlushFence::waitFor):
(WebKit::RemoteImageBufferSetProxyFlushFence::RemoteImageBufferSetProxyFlushFence):
(WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync):
(WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay):
(WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence):
Deleted.
(WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent): Deleted.
(WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal): Deleted.
(): Deleted.
(WebKit::RemoteImageBufferSetProxy::createFlushFence): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay):
Canonical link: https://commits.webkit.org/276421@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes