[webkit-changes] [WebKit/WebKit] f57f00: Add a way to test RemoteLayerBackingStore's copy-f...
mattwoodrow
noreply at github.com
Thu Jan 18 00:02:05 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f57f00ab6a22c7b846e9dda0fa296da77aa48e23
https://github.com/WebKit/WebKit/commit/f57f00ab6a22c7b846e9dda0fa296da77aa48e23
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2024-01-18 (Thu, 18 Jan 2024)
Changed paths:
A LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html
A LayoutTests/compositing/repaint/copy-forward-dirty-region.html
M LayoutTests/platform/gtk/TestExpectations
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ImageBuffer.cpp
M Source/WebCore/platform/graphics/ImageBuffer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayer.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayer.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp
M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h
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/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
M Tools/WebKitTestRunner/TestInvocation.cpp
M Tools/WebKitTestRunner/TestInvocation.h
Log Message:
-----------
Add a way to test RemoteLayerBackingStore's copy-forward code.
https://bugs.webkit.org/show_bug.cgi?id=266674
<rdar://problem/119905421>
Reviewed by Kimmo Kinnunen.
We can't currently test this, because WKTR always forces a full repaint.
This adds a 'dontForceRepaint()' option to the test runner, to request that no repaint is done
at the end of the test, and for it to just capture whatever pixel contents are currently available.
It also adds a purgeFrontBuffer/purgeBackBuffer method to the Internals interface, which try to
purge (faked via clearing the buffer contents) the relevant layer buffer for the element.
It adds three new tests, which would have caught each of the recent bugs (271908 at main, 272069 at main,
272304 at main) in this area.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html: Added.
* LayoutTests/compositing/repaint/copy-forward-dirty-region.html: Added.
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::purgeFrontBufferForTesting):
(WebCore::GraphicsLayer::purgeBackBufferForTesting):
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::forcePurgeForTesting):
* Source/WebCore/platform/graphics/ImageBuffer.h:
* Source/WebCore/platform/graphics/ImageBufferBackend.h:
(WebCore::ImageBufferBackend::forcePurgeForTesting):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::purgeFrontBufferForTesting):
(WebCore::GraphicsLayerCA::purgeBackBufferForTesting):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayer.h:
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:
(WebCore::ImageBufferIOSurfaceBackend::setNonVolatile):
(WebCore::ImageBufferIOSurfaceBackend::forcePurgeForTesting):
* Source/WebCore/platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::purgeFrontBufferForTesting):
(WebCore::RenderLayerBacking::purgeBackBufferForTesting):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::purgeFrontBuffer):
(WebCore::Internals::purgeBackBuffer):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::makeBuffersVolatile):
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::markSurfacesVolatile):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::purgeFrontBufferForTesting):
(WebKit::RemoteLayerBackingStore::purgeBackBufferForTesting):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::purgeFrontBufferForTesting):
(WebKit::RemoteLayerBackingStoreCollection::purgeBackBufferForTesting):
(WebKit::RemoteLayerBackingStoreCollection::sendMarkBuffersVolatile):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm:
(WebKit::RemoteLayerWithInProcessRenderingBackingStore::setBufferVolatile):
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::markSurfacesVolatile):
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp:
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setNonVolatile):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::forcePurgeForTesting):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::purgeFrontBufferForTesting):
(WebKit::PlatformCALayerRemote::purgeBackBufferForTesting):
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::done):
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::dump):
(WTR::dumpAfterWaitAttributeIsRemoved):
(WTR::InjectedBundlePage::frameDidChangeLocation):
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::notifyDone):
(WTR::TestRunner::forceImmediateCompletion):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::dontForceRepaint):
(WTR::TestRunner::shouldForceRepaint):
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::dumpResults):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
* Tools/WebKitTestRunner/TestInvocation.h:
Canonical link: https://commits.webkit.org/273169@main
More information about the webkit-changes
mailing list