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