Chromium Code Reviews| Index: cc/trees/layer_tree_host_common_perftest.cc |
| diff --git a/cc/trees/layer_tree_host_common_perftest.cc b/cc/trees/layer_tree_host_common_perftest.cc |
| index 02b0770495b4c42c789c13ad427200318a2aae86..ae0d7b4420ab6ee2f84ecb1a9ae0dd11f2218721 100644 |
| --- a/cc/trees/layer_tree_host_common_perftest.cc |
| +++ b/cc/trees/layer_tree_host_common_perftest.cc |
| @@ -8,12 +8,18 @@ |
| #include "base/file_util.h" |
| #include "base/files/file_path.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "base/path_service.h" |
| #include "base/strings/string_piece.h" |
| #include "base/threading/thread.h" |
| #include "base/time/time.h" |
| +#include "cc/base/scoped_ptr_vector.h" |
| #include "cc/debug/lap_timer.h" |
| #include "cc/layers/layer.h" |
| +#include "cc/output/bsp_controller.h" |
| +#include "cc/output/bsp_tree.h" |
| +#include "cc/quads/draw_polygon.h" |
| +#include "cc/quads/draw_quad.h" |
| #include "cc/test/fake_content_layer_client.h" |
| #include "cc/test/fake_layer_tree_host_client.h" |
| #include "cc/test/layer_tree_json_parser.h" |
| @@ -21,6 +27,7 @@ |
| #include "cc/test/paths.h" |
| #include "cc/trees/layer_sorter.h" |
| #include "cc/trees/layer_tree_impl.h" |
| +#include "cc/trees/single_thread_proxy.h" |
| #include "testing/perf/perf_test.h" |
| namespace cc { |
| @@ -207,6 +214,62 @@ class LayerSorterMainTest : public CalcDrawPropsImplTest { |
| LayerSorter layer_sorter_; |
| }; |
| +class BspTreePerfTest : public LayerSorterMainTest { |
| + public: |
| + void RunSortLayers() { RunTest(false, false, false); } |
| + |
| + virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| + |
| + virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| + LayerTreeImpl* active_tree = host_impl->active_tree(); |
| + // First build the tree and then we'll start running tests on layersorter |
| + // itself |
| + bool can_render_to_separate_surface = true; |
| + int max_texture_size = 8096; |
| + DoCalcDrawPropertiesImpl(can_render_to_separate_surface, |
| + max_texture_size, |
| + active_tree, |
| + host_impl); |
| + |
| + LayerImplList base_list; |
| + BuildLayerImplList(active_tree->root_layer(), &base_list); |
| + |
| + int polygon_counter = 0; |
| + ScopedPtrVector<DrawPolygon> polygon_list; |
| + for (LayerImplList::iterator it = base_list.begin(); it != base_list.end(); |
| + ++it) { |
| + gfx::Point3F points[8]; |
| + int num_vertices_in_clipped_quad; |
| + gfx::QuadF send_quad((*it)->visible_content_rect()); |
| + MathUtil::MapClippedQuad3d((*it)->draw_transform(), |
|
enne (OOO)
2014/07/28 23:37:40
It seems to me like maybe you just need a DrawPoly
troyhildebrandt
2014/07/29 19:57:17
Made a more general purpose constructor that will
|
| + send_quad, |
| + points, |
| + &num_vertices_in_clipped_quad); |
| + std::vector<gfx::Point3F> points_vector; |
| + for (int i = 0; i < num_vertices_in_clipped_quad; i++) { |
| + points_vector.push_back(points[i]); |
| + } |
| + DrawPolygon* draw_polygon = |
| + new DrawPolygon(NULL, points_vector, polygon_counter++); |
| + draw_polygon->ApplyTransformToNormal((*it)->draw_transform()); |
| + polygon_list.push_back(scoped_ptr<DrawPolygon>(draw_polygon)); |
| + } |
| + |
| + timer_.Reset(); |
| + do { |
| + ScopedPtrVector<DrawPolygon> test_list; |
| + for (unsigned int i = 0; i < polygon_list.size(); i++) { |
| + test_list.push_back(polygon_list[i]->CreateCopy()); |
| + } |
| + BspController bsp_controller; |
| + BspTree bsp_tree(&bsp_controller, &test_list); |
| + timer_.NextLap(); |
| + } while (!timer_.HasTimeLimitExpired()); |
| + |
| + EndTest(); |
| + } |
| +}; |
| + |
| TEST_F(CalcDrawPropsMainTest, TenTen) { |
| SetTestName("10_10_main_thread"); |
| ReadTestFile("10_10_layer_tree"); |
| @@ -267,5 +330,17 @@ TEST_F(LayerSorterMainTest, LayerSorterRubik) { |
| RunSortLayers(); |
| } |
| +TEST_F(BspTreePerfTest, BspTreeCubes) { |
| + SetTestName("bsp_tree_cubes"); |
| + ReadTestFile("layer_sort_cubes"); |
| + RunSortLayers(); |
| +} |
| + |
| +TEST_F(BspTreePerfTest, BspTreeRubik) { |
|
enne (OOO)
2014/07/28 23:37:40
For completeness can you add a BspTreeCubes_2 and
troyhildebrandt
2014/07/29 19:57:17
Done.
|
| + SetTestName("bsp_tree_rubik"); |
| + ReadTestFile("layer_sort_rubik"); |
| + RunSortLayers(); |
| +} |
| + |
| } // namespace |
| } // namespace cc |