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

Side by Side Diff: cc/delegated_renderer_layer_impl.cc

Issue 11189043: cc: Rename cc classes and members to match filenames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCDelegatedRendererLayerImpl.h" 7 #include "CCDelegatedRendererLayerImpl.h"
8 8
9 #include "CCAppendQuadsData.h" 9 #include "CCAppendQuadsData.h"
10 #include "CCQuadSink.h" 10 #include "CCQuadSink.h"
11 #include "CCMathUtil.h" 11 #include "CCMathUtil.h"
12 #include "CCRenderPassDrawQuad.h" 12 #include "CCRenderPassDrawQuad.h"
13 #include "CCRenderPassSink.h" 13 #include "CCRenderPassSink.h"
14 14
15 namespace cc { 15 namespace cc {
16 16
17 CCDelegatedRendererLayerImpl::CCDelegatedRendererLayerImpl(int id) 17 DelegatedRendererLayerImpl::DelegatedRendererLayerImpl(int id)
18 : CCLayerImpl(id) 18 : LayerImpl(id)
19 { 19 {
20 } 20 }
21 21
22 CCDelegatedRendererLayerImpl::~CCDelegatedRendererLayerImpl() 22 DelegatedRendererLayerImpl::~DelegatedRendererLayerImpl()
23 { 23 {
24 clearRenderPasses(); 24 clearRenderPasses();
25 } 25 }
26 26
27 bool CCDelegatedRendererLayerImpl::descendantDrawsContent() 27 bool DelegatedRendererLayerImpl::descendantDrawsContent()
28 { 28 {
29 // FIXME: This could possibly return false even though there are some 29 // FIXME: This could possibly return false even though there are some
30 // quads present as they could all be from a single layer (or set of 30 // quads present as they could all be from a single layer (or set of
31 // layers without children). If this happens, then make a test that 31 // layers without children). If this happens, then make a test that
32 // ensures the opacity is being changed on quads in the root RenderPass 32 // ensures the opacity is being changed on quads in the root RenderPass
33 // when this layer doesn't own a RenderSurface. 33 // when this layer doesn't own a RenderSurfaceImpl.
34 return !m_renderPassesInDrawOrder.isEmpty(); 34 return !m_renderPassesInDrawOrder.isEmpty();
35 } 35 }
36 36
37 bool CCDelegatedRendererLayerImpl::hasContributingDelegatedRenderPasses() const 37 bool DelegatedRendererLayerImpl::hasContributingDelegatedRenderPasses() const
38 { 38 {
39 // The root RenderPass for the layer is merged with its target 39 // The root RenderPass for the layer is merged with its target
40 // RenderPass in each frame. So we only have extra RenderPasses 40 // RenderPass in each frame. So we only have extra RenderPasses
41 // to merge when we have a non-root RenderPass present. 41 // to merge when we have a non-root RenderPass present.
42 return m_renderPassesInDrawOrder.size() > 1; 42 return m_renderPassesInDrawOrder.size() > 1;
43 } 43 }
44 44
45 void CCDelegatedRendererLayerImpl::setRenderPasses(ScopedPtrVector<CCRenderPass> & renderPassesInDrawOrder) 45 void DelegatedRendererLayerImpl::setRenderPasses(ScopedPtrVector<RenderPass>& re nderPassesInDrawOrder)
46 { 46 {
47 FloatRect oldRootDamage; 47 FloatRect oldRootDamage;
48 if (!m_renderPassesInDrawOrder.isEmpty()) 48 if (!m_renderPassesInDrawOrder.isEmpty())
49 oldRootDamage = m_renderPassesInDrawOrder.last()->damageRect(); 49 oldRootDamage = m_renderPassesInDrawOrder.last()->damageRect();
50 50
51 clearRenderPasses(); 51 clearRenderPasses();
52 52
53 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) { 53 for (size_t i = 0; i < renderPassesInDrawOrder.size(); ++i) {
54 m_renderPassesIndexById.insert(std::pair<CCRenderPass::Id, int>(renderPa ssesInDrawOrder[i]->id(), i)); 54 m_renderPassesIndexById.insert(std::pair<RenderPass::Id, int>(renderPass esInDrawOrder[i]->id(), i));
55 m_renderPassesInDrawOrder.append(renderPassesInDrawOrder.take(i)); 55 m_renderPassesInDrawOrder.append(renderPassesInDrawOrder.take(i));
56 } 56 }
57 renderPassesInDrawOrder.clear(); 57 renderPassesInDrawOrder.clear();
58 58
59 if (!m_renderPassesInDrawOrder.isEmpty()) { 59 if (!m_renderPassesInDrawOrder.isEmpty()) {
60 FloatRect newRootDamage = m_renderPassesInDrawOrder.last()->damageRect() ; 60 FloatRect newRootDamage = m_renderPassesInDrawOrder.last()->damageRect() ;
61 m_renderPassesInDrawOrder.last()->setDamageRect(unionRect(oldRootDamage, newRootDamage)); 61 m_renderPassesInDrawOrder.last()->setDamageRect(unionRect(oldRootDamage, newRootDamage));
62 } 62 }
63 } 63 }
64 64
65 void CCDelegatedRendererLayerImpl::clearRenderPasses() 65 void DelegatedRendererLayerImpl::clearRenderPasses()
66 { 66 {
67 // FIXME: Release the resources back to the nested compositor. 67 // FIXME: Release the resources back to the nested compositor.
68 m_renderPassesIndexById.clear(); 68 m_renderPassesIndexById.clear();
69 m_renderPassesInDrawOrder.clear(); 69 m_renderPassesInDrawOrder.clear();
70 } 70 }
71 71
72 void CCDelegatedRendererLayerImpl::didLoseContext() 72 void DelegatedRendererLayerImpl::didLoseContext()
73 { 73 {
74 clearRenderPasses(); 74 clearRenderPasses();
75 } 75 }
76 76
77 static inline int indexToId(int index) { return index + 1; } 77 static inline int indexToId(int index) { return index + 1; }
78 static inline int idToIndex(int id) { return id - 1; } 78 static inline int idToIndex(int id) { return id - 1; }
79 79
80 CCRenderPass::Id CCDelegatedRendererLayerImpl::firstContributingRenderPassId() c onst 80 RenderPass::Id DelegatedRendererLayerImpl::firstContributingRenderPassId() const
81 { 81 {
82 return CCRenderPass::Id(id(), indexToId(0)); 82 return RenderPass::Id(id(), indexToId(0));
83 } 83 }
84 84
85 CCRenderPass::Id CCDelegatedRendererLayerImpl::nextContributingRenderPassId(CCRe nderPass::Id previous) const 85 RenderPass::Id DelegatedRendererLayerImpl::nextContributingRenderPassId(RenderPa ss::Id previous) const
86 { 86 {
87 return CCRenderPass::Id(previous.layerId, previous.index + 1); 87 return RenderPass::Id(previous.layerId, previous.index + 1);
88 } 88 }
89 89
90 CCRenderPass::Id CCDelegatedRendererLayerImpl::convertDelegatedRenderPassId(CCRe nderPass::Id delegatedRenderPassId) const 90 RenderPass::Id DelegatedRendererLayerImpl::convertDelegatedRenderPassId(RenderPa ss::Id delegatedRenderPassId) const
91 { 91 {
92 base::hash_map<CCRenderPass::Id, int>::const_iterator it = m_renderPassesInd exById.find(delegatedRenderPassId); 92 base::hash_map<RenderPass::Id, int>::const_iterator it = m_renderPassesIndex ById.find(delegatedRenderPassId);
93 ASSERT(it != m_renderPassesIndexById.end()); 93 ASSERT(it != m_renderPassesIndexById.end());
94 unsigned delegatedRenderPassIndex = it->second; 94 unsigned delegatedRenderPassIndex = it->second;
95 return CCRenderPass::Id(id(), indexToId(delegatedRenderPassIndex)); 95 return RenderPass::Id(id(), indexToId(delegatedRenderPassIndex));
96 } 96 }
97 97
98 void CCDelegatedRendererLayerImpl::appendContributingRenderPasses(CCRenderPassSi nk& renderPassSink) 98 void DelegatedRendererLayerImpl::appendContributingRenderPasses(RenderPassSink& renderPassSink)
99 { 99 {
100 ASSERT(hasContributingDelegatedRenderPasses()); 100 ASSERT(hasContributingDelegatedRenderPasses());
101 101
102 for (size_t i = 0; i < m_renderPassesInDrawOrder.size() - 1; ++i) { 102 for (size_t i = 0; i < m_renderPassesInDrawOrder.size() - 1; ++i) {
103 CCRenderPass::Id outputRenderPassId = convertDelegatedRenderPassId(m_ren derPassesInDrawOrder[i]->id()); 103 RenderPass::Id outputRenderPassId = convertDelegatedRenderPassId(m_rende rPassesInDrawOrder[i]->id());
104 104
105 // Don't clash with the RenderPass we generate if we own a RenderSurface . 105 // Don't clash with the RenderPass we generate if we own a RenderSurface Impl.
106 ASSERT(outputRenderPassId.index > 0); 106 ASSERT(outputRenderPassId.index > 0);
107 107
108 renderPassSink.appendRenderPass(m_renderPassesInDrawOrder[i]->copy(outpu tRenderPassId)); 108 renderPassSink.appendRenderPass(m_renderPassesInDrawOrder[i]->copy(outpu tRenderPassId));
109 } 109 }
110 } 110 }
111 111
112 void CCDelegatedRendererLayerImpl::appendQuads(CCQuadSink& quadSink, CCAppendQua dsData& appendQuadsData) 112 void DelegatedRendererLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData & appendQuadsData)
113 { 113 {
114 if (m_renderPassesInDrawOrder.isEmpty()) 114 if (m_renderPassesInDrawOrder.isEmpty())
115 return; 115 return;
116 116
117 CCRenderPass::Id targetRenderPassId = appendQuadsData.renderPassId; 117 RenderPass::Id targetRenderPassId = appendQuadsData.renderPassId;
118 118
119 // If the index of the renderPassId is 0, then it is a renderPass generated for a layer 119 // If the index of the renderPassId is 0, then it is a renderPass generated for a layer
120 // in this compositor, not the delegated renderer. Then we want to merge our root renderPass with 120 // in this compositor, not the delegated renderer. Then we want to merge our root renderPass with
121 // the target renderPass. Otherwise, it is some renderPass which we added fr om the delegated 121 // the target renderPass. Otherwise, it is some renderPass which we added fr om the delegated
122 // renderer. 122 // renderer.
123 bool shouldMergeRootRenderPassWithTarget = !targetRenderPassId.index; 123 bool shouldMergeRootRenderPassWithTarget = !targetRenderPassId.index;
124 if (shouldMergeRootRenderPassWithTarget) { 124 if (shouldMergeRootRenderPassWithTarget) {
125 // Verify that the renderPass we are appending to is created our renderT arget. 125 // Verify that the renderPass we are appending to is created our renderT arget.
126 ASSERT(targetRenderPassId.layerId == renderTarget()->id()); 126 ASSERT(targetRenderPassId.layerId == renderTarget()->id());
127 127
128 CCRenderPass* rootDelegatedRenderPass = m_renderPassesInDrawOrder.last() ; 128 RenderPass* rootDelegatedRenderPass = m_renderPassesInDrawOrder.last();
129 appendRenderPassQuads(quadSink, appendQuadsData, rootDelegatedRenderPass ); 129 appendRenderPassQuads(quadSink, appendQuadsData, rootDelegatedRenderPass );
130 } else { 130 } else {
131 // Verify that the renderPass we are appending to was created by us. 131 // Verify that the renderPass we are appending to was created by us.
132 ASSERT(targetRenderPassId.layerId == id()); 132 ASSERT(targetRenderPassId.layerId == id());
133 133
134 int renderPassIndex = idToIndex(targetRenderPassId.index); 134 int renderPassIndex = idToIndex(targetRenderPassId.index);
135 CCRenderPass* delegatedRenderPass = m_renderPassesInDrawOrder[renderPass Index]; 135 RenderPass* delegatedRenderPass = m_renderPassesInDrawOrder[renderPassIn dex];
136 appendRenderPassQuads(quadSink, appendQuadsData, delegatedRenderPass); 136 appendRenderPassQuads(quadSink, appendQuadsData, delegatedRenderPass);
137 } 137 }
138 } 138 }
139 139
140 void CCDelegatedRendererLayerImpl::appendRenderPassQuads(CCQuadSink& quadSink, C CAppendQuadsData& appendQuadsData, CCRenderPass* delegatedRenderPass) const 140 void DelegatedRendererLayerImpl::appendRenderPassQuads(QuadSink& quadSink, Appen dQuadsData& appendQuadsData, RenderPass* delegatedRenderPass) const
141 { 141 {
142 const CCSharedQuadState* currentSharedQuadState = 0; 142 const SharedQuadState* currentSharedQuadState = 0;
143 CCSharedQuadState* copiedSharedQuadState = 0; 143 SharedQuadState* copiedSharedQuadState = 0;
144 for (size_t i = 0; i < delegatedRenderPass->quadList().size(); ++i) { 144 for (size_t i = 0; i < delegatedRenderPass->quadList().size(); ++i) {
145 CCDrawQuad* quad = delegatedRenderPass->quadList()[i]; 145 DrawQuad* quad = delegatedRenderPass->quadList()[i];
146 146
147 if (quad->sharedQuadState() != currentSharedQuadState) { 147 if (quad->sharedQuadState() != currentSharedQuadState) {
148 currentSharedQuadState = quad->sharedQuadState(); 148 currentSharedQuadState = quad->sharedQuadState();
149 copiedSharedQuadState = quadSink.useSharedQuadState(currentSharedQua dState->copy()); 149 copiedSharedQuadState = quadSink.useSharedQuadState(currentSharedQua dState->copy());
150 bool targetIsFromDelegatedRendererLayer = appendQuadsData.renderPass Id.layerId == id(); 150 bool targetIsFromDelegatedRendererLayer = appendQuadsData.renderPass Id.layerId == id();
151 if (!targetIsFromDelegatedRendererLayer) { 151 if (!targetIsFromDelegatedRendererLayer) {
152 // Should be the root render pass. 152 // Should be the root render pass.
153 ASSERT(delegatedRenderPass == m_renderPassesInDrawOrder.last()); 153 ASSERT(delegatedRenderPass == m_renderPassesInDrawOrder.last());
154 // This layer must be drawing to a renderTarget other than itself. 154 // This layer must be drawing to a renderTarget other than itself.
155 ASSERT(renderTarget() != this); 155 ASSERT(renderTarget() != this);
156 156
157 copiedSharedQuadState->clippedRectInTarget = CCMathUtil::mapClippe dRect(drawTransform(), copiedSharedQuadState->clippedRectInTarget); 157 copiedSharedQuadState->clippedRectInTarget = MathUtil::mapClippedR ect(drawTransform(), copiedSharedQuadState->clippedRectInTarget);
158 copiedSharedQuadState->quadTransform = copiedSharedQuadState->quad Transform * drawTransform(); 158 copiedSharedQuadState->quadTransform = copiedSharedQuadState->quad Transform * drawTransform();
159 copiedSharedQuadState->opacity *= drawOpacity(); 159 copiedSharedQuadState->opacity *= drawOpacity();
160 } 160 }
161 } 161 }
162 ASSERT(copiedSharedQuadState); 162 ASSERT(copiedSharedQuadState);
163 163
164 scoped_ptr<CCDrawQuad> copyQuad; 164 scoped_ptr<DrawQuad> copyQuad;
165 if (quad->material() != CCDrawQuad::RenderPass) 165 if (quad->material() != DrawQuad::RenderPass)
166 copyQuad = quad->copy(copiedSharedQuadState); 166 copyQuad = quad->copy(copiedSharedQuadState);
167 else { 167 else {
168 CCRenderPass::Id contributingDelegatedRenderPassId = CCRenderPassDra wQuad::materialCast(quad)->renderPassId(); 168 RenderPass::Id contributingDelegatedRenderPassId = RenderPassDrawQua d::materialCast(quad)->renderPassId();
169 CCRenderPass::Id contributingRenderPassId = convertDelegatedRenderPa ssId(contributingDelegatedRenderPassId); 169 RenderPass::Id contributingRenderPassId = convertDelegatedRenderPass Id(contributingDelegatedRenderPassId);
170 ASSERT(contributingRenderPassId != appendQuadsData.renderPassId); 170 ASSERT(contributingRenderPassId != appendQuadsData.renderPassId);
171 171
172 copyQuad = CCRenderPassDrawQuad::materialCast(quad)->copy(copiedShar edQuadState, contributingRenderPassId).PassAs<CCDrawQuad>(); 172 copyQuad = RenderPassDrawQuad::materialCast(quad)->copy(copiedShared QuadState, contributingRenderPassId).PassAs<DrawQuad>();
173 } 173 }
174 ASSERT(copyQuad.get()); 174 ASSERT(copyQuad.get());
175 175
176 quadSink.append(copyQuad.Pass(), appendQuadsData); 176 quadSink.append(copyQuad.Pass(), appendQuadsData);
177 } 177 }
178 } 178 }
179 179
180 const char* CCDelegatedRendererLayerImpl::layerTypeAsString() const 180 const char* DelegatedRendererLayerImpl::layerTypeAsString() const
181 { 181 {
182 return "DelegatedRendererLayer"; 182 return "DelegatedRendererLayer";
183 } 183 }
184 184
185 } 185 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698