Title: [120899] trunk/Source
Revision
120899
Author
[email protected]
Date
2012-06-20 19:03:44 -0700 (Wed, 20 Jun 2012)

Log Message

Unreviewed, rolling out r120889.
http://trac.webkit.org/changeset/120889
https://bugs.webkit.org/show_bug.cgi?id=89630

[Chromium] webkit_unit_tests didDrawNotCalledOnHiddenLayer
start failing (Requested by ukai on #webkit).

Patch by Sheriff Bot <[email protected]> on 2012-06-20

Source/WebCore:

* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
(WebCore::CCLayerTreeHostImpl::calculateRenderSurfaceLayerList):

Source/WebKit/chromium:

* tests/CCLayerTreeHostImplTest.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (120898 => 120899)


--- trunk/Source/WebCore/ChangeLog	2012-06-21 02:00:08 UTC (rev 120898)
+++ trunk/Source/WebCore/ChangeLog	2012-06-21 02:03:44 UTC (rev 120899)
@@ -1,3 +1,15 @@
+2012-06-20  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r120889.
+        http://trac.webkit.org/changeset/120889
+        https://bugs.webkit.org/show_bug.cgi?id=89630
+
+        [Chromium] webkit_unit_tests didDrawNotCalledOnHiddenLayer
+        start failing (Requested by ukai on #webkit).
+
+        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+        (WebCore::CCLayerTreeHostImpl::calculateRenderSurfaceLayerList):
+
 2012-06-20  Hayato Ito  <[email protected]>
 
         [Shadow][Editing] Deleting character in distributed element caused a crash.

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp (120898 => 120899)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2012-06-21 02:00:08 UTC (rev 120898)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2012-06-21 02:03:44 UTC (rev 120899)
@@ -255,11 +255,11 @@
         deviceScaleTransform.scale(m_deviceScaleFactor);
         CCLayerTreeHostCommon::calculateDrawTransforms(m_rootLayerImpl.get(), m_rootLayerImpl.get(), deviceScaleTransform, identityMatrix, renderSurfaceLayerList, m_rootLayerImpl->renderSurface()->layerList(), &m_layerSorter, layerRendererCapabilities().maxTextureSize);
 
-        trackDamageForAllSurfaces(m_rootLayerImpl.get(), renderSurfaceLayerList);
+        if (layerRendererCapabilities().usingPartialSwap || settings().showSurfaceDamageRects)
+            trackDamageForAllSurfaces(m_rootLayerImpl.get(), renderSurfaceLayerList);
+        m_rootScissorRect = m_rootLayerImpl->renderSurface()->damageTracker()->currentDamageRect();
 
-        if (layerRendererCapabilities().usingPartialSwap)
-            m_rootScissorRect = m_rootLayerImpl->renderSurface()->damageTracker()->currentDamageRect();
-        else
+        if (!layerRendererCapabilities().usingPartialSwap)
             m_rootScissorRect = FloatRect(FloatPoint(0, 0), deviceViewportSize());
 
         CCLayerTreeHostCommon::calculateVisibleAndScissorRects(renderSurfaceLayerList, m_rootScissorRect);

Modified: trunk/Source/WebKit/chromium/ChangeLog (120898 => 120899)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-06-21 02:00:08 UTC (rev 120898)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-06-21 02:03:44 UTC (rev 120899)
@@ -1,3 +1,14 @@
+2012-06-20  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r120889.
+        http://trac.webkit.org/changeset/120889
+        https://bugs.webkit.org/show_bug.cgi?id=89630
+
+        [Chromium] webkit_unit_tests didDrawNotCalledOnHiddenLayer
+        start failing (Requested by ukai on #webkit).
+
+        * tests/CCLayerTreeHostImplTest.cpp:
+
 2012-06-20  Zeev Lieber  <[email protected]>
 
         [Chromium] Damage tracker is not used without partial swap, causing valid render passes to be removed

Modified: trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp (120898 => 120899)


--- trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp	2012-06-21 02:00:08 UTC (rev 120898)
+++ trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp	2012-06-21 02:03:44 UTC (rev 120899)
@@ -2410,15 +2410,20 @@
     Mock::VerifyAndClearExpectations(&mockContext);
 }
 
-static void setupLayersForTextureCaching(CCLayerTreeHostImpl* layerTreeHostImpl, CCLayerImpl*& rootPtr, CCLayerImpl*& intermediateLayerPtr, CCLayerImpl*& surfaceLayerPtr, CCLayerImpl*& childPtr)
+TEST_F(CCLayerTreeHostImplTest, surfaceTextureCaching)
 {
+    CCSettings::setPartialSwapEnabled(true);
+    
+    CCLayerTreeSettings settings;
+    OwnPtr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create(settings, this);
+    
     RefPtr<CCGraphicsContext> context = CCGraphicsContext::create3D(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new PartialSwapContext()), GraphicsContext3D::RenderDirectlyToHostWindow));
 
-    layerTreeHostImpl->initializeLayerRenderer(context.release(), UnthrottledUploader);
-    layerTreeHostImpl->setViewportSize(IntSize(100, 100));
+    myHostImpl->initializeLayerRenderer(context.release(), UnthrottledUploader);
+    myHostImpl->setViewportSize(IntSize(100, 100));
 
     OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1);
