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

Side by Side Diff: cc/surfaces/surface_aggregator.cc

Issue 448303002: Use custom ListContainer to allocate DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perftest
Patch Set: change header files to try fix compile error Created 6 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
« no previous file with comments | « cc/quads/render_pass_unittest.cc ('k') | cc/surfaces/surface_aggregator_test_helpers.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/surfaces/surface_aggregator.h" 5 #include "cc/surfaces/surface_aggregator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/containers/hash_tables.h" 8 #include "base/containers/hash_tables.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 bool invalid_frame = false; 121 bool invalid_frame = false;
122 DrawQuad::ResourceIteratorCallback remap = 122 DrawQuad::ResourceIteratorCallback remap =
123 base::Bind(&ResourceRemapHelper, 123 base::Bind(&ResourceRemapHelper,
124 &invalid_frame, 124 &invalid_frame,
125 provider_->GetChildToParentMap(child_id), 125 provider_->GetChildToParentMap(child_id),
126 &referenced_resources); 126 &referenced_resources);
127 for (RenderPassList::iterator it = render_pass_list->begin(); 127 for (RenderPassList::iterator it = render_pass_list->begin();
128 it != render_pass_list->end(); 128 it != render_pass_list->end();
129 ++it) { 129 ++it) {
130 QuadList& quad_list = (*it)->quad_list; 130 QuadList& quad_list = (*it)->quad_list;
131 for (QuadList::iterator quad_it = quad_list.begin(); 131 for (QuadList::Iterator quad_it = quad_list.begin();
132 quad_it != quad_list.end(); 132 quad_it != quad_list.end();
133 ++quad_it) { 133 ++quad_it) {
134 (*quad_it)->IterateResources(remap); 134 quad_it->IterateResources(remap);
135 } 135 }
136 } 136 }
137 if (!invalid_frame) 137 if (!invalid_frame)
138 provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources); 138 provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources);
139 139
140 return invalid_frame; 140 return invalid_frame;
141 } 141 }
142 142
143 gfx::Rect SurfaceAggregator::DamageRectForSurface(const Surface* surface, 143 gfx::Rect SurfaceAggregator::DamageRectForSurface(const Surface* surface,
144 const RenderPass& source) { 144 const RenderPass& source) {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 dest_pass, 227 dest_pass,
228 surface_id); 228 surface_id);
229 } else { 229 } else {
230 RenderPassId remapped_pass_id = RemapPassId(last_pass.id, surface_id); 230 RenderPassId remapped_pass_id = RemapPassId(last_pass.id, surface_id);
231 231
232 dest_pass_list_->back()->copy_requests.swap(copy_requests); 232 dest_pass_list_->back()->copy_requests.swap(copy_requests);
233 233
234 SharedQuadState* shared_quad_state = 234 SharedQuadState* shared_quad_state =
235 dest_pass->CreateAndAppendSharedQuadState(); 235 dest_pass->CreateAndAppendSharedQuadState();
236 shared_quad_state->CopyFrom(surface_quad->shared_quad_state); 236 shared_quad_state->CopyFrom(surface_quad->shared_quad_state);
237 scoped_ptr<RenderPassDrawQuad> quad(new RenderPassDrawQuad); 237 RenderPassDrawQuad* quad =
238 dest_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
238 quad->SetNew(shared_quad_state, 239 quad->SetNew(shared_quad_state,
239 surface_quad->rect, 240 surface_quad->rect,
240 surface_quad->visible_rect, 241 surface_quad->visible_rect,
241 remapped_pass_id, 242 remapped_pass_id,
242 0, 243 0,
243 gfx::RectF(), 244 gfx::RectF(),
244 FilterOperations(), 245 FilterOperations(),
245 gfx::Vector2dF(), 246 gfx::Vector2dF(),
246 FilterOperations()); 247 FilterOperations());
247 dest_pass->quad_list.push_back(quad.PassAs<DrawQuad>());
248 } 248 }
249 dest_pass->damage_rect = 249 dest_pass->damage_rect =
250 gfx::UnionRects(dest_pass->damage_rect, 250 gfx::UnionRects(dest_pass->damage_rect,
251 MathUtil::MapEnclosingClippedRect( 251 MathUtil::MapEnclosingClippedRect(
252 surface_quad->quadTransform(), 252 surface_quad->quadTransform(),
253 DamageRectForSurface(surface, last_pass))); 253 DamageRectForSurface(surface, last_pass)));
254 254
255 referenced_surfaces_.erase(it); 255 referenced_surfaces_.erase(it);
256 } 256 }
257 257
(...skipping 19 matching lines...) Expand all
277 } 277 }
278 278
279 void SurfaceAggregator::CopyQuadsToPass( 279 void SurfaceAggregator::CopyQuadsToPass(
280 const QuadList& source_quad_list, 280 const QuadList& source_quad_list,
281 const SharedQuadStateList& source_shared_quad_state_list, 281 const SharedQuadStateList& source_shared_quad_state_list,
282 const gfx::Transform& content_to_target_transform, 282 const gfx::Transform& content_to_target_transform,
283 RenderPass* dest_pass, 283 RenderPass* dest_pass,
284 SurfaceId surface_id) { 284 SurfaceId surface_id) {
285 const SharedQuadState* last_copied_source_shared_quad_state = NULL; 285 const SharedQuadState* last_copied_source_shared_quad_state = NULL;
286 286
287 for (size_t i = 0, sqs_i = 0; i < source_quad_list.size(); ++i) { 287 size_t sqs_i = 0;
288 DrawQuad* quad = source_quad_list[i]; 288 for (QuadList::ConstIterator iter = source_quad_list.begin();
289 iter != source_quad_list.end();
290 ++iter) {
291 const DrawQuad* quad = &*iter;
289 while (quad->shared_quad_state != source_shared_quad_state_list[sqs_i]) { 292 while (quad->shared_quad_state != source_shared_quad_state_list[sqs_i]) {
290 ++sqs_i; 293 ++sqs_i;
291 DCHECK_LT(sqs_i, source_shared_quad_state_list.size()); 294 DCHECK_LT(sqs_i, source_shared_quad_state_list.size());
292 } 295 }
293 DCHECK_EQ(quad->shared_quad_state, source_shared_quad_state_list[sqs_i]); 296 DCHECK_EQ(quad->shared_quad_state, source_shared_quad_state_list[sqs_i]);
294 297
295 if (quad->material == DrawQuad::SURFACE_CONTENT) { 298 if (quad->material == DrawQuad::SURFACE_CONTENT) {
296 const SurfaceDrawQuad* surface_quad = SurfaceDrawQuad::MaterialCast(quad); 299 const SurfaceDrawQuad* surface_quad = SurfaceDrawQuad::MaterialCast(quad);
297 HandleSurfaceQuad(surface_quad, dest_pass); 300 HandleSurfaceQuad(surface_quad, dest_pass);
298 } else { 301 } else {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 surface->TakeLatencyInfo(&frame->metadata.latency_info); 393 surface->TakeLatencyInfo(&frame->metadata.latency_info);
391 } 394 }
392 395
393 // TODO(jamesr): Aggregate all resource references into the returned frame's 396 // TODO(jamesr): Aggregate all resource references into the returned frame's
394 // resource list. 397 // resource list.
395 398
396 return frame.Pass(); 399 return frame.Pass();
397 } 400 }
398 401
399 } // namespace cc 402 } // namespace cc
OLDNEW
« no previous file with comments | « cc/quads/render_pass_unittest.cc ('k') | cc/surfaces/surface_aggregator_test_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698