Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 57d42a4b3757962b89cc88e7da3ae63ac38eba32 https://github.com/WebKit/WebKit/commit/57d42a4b3757962b89cc88e7da3ae63ac38eba32 Author: Carlos Garcia Campos <cgar...@igalia.com> Date: 2024-12-26 (Thu, 26 Dec 2024)
Changed paths: A LayoutTests/platform/glib/printing/print-with-media-query-destory-expected.txt R LayoutTests/platform/gtk/printing/print-with-media-query-destory-expected.txt M LayoutTests/platform/wpe/TestExpectations M Source/WTF/wtf/glib/RunLoopSourcePriority.h M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.cpp M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.h M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreTile.cpp M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.cpp M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.h M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h M Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h M Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp M Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h M Source/WebKit/UIProcess/gtk/WebPageProxyGtk.cpp M Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.cpp M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedSceneState.h M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp M Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.h M Source/WebKit/WebProcess/WebPage/DrawingArea.h M Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in M Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp Log Message: ----------- [GTK] Improve force repaint implementation to reduce the amount of flaky ref tests https://bugs.webkit.org/show_bug.cgi?id=284524 Reviewed by Nikolas Zimmermann. Many ref tests are flaky because we are not properly taking the snapshot of either the reference or test. This patch reworks the force repaint implementation of the GTK port, with some parts also shared with WPE. This patch includes the following changes: - For GTK we try to take the snapshot by using the last committed buffer, instead of using GTK API to get the web view rendered contents. When not possible for whatever reason, we fall back to getting web view rendered contents. - Send the DispatchAfterEnsuringDrawing message to the web process to make sure we get another frame in the UI process with the frame we want. This also allows as to remove the timer in GTK port to wait for multiple frames, since now we know the next one is the one we want. - To make sure we use the new rendered frame the paint/snapshot methods return a bool indicating whether buffers were swapped in that paint. - In the web process force repaint has been reworked to follow what other ports do, calling Page::forceRepaintAllFrames() and then doing a synchronous layer flush where a composition is forced. In case of async force repaint, we wait for the composition triggered by the force repaint (using the composition request ID) to notify back the UI process. - Resize no longer uses force repaint, it either schedules a new layer flush if waiting for the renderer, or does a sync layer flush otherwise. - We don't really need a sync composition, so ThreadedCompositor::forceRepaint() has been removed, since it has always been unimplemented and we don't plan to implement it either. - GTK run loop priority for accelerated compositing timers (LayerFlush, CompositingThreadUpdate and DisplayRefreshMonitor) has been changed to be the same as WebCore timers to make sure a WebCore timer can't prevent a layer flush. This caused a timeout in one test in GTK port. This was not a problem in WPE because it already uses the same priority for those timers. * LayoutTests/platform/glib/printing/print-with-media-query-destory-expected.txt: Renamed from LayoutTests/platform/gtk/printing/print-with-media-query-destory-expected.txt. * LayoutTests/platform/wpe/TestExpectations: * Source/WTF/wtf/glib/RunLoopSourcePriority.h: * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.cpp: (WebCore::CoordinatedBackingStoreProxy::Update::waitUntilPaintingComplete): (WebCore::CoordinatedBackingStoreProxy::waitUntilPaintingComplete): * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreProxy.h: * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBackingStoreTile.cpp: (WebCore::CoordinatedBackingStoreTile::processPendingUpdates): * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp: (WebCore::CoordinatedPlatformLayer::waitUntilPaintingComplete): * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.h: * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.cpp: (WebCore::CoordinatedAcceleratedTileBuffer::serverWait): (WebCore::CoordinatedAcceleratedTileBuffer::waitUntilPaintingComplete): Deleted. * Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTileBuffer.h: * Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp: (_WebKitWebViewBasePrivate::_WebKitWebViewBasePrivate): (webkitWebViewBaseNextPresentationUpdateFrame): (webkitWebViewBaseDispose): (webkitWebViewBaseSnapshot): (webkitWebViewBaseDraw): (webkitWebViewBaseCallAfterNextPresentationUpdate): (createSkImageFromCairoSurface): (webkitWebViewBaseSnapshotFromWidget): (webkitWebViewBaseSnapshotForTesting): (_WebKitWebViewBasePrivate::nextPresentationUpdateTimerFired): Deleted. (webkitWebViewBaseNextPresentationUpdateMonitorStart): Deleted. (webkitWebViewBaseNextPresentationUpdateMonitorStop): Deleted. * Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h: * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchPresentationCallbacksAfterFlushingLayers): * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: * Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h: * Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp: (WebKit::AcceleratedBackingStoreDMABuf::rendererBufferMode): (WebKit::nativeImageFromGdkTexture): (WebKit::AcceleratedBackingStoreDMABuf::BufferDMABuf::asNativeImageForTesting const): (WebKit::AcceleratedBackingStoreDMABuf::BufferEGLImage::asNativeImageForTesting const): (WebKit::AcceleratedBackingStoreDMABuf::BufferGBM::asNativeImageForTesting const): (WebKit::AcceleratedBackingStoreDMABuf::BufferSHM::asNativeImageForTesting const): (WebKit::AcceleratedBackingStoreDMABuf::snapshot): (WebKit::AcceleratedBackingStoreDMABuf::paint): (WebKit::AcceleratedBackingStoreDMABuf::bufferAsNativeImageForTesting const): * Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h: * Source/WebKit/UIProcess/gtk/WebPageProxyGtk.cpp: (WebKit::WebPageProxy::callAfterNextPresentationUpdate): * Source/WebKit/UIProcess/wpe/WebPageProxyWPE.cpp: (WebKit::WebPageProxy::callAfterNextPresentationUpdate): * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::updateRenderingWithForcedRepaint): (WebKit::DrawingAreaCoordinatedGraphics::updateRenderingWithForcedRepaintAsync): (WebKit::DrawingAreaCoordinatedGraphics::updateGeometry): (WebKit::DrawingAreaCoordinatedGraphics::dispatchAfterEnsuringDrawing): (WebKit::DrawingAreaCoordinatedGraphics::dispatchPendingCallbacksAfterEnsuringDrawing): (WebKit::DrawingAreaCoordinatedGraphics::display): * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: (WebKit::LayerTreeHost::flushLayers): (WebKit::LayerTreeHost::layerFlushTimerFired): (WebKit::LayerTreeHost::forceRepaint): (WebKit::LayerTreeHost::forceRepaintAsync): (WebKit::LayerTreeHost::ensureDrawing): (WebKit::LayerTreeHost::sizeDidChange): (WebKit::LayerTreeHost::didComposite): * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::forceRepaint): Deleted. * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.h: * Source/WebKit/WebProcess/WebPage/DrawingArea.h: * Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in: * Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp: (WTR::PlatformWebView::windowSnapshotImage): (WTR::viewSnapshot): Deleted. Canonical link: https://commits.webkit.org/288306@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes