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

Side by Side Diff: cc/trees/layer_tree_host_impl.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/test/layer_test_common.cc ('k') | cc/trees/layer_tree_host_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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 895
896 occlusion_tracker.LeaveLayer(it); 896 occlusion_tracker.LeaveLayer(it);
897 } 897 }
898 898
899 if (have_copy_request || 899 if (have_copy_request ||
900 output_surface_->capabilities().draw_and_swap_full_viewport_every_frame) 900 output_surface_->capabilities().draw_and_swap_full_viewport_every_frame)
901 draw_result = DRAW_SUCCESS; 901 draw_result = DRAW_SUCCESS;
902 902
903 #if DCHECK_IS_ON 903 #if DCHECK_IS_ON
904 for (size_t i = 0; i < frame->render_passes.size(); ++i) { 904 for (size_t i = 0; i < frame->render_passes.size(); ++i) {
905 for (size_t j = 0; j < frame->render_passes[i]->quad_list.size(); ++j) 905 for (QuadList::Iterator iter = frame->render_passes[i]->quad_list.begin();
906 DCHECK(frame->render_passes[i]->quad_list[j]->shared_quad_state); 906 iter != frame->render_passes[i]->quad_list.end();
907 ++iter)
908 DCHECK(iter->shared_quad_state);
907 DCHECK(frame->render_passes_by_id.find(frame->render_passes[i]->id) 909 DCHECK(frame->render_passes_by_id.find(frame->render_passes[i]->id)
908 != frame->render_passes_by_id.end()); 910 != frame->render_passes_by_id.end());
909 } 911 }
910 #endif 912 #endif
911 DCHECK(frame->render_passes.back()->output_rect.origin().IsOrigin()); 913 DCHECK(frame->render_passes.back()->output_rect.origin().IsOrigin());
912 914
913 if (!active_tree_->has_transparent_background()) { 915 if (!active_tree_->has_transparent_background()) {
914 frame->render_passes.back()->has_transparent_background = false; 916 frame->render_passes.back()->has_transparent_background = false;
915 AppendQuadsToFillScreen( 917 AppendQuadsToFillScreen(
916 ResourceIdForUIResource(overhang_ui_resource_id_), 918 ResourceIdForUIResource(overhang_ui_resource_id_),
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 frame->render_passes.erase(to_remove); 1020 frame->render_passes.erase(to_remove);
1019 frame->render_passes_by_id.erase(remove_render_pass_id); 1021 frame->render_passes_by_id.erase(remove_render_pass_id);
1020 1022
1021 // Now follow up for all RenderPass quads and remove their RenderPasses 1023 // Now follow up for all RenderPass quads and remove their RenderPasses
1022 // recursively. 1024 // recursively.
1023 const QuadList& quad_list = removed_pass->quad_list; 1025 const QuadList& quad_list = removed_pass->quad_list;
1024 QuadList::ConstBackToFrontIterator quad_list_iterator = 1026 QuadList::ConstBackToFrontIterator quad_list_iterator =
1025 quad_list.BackToFrontBegin(); 1027 quad_list.BackToFrontBegin();
1026 for (; quad_list_iterator != quad_list.BackToFrontEnd(); 1028 for (; quad_list_iterator != quad_list.BackToFrontEnd();
1027 ++quad_list_iterator) { 1029 ++quad_list_iterator) {
1028 DrawQuad* current_quad = (*quad_list_iterator); 1030 const DrawQuad* current_quad = &*quad_list_iterator;
1029 if (current_quad->material != DrawQuad::RENDER_PASS) 1031 if (current_quad->material != DrawQuad::RENDER_PASS)
1030 continue; 1032 continue;
1031 1033
1032 RenderPassId next_remove_render_pass_id = 1034 RenderPassId next_remove_render_pass_id =
1033 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id; 1035 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id;
1034 RemoveRenderPassesRecursive(next_remove_render_pass_id, frame); 1036 RemoveRenderPassesRecursive(next_remove_render_pass_id, frame);
1035 } 1037 }
1036 } 1038 }
1037 1039
1038 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::ShouldRemoveRenderPass( 1040 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::ShouldRemoveRenderPass(
1039 const RenderPassDrawQuad& quad, const FrameData& frame) const { 1041 const RenderPassDrawQuad& quad, const FrameData& frame) const {
1040 const RenderPass* render_pass = 1042 const RenderPass* render_pass =
1041 FindRenderPassById(quad.render_pass_id, frame); 1043 FindRenderPassById(quad.render_pass_id, frame);
1042 if (!render_pass) 1044 if (!render_pass)
1043 return false; 1045 return false;
1044 1046
1045 // If any quad or RenderPass draws into this RenderPass, then keep it. 1047 // If any quad or RenderPass draws into this RenderPass, then keep it.
1046 const QuadList& quad_list = render_pass->quad_list; 1048 const QuadList& quad_list = render_pass->quad_list;
1047 for (QuadList::ConstBackToFrontIterator quad_list_iterator = 1049 for (QuadList::ConstBackToFrontIterator quad_list_iterator =
1048 quad_list.BackToFrontBegin(); 1050 quad_list.BackToFrontBegin();
1049 quad_list_iterator != quad_list.BackToFrontEnd(); 1051 quad_list_iterator != quad_list.BackToFrontEnd();
1050 ++quad_list_iterator) { 1052 ++quad_list_iterator) {
1051 DrawQuad* current_quad = *quad_list_iterator; 1053 const DrawQuad* current_quad = &*quad_list_iterator;
1052 1054
1053 if (current_quad->material != DrawQuad::RENDER_PASS) 1055 if (current_quad->material != DrawQuad::RENDER_PASS)
1054 return false; 1056 return false;
1055 1057
1056 const RenderPass* contributing_pass = FindRenderPassById( 1058 const RenderPass* contributing_pass = FindRenderPassById(
1057 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id, frame); 1059 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id, frame);
1058 if (contributing_pass) 1060 if (contributing_pass)
1059 return false; 1061 return false;
1060 } 1062 }
1061 return true; 1063 return true;
(...skipping 11 matching lines...) Expand all
1073 for (size_t it = culler.RenderPassListBegin(frame->render_passes); 1075 for (size_t it = culler.RenderPassListBegin(frame->render_passes);
1074 it != culler.RenderPassListEnd(frame->render_passes); 1076 it != culler.RenderPassListEnd(frame->render_passes);
1075 it = culler.RenderPassListNext(it)) { 1077 it = culler.RenderPassListNext(it)) {
1076 const RenderPass* current_pass = frame->render_passes[it]; 1078 const RenderPass* current_pass = frame->render_passes[it];
1077 const QuadList& quad_list = current_pass->quad_list; 1079 const QuadList& quad_list = current_pass->quad_list;
1078 QuadList::ConstBackToFrontIterator quad_list_iterator = 1080 QuadList::ConstBackToFrontIterator quad_list_iterator =
1079 quad_list.BackToFrontBegin(); 1081 quad_list.BackToFrontBegin();
1080 1082
1081 for (; quad_list_iterator != quad_list.BackToFrontEnd(); 1083 for (; quad_list_iterator != quad_list.BackToFrontEnd();
1082 ++quad_list_iterator) { 1084 ++quad_list_iterator) {
1083 DrawQuad* current_quad = *quad_list_iterator; 1085 const DrawQuad* current_quad = &*quad_list_iterator;
1084 1086
1085 if (current_quad->material != DrawQuad::RENDER_PASS) 1087 if (current_quad->material != DrawQuad::RENDER_PASS)
1086 continue; 1088 continue;
1087 1089
1088 const RenderPassDrawQuad* render_pass_quad = 1090 const RenderPassDrawQuad* render_pass_quad =
1089 RenderPassDrawQuad::MaterialCast(current_quad); 1091 RenderPassDrawQuad::MaterialCast(current_quad);
1090 if (!culler.ShouldRemoveRenderPass(*render_pass_quad, *frame)) 1092 if (!culler.ShouldRemoveRenderPass(*render_pass_quad, *frame))
1091 continue; 1093 continue;
1092 1094
1093 // We are changing the vector in the middle of iteration. Because we 1095 // We are changing the vector in the middle of iteration. Because we
(...skipping 2295 matching lines...) Expand 10 before | Expand all | Expand 10 after
3389 } 3391 }
3390 3392
3391 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3393 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3392 std::vector<PictureLayerImpl*>::iterator it = 3394 std::vector<PictureLayerImpl*>::iterator it =
3393 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3395 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3394 DCHECK(it != picture_layers_.end()); 3396 DCHECK(it != picture_layers_.end());
3395 picture_layers_.erase(it); 3397 picture_layers_.erase(it);
3396 } 3398 }
3397 3399
3398 } // namespace cc 3400 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_test_common.cc ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698