Changeset 123666 in webkit


Ignore:
Timestamp:
Jul 25, 2012, 3:07:50 PM (13 years ago)
Author:
danakj@chromium.org
Message:

[chromium] Move WebFilterOperations from RenderPassDrawQuad to RenderPass
https://bugs.webkit.org/show_bug.cgi?id=91885

Reviewed by Adrienne Walker.

Source/WebCore:

We move the filter operations to CCRenderPass to avoid having
variable-length data in a WebCompositorQuad in order to serialize,
and also to avoid requiring a virtual destructor for the quad
classes.

The drawFrame method now takes a CCRenderPassIdHashMap in order
to connect RenderPass quads to their source RenderPass.

Covered by existing tests.

  • platform/graphics/chromium/LayerRendererChromium.cpp:

(WebCore::LayerRendererChromium::decideRenderPassAllocationsForFrame):
(WebCore::LayerRendererChromium::drawFrame):
(WebCore::LayerRendererChromium::beginDrawingFrame):
(WebCore::LayerRendererChromium::drawBackgroundFilters):
(WebCore::LayerRendererChromium::drawRenderPassQuad):

  • platform/graphics/chromium/LayerRendererChromium.h:

(LayerRendererChromium):

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

(WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
(WebCore::CCLayerTreeHostImpl::drawLayers):

  • platform/graphics/chromium/cc/CCRenderPass.h:

(WebCore::CCRenderPass::filters):
(WebCore::CCRenderPass::setFilters):
(CCRenderPass):
(WebCore::CCRenderPass::backgroundFilters):
(WebCore::CCRenderPass::setBackgroundFilters):

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

(WebCore::CCRenderPassDrawQuad::create):
(WebCore::CCRenderPassDrawQuad::CCRenderPassDrawQuad):

  • platform/graphics/chromium/cc/CCRenderPassDrawQuad.h:

(CCRenderPassDrawQuad):

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

(WebCore::CCRenderSurface::appendQuads):

  • platform/graphics/chromium/cc/CCRenderer.h:

(CCRenderer):

Source/WebKit/chromium:

  • tests/CCLayerTreeHostImplTest.cpp:
  • tests/LayerRendererChromiumTest.cpp:

(FakeCCRendererClient::FakeCCRendererClient):
(FakeCCRendererClient::rootRenderPass):
(FakeCCRendererClient::renderPassesInDrawOrder):
(FakeCCRendererClient::renderPasses):
(FakeCCRendererClient):
(TEST_F):
(TEST):

Location:
trunk/Source
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r123665 r123666  
     12012-07-25  Dana Jansens  <danakj@chromium.org>
     2
     3        [chromium] Move WebFilterOperations from RenderPassDrawQuad to RenderPass
     4        https://bugs.webkit.org/show_bug.cgi?id=91885
     5
     6        Reviewed by Adrienne Walker.
     7
     8        We move the filter operations to CCRenderPass to avoid having
     9        variable-length data in a WebCompositorQuad in order to serialize,
     10        and also to avoid requiring a virtual destructor for the quad
     11        classes.
     12
     13        The drawFrame method now takes a CCRenderPassIdHashMap in order
     14        to connect RenderPass quads to their source RenderPass.
     15
     16        Covered by existing tests.
     17
     18        * platform/graphics/chromium/LayerRendererChromium.cpp:
     19        (WebCore::LayerRendererChromium::decideRenderPassAllocationsForFrame):
     20        (WebCore::LayerRendererChromium::drawFrame):
     21        (WebCore::LayerRendererChromium::beginDrawingFrame):
     22        (WebCore::LayerRendererChromium::drawBackgroundFilters):
     23        (WebCore::LayerRendererChromium::drawRenderPassQuad):
     24        * platform/graphics/chromium/LayerRendererChromium.h:
     25        (LayerRendererChromium):
     26        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
     27        (WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
     28        (WebCore::CCLayerTreeHostImpl::drawLayers):
     29        * platform/graphics/chromium/cc/CCRenderPass.h:
     30        (WebCore::CCRenderPass::filters):
     31        (WebCore::CCRenderPass::setFilters):
     32        (CCRenderPass):
     33        (WebCore::CCRenderPass::backgroundFilters):
     34        (WebCore::CCRenderPass::setBackgroundFilters):
     35        * platform/graphics/chromium/cc/CCRenderPassDrawQuad.cpp:
     36        (WebCore::CCRenderPassDrawQuad::create):
     37        (WebCore::CCRenderPassDrawQuad::CCRenderPassDrawQuad):
     38        * platform/graphics/chromium/cc/CCRenderPassDrawQuad.h:
     39        (CCRenderPassDrawQuad):
     40        * platform/graphics/chromium/cc/CCRenderSurface.cpp:
     41        (WebCore::CCRenderSurface::appendQuads):
     42        * platform/graphics/chromium/cc/CCRenderer.h:
     43        (CCRenderer):
     44
    1452012-07-25  Mike Reed  <reed@google.com>
    246
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

    r123644 r123666  
    335335void LayerRendererChromium::decideRenderPassAllocationsForFrame(const CCRenderPassList& renderPassesInDrawOrder)
    336336{
    337     HashMap<int, const CCRenderPass*> passesInFrame;
     337    HashMap<int, const CCRenderPass*> renderPassesInFrame;
    338338    for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i)
    339         passesInFrame.set(renderPassesInDrawOrder[i]->id(), renderPassesInDrawOrder[i]);
     339        renderPassesInFrame.set(renderPassesInDrawOrder[i]->id(), renderPassesInDrawOrder[i]);
    340340
    341341    Vector<int> passesToDelete;
    342342    HashMap<int, OwnPtr<CachedTexture> >::const_iterator passIterator;
    343343    for (passIterator = m_renderPassTextures.begin(); passIterator != m_renderPassTextures.end(); ++passIterator) {
    344         const CCRenderPass* renderPassInFrame = passesInFrame.get(passIterator->first);
     344        const CCRenderPass* renderPassInFrame = renderPassesInFrame.get(passIterator->first);
    345345        if (!renderPassInFrame) {
    346346            passesToDelete.append(passIterator->first);
     
    375375}
    376376
    377 void LayerRendererChromium::drawFrame(const CCRenderPassList& renderPasses, const FloatRect& rootScissorRect)
    378 {
    379     const CCRenderPass* rootRenderPass = renderPasses.last();
    380     beginDrawingFrame(rootRenderPass);
    381 
    382     for (size_t i = 0; i < renderPasses.size(); ++i) {
    383         const CCRenderPass* renderPass = renderPasses[i];
     377void LayerRendererChromium::drawFrame(const CCRenderPassList& renderPassesInDrawOrder, const CCRenderPassIdHashMap& renderPassesById, const FloatRect& rootScissorRect)
     378{
     379    const CCRenderPass* rootRenderPass = renderPassesInDrawOrder.last();
     380    ASSERT(rootRenderPass);
     381
     382    m_defaultRenderPass = rootRenderPass;
     383    m_renderPassesById = &renderPassesById;
     384
     385    beginDrawingFrame();
     386
     387    for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) {
     388        const CCRenderPass* renderPass = renderPassesInDrawOrder[i];
    384389
    385390        FloatRect rootScissorRectInCurrentSurface = renderPass->targetSurface()->computeRootScissorRectInCurrentSurface(rootScissorRect);
     
    388393
    389394    finishDrawingFrame();
    390 }
    391 
    392 void LayerRendererChromium::beginDrawingFrame(const CCRenderPass* rootRenderPass)
     395
     396    m_defaultRenderPass = 0;
     397    m_renderPassesById = 0;
     398}
     399
     400void LayerRendererChromium::beginDrawingFrame()
    393401{
    394402    // FIXME: Remove this once framebuffer is automatically recreated on first use
    395403    ensureFramebuffer();
    396 
    397     m_defaultRenderPass = rootRenderPass;
    398     ASSERT(m_defaultRenderPass);
    399404
    400405    if (viewportSize().isEmpty())
     
    557562}
    558563
    559 PassOwnPtr<CCScopedTexture> LayerRendererChromium::drawBackgroundFilters(const CCRenderPassDrawQuad* quad, const WebTransformationMatrix& contentsDeviceTransform)
     564PassOwnPtr<CCScopedTexture> LayerRendererChromium::drawBackgroundFilters(const CCRenderPassDrawQuad* quad, const WebKit::WebFilterOperations& filters, const WebTransformationMatrix& contentsDeviceTransform)
    560565{
    561566    // This method draws a background filter, which applies a filter to any pixels behind the quad and seen through its background.
     
    575580    // FIXME: When this algorithm changes, update CCLayerTreeHost::prioritizeTextures() accordingly.
    576581
    577     if (quad->backgroundFilters().isEmpty())
     582    if (filters.isEmpty())
    578583        return nullptr;
    579584
     
    588593
    589594    int top, right, bottom, left;
    590     quad->backgroundFilters().getOutsets(top, right, bottom, left);
     595    filters.getOutsets(top, right, bottom, left);
    591596    deviceRect.move(-left, -top);
    592597    deviceRect.expand(left + right, top + bottom);
     
    598603        return nullptr;
    599604
    600     SkBitmap filteredDeviceBackground = applyFilters(this, quad->backgroundFilters(), deviceBackgroundTexture.get());
     605    SkBitmap filteredDeviceBackground = applyFilters(this, filters, deviceBackgroundTexture.get());
    601606    if (!filteredDeviceBackground.getTexture())
    602607        return nullptr;
     
    637642        return;
    638643
     644    const CCRenderPass* renderPass = m_renderPassesById->get(quad->renderPassId());
     645    ASSERT(renderPass);
     646    if (!renderPass)
     647        return;
     648
    639649    WebTransformationMatrix renderMatrix = quad->quadTransform();
    640650    renderMatrix.translate(0.5 * quad->quadRect().width() + quad->quadRect().x(), 0.5 * quad->quadRect().height() + quad->quadRect().y());
     
    647657        return;
    648658
    649     OwnPtr<CCScopedTexture> backgroundTexture = drawBackgroundFilters(quad, contentsDeviceTransform);
     659    OwnPtr<CCScopedTexture> backgroundTexture = drawBackgroundFilters(quad, renderPass->backgroundFilters(), contentsDeviceTransform);
    650660
    651661    // FIXME: Cache this value so that we don't have to do it for both the surface and its replica.
    652662    // Apply filters to the contents texture.
    653     SkBitmap filterBitmap = applyFilters(this, quad->filters(), contentsTexture);
     663    SkBitmap filterBitmap = applyFilters(this, renderPass->filters(), contentsTexture);
    654664    OwnPtr<CCScopedLockResourceForRead> contentsResourceLock;
    655665    unsigned contentsTextureId = 0;
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h

    r123644 r123666  
    8181    virtual bool haveCachedResourcesForRenderPassId(int id) const OVERRIDE;
    8282
    83     virtual void drawFrame(const CCRenderPassList&, const FloatRect& rootScissorRect) OVERRIDE;
     83    virtual void drawFrame(const CCRenderPassList&, const CCRenderPassIdHashMap&, const FloatRect& rootScissorRect) OVERRIDE;
    8484
    8585    // waits for rendering to finish
     
    122122    static void toGLMatrix(float*, const WebKit::WebTransformationMatrix&);
    123123
    124     void beginDrawingFrame(const CCRenderPass* rootRenderPass);
     124    void beginDrawingFrame();
    125125    void drawRenderPass(const CCRenderPass*, const FloatRect& framebufferDamageRect);
    126126    void finishDrawingFrame();
     
    129129    void drawCheckerboardQuad(const CCCheckerboardDrawQuad*);
    130130    void drawDebugBorderQuad(const CCDebugBorderDrawQuad*);
    131     PassOwnPtr<CCScopedTexture> drawBackgroundFilters(const CCRenderPassDrawQuad*, const WebKit::WebTransformationMatrix& deviceTransform);
     131    PassOwnPtr<CCScopedTexture> drawBackgroundFilters(const CCRenderPassDrawQuad*, const WebKit::WebFilterOperations&, const WebKit::WebTransformationMatrix& deviceTransform);
    132132    void drawRenderPassQuad(const CCRenderPassDrawQuad*);
    133133    void drawSolidColorQuad(const CCSolidColorDrawQuad*);
     
    265265
    266266    const CCRenderPass* m_defaultRenderPass;
     267    const CCRenderPassIdHashMap* m_renderPassesById;
    267268
    268269    bool m_isViewportChanged;
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp

    r123654 r123666  
    284284        int renderPassId = renderSurfaceLayer->id();
    285285        OwnPtr<CCRenderPass> pass = CCRenderPass::create(renderSurface, renderPassId);
     286        pass->setFilters(renderSurfaceLayer->filters());
     287        pass->setBackgroundFilters(renderSurfaceLayer->backgroundFilters());
     288
    286289        surfacePassMap.add(renderSurface, pass.get());
    287290        frame.renderPasses.append(pass.get());
     
    540543    m_fpsCounter->markBeginningOfFrame(currentTime());
    541544
    542     m_layerRenderer->drawFrame(frame.renderPasses, m_rootScissorRect);
     545    m_layerRenderer->drawFrame(frame.renderPasses, frame.renderPassesById, m_rootScissorRect);
    543546
    544547    for (unsigned int i = 0; i < frame.renderPasses.size(); i++)
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h

    r123154 r123666  
    3131#include "cc/CCOcclusionTracker.h"
    3232#include "cc/CCSharedQuadState.h"
     33#include <public/WebFilterOperations.h>
    3334#include <wtf/HashMap.h>
    3435#include <wtf/PassOwnPtr.h>
     
    6970    const IntRect& framebufferOutputRect() const { return m_framebufferOutputRect; }
    7071
     72    const WebKit::WebFilterOperations& filters() const { return m_filters; }
     73    void setFilters(const WebKit::WebFilterOperations& filters) { m_filters = filters; }
     74
     75    const WebKit::WebFilterOperations& backgroundFilters() const { return m_backgroundFilters; }
     76    void setBackgroundFilters(const WebKit::WebFilterOperations& filters) { m_backgroundFilters = filters; }
     77
    7178    bool hasTransparentBackground() const { return m_hasTransparentBackground; }
    7279    void setHasTransparentBackground(bool transparent) { m_hasTransparentBackground = transparent; }
     
    8491    bool m_hasTransparentBackground;
    8592    bool m_hasOcclusionFromOutsideTargetSurface;
     93    WebKit::WebFilterOperations m_filters;
     94    WebKit::WebFilterOperations m_backgroundFilters;
    8695};
    8796
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.cpp

    r123065 r123666  
    3232namespace WebCore {
    3333
    34 PassOwnPtr<CCRenderPassDrawQuad> CCRenderPassDrawQuad::create(const WebKit::WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix& drawTransform, const WebKit::WebFilterOperations& filters, const WebKit::WebFilterOperations& backgroundFilters, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame)
     34PassOwnPtr<CCRenderPassDrawQuad> CCRenderPassDrawQuad::create(const WebKit::WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix& drawTransform, const CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame)
    3535{
    36     return adoptPtr(new CCRenderPassDrawQuad(sharedQuadState, quadRect, renderPassId, isReplica, drawTransform, filters, backgroundFilters, maskResourceId, contentsChangedSinceLastFrame));
     36    return adoptPtr(new CCRenderPassDrawQuad(sharedQuadState, quadRect, renderPassId, isReplica, drawTransform, maskResourceId, contentsChangedSinceLastFrame));
    3737}
    3838
    39 CCRenderPassDrawQuad::CCRenderPassDrawQuad(const WebKit::WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix& drawTransform, const WebKit::WebFilterOperations& filters, const WebKit::WebFilterOperations& backgroundFilters, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame)
     39CCRenderPassDrawQuad::CCRenderPassDrawQuad(const WebKit::WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix& drawTransform, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame)
    4040    : WebCompositorQuad(sharedQuadState, WebCompositorQuad::RenderPass, quadRect)
    4141    , m_renderPassId(renderPassId)
    4242    , m_isReplica(isReplica)
    4343    , m_drawTransform(drawTransform)
    44     , m_filters(filters)
    45     , m_backgroundFilters(backgroundFilters)
    4644    , m_maskResourceId(maskResourceId)
    4745    , m_contentsChangedSinceLastFrame(contentsChangedSinceLastFrame)
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPassDrawQuad.h

    r123065 r123666  
    2929#include "cc/CCResourceProvider.h"
    3030#include <public/WebCompositorQuad.h>
    31 #include <public/WebFilterOperations.h>
    3231#include <public/WebTransformationMatrix.h>
    3332#include <wtf/PassOwnPtr.h>
     
    4039    WTF_MAKE_NONCOPYABLE(CCRenderPassDrawQuad);
    4140public:
    42     static PassOwnPtr<CCRenderPassDrawQuad> create(const WebKit::WebCompositorSharedQuadState*, const IntRect&, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix&, const WebKit::WebFilterOperations& filters, const WebKit::WebFilterOperations& backgroundFilters, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame);
     41    static PassOwnPtr<CCRenderPassDrawQuad> create(const WebKit::WebCompositorSharedQuadState*, const IntRect&, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix&, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame);
    4342
    4443    int renderPassId() const { return m_renderPassId; }
     
    5049    const WebKit::WebTransformationMatrix& drawTransform() const { return m_drawTransform; }
    5150
    52     const WebKit::WebFilterOperations& filters() const { return m_filters; }
    53     const WebKit::WebFilterOperations& backgroundFilters() const { return m_backgroundFilters; }
    54 
    5551    static const CCRenderPassDrawQuad* materialCast(const WebKit::WebCompositorQuad*);
    5652private:
    57     CCRenderPassDrawQuad(const WebKit::WebCompositorSharedQuadState*, const IntRect&, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix&, const WebKit::WebFilterOperations& filters, const WebKit::WebFilterOperations& backgroundFilters, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame);
     53    CCRenderPassDrawQuad(const WebKit::WebCompositorSharedQuadState*, const IntRect&, int renderPassId, bool isReplica, const WebKit::WebTransformationMatrix&, CCResourceProvider::ResourceId maskResourceId, const IntRect& contentsChangedSinceLastFrame);
    5854
    5955    int m_renderPassId;
    6056    bool m_isReplica;
    6157    WebKit::WebTransformationMatrix m_drawTransform;
    62     WebKit::WebFilterOperations m_filters;
    63     WebKit::WebFilterOperations m_backgroundFilters;
    6458    CCResourceProvider::ResourceId m_maskResourceId;
    6559    IntRect m_contentsChangedSinceLastFrame;
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp

    r123628 r123666  
    212212    IntRect contentsChangedSinceLastFrame = contentsChanged() ? m_contentRect : IntRect();
    213213
    214     const WebKit::WebFilterOperations& filters = m_owningLayer->filters();
    215     const WebKit::WebFilterOperations& backgroundFilters = m_owningLayer->backgroundFilters();
    216 
    217     quadList.append(CCRenderPassDrawQuad::create(sharedQuadState, contentRect(), renderPassId, forReplica, drawTransform, filters, backgroundFilters, maskResourceId, contentsChangedSinceLastFrame));
     214    quadList.append(CCRenderPassDrawQuad::create(sharedQuadState, contentRect(), renderPassId, forReplica, drawTransform, maskResourceId, contentsChangedSinceLastFrame));
    218215}
    219216
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h

    r123644 r123666  
    8181    virtual bool haveCachedResourcesForRenderPassId(int) const { return false; }
    8282
    83     virtual void drawFrame(const CCRenderPassList&, const FloatRect& rootScissorRect) = 0;
     83    virtual void drawFrame(const CCRenderPassList&, const CCRenderPassIdHashMap&, const FloatRect& rootScissorRect) = 0;
    8484
    8585    // waits for rendering to finish
  • trunk/Source/WebKit/chromium/ChangeLog

    r123654 r123666  
     12012-07-25  Dana Jansens  <danakj@chromium.org>
     2
     3        [chromium] Move WebFilterOperations from RenderPassDrawQuad to RenderPass
     4        https://bugs.webkit.org/show_bug.cgi?id=91885
     5
     6        Reviewed by Adrienne Walker.
     7
     8        * tests/CCLayerTreeHostImplTest.cpp:
     9        * tests/LayerRendererChromiumTest.cpp:
     10        (FakeCCRendererClient::FakeCCRendererClient):
     11        (FakeCCRendererClient::rootRenderPass):
     12        (FakeCCRendererClient::renderPassesInDrawOrder):
     13        (FakeCCRendererClient::renderPasses):
     14        (FakeCCRendererClient):
     15        (TEST_F):
     16        (TEST):
     17
    1182012-07-24  Shawn Singh  <shawnsingh@chromium.org>
    219
  • trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp

    r123628 r123666  
    35783578class CCTestRenderPass: public CCRenderPass {
    35793579public:
    3580     static PassOwnPtr<CCRenderPass> create(CCRenderSurface* targetSurface, int id) { return adoptPtr(new CCTestRenderPass(targetSurface, id)); }
     3580    static PassOwnPtr<CCRenderPass> create(CCRenderSurface* renderSurface, int id) { return adoptPtr(new CCTestRenderPass(renderSurface, id)); }
    35813581
    35823582    void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); }
    35833583
    35843584protected:
    3585     CCTestRenderPass(CCRenderSurface* targetSurface, int id) : CCRenderPass(targetSurface, id) { }
     3585    CCTestRenderPass(CCRenderSurface* renderSurface, int id) : CCRenderPass(renderSurface, id) { }
    35863586};
    35873587
     
    36993699                IntRect quadRect = IntRect(0, 0, 1, 1);
    37003700                IntRect contentsChangedRect = contentsChanged ? quadRect : IntRect();
    3701                 OwnPtr<CCRenderPassDrawQuad> quad = CCRenderPassDrawQuad::create(testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, WebKit::WebTransformationMatrix(), WebKit::WebFilterOperations(), WebKit::WebFilterOperations(), 1, contentsChangedRect);
     3701                OwnPtr<CCRenderPassDrawQuad> quad = CCRenderPassDrawQuad::create(testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, WebKit::WebTransformationMatrix(), 1, contentsChangedRect);
    37023702                static_cast<CCTestRenderPass*>(renderPass.get())->appendQuad(quad.release());
    37033703            }
  • trunk/Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp

    r123644 r123666  
    8181    {
    8282        m_rootLayer->createRenderSurface();
    83         m_rootRenderPass = CCRenderPass::create(m_rootLayer->renderSurface(), m_rootLayer->id());
    84         m_renderPasses.append(m_rootRenderPass.get());
     83        OwnPtr<CCRenderPass> rootRenderPass = CCRenderPass::create(m_rootLayer->renderSurface(), m_rootLayer->id());
     84        m_renderPassesInDrawOrder.append(rootRenderPass.get());
     85        m_renderPasses.set(m_rootLayer->id(), rootRenderPass.release());
    8586    }
    8687
     
    9798    int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCount; }
    9899
    99     CCRenderPass* rootRenderPass() { return m_rootRenderPass.get(); }
    100     const CCRenderPassList& renderPasses() { return m_renderPasses; }
     100    CCRenderPass* rootRenderPass() { return m_renderPassesInDrawOrder.last(); }
     101    const CCRenderPassList& renderPassesInDrawOrder() const { return m_renderPassesInDrawOrder; }
     102    const CCRenderPassIdHashMap& renderPasses() const { return m_renderPasses; }
    101103
    102104    size_t memoryAllocationLimitBytes() const { return m_memoryAllocationLimitBytes; }
     
    106108    DebugScopedSetImplThread m_implThread;
    107109    OwnPtr<CCLayerImpl> m_rootLayer;
    108     OwnPtr<CCRenderPass> m_rootRenderPass;
    109     CCRenderPassList m_renderPasses;
     110    CCRenderPassList m_renderPassesInDrawOrder;
     111    CCRenderPassIdHashMap m_renderPasses;
    110112    size_t m_memoryAllocationLimitBytes;
    111113};
     
    223225
    224226    m_layerRendererChromium.setVisible(true);
    225     m_layerRendererChromium.drawFrame(m_mockClient.renderPasses(), FloatRect());
     227    m_layerRendererChromium.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.renderPasses(), FloatRect());
    226228    EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
    227229
     
    238240
    239241    char pixels[4];
    240     m_layerRendererChromium.drawFrame(m_mockClient.renderPasses(), FloatRect());
     242    m_layerRendererChromium.drawFrame(m_mockClient.renderPassesInDrawOrder(), m_mockClient.renderPasses(), FloatRect());
    241243    EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded());
    242244
     
    419421    EXPECT_TRUE(layerRendererChromium.initialize());
    420422
    421     layerRendererChromium.drawFrame(mockClient.renderPasses(), FloatRect());
     423    layerRendererChromium.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPasses(), FloatRect());
    422424
    423425    // On DEBUG builds, render passes with opaque background clear to blue to
     
    442444    EXPECT_TRUE(layerRendererChromium.initialize());
    443445
    444     layerRendererChromium.drawFrame(mockClient.renderPasses(), FloatRect());
     446    layerRendererChromium.drawFrame(mockClient.renderPassesInDrawOrder(), mockClient.renderPasses(), FloatRect());
    445447
    446448    EXPECT_EQ(1, context->clearCount());
Note: See TracChangeset for help on using the changeset viewer.