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());
}