Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(864)

Unified Diff: cc/CCLayerTreeHostImpl.cpp

Issue 10879109: Update libcc / bindings snapshot to WebKit r126830 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/CCLayerTreeHostImpl.h ('k') | cc/CCLayerTreeHostImplTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/CCLayerTreeHostImpl.cpp
diff --git a/cc/CCLayerTreeHostImpl.cpp b/cc/CCLayerTreeHostImpl.cpp
index 5e90341d61510122c9e204df38d867944f8f3ccf..85ab6cabde072309596352fb94729672a3c9944a 100644
--- a/cc/CCLayerTreeHostImpl.cpp
+++ b/cc/CCLayerTreeHostImpl.cpp
@@ -246,6 +246,13 @@ void CCLayerTreeHostImpl::calculateRenderSurfaceLayerList(CCLayerList& renderSur
}
}
+void CCLayerTreeHostImpl::FrameData::appendRenderPass(PassOwnPtr<CCRenderPass> renderPass)
+{
+ CCRenderPass* pass = renderPass.get();
+ renderPasses.append(pass);
+ renderPassesById.set(pass->id(), renderPass);
+}
+
bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
{
ASSERT(frame.renderPasses.isEmpty());
@@ -255,22 +262,9 @@ bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
TRACE_EVENT1("cc", "CCLayerTreeHostImpl::calculateRenderPasses", "renderSurfaceLayerList.size()", static_cast<long long unsigned>(frame.renderSurfaceLayerList->size()));
// Create the render passes in dependency order.
- HashMap<CCRenderSurface*, CCRenderPass*> surfacePassMap;
for (int surfaceIndex = frame.renderSurfaceLayerList->size() - 1; surfaceIndex >= 0 ; --surfaceIndex) {
CCLayerImpl* renderSurfaceLayer = (*frame.renderSurfaceLayerList)[surfaceIndex];
- CCRenderSurface* renderSurface = renderSurfaceLayer->renderSurface();
-
- int renderPassId = renderSurfaceLayer->id();
- 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());
-
- surfacePassMap.add(renderSurface, pass.get());
- frame.renderPasses.append(pass.get());
- frame.renderPassesById.add(renderPassId, pass.release());
+ renderSurfaceLayer->renderSurface()->appendRenderPasses(frame);
}
bool recordMetricsForFrame = true; // FIXME: In the future, disable this when about:tracing is off.
@@ -290,24 +284,25 @@ bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
CCLayerIteratorType end = CCLayerIteratorType::end(frame.renderSurfaceLayerList);
for (CCLayerIteratorType it = CCLayerIteratorType::begin(frame.renderSurfaceLayerList); it != end; ++it) {
- CCRenderSurface* renderSurface = it.targetRenderSurfaceLayer()->renderSurface();
- CCRenderPass* pass = surfacePassMap.get(renderSurface);
+ int targetRenderPassId = it.targetRenderSurfaceLayer()->id();
+ CCRenderPass* targetRenderPass = frame.renderPassesById.get(targetRenderPassId);
bool hadMissingTiles = false;
occlusionTracker.enterLayer(it);
if (it.representsContributingRenderSurface()) {
- CCRenderPass* contributingRenderPass = surfacePassMap.get(it->renderSurface());
- pass->appendQuadsForRenderSurfaceLayer(*it, contributingRenderPass, &occlusionTracker);
+ int contributingRenderPassId = it->id();
+ CCRenderPass* contributingRenderPass = frame.renderPassesById.get(contributingRenderPassId);
+ targetRenderPass->appendQuadsForRenderSurfaceLayer(*it, contributingRenderPass, &occlusionTracker);
} else if (it.representsItself() && !it->visibleContentRect().isEmpty()) {
bool hasOcclusionFromOutsideTargetSurface;
if (occlusionTracker.occluded(*it, it->visibleContentRect(), &hasOcclusionFromOutsideTargetSurface)) {
if (hasOcclusionFromOutsideTargetSurface)
- pass->setHasOcclusionFromOutsideTargetSurface(hasOcclusionFromOutsideTargetSurface);
+ targetRenderPass->setHasOcclusionFromOutsideTargetSurface(hasOcclusionFromOutsideTargetSurface);
} else {
it->willDraw(m_resourceProvider.get());
frame.willDrawLayers.append(*it);
- pass->appendQuadsForLayer(*it, &occlusionTracker, hadMissingTiles);
+ targetRenderPass->appendQuadsForLayer(*it, &occlusionTracker, hadMissingTiles);
}
}
@@ -324,6 +319,7 @@ bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
for (size_t i = 0; i < frame.renderPasses.size(); ++i) {
for (size_t j = 0; j < frame.renderPasses[i]->quadList().size(); ++j)
ASSERT(frame.renderPasses[i]->quadList()[j]->sharedQuadStateId() >= 0);
+ ASSERT(frame.renderPassesById.contains(frame.renderPasses[i]->id()));
}
#endif
« no previous file with comments | « cc/CCLayerTreeHostImpl.h ('k') | cc/CCLayerTreeHostImplTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698