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