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

Side by Side Diff: cc/delegated_renderer_layer_impl.cc

Issue 12774006: cc: Chromify Layer and LayerImpl classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: MoreAndroidCompilings Created 7 years, 9 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
« no previous file with comments | « cc/delegated_renderer_layer_impl.h ('k') | cc/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "cc/delegated_renderer_layer_impl.h" 5 #include "cc/delegated_renderer_layer_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "cc/append_quads_data.h" 8 #include "cc/append_quads_data.h"
9 #include "cc/delegated_frame_data.h" 9 #include "cc/delegated_frame_data.h"
10 #include "cc/layer_tree_impl.h" 10 #include "cc/layer_tree_impl.h"
11 #include "cc/math_util.h" 11 #include "cc/math_util.h"
12 #include "cc/quad_sink.h" 12 #include "cc/quad_sink.h"
13 #include "cc/render_pass_draw_quad.h" 13 #include "cc/render_pass_draw_quad.h"
14 #include "cc/render_pass_sink.h" 14 #include "cc/render_pass_sink.h"
15 15
16 namespace cc { 16 namespace cc {
17 17
18 DelegatedRendererLayerImpl::DelegatedRendererLayerImpl( 18 DelegatedRendererLayerImpl::DelegatedRendererLayerImpl(
19 LayerTreeImpl* tree_impl, int id) 19 LayerTreeImpl* tree_impl, int id)
20 : LayerImpl(tree_impl, id), 20 : LayerImpl(tree_impl, id),
21 child_id_(0) { 21 child_id_(0) {
22 } 22 }
23 23
24 DelegatedRendererLayerImpl::~DelegatedRendererLayerImpl() { 24 DelegatedRendererLayerImpl::~DelegatedRendererLayerImpl() {
25 ClearRenderPasses(); 25 ClearRenderPasses();
26 ClearChildId(); 26 ClearChildId();
27 } 27 }
28 28
29 bool DelegatedRendererLayerImpl::hasDelegatedContent() const { 29 bool DelegatedRendererLayerImpl::HasDelegatedContent() const {
30 return !render_passes_in_draw_order_.empty(); 30 return !render_passes_in_draw_order_.empty();
31 } 31 }
32 32
33 bool DelegatedRendererLayerImpl::hasContributingDelegatedRenderPasses() const { 33 bool DelegatedRendererLayerImpl::HasContributingDelegatedRenderPasses() const {
34 // The root RenderPass for the layer is merged with its target 34 // The root RenderPass for the layer is merged with its target
35 // RenderPass in each frame. So we only have extra RenderPasses 35 // RenderPass in each frame. So we only have extra RenderPasses
36 // to merge when we have a non-root RenderPass present. 36 // to merge when we have a non-root RenderPass present.
37 return render_passes_in_draw_order_.size() > 1; 37 return render_passes_in_draw_order_.size() > 1;
38 } 38 }
39 39
40 static ResourceProvider::ResourceId ResourceRemapHelper( 40 static ResourceProvider::ResourceId ResourceRemapHelper(
41 bool* invalid_frame, 41 bool* invalid_frame,
42 const ResourceProvider::ResourceIdMap& child_to_parent_map, 42 const ResourceProvider::ResourceIdMap& child_to_parent_map,
43 ResourceProvider::ResourceIdSet *remapped_resources, 43 ResourceProvider::ResourceIdSet *remapped_resources,
(...skipping 12 matching lines...) Expand all
56 return remapped_id; 56 return remapped_id;
57 } 57 }
58 58
59 void DelegatedRendererLayerImpl::SetFrameData( 59 void DelegatedRendererLayerImpl::SetFrameData(
60 scoped_ptr<DelegatedFrameData> frame_data, 60 scoped_ptr<DelegatedFrameData> frame_data,
61 gfx::RectF damage_in_frame, 61 gfx::RectF damage_in_frame,
62 TransferableResourceArray* resources_for_ack) { 62 TransferableResourceArray* resources_for_ack) {
63 CreateChildIdIfNeeded(); 63 CreateChildIdIfNeeded();
64 DCHECK(child_id_); 64 DCHECK(child_id_);
65 65
66 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider(); 66 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider();
67 const ResourceProvider::ResourceIdMap& resource_map = 67 const ResourceProvider::ResourceIdMap& resource_map =
68 resource_provider->GetChildToParentMap(child_id_); 68 resource_provider->GetChildToParentMap(child_id_);
69 69
70 if (frame_data) { 70 if (frame_data) {
71 // A frame with an empty root render pass is invalid. 71 // A frame with an empty root render pass is invalid.
72 DCHECK(frame_data->render_pass_list.empty() || 72 DCHECK(frame_data->render_pass_list.empty() ||
73 !frame_data->render_pass_list.back()->output_rect.IsEmpty()); 73 !frame_data->render_pass_list.back()->output_rect.IsEmpty());
74 74
75 // Display size is already set so we can compute what the damage rect 75 // Display size is already set so we can compute what the damage rect
76 // will be in layer space. 76 // will be in layer space.
77 if (!frame_data->render_pass_list.empty()) { 77 if (!frame_data->render_pass_list.empty()) {
78 RenderPass* new_root_pass = frame_data->render_pass_list.back(); 78 RenderPass* new_root_pass = frame_data->render_pass_list.back();
79 gfx::RectF damage_in_layer = MathUtil::mapClippedRect( 79 gfx::RectF damage_in_layer = MathUtil::mapClippedRect(
80 DelegatedFrameToLayerSpaceTransform( 80 DelegatedFrameToLayerSpaceTransform(
81 new_root_pass->output_rect.size()), 81 new_root_pass->output_rect.size()),
82 damage_in_frame); 82 damage_in_frame);
83 setUpdateRect(gfx::UnionRects(updateRect(), damage_in_layer)); 83 set_update_rect(gfx::UnionRects(update_rect(), damage_in_layer));
84 } 84 }
85 85
86 resource_provider->ReceiveFromChild(child_id_, frame_data->resource_list); 86 resource_provider->ReceiveFromChild(child_id_, frame_data->resource_list);
87 87
88 bool invalid_frame = false; 88 bool invalid_frame = false;
89 ResourceProvider::ResourceIdSet used_resources; 89 ResourceProvider::ResourceIdSet used_resources;
90 DrawQuad::ResourceIteratorCallback remap_resources_to_parent_callback = 90 DrawQuad::ResourceIteratorCallback remap_resources_to_parent_callback =
91 base::Bind(&ResourceRemapHelper, 91 base::Bind(&ResourceRemapHelper,
92 &invalid_frame, 92 &invalid_frame,
93 resource_map, 93 resource_map,
(...skipping 25 matching lines...) Expand all
119 unused_resources.push_back(it->second); 119 unused_resources.push_back(it->second);
120 } 120 }
121 resource_provider->PrepareSendToChild( 121 resource_provider->PrepareSendToChild(
122 child_id_, unused_resources, resources_for_ack); 122 child_id_, unused_resources, resources_for_ack);
123 } 123 }
124 124
125 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) { 125 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) {
126 if (display_size_ == size) 126 if (display_size_ == size)
127 return; 127 return;
128 display_size_ = size; 128 display_size_ = size;
129 noteLayerPropertyChanged(); 129 NoteLayerPropertyChanged();
130 } 130 }
131 131
132 void DelegatedRendererLayerImpl::SetRenderPasses( 132 void DelegatedRendererLayerImpl::SetRenderPasses(
133 ScopedPtrVector<RenderPass>* render_passes_in_draw_order) { 133 ScopedPtrVector<RenderPass>* render_passes_in_draw_order) {
134 gfx::RectF old_root_damage; 134 gfx::RectF old_root_damage;
135 if (!render_passes_in_draw_order_.empty()) 135 if (!render_passes_in_draw_order_.empty())
136 old_root_damage = render_passes_in_draw_order_.back()->damage_rect; 136 old_root_damage = render_passes_in_draw_order_.back()->damage_rect;
137 137
138 ClearRenderPasses(); 138 ClearRenderPasses();
139 139
(...skipping 10 matching lines...) Expand all
150 if (!render_passes_in_draw_order_.empty()) 150 if (!render_passes_in_draw_order_.empty())
151 render_passes_in_draw_order_.back()->damage_rect.Union(old_root_damage); 151 render_passes_in_draw_order_.back()->damage_rect.Union(old_root_damage);
152 } 152 }
153 153
154 void DelegatedRendererLayerImpl::ClearRenderPasses() { 154 void DelegatedRendererLayerImpl::ClearRenderPasses() {
155 // FIXME: Release the resources back to the nested compositor. 155 // FIXME: Release the resources back to the nested compositor.
156 render_passes_index_by_id_.clear(); 156 render_passes_index_by_id_.clear();
157 render_passes_in_draw_order_.clear(); 157 render_passes_in_draw_order_.clear();
158 } 158 }
159 159
160 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::createLayerImpl( 160 scoped_ptr<LayerImpl> DelegatedRendererLayerImpl::CreateLayerImpl(
161 LayerTreeImpl* treeImpl) { 161 LayerTreeImpl* treeImpl) {
162 return DelegatedRendererLayerImpl::Create(treeImpl, id()).PassAs<LayerImpl>(); 162 return DelegatedRendererLayerImpl::Create(treeImpl, id()).PassAs<LayerImpl>();
163 } 163 }
164 164
165 void DelegatedRendererLayerImpl::didLoseOutputSurface() { 165 void DelegatedRendererLayerImpl::DidLoseOutputSurface() {
166 ClearRenderPasses(); 166 ClearRenderPasses();
167 ClearChildId(); 167 ClearChildId();
168 } 168 }
169 169
170 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform( 170 gfx::Transform DelegatedRendererLayerImpl::DelegatedFrameToLayerSpaceTransform(
171 gfx::Size frame_size) const { 171 gfx::Size frame_size) const {
172 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_; 172 gfx::Size display_size = display_size_.IsEmpty() ? bounds() : display_size_;
173 173
174 gfx::Transform delegated_frame_to_layer_space_transform; 174 gfx::Transform delegated_frame_to_layer_space_transform;
175 delegated_frame_to_layer_space_transform.Scale( 175 delegated_frame_to_layer_space_transform.Scale(
176 static_cast<double>(display_size.width()) / frame_size.width(), 176 static_cast<double>(display_size.width()) / frame_size.width(),
177 static_cast<double>(display_size.height()) / frame_size.height()); 177 static_cast<double>(display_size.height()) / frame_size.height());
178 return delegated_frame_to_layer_space_transform; 178 return delegated_frame_to_layer_space_transform;
179 } 179 }
180 180
181 static inline int IndexToId(int index) { return index + 1; } 181 static inline int IndexToId(int index) { return index + 1; }
182 static inline int IdToIndex(int id) { return id - 1; } 182 static inline int IdToIndex(int id) { return id - 1; }
183 183
184 RenderPass::Id DelegatedRendererLayerImpl::firstContributingRenderPassId() 184 RenderPass::Id DelegatedRendererLayerImpl::FirstContributingRenderPassId()
185 const { 185 const {
186 return RenderPass::Id(id(), IndexToId(0)); 186 return RenderPass::Id(id(), IndexToId(0));
187 } 187 }
188 188
189 RenderPass::Id DelegatedRendererLayerImpl::nextContributingRenderPassId( 189 RenderPass::Id DelegatedRendererLayerImpl::NextContributingRenderPassId(
190 RenderPass::Id previous) const { 190 RenderPass::Id previous) const {
191 return RenderPass::Id(previous.layer_id, previous.index + 1); 191 return RenderPass::Id(previous.layer_id, previous.index + 1);
192 } 192 }
193 193
194 RenderPass::Id DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId( 194 RenderPass::Id DelegatedRendererLayerImpl::ConvertDelegatedRenderPassId(
195 RenderPass::Id delegated_render_pass_id) const { 195 RenderPass::Id delegated_render_pass_id) const {
196 base::hash_map<RenderPass::Id, int>::const_iterator found = 196 base::hash_map<RenderPass::Id, int>::const_iterator found =
197 render_passes_index_by_id_.find(delegated_render_pass_id); 197 render_passes_index_by_id_.find(delegated_render_pass_id);
198 DCHECK(found != render_passes_index_by_id_.end()); 198 DCHECK(found != render_passes_index_by_id_.end());
199 unsigned delegatedRenderPassIndex = found->second; 199 unsigned delegatedRenderPassIndex = found->second;
200 return RenderPass::Id(id(), IndexToId(delegatedRenderPassIndex)); 200 return RenderPass::Id(id(), IndexToId(delegatedRenderPassIndex));
201 } 201 }
202 202
203 void DelegatedRendererLayerImpl::AppendContributingRenderPasses( 203 void DelegatedRendererLayerImpl::AppendContributingRenderPasses(
204 RenderPassSink* render_pass_sink) { 204 RenderPassSink* render_pass_sink) {
205 DCHECK(hasContributingDelegatedRenderPasses()); 205 DCHECK(HasContributingDelegatedRenderPasses());
206 206
207 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) { 207 for (size_t i = 0; i < render_passes_in_draw_order_.size() - 1; ++i) {
208 RenderPass::Id output_render_pass_id = 208 RenderPass::Id output_render_pass_id =
209 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id); 209 ConvertDelegatedRenderPassId(render_passes_in_draw_order_[i]->id);
210 210
211 // Don't clash with the RenderPass we generate if we own a RenderSurface. 211 // Don't clash with the RenderPass we generate if we own a RenderSurface.
212 DCHECK(output_render_pass_id.index > 0); 212 DCHECK(output_render_pass_id.index > 0);
213 213
214 render_pass_sink->appendRenderPass( 214 render_pass_sink->appendRenderPass(
215 render_passes_in_draw_order_[i]->Copy(output_render_pass_id)); 215 render_passes_in_draw_order_[i]->Copy(output_render_pass_id));
216 } 216 }
217 } 217 }
218 218
219 void DelegatedRendererLayerImpl::appendQuads( 219 void DelegatedRendererLayerImpl::AppendQuads(
220 QuadSink& quad_sink, AppendQuadsData& append_quads_data) { 220 QuadSink* quad_sink,
221 AppendQuadsData* append_quads_data) {
221 if (render_passes_in_draw_order_.empty()) 222 if (render_passes_in_draw_order_.empty())
222 return; 223 return;
223 224
224 RenderPass::Id target_render_pass_id = append_quads_data.renderPassId; 225 RenderPass::Id target_render_pass_id = append_quads_data->renderPassId;
225 226
226 const RenderPass* root_delegated_render_pass = 227 const RenderPass* root_delegated_render_pass =
227 render_passes_in_draw_order_.back(); 228 render_passes_in_draw_order_.back();
228 229
229 DCHECK(root_delegated_render_pass->output_rect.origin().IsOrigin()); 230 DCHECK(root_delegated_render_pass->output_rect.origin().IsOrigin());
230 gfx::Size frame_size = root_delegated_render_pass->output_rect.size(); 231 gfx::Size frame_size = root_delegated_render_pass->output_rect.size();
231 232
232 // If the index of the renderPassId is 0, then it is a renderPass generated 233 // If the index of the renderPassId is 0, then it is a renderPass generated
233 // for a layer in this compositor, not the delegated renderer. Then we want to 234 // for a layer in this compositor, not the delegated renderer. Then we want to
234 // merge our root renderPass with the target renderPass. Otherwise, it is some 235 // merge our root renderPass with the target renderPass. Otherwise, it is some
235 // renderPass which we added from the delegated renderer. 236 // renderPass which we added from the delegated renderer.
236 bool should_merge_root_render_pass_with_target = !target_render_pass_id.index; 237 bool should_merge_root_render_pass_with_target = !target_render_pass_id.index;
237 if (should_merge_root_render_pass_with_target) { 238 if (should_merge_root_render_pass_with_target) {
238 // Verify that the renderPass we are appending to is created our 239 // Verify that the renderPass we are appending to is created our
239 // renderTarget. 240 // renderTarget.
240 DCHECK(target_render_pass_id.layer_id == renderTarget()->id()); 241 DCHECK(target_render_pass_id.layer_id == render_target()->id());
241 242
242 AppendRenderPassQuads( 243 AppendRenderPassQuads(
243 &quad_sink, &append_quads_data, root_delegated_render_pass, frame_size); 244 quad_sink, append_quads_data, root_delegated_render_pass, frame_size);
244 } else { 245 } else {
245 // Verify that the renderPass we are appending to was created by us. 246 // Verify that the renderPass we are appending to was created by us.
246 DCHECK(target_render_pass_id.layer_id == id()); 247 DCHECK(target_render_pass_id.layer_id == id());
247 248
248 int render_pass_index = IdToIndex(target_render_pass_id.index); 249 int render_pass_index = IdToIndex(target_render_pass_id.index);
249 const RenderPass* delegated_render_pass = 250 const RenderPass* delegated_render_pass =
250 render_passes_in_draw_order_[render_pass_index]; 251 render_passes_in_draw_order_[render_pass_index];
251 AppendRenderPassQuads( 252 AppendRenderPassQuads(
252 &quad_sink, &append_quads_data, delegated_render_pass, frame_size); 253 quad_sink, append_quads_data, delegated_render_pass, frame_size);
253 } 254 }
254 } 255 }
255 256
256 void DelegatedRendererLayerImpl::AppendRenderPassQuads( 257 void DelegatedRendererLayerImpl::AppendRenderPassQuads(
257 QuadSink* quad_sink, 258 QuadSink* quad_sink,
258 AppendQuadsData* append_quads_data, 259 AppendQuadsData* append_quads_data,
259 const RenderPass* delegated_render_pass, 260 const RenderPass* delegated_render_pass,
260 gfx::Size frame_size) const { 261 gfx::Size frame_size) const {
261 262
262 const SharedQuadState* delegated_shared_quad_state = NULL; 263 const SharedQuadState* delegated_shared_quad_state = NULL;
263 SharedQuadState* output_shared_quad_state = NULL; 264 SharedQuadState* output_shared_quad_state = NULL;
264 265
265 for (size_t i = 0; i < delegated_render_pass->quad_list.size(); ++i) { 266 for (size_t i = 0; i < delegated_render_pass->quad_list.size(); ++i) {
266 const DrawQuad* delegated_quad = delegated_render_pass->quad_list[i]; 267 const DrawQuad* delegated_quad = delegated_render_pass->quad_list[i];
267 268
268 if (delegated_quad->shared_quad_state != delegated_shared_quad_state) { 269 if (delegated_quad->shared_quad_state != delegated_shared_quad_state) {
269 delegated_shared_quad_state = delegated_quad->shared_quad_state; 270 delegated_shared_quad_state = delegated_quad->shared_quad_state;
270 output_shared_quad_state = quad_sink->useSharedQuadState( 271 output_shared_quad_state = quad_sink->useSharedQuadState(
271 delegated_shared_quad_state->Copy()); 272 delegated_shared_quad_state->Copy());
272 273
273 bool is_root_delegated_render_pass = 274 bool is_root_delegated_render_pass =
274 delegated_render_pass == render_passes_in_draw_order_.back(); 275 delegated_render_pass == render_passes_in_draw_order_.back();
275 if (is_root_delegated_render_pass) { 276 if (is_root_delegated_render_pass) {
276 // Don't allow areas inside the bounds that are empty. 277 // Don't allow areas inside the bounds that are empty.
277 DCHECK(display_size_.IsEmpty() || 278 DCHECK(display_size_.IsEmpty() ||
278 gfx::Rect(display_size_).Contains(gfx::Rect(bounds()))); 279 gfx::Rect(display_size_).Contains(gfx::Rect(bounds())));
279 gfx::Transform delegated_frame_to_target_transform = 280 gfx::Transform delegated_frame_to_target_transform =
280 drawTransform() * DelegatedFrameToLayerSpaceTransform(frame_size); 281 draw_transform() * DelegatedFrameToLayerSpaceTransform(frame_size);
281 282
282 output_shared_quad_state->content_to_target_transform.ConcatTransform( 283 output_shared_quad_state->content_to_target_transform.ConcatTransform(
283 delegated_frame_to_target_transform); 284 delegated_frame_to_target_transform);
284 285
285 if (renderTarget() == this) { 286 if (render_target() == this) {
286 DCHECK(!isClipped()); 287 DCHECK(!is_clipped());
287 DCHECK(renderSurface()); 288 DCHECK(render_surface());
288 output_shared_quad_state->clip_rect = MathUtil::mapClippedRect( 289 output_shared_quad_state->clip_rect = MathUtil::mapClippedRect(
289 delegated_frame_to_target_transform, 290 delegated_frame_to_target_transform,
290 output_shared_quad_state->clip_rect); 291 output_shared_quad_state->clip_rect);
291 } else { 292 } else {
292 gfx::Rect clip_rect = drawableContentRect(); 293 gfx::Rect clip_rect = drawable_content_rect();
293 if (output_shared_quad_state->is_clipped) { 294 if (output_shared_quad_state->is_clipped) {
294 clip_rect.Intersect(MathUtil::mapClippedRect( 295 clip_rect.Intersect(MathUtil::mapClippedRect(
295 delegated_frame_to_target_transform, 296 delegated_frame_to_target_transform,
296 output_shared_quad_state->clip_rect)); 297 output_shared_quad_state->clip_rect));
297 } 298 }
298 output_shared_quad_state->clip_rect = clip_rect; 299 output_shared_quad_state->clip_rect = clip_rect;
299 output_shared_quad_state->is_clipped = true; 300 output_shared_quad_state->is_clipped = true;
300 } 301 }
301 302
302 output_shared_quad_state->opacity *= drawOpacity(); 303 output_shared_quad_state->opacity *= draw_opacity();
303 } 304 }
304 } 305 }
305 DCHECK(output_shared_quad_state); 306 DCHECK(output_shared_quad_state);
306 307
307 scoped_ptr<DrawQuad> output_quad; 308 scoped_ptr<DrawQuad> output_quad;
308 if (delegated_quad->material != DrawQuad::RENDER_PASS) { 309 if (delegated_quad->material != DrawQuad::RENDER_PASS) {
309 output_quad = delegated_quad->Copy(output_shared_quad_state); 310 output_quad = delegated_quad->Copy(output_shared_quad_state);
310 } else { 311 } else {
311 RenderPass::Id delegated_contributing_render_pass_id = 312 RenderPass::Id delegated_contributing_render_pass_id =
312 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id; 313 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id;
313 RenderPass::Id output_contributing_render_pass_id = 314 RenderPass::Id output_contributing_render_pass_id =
314 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id); 315 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id);
315 DCHECK(output_contributing_render_pass_id != 316 DCHECK(output_contributing_render_pass_id !=
316 append_quads_data->renderPassId); 317 append_quads_data->renderPassId);
317 318
318 output_quad = RenderPassDrawQuad::MaterialCast(delegated_quad)->Copy( 319 output_quad = RenderPassDrawQuad::MaterialCast(delegated_quad)->Copy(
319 output_shared_quad_state, 320 output_shared_quad_state,
320 output_contributing_render_pass_id).PassAs<DrawQuad>(); 321 output_contributing_render_pass_id).PassAs<DrawQuad>();
321 } 322 }
322 DCHECK(output_quad.get()); 323 DCHECK(output_quad.get());
323 324
324 quad_sink->append(output_quad.Pass(), *append_quads_data); 325 quad_sink->append(output_quad.Pass(), append_quads_data);
325 } 326 }
326 } 327 }
327 328
328 const char* DelegatedRendererLayerImpl::layerTypeAsString() const { 329 const char* DelegatedRendererLayerImpl::LayerTypeAsString() const {
329 return "DelegatedRendererLayer"; 330 return "DelegatedRendererLayer";
330 } 331 }
331 332
332 void DelegatedRendererLayerImpl::CreateChildIdIfNeeded() { 333 void DelegatedRendererLayerImpl::CreateChildIdIfNeeded() {
333 if (child_id_) 334 if (child_id_)
334 return; 335 return;
335 336
336 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider(); 337 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider();
337 child_id_ = resource_provider->CreateChild(); 338 child_id_ = resource_provider->CreateChild();
338 } 339 }
339 340
340 void DelegatedRendererLayerImpl::ClearChildId() { 341 void DelegatedRendererLayerImpl::ClearChildId() {
341 if (!child_id_) 342 if (!child_id_)
342 return; 343 return;
343 344
344 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider(); 345 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider();
345 resource_provider->DestroyChild(child_id_); 346 resource_provider->DestroyChild(child_id_);
346 child_id_ = 0; 347 child_id_ = 0;
347 } 348 }
348 349
349 } // namespace cc 350 } // namespace cc
OLDNEW
« no previous file with comments | « cc/delegated_renderer_layer_impl.h ('k') | cc/delegated_renderer_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698