⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 277258 in webkit


Ignore:
Timestamp:
May 10, 2021, 2:13:54 AM (5 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use always async scrolling in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=225512

Reviewed by Fujii Hironori.

We currently use async scrolling only when the hardware acceleration policy is set for always, but not when
entering accelerating compositing mode in ondemand policy. Since the GTK port still supports the non accelerated
compositing mode we need to add and remove the scrolling tree when entering and leaving the accelerated
compositing mode.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_set_hardware_acceleration_policy): Always enable async scrolling when accelerated compositing
is enabled.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore): Ditto.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics): Remove the scrolling tree if the
drawing area is destroyed in accelerated compositing mode.
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Add the scrolling tree.
(WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Remove the scrolling tree.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage): Do not add the scrolling tree from here for the GTK port.
(WebKit::WebPage::close): Do not remove the scrolling tree from here for the GTK port.

Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r277256 r277258  
     12021-05-10  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use always async scrolling in accelerated compositing mode
     4        https://bugs.webkit.org/show_bug.cgi?id=225512
     5
     6        Reviewed by Fujii Hironori.
     7
     8        We currently use async scrolling only when the hardware acceleration policy is set for always, but not when
     9        entering accelerating compositing mode in ondemand policy. Since the GTK port still supports the non accelerated
     10        compositing mode we need to add and remove the scrolling tree when entering and leaving the accelerated
     11        compositing mode.
     12
     13        * UIProcess/API/glib/WebKitSettings.cpp:
     14        (webkit_settings_set_hardware_acceleration_policy): Always enable async scrolling when accelerated compositing
     15        is enabled.
     16        * UIProcess/gtk/WebPreferencesGtk.cpp:
     17        (WebKit::WebPreferences::platformInitializeStore): Ditto.
     18        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
     19        (WebKit::DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics): Remove the scrolling tree if the
     20        drawing area is destroyed in accelerated compositing mode.
     21        (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Add the scrolling tree.
     22        (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Remove the scrolling tree.
     23        * WebProcess/WebPage/WebPage.cpp:
     24        (WebKit::WebPage): Do not add the scrolling tree from here for the GTK port.
     25        (WebKit::WebPage::close): Do not remove the scrolling tree from here for the GTK port.
     26
    1272021-05-10  Youenn Fablet  <youenn@apple.com>
    228
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp

    r275816 r277258  
    36183618        if (!priv->preferences->acceleratedCompositingEnabled()) {
    36193619            priv->preferences->setAcceleratedCompositingEnabled(true);
     3620            priv->preferences->setThreadedScrollingEnabled(true);
    36203621            changed = true;
    36213622        }
    36223623        if (!priv->preferences->forceCompositingMode()) {
    36233624            priv->preferences->setForceCompositingMode(true);
    3624             priv->preferences->setThreadedScrollingEnabled(true);
    36253625            changed = true;
    36263626        }
     
    36313631        if (priv->preferences->acceleratedCompositingEnabled()) {
    36323632            priv->preferences->setAcceleratedCompositingEnabled(false);
    3633             changed = true;
    3634         }
    3635 
    3636         if (priv->preferences->forceCompositingMode()) {
    3637             priv->preferences->setForceCompositingMode(false);
    36383633            priv->preferences->setThreadedScrollingEnabled(false);
    36393634            changed = true;
    36403635        }
     3636
     3637        if (priv->preferences->forceCompositingMode()) {
     3638            priv->preferences->setForceCompositingMode(false);
     3639            changed = true;
     3640        }
    36413641        break;
    36423642    case WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND:
    36433643        if (!priv->preferences->acceleratedCompositingEnabled() && HardwareAccelerationManager::singleton().canUseHardwareAcceleration()) {
    36443644            priv->preferences->setAcceleratedCompositingEnabled(true);
     3645            priv->preferences->setThreadedScrollingEnabled(true);
    36453646            changed = true;
    36463647        }
     
    36483649        if (priv->preferences->forceCompositingMode() && !HardwareAccelerationManager::singleton().forceHardwareAcceleration()) {
    36493650            priv->preferences->setForceCompositingMode(false);
    3650             priv->preferences->setThreadedScrollingEnabled(false);
    36513651            changed = true;
    36523652        }
  • trunk/Source/WebKit/UIProcess/gtk/WebPreferencesGtk.cpp

    r254489 r277258  
    4747    setAcceleratedCompositingEnabled(compositingState.acceleratedCompositingEnabled);
    4848    setForceCompositingMode(compositingState.forceCompositingMode);
    49     setThreadedScrollingEnabled(compositingState.forceCompositingMode);
     49    setThreadedScrollingEnabled(compositingState.acceleratedCompositingEnabled);
    5050}
    5151
  • trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp

    r276490 r277258  
    3030
    3131#include "DrawingAreaProxyMessages.h"
     32#include "EventDispatcher.h"
    3233#include "LayerTreeHost.h"
    3334#include "ShareableBitmap.h"
     
    8182}
    8283
    83 DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics() = default;
     84DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics()
     85{
     86#if PLATFORM(GTK)
     87    if (m_supportsAsyncScrolling && m_layerTreeHost)
     88        WebProcess::singleton().eventDispatcher().removeScrollingTreeForPage(&m_webPage);
     89#endif
     90}
    8491
    8592void DrawingAreaCoordinatedGraphics::setNeedsDisplay()
     
    580587{
    581588#if PLATFORM(GTK)
     589    if (m_supportsAsyncScrolling)
     590        WebProcess::singleton().eventDispatcher().addScrollingTreeForPage(&m_webPage);
     591
    582592    if (!m_alwaysUseCompositing) {
    583593        m_webPage.corePage()->settings().setForceCompositingMode(true);
     
    641651    m_wantsToExitAcceleratedCompositingMode = false;
    642652
     653#if PLATFORM(GTK)
     654    if (m_supportsAsyncScrolling)
     655        WebProcess::singleton().eventDispatcher().removeScrollingTreeForPage(&m_webPage);
     656#endif
     657
    643658    ASSERT(m_layerTreeHost);
    644659    m_previousLayerTreeHost = WTFMove(m_layerTreeHost);
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r277196 r277258  
    782782#endif
    783783
    784 #if ENABLE(SCROLLING_THREAD)
     784#if ENABLE(SCROLLING_THREAD) && !PLATFORM(GTK)
    785785    if (m_useAsyncScrolling)
    786786        webProcess.eventDispatcher().addScrollingTreeForPage(this);
     
    15631563    ASSERT(!m_remoteObjectRegistry);
    15641564#endif
    1565 #if ENABLE(SCROLLING_THREAD)
     1565
     1566#if ENABLE(SCROLLING_THREAD) && !PLATFORM(GTK)
    15661567    if (m_useAsyncScrolling)
    15671568        webProcess.eventDispatcher().removeScrollingTreeForPage(this);
Note: See TracChangeset for help on using the changeset viewer.