Changeset 94789 in webkit


Ignore:
Timestamp:
Sep 8, 2011 1:31:02 PM (13 years ago)
Author:
wjmaclean@chromium.org
Message:

[chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
https://bugs.webkit.org/show_bug.cgi?id=66472

Source/WebCore:

This patch contains plumbing from Internals to WebViewImpl that can be removed
at a later time when the zoom animator code is complete.

Reviewed by James Robinson.

Test: platform/chromium/compositing/zoom-animator-scale-test.html

  • page/Settings.cpp:

(WebCore::Settings::Settings):

  • page/Settings.h:

(WebCore::Settings::setZoomAnimatorScale):
(WebCore::Settings::zoomAnimatorScale):

  • platform/graphics/chromium/LayerRendererChromium.cpp:

(WebCore::LayerRendererChromium::LayerRendererChromium):
(WebCore::LayerRendererChromium::drawLayersInternal):

  • platform/graphics/chromium/LayerRendererChromium.h:

(WebCore::LayerRendererChromium::setZoomAnimatorScale):

  • platform/graphics/chromium/cc/CCLayerTreeHost.cpp:

(WebCore::CCLayerTreeHost::CCLayerTreeHost):
(WebCore::CCLayerTreeHost::commitTo):
(WebCore::CCLayerTreeHost::setZoomAnimatorScale):
(WebCore::CCLayerTreeHost::updateLayers):

  • platform/graphics/chromium/cc/CCLayerTreeHost.h:
  • platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:

(WebCore::CCLayerTreeHostImpl::setZoomAnimatorScale):

  • platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
  • testing/Internals.cpp:

(WebCore::Internals::setZoomAnimatorScale):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit/chromium:

This patch contains plumbing from Internals to WebViewImpl that can be removed
at a later time when the zoom animator code is complete.

Reviewed by James Robinson.

  • src/WebViewImpl.cpp:

(WebKit::WebViewImpl::setZoomLevel):
(WebKit::WebViewImpl::setRootLayerNeedsDisplay):

LayoutTests:

Initial tests for zoomAnimatorChromium backend.

Reviewed by James Robinson.

  • platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png: Added.
  • platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt: Added.
  • platform/chromium/compositing/zoom-animator-scale-test.html: Added.
Location:
trunk
Files:
3 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r94788 r94789  
     12011-09-08  W. James MacLean  <wjmaclean@chromium.org>
     2
     3        [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
     4        https://bugs.webkit.org/show_bug.cgi?id=66472
     5
     6        Initial tests for zoomAnimatorChromium backend.
     7
     8        Reviewed by James Robinson.
     9
     10        * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png: Added.
     11        * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt: Added.
     12        * platform/chromium/compositing/zoom-animator-scale-test.html: Added.
     13
    1142011-09-08  Csaba Osztrogonác  <ossy@webkit.org>
    215
  • trunk/Source/WebCore/ChangeLog

    r94787 r94789  
     12011-09-08  W. James MacLean  <wjmaclean@chromium.org>
     2
     3        [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
     4        https://bugs.webkit.org/show_bug.cgi?id=66472
     5
     6        This patch contains plumbing from Internals to WebViewImpl that can be removed
     7        at a later time when the zoom animator code is complete.
     8
     9        Reviewed by James Robinson.
     10
     11        Test: platform/chromium/compositing/zoom-animator-scale-test.html
     12
     13        * page/Settings.cpp:
     14        (WebCore::Settings::Settings):
     15        * page/Settings.h:
     16        (WebCore::Settings::setZoomAnimatorScale):
     17        (WebCore::Settings::zoomAnimatorScale):
     18        * platform/graphics/chromium/LayerRendererChromium.cpp:
     19        (WebCore::LayerRendererChromium::LayerRendererChromium):
     20        (WebCore::LayerRendererChromium::drawLayersInternal):
     21        * platform/graphics/chromium/LayerRendererChromium.h:
     22        (WebCore::LayerRendererChromium::setZoomAnimatorScale):
     23        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
     24        (WebCore::CCLayerTreeHost::CCLayerTreeHost):
     25        (WebCore::CCLayerTreeHost::commitTo):
     26        (WebCore::CCLayerTreeHost::setZoomAnimatorScale):
     27        (WebCore::CCLayerTreeHost::updateLayers):
     28        * platform/graphics/chromium/cc/CCLayerTreeHost.h:
     29        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
     30        (WebCore::CCLayerTreeHostImpl::setZoomAnimatorScale):
     31        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
     32        * testing/Internals.cpp:
     33        (WebCore::Internals::setZoomAnimatorScale):
     34        * testing/Internals.h:
     35        * testing/Internals.idl:
     36
    1372011-09-08  Eric Carlson  <eric.carlson@apple.com>
    238
  • trunk/Source/WebCore/page/Settings.cpp

    r94214 r94789  
    217217    , m_passwordEchoEnabled(false)
    218218    , m_loadsImagesAutomaticallyTimer(this, &Settings::loadsImagesAutomaticallyTimerFired)
     219    , m_zoomAnimatorScale(1)
    219220{
    220221    // A Frame may not have been created yet, so we initialize the AtomicString
  • trunk/Source/WebCore/page/Settings.h

    r93291 r94789  
    438438        void setForceCompositingMode(bool flag) { m_forceCompositingMode = flag; }
    439439        bool forceCompositingMode() { return m_forceCompositingMode; }
    440        
     440
     441        void setZoomAnimatorScale(double scale) { m_zoomAnimatorScale = scale; }
     442        double zoomAnimatorScale() { return m_zoomAnimatorScale; }
     443
    441444        void setShouldInjectUserScriptsInInitialEmptyDocument(bool flag) { m_shouldInjectUserScriptsInInitialEmptyDocument = flag; }
    442445        bool shouldInjectUserScriptsInInitialEmptyDocument() { return m_shouldInjectUserScriptsInInitialEmptyDocument; }
     
    597600#endif
    598601
     602        double m_zoomAnimatorScale;
     603
    599604#if USE(SAFARI_THEME)
    600605        static bool gShouldPaintNativeControls;
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

    r94703 r94789  
    164164    , m_currentRenderSurface(0)
    165165    , m_offscreenFramebufferId(0)
     166    , m_zoomAnimatorScale(1)
    166167    , m_context(context)
    167168    , m_defaultRenderSurface(0)
     
    295296    renderSurfaceLayerList.append(rootDrawLayer);
    296297
    297     TransformationMatrix identityMatrix;
     298    TransformationMatrix zoomMatrix;
     299    zoomMatrix.scale3d(m_zoomAnimatorScale, m_zoomAnimatorScale, 1);
    298300    m_defaultRenderSurface = rootDrawLayer->renderSurface();
    299301    m_defaultRenderSurface->clearLayerList();
     
    301303    {
    302304        TRACE_EVENT("LayerRendererChromium::drawLayersInternal::calcDrawEtc", this, 0);
    303         CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootDrawLayer, rootDrawLayer, identityMatrix, identityMatrix, renderSurfaceLayerList, m_defaultRenderSurface->layerList(), &m_layerSorter, m_capabilities.maxTextureSize);
     305        CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootDrawLayer, rootDrawLayer, zoomMatrix, zoomMatrix, renderSurfaceLayerList, m_defaultRenderSurface->layerList(), &m_layerSorter, m_capabilities.maxTextureSize);
    304306    }
    305307
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h

    r94703 r94789  
    111111    void present();
    112112
     113    void setZoomAnimatorScale(double factor) { m_zoomAnimatorScale = factor; }
     114
    113115    unsigned createLayerTexture();
    114116    void deleteLayerTexture(unsigned);
     
    197199    CCRenderSurface* m_currentRenderSurface;
    198200    unsigned m_offscreenFramebufferId;
     201    double m_zoomAnimatorScale;
    199202
    200203    // Store values that are shared between instances of each layer type
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp

    r94474 r94789  
    5555    , m_nonCompositedContentHost(NonCompositedContentHost::create(m_client->createRootLayerPainter()))
    5656    , m_settings(settings)
     57    , m_zoomAnimatorScale(1)
    5758    , m_visible(true)
    5859{
     
    116117
    117118    hostImpl->setVisible(m_visible);
     119    hostImpl->setZoomAnimatorScale(m_zoomAnimatorScale);
    118120    hostImpl->setViewport(viewportSize());
    119121
     
    181183{
    182184    return m_proxy->layerRendererCapabilities();
     185}
     186
     187void CCLayerTreeHost::setZoomAnimatorScale(double zoom)
     188{
     189    bool zoomChanged = m_zoomAnimatorScale != zoom;
     190
     191    m_zoomAnimatorScale = zoom;
     192
     193    if (zoomChanged)
     194        setNeedsCommitAndRedraw();
    183195}
    184196
     
    279291    rootRenderSurface->clearLayerList();
    280292
    281     TransformationMatrix identityMatrix;
    282 
     293    TransformationMatrix zoomMatrix;
     294    zoomMatrix.scale3d(m_zoomAnimatorScale, m_zoomAnimatorScale, 1);
    283295    {
    284296        TRACE_EVENT("CCLayerTreeHost::updateLayers::calcDrawEtc", this, 0);
    285         CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootLayer, rootLayer, identityMatrix, identityMatrix, m_updateList, rootRenderSurface->layerList(), layerRendererCapabilities().maxTextureSize);
     297        CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootLayer, rootLayer, zoomMatrix, zoomMatrix, m_updateList, rootRenderSurface->layerList(), layerRendererCapabilities().maxTextureSize);
    286298    }
    287299
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h

    r94474 r94789  
    131131
    132132    void invalidateRootLayerRect(const IntRect& dirtyRect);
     133    void setZoomAnimatorScale(double);
    133134
    134135    const LayerRendererCapabilities& layerRendererCapabilities() const;
     
    188189
    189190    IntSize m_viewportSize;
     191    double m_zoomAnimatorScale;
    190192    bool m_visible;
    191193};
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp

    r94474 r94789  
    156156}
    157157
     158void CCLayerTreeHostImpl::setZoomAnimatorScale(double zoom)
     159{
     160    m_layerRenderer->setZoomAnimatorScale(zoom);
    158161}
     162
     163}
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h

    r94474 r94789  
    7676    void setViewport(const IntSize& viewportSize);
    7777    const IntSize& viewportSize() const { return m_viewportSize; }
     78    void setZoomAnimatorScale(double);
    7879
    7980protected:
  • trunk/Source/WebCore/testing/Internals.cpp

    r94705 r94789  
    244244}
    245245
     246void Internals::setZoomAnimatorScale(Document *document, double scale, ExceptionCode& ec)
     247{
     248    if (!document || !document->settings()) {
     249        ec = INVALID_ACCESS_ERR;
     250        return;
     251    }
     252
     253    document->settings()->setZoomAnimatorScale(scale);
     254}
     255
    246256void Internals::setPasswordEchoEnabled(Document* document, bool enabled, ExceptionCode& ec)
    247257{
  • trunk/Source/WebCore/testing/Internals.h

    r94705 r94789  
    7878
    7979    void setForceCompositingMode(Document*, bool enabled, ExceptionCode&);
     80    void setZoomAnimatorScale(Document*, double scale, ExceptionCode&);
    8081
    8182    void setPasswordEchoEnabled(Document*, bool enabled, ExceptionCode&);
  • trunk/Source/WebCore/testing/Internals.idl

    r94705 r94789  
    5252
    5353        void setForceCompositingMode(in Document document, in boolean enabled) raises(DOMException);
     54        void setZoomAnimatorScale(in Document document, in double scale) raises(DOMException);
    5455
    5556        void setPasswordEchoEnabled(in Document document, in boolean enabled) raises(DOMException);
  • trunk/Source/WebKit/chromium/ChangeLog

    r94786 r94789  
     12011-09-08  W. James MacLean  <wjmaclean@chromium.org>
     2
     3        [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
     4        https://bugs.webkit.org/show_bug.cgi?id=66472
     5
     6        This patch contains plumbing from Internals to WebViewImpl that can be removed
     7        at a later time when the zoom animator code is complete.
     8
     9        Reviewed by James Robinson.
     10
     11        * src/WebViewImpl.cpp:
     12        (WebKit::WebViewImpl::setZoomLevel):
     13        (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
     14
    1152011-09-08  Scott Byer  <scottbyer@chromium.org>
    216
  • trunk/Source/WebKit/chromium/src/WebViewImpl.cpp

    r94459 r94789  
    18241824double WebViewImpl::setZoomLevel(bool textOnly, double zoomLevel)
    18251825{
     1826    if (m_layerTreeHost)
     1827        m_layerTreeHost->setZoomAnimatorScale(1);
     1828
    18261829    if (zoomLevel < m_minimumZoomLevel)
    18271830        m_zoomLevel = m_minimumZoomLevel;
     
    25642567void WebViewImpl::setRootLayerNeedsDisplay()
    25652568{
     2569    if (m_layerTreeHost)
     2570        m_layerTreeHost->setZoomAnimatorScale(m_page->settings()->zoomAnimatorScale());
    25662571#if USE(THREADED_COMPOSITING)
    25672572    if (m_layerTreeHost)
Note: See TracChangeset for help on using the changeset viewer.