| Index: cc/surfaces/surface_aggregator_perftest.cc
|
| diff --git a/cc/surfaces/surface_aggregator_perftest.cc b/cc/surfaces/surface_aggregator_perftest.cc
|
| index c91741c9cc8be00eb4a15a3e685b9646ccf669cc..0d990f0ac9263272a20140c2120c0be62acc9a01 100644
|
| --- a/cc/surfaces/surface_aggregator_perftest.cc
|
| +++ b/cc/surfaces/surface_aggregator_perftest.cc
|
| @@ -21,6 +21,7 @@
|
| namespace cc {
|
| namespace {
|
|
|
| +static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1);
|
| static const base::UnguessableToken kArbitraryToken =
|
| base::UnguessableToken::Create();
|
|
|
| @@ -32,7 +33,8 @@
|
|
|
| class SurfaceAggregatorPerfTest : public testing::Test {
|
| public:
|
| - SurfaceAggregatorPerfTest() {
|
| + SurfaceAggregatorPerfTest()
|
| + : factory_(kArbitraryFrameSinkId, &manager_, &empty_client_) {
|
| context_provider_ = TestContextProvider::Create();
|
| context_provider_->BindToCurrentThread();
|
| shared_bitmap_manager_.reset(new TestSharedBitmapManager);
|
| @@ -47,14 +49,11 @@
|
| bool optimize_damage,
|
| bool full_damage,
|
| const std::string& name) {
|
| - std::unique_ptr<SurfaceFactory> child_factories[num_surfaces];
|
| - for (int i = 0; i < num_surfaces; i++)
|
| - child_factories[i].reset(
|
| - new SurfaceFactory(FrameSinkId(1, i + 1), &manager_, &empty_client_));
|
| aggregator_.reset(new SurfaceAggregator(&manager_, resource_provider_.get(),
|
| optimize_damage));
|
| - for (int i = 0; i < num_surfaces; i++) {
|
| - LocalFrameId local_frame_id(i + 1, kArbitraryToken);
|
| + for (int i = 1; i <= num_surfaces; i++) {
|
| + LocalFrameId local_frame_id(i, kArbitraryToken);
|
| + factory_.Create(local_frame_id);
|
| std::unique_ptr<RenderPass> pass(RenderPass::Create());
|
| CompositorFrame frame;
|
|
|
| @@ -87,21 +86,20 @@
|
| }
|
| sqs = pass->CreateAndAppendSharedQuadState();
|
| sqs->opacity = opacity;
|
| - if (i >= 1) {
|
| + if (i > 1) {
|
| SurfaceDrawQuad* surface_quad =
|
| pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
|
| - surface_quad->SetNew(
|
| - sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
|
| - SurfaceId(FrameSinkId(1, i), LocalFrameId(i, kArbitraryToken)));
|
| + surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1),
|
| + SurfaceId(kArbitraryFrameSinkId,
|
| + LocalFrameId(i - 1, kArbitraryToken)));
|
| }
|
|
|
| frame.render_pass_list.push_back(std::move(pass));
|
| - child_factories[i]->SubmitCompositorFrame(
|
| - local_frame_id, std::move(frame), SurfaceFactory::DrawCallback());
|
| + factory_.SubmitCompositorFrame(local_frame_id, std::move(frame),
|
| + SurfaceFactory::DrawCallback());
|
| }
|
|
|
| - SurfaceFactory root_factory(FrameSinkId(1, num_surfaces + 1), &manager_,
|
| - &empty_client_);
|
| + factory_.Create(LocalFrameId(num_surfaces + 1, kArbitraryToken));
|
| timer_.Reset();
|
| do {
|
| std::unique_ptr<RenderPass> pass(RenderPass::Create());
|
| @@ -112,7 +110,7 @@
|
| pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
|
| surface_quad->SetNew(
|
| sqs, gfx::Rect(0, 0, 100, 100), gfx::Rect(0, 0, 100, 100),
|
| - SurfaceId(FrameSinkId(1, num_surfaces),
|
| + SurfaceId(kArbitraryFrameSinkId,
|
| LocalFrameId(num_surfaces, kArbitraryToken)));
|
|
|
| if (full_damage)
|
| @@ -121,27 +119,28 @@
|
| pass->damage_rect = gfx::Rect(0, 0, 1, 1);
|
|
|
| frame.render_pass_list.push_back(std::move(pass));
|
| -
|
| - root_factory.SubmitCompositorFrame(
|
| + factory_.SubmitCompositorFrame(
|
| LocalFrameId(num_surfaces + 1, kArbitraryToken), std::move(frame),
|
| SurfaceFactory::DrawCallback());
|
|
|
| CompositorFrame aggregated = aggregator_->Aggregate(
|
| - SurfaceId(FrameSinkId(1, num_surfaces + 1),
|
| + SurfaceId(kArbitraryFrameSinkId,
|
| LocalFrameId(num_surfaces + 1, kArbitraryToken)));
|
| timer_.NextLap();
|
| } while (!timer_.HasTimeLimitExpired());
|
|
|
| perf_test::PrintResult("aggregator_speed", "", name, timer_.LapsPerSecond(),
|
| "runs/s", true);
|
| - for (int i = 0; i < num_surfaces; i++)
|
| - child_factories[i]->EvictSurface();
|
| - root_factory.EvictSurface();
|
| +
|
| + factory_.Destroy(LocalFrameId(num_surfaces + 1, kArbitraryToken));
|
| + for (int i = 1; i <= num_surfaces; i++)
|
| + factory_.Destroy(LocalFrameId(i, kArbitraryToken));
|
| }
|
|
|
| protected:
|
| SurfaceManager manager_;
|
| EmptySurfaceFactoryClient empty_client_;
|
| + SurfaceFactory factory_;
|
| scoped_refptr<TestContextProvider> context_provider_;
|
| std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
|
| std::unique_ptr<ResourceProvider> resource_provider_;
|
|
|