| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |