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_; |