[webkit-changes] [WebKit/WebKit] de7538: REGRESSION(268243 at main) ~9/21: MotionMark Images 1...
Kimmo Kinnunen
noreply at github.com
Tue Sep 26 00:34:20 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: de7538e40c42ca6292df250a984e8737ca9baec6
https://github.com/WebKit/WebKit/commit/de7538e40c42ca6292df250a984e8737ca9baec6
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2023-09-26 (Tue, 26 Sep 2023)
Changed paths:
M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp
M Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.h
Log Message:
-----------
REGRESSION(268243 at main) ~9/21: MotionMark Images 15% on multiple models
https://bugs.webkit.org/show_bug.cgi?id=262032
rdar://115907669
Reviewed by Matt Woodrow.
Before 268243 at main, call ImageBuffer::copyImageForDrawing() would do the work:
if (can use ref)
<do the work of create native image reference>
else
<do the work of copy native image>
After 268243 at main, the invocation was moved to GraphicsContext::nativeImageForDrawing():
if (can use ref)
imageBuffer->createNativeImageReference();
else
imageBuffer->copyNativeImage();
ImageBufferShareableMappedIOSurfaceBackend happened to have an
copyNativeImage() override that caused a difference in behavior.
Remove this code altogether, it was a leftover from eariler days
working around the issues of backbuffer reading from WP and updating
from GPUP. This code was not needed anymore. It is not correct, as
IOSurface seed cannot be used to determine read cache invalidation
accurately. The seed is updated during HW rasterization, which happens
at undefined time. The drawing commands might be on their way from WP
-> GPUP or from GPUP -> CG, and not yet issued at the HW rasterization
level.
The read cache is cleared when the drawing context, e.g.
RemoteDisplayListRecorderProxy detects the first modification after a
copyNativeImage() call.
RemoteImageBufferProxy::backingStoreWillChange() notification will
invalidate the read caches.
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:
Canonical link: https://commits.webkit.org/268438@main
More information about the webkit-changes
mailing list