Index: cc/ipc/cc_serialization_perftest.cc |
diff --git a/cc/ipc/cc_serialization_perftest.cc b/cc/ipc/cc_serialization_perftest.cc |
index 9cfa3761836b8b300d9d0e8353c59f5caf603b4a..30d7835a1cc4198be9a3c84717abdece2f27a150 100644 |
--- a/cc/ipc/cc_serialization_perftest.cc |
+++ b/cc/ipc/cc_serialization_perftest.cc |
@@ -35,6 +35,8 @@ static const int kTimeLimitMillis = 2000; |
static const int kNumWarmupRuns = 20; |
static const int kTimeCheckInterval = 10; |
+enum class UseSingleSharedQuadState { YES, NO }; |
+ |
class CCSerializationPerfTest : public testing::Test { |
protected: |
static bool ReadMessage(const IPC::Message* msg, CompositorFrame* frame) { |
@@ -179,6 +181,33 @@ class CCSerializationPerfTest : public testing::Test { |
"", test_name, count, "", true); |
} |
+ static void RunCompositorFrameTest(const std::string& test_name, |
+ uint32_t num_quads, |
+ uint32_t num_passes, |
+ UseSingleSharedQuadState single_sqs) { |
+ CompositorFrame frame; |
+ frame.delegated_frame_data.reset(new DelegatedFrameData); |
+ |
+ for (uint32_t i = 0; i < num_passes; ++i) { |
+ std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
+ render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
+ gfx::Transform()); |
+ for (uint32_t j = 0; j < num_quads; ++j) { |
+ if (j == 0 || single_sqs == UseSingleSharedQuadState::NO) |
+ render_pass->CreateAndAppendSharedQuadState(); |
+ const gfx::Rect bounds(100, 100, 100, 100); |
+ const bool kForceAntiAliasingOff = true; |
+ SolidColorDrawQuad* quad = |
+ render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
+ quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
+ SK_ColorRED, kForceAntiAliasingOff); |
+ } |
+ frame.delegated_frame_data->render_pass_list.push_back( |
+ std::move(render_pass)); |
+ } |
+ RunTest(test_name, std::move(frame)); |
+ } |
+ |
static void RunTest(const std::string& test_name, CompositorFrame frame) { |
RunSerializationTestStructTraits(test_name, frame); |
RunDeserializationTestStructTraits(test_name, frame); |
@@ -188,119 +217,38 @@ class CCSerializationPerfTest : public testing::Test { |
}; |
TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyQuads_1_4000) { |
- CompositorFrame frame; |
- |
- std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
- render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
- gfx::Transform()); |
- render_pass->CreateAndAppendSharedQuadState(); |
- for (int i = 0; i < 4000; ++i) { |
- const gfx::Rect bounds(100, 100, 100, 100); |
- const bool kForceAntiAliasingOff = true; |
- SolidColorDrawQuad* quad = |
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
- quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
- SK_ColorRED, kForceAntiAliasingOff); |
- } |
- |
- frame.delegated_frame_data.reset(new DelegatedFrameData); |
- frame.delegated_frame_data->render_pass_list.push_back( |
- std::move(render_pass)); |
- |
- RunTest("DelegatedFrame_ManyQuads_1_4000", std::move(frame)); |
+ RunCompositorFrameTest("DelegatedFrame_ManyQuads_1_4000", 4000, 1, |
+ UseSingleSharedQuadState::YES); |
} |
TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyQuads_1_100000) { |
- CompositorFrame frame; |
- |
- std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
- render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
- gfx::Transform()); |
- render_pass->CreateAndAppendSharedQuadState(); |
- for (int i = 0; i < 100000; ++i) { |
- const gfx::Rect bounds(100, 100, 100, 100); |
- const bool kForceAntiAliasingOff = true; |
- SolidColorDrawQuad* quad = |
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
- quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
- SK_ColorRED, kForceAntiAliasingOff); |
- } |
- |
- frame.delegated_frame_data.reset(new DelegatedFrameData); |
- frame.delegated_frame_data->render_pass_list.push_back( |
- std::move(render_pass)); |
- |
- RunTest("DelegatedFrame_ManyQuads_1_100000", std::move(frame)); |
+ RunCompositorFrameTest("DelegatedFrame_ManyQuads_1_100000", 100000, 1, |
+ UseSingleSharedQuadState::YES); |
} |
TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyQuads_4000_4000) { |
- CompositorFrame frame; |
- |
- std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
- render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
- gfx::Transform()); |
- for (int i = 0; i < 4000; ++i) { |
- const gfx::Rect bounds(100, 100, 100, 100); |
- const bool kForceAntiAliasingOff = true; |
- render_pass->CreateAndAppendSharedQuadState(); |
- SolidColorDrawQuad* quad = |
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
- quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
- SK_ColorRED, kForceAntiAliasingOff); |
- } |
- |
- frame.delegated_frame_data.reset(new DelegatedFrameData); |
- frame.delegated_frame_data->render_pass_list.push_back( |
- std::move(render_pass)); |
- |
- RunTest("DelegatedFrame_ManyQuads_4000_4000", std::move(frame)); |
+ RunCompositorFrameTest("DelegatedFrame_ManyQuads_4000_4000", 4000, 1, |
+ UseSingleSharedQuadState::NO); |
} |
TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyQuads_100000_100000) { |
- CompositorFrame frame; |
- |
- std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
- render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
- gfx::Transform()); |
- for (int i = 0; i < 100000; ++i) { |
- render_pass->CreateAndAppendSharedQuadState(); |
- const gfx::Rect bounds(100, 100, 100, 100); |
- const bool kForceAntiAliasingOff = true; |
- SolidColorDrawQuad* quad = |
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
- quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
- SK_ColorRED, kForceAntiAliasingOff); |
- } |
- |
- frame.delegated_frame_data.reset(new DelegatedFrameData); |
- frame.delegated_frame_data->render_pass_list.push_back( |
- std::move(render_pass)); |
+ RunCompositorFrameTest("DelegatedFrame_ManyQuads_100000_100000", 100000, 1, |
+ UseSingleSharedQuadState::NO); |
+} |
- RunTest("DelegatedFrame_ManyQuads_100000_100000", std::move(frame)); |
+TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyRenderPasses_5_100) { |
+ RunCompositorFrameTest("DelegatedFrame_ManyRenderPasses_5_100", 100, 5, |
+ UseSingleSharedQuadState::NO); |
} |
-TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyRenderPasses_10000_100) { |
- CompositorFrame frame; |
- frame.delegated_frame_data.reset(new DelegatedFrameData); |
- |
- for (int i = 0; i < 1000; ++i) { |
- std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
- render_pass->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), |
- gfx::Transform()); |
- for (int j = 0; j < 100; ++j) { |
- render_pass->CreateAndAppendSharedQuadState(); |
- const gfx::Rect bounds(100, 100, 100, 100); |
- const bool kForceAntiAliasingOff = true; |
- SolidColorDrawQuad* quad = |
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
- quad->SetNew(render_pass->shared_quad_state_list.back(), bounds, bounds, |
- SK_ColorRED, kForceAntiAliasingOff); |
- } |
- frame.delegated_frame_data->render_pass_list.push_back( |
- std::move(render_pass)); |
- } |
+TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyRenderPasses_10_500) { |
+ RunCompositorFrameTest("DelegatedFrame_ManyRenderPasses_10_500", 500, 10, |
+ UseSingleSharedQuadState::NO); |
+} |
- RunTest("DelegatedFrame_ManyRenderPasses_10000_100", std::move(frame)); |
+TEST_F(CCSerializationPerfTest, DelegatedFrame_ManyRenderPasses_1000_100) { |
+ RunCompositorFrameTest("DelegatedFrame_ManyRenderPasses_10000_100", 100, 1000, |
+ UseSingleSharedQuadState::NO); |
} |
} // namespace |