Title: [126501] trunk/Source
Revision
126501
Author
[email protected]
Date
2012-08-23 16:23:28 -0700 (Thu, 23 Aug 2012)

Log Message

[chromium] Don't require a RenderSurface* in order to create a RenderPass
https://bugs.webkit.org/show_bug.cgi?id=94862

Reviewed by Adrienne Walker.

Source/WebCore:

If a test wants to create a RenderPass, they are required to create a
Layer, and a RenderSurface. This is not ideal, we should let tests
create RenderPasses more simply by giving the information that it needs.

This also helps us recreate the RenderPasses after receiving a copy
via IPC.

* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
(WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
* platform/graphics/chromium/cc/CCRenderPass.cpp:
(WebCore::CCRenderPass::create):
(WebCore::CCRenderPass::CCRenderPass):
* platform/graphics/chromium/cc/CCRenderPass.h:
(CCRenderPass):

Source/WebKit/chromium:

* tests/CCLayerTreeHostImplTest.cpp:
* tests/CCRendererGLTest.cpp:
(FakeCCRendererClient::FakeCCRendererClient):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (126500 => 126501)


--- trunk/Source/WebCore/ChangeLog	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebCore/ChangeLog	2012-08-23 23:23:28 UTC (rev 126501)
@@ -1,3 +1,25 @@
+2012-08-23  Dana Jansens  <[email protected]>
+
+        [chromium] Don't require a RenderSurface* in order to create a RenderPass
+        https://bugs.webkit.org/show_bug.cgi?id=94862
+
+        Reviewed by Adrienne Walker.
+
+        If a test wants to create a RenderPass, they are required to create a
+        Layer, and a RenderSurface. This is not ideal, we should let tests
+        create RenderPasses more simply by giving the information that it needs.
+
+        This also helps us recreate the RenderPasses after receiving a copy
+        via IPC.
+
+        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+        (WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
+        * platform/graphics/chromium/cc/CCRenderPass.cpp:
+        (WebCore::CCRenderPass::create):
+        (WebCore::CCRenderPass::CCRenderPass):
+        * platform/graphics/chromium/cc/CCRenderPass.h:
+        (CCRenderPass):
+
 2012-08-23  Adam Barth  <[email protected]>
 
         [V8] ScriptValue should use ScopedPresistent rather than calling New/Dispose directly

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


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2012-08-23 23:23:28 UTC (rev 126501)
@@ -281,7 +281,9 @@
         CCRenderSurface* renderSurface = renderSurfaceLayer->renderSurface();
 
         int renderPassId = renderSurfaceLayer->id();
-        OwnPtr<CCRenderPass> pass = CCRenderPass::create(renderSurface, renderPassId);
+        IntRect outputRect = renderSurface->contentRect();
+        const WebTransformationMatrix& transformToRootTarget = renderSurface->screenSpaceTransform();
+        OwnPtr<CCRenderPass> pass = CCRenderPass::create(renderPassId, outputRect, transformToRootTarget);
         pass->setDamageRect(renderSurface->damageTracker()->currentDamageRect());
         pass->setFilters(renderSurfaceLayer->filters());
         pass->setBackgroundFilters(renderSurfaceLayer->backgroundFilters());

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp (126500 => 126501)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp	2012-08-23 23:23:28 UTC (rev 126501)
@@ -38,19 +38,18 @@
 
 namespace WebCore {
 
-PassOwnPtr<CCRenderPass> CCRenderPass::create(CCRenderSurface* targetSurface, int id)
+PassOwnPtr<CCRenderPass> CCRenderPass::create(int id, IntRect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget)
 {
-    return adoptPtr(new CCRenderPass(targetSurface, id));
+    return adoptPtr(new CCRenderPass(id, outputRect, transformToRootTarget));
 }
 
-CCRenderPass::CCRenderPass(CCRenderSurface* targetSurface, int id)
+CCRenderPass::CCRenderPass(int id, IntRect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget)
     : m_id(id)
-    , m_transformToRootTarget(targetSurface->screenSpaceTransform())
-    , m_outputRect(targetSurface->contentRect())
+    , m_transformToRootTarget(transformToRootTarget)
+    , m_outputRect(outputRect)
     , m_hasTransparentBackground(true)
     , m_hasOcclusionFromOutsideTargetSurface(false)
 {
-    ASSERT(targetSurface);
     ASSERT(id > 0);
 }
 

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h (126500 => 126501)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h	2012-08-23 23:23:28 UTC (rev 126501)
@@ -58,7 +58,7 @@
 class CCRenderPass {
     WTF_MAKE_NONCOPYABLE(CCRenderPass);
 public:
-    static PassOwnPtr<CCRenderPass> create(CCRenderSurface*, int id);
+    static PassOwnPtr<CCRenderPass> create(int id, IntRect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget);
 
     void appendQuadsForLayer(CCLayerImpl*, CCOcclusionTrackerImpl*, bool& hadMissingTiles);
     void appendQuadsForRenderSurfaceLayer(CCLayerImpl*, const CCRenderPass* contributingRenderPass, CCOcclusionTrackerImpl*);
@@ -90,7 +90,7 @@
     bool hasOcclusionFromOutsideTargetSurface() const { return m_hasOcclusionFromOutsideTargetSurface; }
     void setHasOcclusionFromOutsideTargetSurface(bool hasOcclusionFromOutsideTargetSurface) { m_hasOcclusionFromOutsideTargetSurface = hasOcclusionFromOutsideTargetSurface; }
 protected:
-    CCRenderPass(CCRenderSurface*, int id);
+    CCRenderPass(int id, IntRect outputRect, const WebKit::WebTransformationMatrix& transformToRootTarget);
 
     int m_id;
     CCQuadList m_quadList;

Modified: trunk/Source/WebKit/chromium/ChangeLog (126500 => 126501)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-08-23 23:23:28 UTC (rev 126501)
@@ -1,3 +1,14 @@
+2012-08-23  Dana Jansens  <[email protected]>
+
+        [chromium] Don't require a RenderSurface* in order to create a RenderPass
+        https://bugs.webkit.org/show_bug.cgi?id=94862
+
+        Reviewed by Adrienne Walker.
+
+        * tests/CCLayerTreeHostImplTest.cpp:
+        * tests/CCRendererGLTest.cpp:
+        (FakeCCRendererClient::FakeCCRendererClient):
+
 2012-08-22  James Robinson  <[email protected]>
 
         [chromium] Remove WebLayer::setChildren API

Modified: trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp (126500 => 126501)


--- trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp	2012-08-23 23:23:28 UTC (rev 126501)
@@ -3808,19 +3808,17 @@
 
 struct RenderPassRemovalTestData : public CCLayerTreeHostImpl::FrameData {
     std::map<char, RenderPassCacheEntry> renderPassCache;
-    Vector<OwnPtr<CCRenderSurface> > renderSurfaceStore;
-    Vector<OwnPtr<CCLayerImpl> > layerStore;
     OwnPtr<CCSharedQuadState> sharedQuadState;
 };
 
 class CCTestRenderPass: public CCRenderPass {
 public:
-    static PassOwnPtr<CCRenderPass> create(CCRenderSurface* renderSurface, int id) { return adoptPtr(new CCTestRenderPass(renderSurface, id)); }
+    static PassOwnPtr<CCRenderPass> create(int id, IntRect outputRect, const WebTransformationMatrix& rootTransform) { return adoptPtr(new CCTestRenderPass(id, outputRect, rootTransform)); }
 
     void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); }
 
 protected:
-    CCTestRenderPass(CCRenderSurface* renderSurface, int id) : CCRenderPass(renderSurface, id) { }
+    CCTestRenderPass(int id, IntRect outputRect, const WebTransformationMatrix& rootTransform) : CCRenderPass(id, outputRect, rootTransform) { }
 };
 
 class CCTestRenderer : public CCRendererGL, public CCRendererClient {
@@ -3857,17 +3855,6 @@
     HashSet<int> m_textures;
 };
 
-static PassOwnPtr<CCRenderPass> createDummyRenderPass(RenderPassRemovalTestData& testData, int id)
-{
-    OwnPtr<CCLayerImpl> layerImpl(CCLayerImpl::create(id));
-    OwnPtr<CCRenderSurface> renderSurface(adoptPtr(new CCRenderSurface(layerImpl.get())));
-    OwnPtr<CCRenderPass> renderPassPtr(CCTestRenderPass::create(renderSurface.get(), layerImpl->id()));
-
-    testData.renderSurfaceStore.append(renderSurface.release());
-    testData.layerStore.append(layerImpl.release());
-    return renderPassPtr.release();
-}
-
 static void configureRenderPassTestData(const char* testScript, RenderPassRemovalTestData& testData, CCTestRenderer* renderer)
 {
     renderer->clearCachedTextures();
@@ -3879,7 +3866,7 @@
 
     // Pre-create root pass
     char rootRenderPassId = testScript[0];
-    OwnPtr<CCRenderPass> rootRenderPass = createDummyRenderPass(testData, rootRenderPassId);
+    OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPassId, IntRect(), WebTransformationMatrix());
     testData.renderPassCache.insert(std::pair<char, RenderPassCacheEntry>(rootRenderPassId, RenderPassCacheEntry(rootRenderPass.release())));
     while (*currentChar) {
         char renderPassId = currentChar[0];
@@ -3930,7 +3917,7 @@
                     if (hasTexture)
                         renderer->setHaveCachedResourcesForRenderPassId(newRenderPassId);
 
-                    OwnPtr<CCRenderPass> renderPass = createDummyRenderPass(testData, newRenderPassId);
+                    OwnPtr<CCRenderPass> renderPass = CCTestRenderPass::create(newRenderPassId, IntRect(), WebTransformationMatrix());
                     testData.renderPassCache.insert(std::pair<char, RenderPassCacheEntry>(newRenderPassId, RenderPassCacheEntry(renderPass.release())));
                 }
 

Modified: trunk/Source/WebKit/chromium/tests/CCRendererGLTest.cpp (126500 => 126501)


--- trunk/Source/WebKit/chromium/tests/CCRendererGLTest.cpp	2012-08-23 23:21:25 UTC (rev 126500)
+++ trunk/Source/WebKit/chromium/tests/CCRendererGLTest.cpp	2012-08-23 23:23:28 UTC (rev 126501)
@@ -36,6 +36,7 @@
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <public/WebCompositor.h>
+#include <public/WebTransformationMatrix.h>
 
 using namespace WebCore;
 using namespace WebKit;
@@ -79,8 +80,7 @@
         , m_rootLayer(CCLayerImpl::create(1))
         , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemoryAllocationLimit())
     {
-        m_rootLayer->createRenderSurface();
-        OwnPtr<CCRenderPass> rootRenderPass = CCRenderPass::create(m_rootLayer->renderSurface(), m_rootLayer->id());
+        OwnPtr<CCRenderPass> rootRenderPass = CCRenderPass::create(m_rootLayer->id(), IntRect(), WebTransformationMatrix());
         m_renderPassesInDrawOrder.append(rootRenderPass.get());
         m_renderPasses.set(m_rootLayer->id(), rootRenderPass.release());
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to