-    rootPtr = root.get();
+    CCLayerImpl* rootPtr = root.get();
 
     root->setAnchorPoint(FloatPoint(0, 0));
     root->setPosition(FloatPoint(0, 0));
@@ -2426,11 +2431,11 @@
     root->setContentBounds(IntSize(100, 100));
     root->setVisibleLayerRect(IntRect(0, 0, 100, 100));
     root->setDrawsContent(true);
-    layerTreeHostImpl->setRootLayer(root.release());
+    myHostImpl->setRootLayer(root.release());
 
     // Intermediate layer does not own a surface, and does not draw content.
     OwnPtr<CCLayerImpl> intermediateLayer = CCLayerImpl::create(2);
-    intermediateLayerPtr = intermediateLayer.get();
+    CCLayerImpl* intermediateLayerPtr = intermediateLayer.get();
 
     intermediateLayerPtr->setAnchorPoint(FloatPoint(0, 0));
     intermediateLayerPtr->setPosition(FloatPoint(10, 10));
@@ -2441,7 +2446,7 @@
     rootPtr->addChild(intermediateLayer.release());
 
     OwnPtr<CCLayerImpl> surfaceLayer = CCLayerImpl::create(3);
-    surfaceLayerPtr = surfaceLayer.get();
+    CCLayerImpl* surfaceLayerPtr = surfaceLayer.get();
 
     // Surface layer is the layer that changes its opacity
     // It will contain other layers that draw content.
@@ -2456,7 +2461,7 @@
 
     // Child of the surface layer will produce some quads
     OwnPtr<FakeLayerWithQuads> child = FakeLayerWithQuads::create(4);
-    childPtr = child.get();
+    FakeLayerWithQuads* childPtr = child.get();
 
     childPtr->setAnchorPoint(FloatPoint(0, 0));
     childPtr->setPosition(FloatPoint(5, 5));
@@ -2466,22 +2471,7 @@
     childPtr->setDrawsContent(true);
 
     surfaceLayerPtr->addChild(child.release());
-}
 
-TEST_F(CCLayerTreeHostImplTest, surfaceTextureCaching)
-{
-    CCSettings::setPartialSwapEnabled(true);
-
-    CCLayerTreeSettings settings;
-    OwnPtr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create(settings, this);
-
-    CCLayerImpl* rootPtr;
-    CCLayerImpl* intermediateLayerPtr;
-    CCLayerImpl* surfaceLayerPtr;
-    CCLayerImpl* childPtr;
-
-    setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr, surfaceLayerPtr, childPtr);
-
     {
         CCLayerTreeHostImpl::FrameData frame;
         EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
@@ -2625,165 +2615,6 @@
     }
 }
 
-TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap)
-{
-    CCSettings::setPartialSwapEnabled(false);
-
-    CCLayerTreeSettings settings;
-    OwnPtr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create(settings, this);
-
-    CCLayerImpl* rootPtr;
-    CCLayerImpl* intermediateLayerPtr;
-    CCLayerImpl* surfaceLayerPtr;
-    CCLayerImpl* childPtr;
-
-    setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr, surfaceLayerPtr, childPtr);
-
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Must receive two render passes, each with one quad
-        ASSERT_EQ(2U, frame.renderPasses.size());
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-        EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
-
-        EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->material());
-        CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.renderPasses[1]->quadList()[0].get());
-        EXPECT_TRUE(quad->renderPass()->targetSurface()->contentsChanged());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Draw without any change
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Even though there was no change, we set the damage to entire viewport.
-        // One of the passes should be culled as a result, since contents didn't change
-        // and we have cached texture.
-        ASSERT_EQ(1U, frame.renderPasses.size());
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Change opacity and draw
-    surfaceLayerPtr->setOpacity(0.6f);
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Must receive one render pass, as the other one should be culled
-        ASSERT_EQ(1U, frame.renderPasses.size());
-
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-        EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->material());
-        CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.renderPasses[0]->quadList()[0].get());
-        EXPECT_FALSE(quad->renderPass()->targetSurface()->contentsChanged());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Change less benign property and draw - should have contents changed flag
-    surfaceLayerPtr->setStackingOrderChanged(true);
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Must receive two render passes, each with one quad
-        ASSERT_EQ(2U, frame.renderPasses.size());
-
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-        EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]->material());
-
-        EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->material());
-        CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.renderPasses[1]->quadList()[0].get());
-        EXPECT_TRUE(quad->renderPass()->targetSurface()->contentsChanged());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Change opacity again, but evict the cached surface texture
-    surfaceLayerPtr->setOpacity(0.5f);
-    ManagedTexture* contentsTexture = surfaceLayerPtr->renderSurface()->contentsTexture();
-    ASSERT_TRUE(contentsTexture->isValid(contentsTexture->size(), contentsTexture->format()));
-    CCRenderer* renderer = myHostImpl->layerRenderer();
-    TextureManager* textureManager = renderer->implTextureManager();
-    size_t maxMemoryLimit = textureManager->maxMemoryLimitBytes();
-
-    // This should evice all cached surfaces
-    textureManager->setMaxMemoryLimitBytes(0);
-
-    // Restore original limit
-    textureManager->setMaxMemoryLimitBytes(maxMemoryLimit);
-
-    // Was our surface evicted?
-    ASSERT_FALSE(contentsTexture->isValid(contentsTexture->size(), contentsTexture->format()));
-
-    // Change opacity and draw
-    surfaceLayerPtr->setOpacity(0.6f);
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Must receive two render passes
-        ASSERT_EQ(2U, frame.renderPasses.size());
-
-        // Even though not enough properties changed, the entire thing must be
-        // redrawn as we don't have cached textures
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-        EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
-
-        EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]->material());
-        CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.renderPasses[1]->quadList()[0].get());
-        EXPECT_FALSE(quad->renderPass()->targetSurface()->contentsChanged());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Draw without any change, to make sure the state is clear
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Even though there was no change, we set the damage to entire viewport.
-        // One of the passes should be culled as a result, since contents didn't change
-        // and we have cached texture.
-        ASSERT_EQ(1U, frame.renderPasses.size());
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-
-    // Change opacity on the intermediate layer
-    WebTransformationMatrix transform = intermediateLayerPtr->transform();
-    transform.setM11(1.0001);
-    intermediateLayerPtr->setTransform(transform);
-    {
-        CCLayerTreeHostImpl::FrameData frame;
-        EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
-
-        // Must receive one render pass, as the other one should be culled.
-        ASSERT_EQ(1U, frame.renderPasses.size());
-        EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
-
-        EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]->material());
-        CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.renderPasses[0]->quadList()[0].get());
-        EXPECT_FALSE(quad->renderPass()->targetSurface()->contentsChanged());
-
-        myHostImpl->drawLayers(frame);
-        myHostImpl->didDrawAllLayers(frame);
-    }
-}
-
 struct RenderPassCacheEntry {
     mutable OwnPtr<CCRenderPass> renderPassPtr;
     CCRenderPass* renderPass;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to