Index: cc/CCLayerTreeHostImpl.cpp |
diff --git a/cc/CCLayerTreeHostImpl.cpp b/cc/CCLayerTreeHostImpl.cpp |
index e91a7fcfea30cf470e1dd5c79944025ca208fb60..7168fe4ce276cc2d242492daf13e67b85259dace 100644 |
--- a/cc/CCLayerTreeHostImpl.cpp |
+++ b/cc/CCLayerTreeHostImpl.cpp |
@@ -291,7 +291,7 @@ bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame) |
occlusionTracker.enterLayer(it); |
- CCAppendQuadsData appendQuadsData; |
+ CCAppendQuadsData appendQuadsData(targetRenderPass->id()); |
if (it.representsContributingRenderSurface()) { |
CCRenderPass::Id contributingRenderPassId = it->renderSurface()->renderPassId(); |
@@ -304,6 +304,19 @@ bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame) |
else { |
it->willDraw(m_resourceProvider.get()); |
frame.willDrawLayers.append(*it); |
+ |
+ if (it->hasContributingDelegatedRenderPasses()) { |
+ CCRenderPass::Id contributingRenderPassId = it->firstContributingRenderPassId(); |
+ while (frame.renderPassesById.contains(contributingRenderPassId)) { |
+ CCRenderPass* renderPass = frame.renderPassesById.get(contributingRenderPassId); |
+ |
+ CCAppendQuadsData appendQuadsData(renderPass->id()); |
+ renderPass->appendQuadsForLayer(*it, &occlusionTracker, appendQuadsData); |
+ |
+ contributingRenderPassId = it->nextContributingRenderPassId(contributingRenderPassId); |
+ } |
+ } |
+ |
targetRenderPass->appendQuadsForLayer(*it, &occlusionTracker, appendQuadsData); |
} |
} |