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

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

Issue 683113005: Update from chromium https://crrev.com/302282 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/surfaces/surface.cc ('k') | cc/surfaces/surface_aggregator_test_helpers.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 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 <map>
8
7 #include "base/bind.h" 9 #include "base/bind.h"
8 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
9 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 12 #include "base/logging.h"
11 #include "cc/base/math_util.h" 13 #include "cc/base/math_util.h"
12 #include "cc/output/compositor_frame.h" 14 #include "cc/output/compositor_frame.h"
13 #include "cc/output/delegated_frame_data.h" 15 #include "cc/output/delegated_frame_data.h"
14 #include "cc/quads/draw_quad.h" 16 #include "cc/quads/draw_quad.h"
15 #include "cc/quads/render_pass_draw_quad.h" 17 #include "cc/quads/render_pass_draw_quad.h"
16 #include "cc/quads/shared_quad_state.h" 18 #include "cc/quads/shared_quad_state.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 134
133 typedef ResourceProvider::ResourceIdArray IdArray; 135 typedef ResourceProvider::ResourceIdArray IdArray;
134 IdArray referenced_resources; 136 IdArray referenced_resources;
135 137
136 bool invalid_frame = false; 138 bool invalid_frame = false;
137 DrawQuad::ResourceIteratorCallback remap = 139 DrawQuad::ResourceIteratorCallback remap =
138 base::Bind(&ResourceRemapHelper, 140 base::Bind(&ResourceRemapHelper,
139 &invalid_frame, 141 &invalid_frame,
140 provider_->GetChildToParentMap(child_id), 142 provider_->GetChildToParentMap(child_id),
141 &referenced_resources); 143 &referenced_resources);
142 for (auto* render_pass : *render_pass_list) { 144 for (const auto& render_pass : *render_pass_list) {
143 for (auto& quad : render_pass->quad_list) 145 for (const auto& quad : render_pass->quad_list)
144 quad.IterateResources(remap); 146 quad->IterateResources(remap);
145 } 147 }
146 148
147 if (!invalid_frame) 149 if (!invalid_frame)
148 provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources); 150 provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources);
149 151
150 return invalid_frame; 152 return invalid_frame;
151 } 153 }
152 154
153 gfx::Rect SurfaceAggregator::DamageRectForSurface(const Surface* surface, 155 gfx::Rect SurfaceAggregator::DamageRectForSurface(const Surface* surface,
154 const RenderPass& source) { 156 const RenderPass& source) {
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 const QuadList& source_quad_list, 300 const QuadList& source_quad_list,
299 const SharedQuadStateList& source_shared_quad_state_list, 301 const SharedQuadStateList& source_shared_quad_state_list,
300 const gfx::Transform& content_to_target_transform, 302 const gfx::Transform& content_to_target_transform,
301 RenderPass* dest_pass, 303 RenderPass* dest_pass,
302 SurfaceId surface_id) { 304 SurfaceId surface_id) {
303 const SharedQuadState* last_copied_source_shared_quad_state = NULL; 305 const SharedQuadState* last_copied_source_shared_quad_state = NULL;
304 306
305 SharedQuadStateList::ConstIterator sqs_iter = 307 SharedQuadStateList::ConstIterator sqs_iter =
306 source_shared_quad_state_list.begin(); 308 source_shared_quad_state_list.begin();
307 for (const auto& quad : source_quad_list) { 309 for (const auto& quad : source_quad_list) {
308 while (quad.shared_quad_state != &*sqs_iter) { 310 while (quad->shared_quad_state != *sqs_iter) {
309 ++sqs_iter; 311 ++sqs_iter;
310 DCHECK(sqs_iter != source_shared_quad_state_list.end()); 312 DCHECK(sqs_iter != source_shared_quad_state_list.end());
311 } 313 }
312 DCHECK_EQ(quad.shared_quad_state, &*sqs_iter); 314 DCHECK_EQ(quad->shared_quad_state, *sqs_iter);
313 315
314 if (quad.material == DrawQuad::SURFACE_CONTENT) { 316 if (quad->material == DrawQuad::SURFACE_CONTENT) {
315 const SurfaceDrawQuad* surface_quad = 317 const SurfaceDrawQuad* surface_quad = SurfaceDrawQuad::MaterialCast(quad);
316 SurfaceDrawQuad::MaterialCast(&quad);
317 HandleSurfaceQuad(surface_quad, dest_pass); 318 HandleSurfaceQuad(surface_quad, dest_pass);
318 } else { 319 } else {
319 if (quad.shared_quad_state != last_copied_source_shared_quad_state) { 320 if (quad->shared_quad_state != last_copied_source_shared_quad_state) {
320 CopySharedQuadState( 321 CopySharedQuadState(
321 quad.shared_quad_state, content_to_target_transform, dest_pass); 322 quad->shared_quad_state, content_to_target_transform, dest_pass);
322 last_copied_source_shared_quad_state = quad.shared_quad_state; 323 last_copied_source_shared_quad_state = quad->shared_quad_state;
323 } 324 }
324 if (quad.material == DrawQuad::RENDER_PASS) { 325 if (quad->material == DrawQuad::RENDER_PASS) {
325 const RenderPassDrawQuad* pass_quad = 326 const RenderPassDrawQuad* pass_quad =
326 RenderPassDrawQuad::MaterialCast(&quad); 327 RenderPassDrawQuad::MaterialCast(quad);
327 RenderPassId original_pass_id = pass_quad->render_pass_id; 328 RenderPassId original_pass_id = pass_quad->render_pass_id;
328 RenderPassId remapped_pass_id = 329 RenderPassId remapped_pass_id =
329 RemapPassId(original_pass_id, surface_id); 330 RemapPassId(original_pass_id, surface_id);
330 331
331 dest_pass->CopyFromAndAppendRenderPassDrawQuad( 332 dest_pass->CopyFromAndAppendRenderPassDrawQuad(
332 pass_quad, 333 pass_quad,
333 dest_pass->shared_quad_state_list.back(), 334 dest_pass->shared_quad_state_list.back(),
334 remapped_pass_id); 335 remapped_pass_id);
335 } else { 336 } else {
336 dest_pass->CopyFromAndAppendDrawQuad( 337 dest_pass->CopyFromAndAppendDrawQuad(
337 &quad, dest_pass->shared_quad_state_list.back()); 338 quad, dest_pass->shared_quad_state_list.back());
338 } 339 }
339 } 340 }
340 } 341 }
341 } 342 }
342 343
343 void SurfaceAggregator::CopyPasses(const DelegatedFrameData* frame_data, 344 void SurfaceAggregator::CopyPasses(const DelegatedFrameData* frame_data,
344 Surface* surface) { 345 Surface* surface) {
345 RenderPassList source_pass_list; 346 RenderPassList source_pass_list;
346 347
347 // The root surface is allowed to have copy output requests, so grab them 348 // The root surface is allowed to have copy output requests, so grab them
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 surface->TakeLatencyInfo(&frame->metadata.latency_info); 417 surface->TakeLatencyInfo(&frame->metadata.latency_info);
417 } 418 }
418 419
419 // TODO(jamesr): Aggregate all resource references into the returned frame's 420 // TODO(jamesr): Aggregate all resource references into the returned frame's
420 // resource list. 421 // resource list.
421 422
422 return frame.Pass(); 423 return frame.Pass();
423 } 424 }
424 425
425 } // namespace cc 426 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/surface.cc ('k') | cc/surfaces/surface_aggregator_test_helpers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698