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

Side by Side Diff: cc/layers/delegated_renderer_layer_impl.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/cc_tests.gyp ('k') | cc/layers/nine_patch_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/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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 RenderPassList render_pass_list; 118 RenderPassList render_pass_list;
119 RenderPass::CopyAll(frame_data->render_pass_list, &render_pass_list); 119 RenderPass::CopyAll(frame_data->render_pass_list, &render_pass_list);
120 120
121 bool invalid_frame = false; 121 bool invalid_frame = false;
122 ResourceProvider::ResourceIdArray resources_in_frame; 122 ResourceProvider::ResourceIdArray resources_in_frame;
123 DrawQuad::ResourceIteratorCallback remap_resources_to_parent_callback = 123 DrawQuad::ResourceIteratorCallback remap_resources_to_parent_callback =
124 base::Bind(&ResourceRemapHelper, 124 base::Bind(&ResourceRemapHelper,
125 &invalid_frame, 125 &invalid_frame,
126 resource_map, 126 resource_map,
127 &resources_in_frame); 127 &resources_in_frame);
128 for (size_t i = 0; i < render_pass_list.size(); ++i) { 128 for (const auto& pass : render_pass_list) {
129 RenderPass* pass = render_pass_list[i]; 129 for (const auto& quad : pass->quad_list)
130 for (auto& quad : pass->quad_list) 130 quad->IterateResources(remap_resources_to_parent_callback);
131 quad.IterateResources(remap_resources_to_parent_callback);
132 } 131 }
133 132
134 if (invalid_frame) { 133 if (invalid_frame) {
135 // Declare we are still using the last frame's resources. 134 // Declare we are still using the last frame's resources.
136 resource_provider->DeclareUsedResourcesFromChild(child_id_, resources_); 135 resource_provider->DeclareUsedResourcesFromChild(child_id_, resources_);
137 return; 136 return;
138 } 137 }
139 138
140 // Declare we are using the new frame's resources. 139 // Declare we are using the new frame's resources.
141 resources_.swap(resources_in_frame); 140 resources_.swap(resources_in_frame);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 AppendQuadsData* append_quads_data, 388 AppendQuadsData* append_quads_data,
390 const RenderPass* delegated_render_pass, 389 const RenderPass* delegated_render_pass,
391 const gfx::Size& frame_size) const { 390 const gfx::Size& frame_size) const {
392 const SharedQuadState* delegated_shared_quad_state = nullptr; 391 const SharedQuadState* delegated_shared_quad_state = nullptr;
393 SharedQuadState* output_shared_quad_state = nullptr; 392 SharedQuadState* output_shared_quad_state = nullptr;
394 393
395 for (const auto& delegated_quad : delegated_render_pass->quad_list) { 394 for (const auto& delegated_quad : delegated_render_pass->quad_list) {
396 bool is_root_delegated_render_pass = 395 bool is_root_delegated_render_pass =
397 delegated_render_pass == render_passes_in_draw_order_.back(); 396 delegated_render_pass == render_passes_in_draw_order_.back();
398 397
399 if (delegated_quad.shared_quad_state != delegated_shared_quad_state) { 398 if (delegated_quad->shared_quad_state != delegated_shared_quad_state) {
400 delegated_shared_quad_state = delegated_quad.shared_quad_state; 399 delegated_shared_quad_state = delegated_quad->shared_quad_state;
401 output_shared_quad_state = render_pass->CreateAndAppendSharedQuadState(); 400 output_shared_quad_state = render_pass->CreateAndAppendSharedQuadState();
402 output_shared_quad_state->CopyFrom(delegated_shared_quad_state); 401 output_shared_quad_state->CopyFrom(delegated_shared_quad_state);
403 402
404 if (is_root_delegated_render_pass) { 403 if (is_root_delegated_render_pass) {
405 gfx::Transform delegated_frame_to_target_transform = draw_transform(); 404 gfx::Transform delegated_frame_to_target_transform = draw_transform();
406 delegated_frame_to_target_transform.Scale(inverse_device_scale_factor_, 405 delegated_frame_to_target_transform.Scale(inverse_device_scale_factor_,
407 inverse_device_scale_factor_); 406 inverse_device_scale_factor_);
408 407
409 output_shared_quad_state->content_to_target_transform.ConcatTransform( 408 output_shared_quad_state->content_to_target_transform.ConcatTransform(
410 delegated_frame_to_target_transform); 409 delegated_frame_to_target_transform);
(...skipping 29 matching lines...) Expand all
440 delegated_render_pass->transform_to_root_target); 439 delegated_render_pass->transform_to_root_target);
441 quad_content_to_delegated_target_space.ConcatTransform(draw_transform()); 440 quad_content_to_delegated_target_space.ConcatTransform(draw_transform());
442 } 441 }
443 442
444 Occlusion occlusion_in_quad_space = 443 Occlusion occlusion_in_quad_space =
445 occlusion_in_content_space.GetOcclusionWithGivenDrawTransform( 444 occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(
446 quad_content_to_delegated_target_space); 445 quad_content_to_delegated_target_space);
447 446
448 gfx::Rect quad_visible_rect = 447 gfx::Rect quad_visible_rect =
449 occlusion_in_quad_space.GetUnoccludedContentRect( 448 occlusion_in_quad_space.GetUnoccludedContentRect(
450 delegated_quad.visible_rect); 449 delegated_quad->visible_rect);
451 450
452 if (quad_visible_rect.IsEmpty()) 451 if (quad_visible_rect.IsEmpty())
453 continue; 452 continue;
454 453
455 if (delegated_quad.material != DrawQuad::RENDER_PASS) { 454 if (delegated_quad->material != DrawQuad::RENDER_PASS) {
456 DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad( 455 DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad(
457 &delegated_quad, output_shared_quad_state); 456 delegated_quad, output_shared_quad_state);
458 output_quad->visible_rect = quad_visible_rect; 457 output_quad->visible_rect = quad_visible_rect;
459 } else { 458 } else {
460 RenderPassId delegated_contributing_render_pass_id = 459 RenderPassId delegated_contributing_render_pass_id =
461 RenderPassDrawQuad::MaterialCast(&delegated_quad)->render_pass_id; 460 RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id;
462 RenderPassId output_contributing_render_pass_id(-1, -1); 461 RenderPassId output_contributing_render_pass_id(-1, -1);
463 462
464 bool present = 463 bool present =
465 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id, 464 ConvertDelegatedRenderPassId(delegated_contributing_render_pass_id,
466 &output_contributing_render_pass_id); 465 &output_contributing_render_pass_id);
467 466
468 // The frame may have a RenderPassDrawQuad that points to a RenderPass not 467 // The frame may have a RenderPassDrawQuad that points to a RenderPass not
469 // part of the frame. Just ignore these quads. 468 // part of the frame. Just ignore these quads.
470 if (present) { 469 if (present) {
471 DCHECK(output_contributing_render_pass_id != 470 DCHECK(output_contributing_render_pass_id !=
472 append_quads_data->render_pass_id); 471 append_quads_data->render_pass_id);
473 472
474 RenderPassDrawQuad* output_quad = 473 RenderPassDrawQuad* output_quad =
475 render_pass->CopyFromAndAppendRenderPassDrawQuad( 474 render_pass->CopyFromAndAppendRenderPassDrawQuad(
476 RenderPassDrawQuad::MaterialCast(&delegated_quad), 475 RenderPassDrawQuad::MaterialCast(delegated_quad),
477 output_shared_quad_state, 476 output_shared_quad_state,
478 output_contributing_render_pass_id); 477 output_contributing_render_pass_id);
479 output_quad->visible_rect = quad_visible_rect; 478 output_quad->visible_rect = quad_visible_rect;
480 } 479 }
481 } 480 }
482 } 481 }
483 } 482 }
484 483
485 const char* DelegatedRendererLayerImpl::LayerTypeAsString() const { 484 const char* DelegatedRendererLayerImpl::LayerTypeAsString() const {
486 return "cc::DelegatedRendererLayerImpl"; 485 return "cc::DelegatedRendererLayerImpl";
487 } 486 }
488 487
489 void DelegatedRendererLayerImpl::ClearChildId() { 488 void DelegatedRendererLayerImpl::ClearChildId() {
490 if (!child_id_) 489 if (!child_id_)
491 return; 490 return;
492 491
493 if (own_child_id_) { 492 if (own_child_id_) {
494 ResourceProvider* provider = layer_tree_impl()->resource_provider(); 493 ResourceProvider* provider = layer_tree_impl()->resource_provider();
495 provider->DestroyChild(child_id_); 494 provider->DestroyChild(child_id_);
496 } 495 }
497 496
498 resources_.clear(); 497 resources_.clear();
499 child_id_ = 0; 498 child_id_ = 0;
500 } 499 }
501 500
502 } // namespace cc 501 } // namespace cc
OLDNEW
« no previous file with comments | « cc/cc_tests.gyp ('k') | cc/layers/nine_patch_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698