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

Side by Side Diff: cc/layers/delegated_renderer_layer_impl.cc

Issue 380893004: Move Copy method from DrawQuad to RenderPass (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@moreRP4DQ
Patch Set: add RP to DQ_unittests to test Copy Created 6 years, 5 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 | « no previous file | cc/quads/draw_quad.h » ('j') | cc/quads/draw_quad_unittest.cc » ('J')
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/layers/delegated_renderer_layer_impl.h" 5 #include "cc/layers/delegated_renderer_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 } 434 }
435 } 435 }
436 DCHECK(output_shared_quad_state); 436 DCHECK(output_shared_quad_state);
437 437
438 gfx::Rect quad_visible_rect = occlusion_tracker.UnoccludedContentRect( 438 gfx::Rect quad_visible_rect = occlusion_tracker.UnoccludedContentRect(
439 delegated_quad->visible_rect, 439 delegated_quad->visible_rect,
440 output_shared_quad_state->content_to_target_transform); 440 output_shared_quad_state->content_to_target_transform);
441 if (quad_visible_rect.IsEmpty()) 441 if (quad_visible_rect.IsEmpty())
442 continue; 442 continue;
443 443
444 scoped_ptr<DrawQuad> output_quad;
445 if (delegated_quad->material != DrawQuad::RENDER_PASS) { 444 if (delegated_quad->material != DrawQuad::RENDER_PASS) {
446 output_quad = delegated_quad->Copy(output_shared_quad_state); 445 DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad(
446 delegated_quad, output_shared_quad_state);
447 output_quad->visible_rect = quad_visible_rect; 447 output_quad->visible_rect = quad_visible_rect;
448 } else { 448 } else {
449 RenderPass::Id delegated_contributing_render_pass_id = 449 RenderPass::Id delegated_contributing_render_pass_id =
450 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id; 450 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id;
451 RenderPass::Id output_contributing_render_pass_id(-1, -1); 451 RenderPass::Id output_contributing_render_pass_id(-1, -1);
452 452
453 bool present = 453 bool present =
454 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id, 454 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id,
455 &output_contributing_render_pass_id); 455 &output_contributing_render_pass_id);
456 456
457 // The frame may have a RenderPassDrawQuad that points to a RenderPass not 457 // The frame may have a RenderPassDrawQuad that points to a RenderPass not
458 // part of the frame. Just ignore these quads. 458 // part of the frame. Just ignore these quads.
459 if (present) { 459 if (present) {
460 DCHECK(output_contributing_render_pass_id != 460 DCHECK(output_contributing_render_pass_id !=
461 append_quads_data->render_pass_id); 461 append_quads_data->render_pass_id);
462 462
463 output_quad = RenderPassDrawQuad::MaterialCast(delegated_quad)->Copy( 463 RenderPassDrawQuad* output_quad =
464 output_shared_quad_state, 464 render_pass->CopyFromAndAppendRenderPassDrawQuad(
465 output_contributing_render_pass_id).PassAs<DrawQuad>(); 465 RenderPassDrawQuad::MaterialCast(delegated_quad),
466 output_shared_quad_state,
467 output_contributing_render_pass_id);
466 output_quad->visible_rect = quad_visible_rect; 468 output_quad->visible_rect = quad_visible_rect;
467 } 469 }
468 } 470 }
469
470 if (output_quad)
471 render_pass->quad_list.push_back(output_quad.Pass());
472 } 471 }
473 } 472 }
474 473
475 const char* DelegatedRendererLayerImpl::LayerTypeAsString() const { 474 const char* DelegatedRendererLayerImpl::LayerTypeAsString() const {
476 return "cc::DelegatedRendererLayerImpl"; 475 return "cc::DelegatedRendererLayerImpl";
477 } 476 }
478 477
479 void DelegatedRendererLayerImpl::ClearChildId() { 478 void DelegatedRendererLayerImpl::ClearChildId() {
480 if (!child_id_) 479 if (!child_id_)
481 return; 480 return;
482 481
483 if (own_child_id_) { 482 if (own_child_id_) {
484 ResourceProvider* provider = layer_tree_impl()->resource_provider(); 483 ResourceProvider* provider = layer_tree_impl()->resource_provider();
485 provider->DestroyChild(child_id_); 484 provider->DestroyChild(child_id_);
486 } 485 }
487 486
488 resources_.clear(); 487 resources_.clear();
489 child_id_ = 0; 488 child_id_ = 0;
490 } 489 }
491 490
492 } // namespace cc 491 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/quads/draw_quad.h » ('j') | cc/quads/draw_quad_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698