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

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

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 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/surfaces/surface_aggregator.cc ('k') | cc/surfaces/surface_aggregator_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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/memory/ptr_util.h"
5 #include "cc/debug/lap_timer.h" 6 #include "cc/debug/lap_timer.h"
6 #include "cc/output/compositor_frame.h" 7 #include "cc/output/compositor_frame.h"
7 #include "cc/output/delegated_frame_data.h" 8 #include "cc/output/delegated_frame_data.h"
8 #include "cc/quads/surface_draw_quad.h" 9 #include "cc/quads/surface_draw_quad.h"
9 #include "cc/quads/texture_draw_quad.h" 10 #include "cc/quads/texture_draw_quad.h"
10 #include "cc/surfaces/surface_aggregator.h" 11 #include "cc/surfaces/surface_aggregator.h"
11 #include "cc/surfaces/surface_factory.h" 12 #include "cc/surfaces/surface_factory.h"
12 #include "cc/surfaces/surface_factory_client.h" 13 #include "cc/surfaces/surface_factory_client.h"
13 #include "cc/surfaces/surface_manager.h" 14 #include "cc/surfaces/surface_manager.h"
14 #include "cc/test/fake_output_surface.h" 15 #include "cc/test/fake_output_surface.h"
15 #include "cc/test/fake_output_surface_client.h" 16 #include "cc/test/fake_output_surface_client.h"
16 #include "cc/test/fake_resource_provider.h" 17 #include "cc/test/fake_resource_provider.h"
17 #include "cc/test/test_shared_bitmap_manager.h" 18 #include "cc/test/test_shared_bitmap_manager.h"
18 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
19 #include "testing/perf/perf_test.h" 20 #include "testing/perf/perf_test.h"
20 21
21 namespace cc { 22 namespace cc {
22 namespace { 23 namespace {
23 24
24 class EmptySurfaceFactoryClient : public SurfaceFactoryClient { 25 class EmptySurfaceFactoryClient : public SurfaceFactoryClient {
25 public: 26 public:
26 void ReturnResources(const ReturnedResourceArray& resources) override {} 27 void ReturnResources(const ReturnedResourceArray& resources) override {}
27 void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override {} 28 void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override {}
28 }; 29 };
29 30
30 class SurfaceAggregatorPerfTest : public testing::Test { 31 class SurfaceAggregatorPerfTest : public testing::Test {
31 public: 32 public:
32 SurfaceAggregatorPerfTest() : factory_(&manager_, &empty_client_) { 33 SurfaceAggregatorPerfTest() : factory_(&manager_, &empty_client_) {
33 output_surface_ = FakeOutputSurface::CreateSoftware( 34 output_surface_ = FakeOutputSurface::CreateSoftware(
34 make_scoped_ptr(new SoftwareOutputDevice)); 35 base::WrapUnique(new SoftwareOutputDevice));
35 output_surface_->BindToClient(&output_surface_client_); 36 output_surface_->BindToClient(&output_surface_client_);
36 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 37 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
37 38
38 resource_provider_ = FakeResourceProvider::Create( 39 resource_provider_ = FakeResourceProvider::Create(
39 output_surface_.get(), shared_bitmap_manager_.get()); 40 output_surface_.get(), shared_bitmap_manager_.get());
40 } 41 }
41 42
42 void RunTest(int num_surfaces, 43 void RunTest(int num_surfaces,
43 int num_textures, 44 int num_textures,
44 float opacity, 45 float opacity,
45 bool optimize_damage, 46 bool optimize_damage,
46 bool full_damage, 47 bool full_damage,
47 const std::string& name) { 48 const std::string& name) {
48 aggregator_.reset(new SurfaceAggregator(&manager_, resource_provider_.get(), 49 aggregator_.reset(new SurfaceAggregator(&manager_, resource_provider_.get(),
49 optimize_damage)); 50 optimize_damage));
50 for (int i = 1; i <= num_surfaces; i++) { 51 for (int i = 1; i <= num_surfaces; i++) {
51 factory_.Create(SurfaceId(i)); 52 factory_.Create(SurfaceId(i));
52 scoped_ptr<RenderPass> pass(RenderPass::Create()); 53 std::unique_ptr<RenderPass> pass(RenderPass::Create());
53 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 54 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
54 55
55 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 56 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
56 for (int j = 0; j < num_textures; j++) { 57 for (int j = 0; j < num_textures; j++) {
57 TransferableResource resource; 58 TransferableResource resource;
58 resource.id = j; 59 resource.id = j;
59 resource.is_software = true; 60 resource.is_software = true;
60 frame_data->resource_list.push_back(resource); 61 frame_data->resource_list.push_back(resource);
61 62
62 TextureDrawQuad* quad = 63 TextureDrawQuad* quad =
63 pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 64 pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
(...skipping 18 matching lines...) Expand all
82 sqs = pass->CreateAndAppendSharedQuadState(); 83 sqs = pass->CreateAndAppendSharedQuadState();
83 sqs->opacity = opacity; 84 sqs->opacity = opacity;
84 if (i > 1) { 85 if (i > 1) {
85 SurfaceDrawQuad* surface_quad = 86 SurfaceDrawQuad* surface_quad =
86 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 87 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
87 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), 88 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
88 SurfaceId(i - 1)); 89 SurfaceId(i - 1));
89 } 90 }
90 91
91 frame_data->render_pass_list.push_back(std::move(pass)); 92 frame_data->render_pass_list.push_back(std::move(pass));
92 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 93 std::unique_ptr<CompositorFrame> frame(new CompositorFrame);
93 frame->delegated_frame_data = std::move(frame_data); 94 frame->delegated_frame_data = std::move(frame_data);
94 factory_.SubmitCompositorFrame(SurfaceId(i), std::move(frame), 95 factory_.SubmitCompositorFrame(SurfaceId(i), std::move(frame),
95 SurfaceFactory::DrawCallback()); 96 SurfaceFactory::DrawCallback());
96 } 97 }
97 98
98 factory_.Create(SurfaceId(num_surfaces + 1)); 99 factory_.Create(SurfaceId(num_surfaces + 1));
99 timer_.Reset(); 100 timer_.Reset();
100 do { 101 do {
101 scoped_ptr<RenderPass> pass(RenderPass::Create()); 102 std::unique_ptr<RenderPass> pass(RenderPass::Create());
102 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 103 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
103 104
104 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 105 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
105 SurfaceDrawQuad* surface_quad = 106 SurfaceDrawQuad* surface_quad =
106 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); 107 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
107 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 100, 100), 108 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 100, 100),
108 gfx::Rect(0, 0, 100, 100), SurfaceId(num_surfaces)); 109 gfx::Rect(0, 0, 100, 100), SurfaceId(num_surfaces));
109 110
110 if (full_damage) 111 if (full_damage)
111 pass->damage_rect = gfx::Rect(0, 0, 100, 100); 112 pass->damage_rect = gfx::Rect(0, 0, 100, 100);
112 else 113 else
113 pass->damage_rect = gfx::Rect(0, 0, 1, 1); 114 pass->damage_rect = gfx::Rect(0, 0, 1, 1);
114 115
115 frame_data->render_pass_list.push_back(std::move(pass)); 116 frame_data->render_pass_list.push_back(std::move(pass));
116 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 117 std::unique_ptr<CompositorFrame> frame(new CompositorFrame);
117 frame->delegated_frame_data = std::move(frame_data); 118 frame->delegated_frame_data = std::move(frame_data);
118 factory_.SubmitCompositorFrame(SurfaceId(num_surfaces + 1), 119 factory_.SubmitCompositorFrame(SurfaceId(num_surfaces + 1),
119 std::move(frame), 120 std::move(frame),
120 SurfaceFactory::DrawCallback()); 121 SurfaceFactory::DrawCallback());
121 122
122 scoped_ptr<CompositorFrame> aggregated = 123 std::unique_ptr<CompositorFrame> aggregated =
123 aggregator_->Aggregate(SurfaceId(num_surfaces + 1)); 124 aggregator_->Aggregate(SurfaceId(num_surfaces + 1));
124 timer_.NextLap(); 125 timer_.NextLap();
125 } while (!timer_.HasTimeLimitExpired()); 126 } while (!timer_.HasTimeLimitExpired());
126 127
127 perf_test::PrintResult("aggregator_speed", "", name, timer_.LapsPerSecond(), 128 perf_test::PrintResult("aggregator_speed", "", name, timer_.LapsPerSecond(),
128 "runs/s", true); 129 "runs/s", true);
129 130
130 factory_.Destroy(SurfaceId(num_surfaces + 1)); 131 factory_.Destroy(SurfaceId(num_surfaces + 1));
131 for (int i = 1; i <= num_surfaces; i++) 132 for (int i = 1; i <= num_surfaces; i++)
132 factory_.Destroy(SurfaceId(i)); 133 factory_.Destroy(SurfaceId(i));
133 } 134 }
134 135
135 protected: 136 protected:
136 SurfaceManager manager_; 137 SurfaceManager manager_;
137 EmptySurfaceFactoryClient empty_client_; 138 EmptySurfaceFactoryClient empty_client_;
138 SurfaceFactory factory_; 139 SurfaceFactory factory_;
139 FakeOutputSurfaceClient output_surface_client_; 140 FakeOutputSurfaceClient output_surface_client_;
140 scoped_ptr<OutputSurface> output_surface_; 141 std::unique_ptr<OutputSurface> output_surface_;
141 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 142 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
142 scoped_ptr<ResourceProvider> resource_provider_; 143 std::unique_ptr<ResourceProvider> resource_provider_;
143 scoped_ptr<SurfaceAggregator> aggregator_; 144 std::unique_ptr<SurfaceAggregator> aggregator_;
144 LapTimer timer_; 145 LapTimer timer_;
145 }; 146 };
146 147
147 TEST_F(SurfaceAggregatorPerfTest, ManySurfacesOpaque) { 148 TEST_F(SurfaceAggregatorPerfTest, ManySurfacesOpaque) {
148 RunTest(20, 100, 1.f, false, true, "many_surfaces_opaque"); 149 RunTest(20, 100, 1.f, false, true, "many_surfaces_opaque");
149 } 150 }
150 151
151 TEST_F(SurfaceAggregatorPerfTest, ManySurfacesTransparent) { 152 TEST_F(SurfaceAggregatorPerfTest, ManySurfacesTransparent) {
152 RunTest(20, 100, .5f, false, true, "many_surfaces_transparent"); 153 RunTest(20, 100, .5f, false, true, "many_surfaces_transparent");
153 } 154 }
(...skipping 13 matching lines...) Expand all
167 TEST_F(SurfaceAggregatorPerfTest, FewSurfacesDamageCalc) { 168 TEST_F(SurfaceAggregatorPerfTest, FewSurfacesDamageCalc) {
168 RunTest(3, 1000, 1.f, true, true, "few_surfaces_damage_calc"); 169 RunTest(3, 1000, 1.f, true, true, "few_surfaces_damage_calc");
169 } 170 }
170 171
171 TEST_F(SurfaceAggregatorPerfTest, FewSurfacesAggregateDamaged) { 172 TEST_F(SurfaceAggregatorPerfTest, FewSurfacesAggregateDamaged) {
172 RunTest(3, 1000, 1.f, true, false, "few_surfaces_aggregate_damaged"); 173 RunTest(3, 1000, 1.f, true, false, "few_surfaces_aggregate_damaged");
173 } 174 }
174 175
175 } // namespace 176 } // namespace
176 } // namespace cc 177 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/surface_aggregator.cc ('k') | cc/surfaces/surface_aggregator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698