Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4aad349224a3cf6246969fef86972f191b280fc1 https://github.com/WebKit/WebKit/commit/4aad349224a3cf6246969fef86972f191b280fc1 Author: Alejandro G. Castro <a...@igalia.com> Date: 2023-09-29 (Fri, 29 Sep 2023)
Changed paths: M Source/WTF/wtf/PlatformHave.h M Source/WebCore/SourcesGTK.txt M Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp R Source/WebCore/platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp R Source/WebCore/platform/graphics/gtk/DisplayRefreshMonitorGtk.h M Source/WebKit/PlatformGTK.cmake M Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp M Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h M Source/WebKit/Shared/Extensions/WebExtensionAlarmParameters.h M Source/WebKit/Sources.txt M Source/WebKit/SourcesCocoa.txt M Source/WebKit/SourcesGTK.txt M Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h A Source/WebKit/UIProcess/DisplayLink.cpp A Source/WebKit/UIProcess/DisplayLink.h A Source/WebKit/UIProcess/DisplayLinkProcessProxyClient.cpp A Source/WebKit/UIProcess/DisplayLinkProcessProxyClient.h M Source/WebKit/UIProcess/DrawingAreaProxy.cpp M Source/WebKit/UIProcess/DrawingAreaProxy.h M Source/WebKit/UIProcess/Extensions/WebExtensionAlarm.cpp M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/UIProcess/WebPageProxyInternals.h M Source/WebKit/UIProcess/WebProcessPool.h M Source/WebKit/UIProcess/WebProcessProxy.cpp M Source/WebKit/UIProcess/WebProcessProxy.h M Source/WebKit/UIProcess/WebProcessProxy.messages.in A Source/WebKit/UIProcess/glib/DisplayLinkGLib.cpp A Source/WebKit/UIProcess/glib/DisplayVBlankMonitor.cpp A Source/WebKit/UIProcess/glib/DisplayVBlankMonitor.h A Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.cpp A Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.h A Source/WebKit/UIProcess/glib/DisplayVBlankMonitorTimer.cpp A Source/WebKit/UIProcess/glib/DisplayVBlankMonitorTimer.h M Source/WebKit/UIProcess/gtk/ScreenManager.cpp M Source/WebKit/UIProcess/gtk/ScreenManager.h R Source/WebKit/UIProcess/mac/DisplayLink.cpp R Source/WebKit/UIProcess/mac/DisplayLink.h A Source/WebKit/UIProcess/mac/DisplayLinkMac.cpp R Source/WebKit/UIProcess/mac/DisplayLinkProcessProxyClient.cpp R Source/WebKit/UIProcess/mac/DisplayLinkProcessProxyClient.h M Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj 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/DrawingArea.messages.in M Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp M Source/WebKit/WebProcess/WebPage/EventDispatcher.h M Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in A Source/WebKit/WebProcess/WebPage/WebDisplayRefreshMonitor.cpp A Source/WebKit/WebProcess/WebPage/WebDisplayRefreshMonitor.h R Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp R Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h M Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm M Source/WebKit/WebProcess/WebProcess.cpp M Source/WebKit/WebProcess/WebProcess.h M Source/WebKit/WebProcess/WebProcess.messages.in Log Message: ----------- [GTK] Add a DisplayLink implementation https://bugs.webkit.org/show_bug.cgi?id=261673 Reviewed by Simon Fraser. Add DisplayLink implementation using DRM API when available to get the vblank signal from monitor. When DRM is not available we fallback to use a timer. The patch includes some refactorings needed to share the implementation with other ports for non-platform specific parts. The platform display ID is no longer generated based on the drawing area identifier, but assigned by the screen manager to every monitor. ThreadedDisplayRefreshMonitor and DisplayRefreshMonitorGtk are no longer needed now. * Source/WebCore/SourcesGTK.txt: * Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp: (WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor): (WebCore::DisplayRefreshMonitor::requestRefreshCallback): * Source/WebCore/platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: Removed. * Source/WebKit/PlatformGTK.cmake: * Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::create): (WebKit::ThreadedCompositor::ThreadedCompositor): (WebKit::ThreadedCompositor::invalidate): (WebKit::ThreadedCompositor::renderLayerTree): (WebKit::ThreadedCompositor::sceneUpdateFinished): (WebKit::ThreadedCompositor::frameComplete): * Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: * Source/WebKit/Sources.txt: * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/SourcesGTK.txt: * Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseUpdateDisplayID): (toplevelWindowConfigureEvent): (webkitWebViewBaseSetToplevelOnScreenWindow): (webkitWebViewBaseRealize): (toplevelWindowMonitorsChanged): (toplevelWindowRealized): (toplevelWindowUnrealized): (webkitWebViewBaseRoot): (webkitWebViewBaseUnroot): (webkitWebViewBaseCreateWebPage): (webkitWebViewBaseDidRelaunchWebProcess): * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::displayNominalFramesPerSecond): * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: * Source/WebKit/UIProcess/DisplayLink.cpp: Renamed from Source/WebKit/UIProcess/mac/DisplayLink.cpp. (WebKit::DisplayLink::DisplayLink): (WebKit::DisplayLink::~DisplayLink): (WebKit::DisplayLink::addObserver): (WebKit::DisplayLink::notifyObserversDisplayDidRefresh): (WebKit::DisplayLinkCollection::stopDisplayLinks): * Source/WebKit/UIProcess/DisplayLink.h: Renamed from Source/WebKit/UIProcess/mac/DisplayLink.h. * Source/WebKit/UIProcess/DisplayLinkProcessProxyClient.cpp: Renamed from Source/WebKit/UIProcess/mac/DisplayLinkProcessProxyClient.cpp. * Source/WebKit/UIProcess/DisplayLinkProcessProxyClient.h: Copied from Source/WebKit/UIProcess/mac/DisplayLinkProcessProxyClient.h. * Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h: * Source/WebKit/UIProcess/DrawingAreaProxy.h: * Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::Internals::Internals): (WebKit::WebPageProxy::sendWheelEvent): (WebKit::WebPageProxy::updateWheelEventActivityAfterProcessSwap): (WebKit::WebPageProxy::windowScreenDidChange): (WebKit::WebPageProxy::setHasActiveAnimatedScrolls): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/WebPageProxyInternals.h: * Source/WebKit/UIProcess/WebProcessPool.h: * Source/WebKit/UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::~WebProcessProxy): (WebKit::WebProcessProxy::connectionWillOpen): (WebKit::WebProcessProxy::processWillShutDown): (WebKit::WebProcessProxy::nominalFramesPerSecondForDisplay): (WebKit::WebProcessProxy::startDisplayLink): (WebKit::WebProcessProxy::stopDisplayLink): (WebKit::WebProcessProxy::setDisplayLinkPreferredFramesPerSecond): (WebKit::WebProcessProxy::setDisplayLinkForDisplayWantsFullSpeedUpdates): * Source/WebKit/UIProcess/WebProcessProxy.h: * Source/WebKit/UIProcess/WebProcessProxy.messages.in: * Source/WebKit/UIProcess/glib/DisplayLinkGLib.cpp: Renamed from Source/WebKit/UIProcess/mac/DisplayLinkProcessProxyClient.h. (WebKit::DisplayLink::platformInitialize): (WebKit::DisplayLink::platformFinalize): (WebKit::DisplayLink::platformIsRunning const): (WebKit::DisplayLink::platformStart): (WebKit::DisplayLink::platformStop): * Source/WebKit/UIProcess/glib/DisplayVBlankMonitor.cpp: Added. (WebKit::DisplayVBlankMonitor::create): (WebKit::DisplayVBlankMonitor::DisplayVBlankMonitor): (WebKit::DisplayVBlankMonitor::~DisplayVBlankMonitor): (WebKit::DisplayVBlankMonitor::startThreadIfNeeded): (WebKit::DisplayVBlankMonitor::start): (WebKit::DisplayVBlankMonitor::stop): (WebKit::DisplayVBlankMonitor::invalidate): (WebKit::DisplayVBlankMonitor::isActive): (WebKit::DisplayVBlankMonitor::setHandler): (WebKit::DisplayVBlankMonitor::destroyThreadTimerFired): * Source/WebKit/UIProcess/glib/DisplayVBlankMonitor.h: Copied from Source/WebKit/UIProcess/gtk/ScreenManager.h. (WebKit::DisplayVBlankMonitor::refreshRate const): (WebKit::DisplayVBlankMonitor::WTF_GUARDED_BY_LOCK): * Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.cpp: Added. (WebKit::findCrtc): (WebKit::DisplayVBlankMonitorDRM::create): (WebKit::DisplayVBlankMonitorDRM::DisplayVBlankMonitorDRM): (WebKit::DisplayVBlankMonitorDRM::waitForVBlank const): * Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.h: Renamed from Source/WebCore/platform/graphics/gtk/DisplayRefreshMonitorGtk.h. * Source/WebKit/UIProcess/glib/DisplayVBlankMonitorTimer.cpp: Copied from Source/WebKit/UIProcess/gtk/ScreenManager.h. (WebKit::DisplayVBlankMonitorTimer::create): (WebKit::DisplayVBlankMonitorTimer::DisplayVBlankMonitorTimer): (WebKit::DisplayVBlankMonitorTimer::waitForVBlank const): * Source/WebKit/UIProcess/glib/DisplayVBlankMonitorTimer.h: Copied from Source/WebKit/UIProcess/gtk/ScreenManager.h. * Source/WebKit/UIProcess/gtk/ScreenManager.cpp: (WebKit::ScreenManager::displayID const): (WebKit::ScreenManager::monitor const): * Source/WebKit/UIProcess/gtk/ScreenManager.h: * Source/WebKit/UIProcess/mac/DisplayLinkMac.cpp: Added. (WebKit::DisplayLink::platformInitialize): (WebKit::DisplayLink::platformFinalize): (WebKit::DisplayLink::nominalFramesPerSecondFromDisplayLink): (WebKit::DisplayLink::platformIsRunning const): (WebKit::DisplayLink::platformStart): (WebKit::DisplayLink::platformStop): (WebKit::DisplayLink::displayLinkCallback): * Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm: (WebKit::WebProcessProxy::nominalFramesPerSecondForDisplay): Deleted. (WebKit::WebProcessProxy::startDisplayLink): Deleted. (WebKit::WebProcessProxy::stopDisplayLink): Deleted. (WebKit::WebProcessProxy::setDisplayLinkPreferredFramesPerSecond): Deleted. (WebKit::WebProcessProxy::setDisplayLinkForDisplayWantsFullSpeedUpdates): Deleted. * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: (WebKit::DrawingAreaCoordinatedGraphics::createDisplayRefreshMonitor): (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: (WebKit::LayerTreeHost::LayerTreeHost): (WebKit::LayerTreeHost::layerFlushTimerFired): (WebKit::LayerTreeHost::didRenderFrame): * Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: (WebKit::LayerTreeHost::LayerTreeHost): (WebKit::LayerTreeHost::deviceOrPageScaleFactorChanged): (WebKit::LayerTreeHost::createDisplayRefreshMonitor): * Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in: * Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp: * Source/WebKit/WebProcess/WebPage/EventDispatcher.h: * Source/WebKit/WebProcess/WebPage/EventDispatcher.messages.in: * Source/WebKit/WebProcess/WebPage/WebDisplayRefreshMonitor.cpp: Renamed from Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp. (WebKit::WebDisplayRefreshMonitor::WebDisplayRefreshMonitor): (WebKit::WebDisplayRefreshMonitor::~WebDisplayRefreshMonitor): (WebKit::WebDisplayRefreshMonitor::dispatchDisplayDidRefresh): (WebKit::WebDisplayRefreshMonitor::startNotificationMechanism): (WebKit::WebDisplayRefreshMonitor::stopNotificationMechanism): (WebKit::WebDisplayRefreshMonitor::adjustPreferredFramesPerSecond): * Source/WebKit/WebProcess/WebPage/WebDisplayRefreshMonitor.h: Renamed from Source/WebKit/WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h. * Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::createDisplayRefreshMonitor): * Source/WebKit/WebProcess/WebProcess.cpp: * Source/WebKit/WebProcess/WebProcess.h: * Source/WebKit/WebProcess/WebProcess.messages.in: Co-authored-by: Carlos Garcia Campos <cgar...@igalia.com> Canonical link: https://commits.webkit.org/268646@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes