Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 14925009: Run all LayerTreeHost tests with a delegating renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: uber-unittests: for landing2 Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host_perftest.cc ('k') | cc/trees/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/synchronization/lock.h" 9 #include "base/synchronization/lock.h"
10 #include "cc/animation/timing_function.h" 10 #include "cc/animation/timing_function.h"
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 default: 971 default:
972 NOTREACHED(); 972 NOTREACHED();
973 break; 973 break;
974 } 974 }
975 } 975 }
976 976
977 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 977 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
978 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( 978 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>(
979 impl->output_surface()->context3d()); 979 impl->output_surface()->context3d());
980 980
981 // Number of textures used for draw should always be one for each layer. 981 // We draw/ship one texture each frame for each layer.
982 EXPECT_EQ(2u, context->NumUsedTextures()); 982 EXPECT_EQ(2u, context->NumUsedTextures());
983 context->ResetUsedTextures(); 983 context->ResetUsedTextures();
984 } 984 }
985 985
986 virtual void Layout() OVERRIDE { 986 virtual void Layout() OVERRIDE {
987 layer_->SetNeedsDisplay(); 987 layer_->SetNeedsDisplay();
988 scrollbar_->SetNeedsDisplay(); 988 scrollbar_->SetNeedsDisplay();
989 } 989 }
990 990
991 virtual void AfterTest() OVERRIDE {} 991 virtual void AfterTest() OVERRIDE {}
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1198
1199 private: 1199 private:
1200 FakeContentLayerClient client_; 1200 FakeContentLayerClient client_;
1201 scoped_refptr<FakeContentLayer> parent_; 1201 scoped_refptr<FakeContentLayer> parent_;
1202 scoped_refptr<FakeContentLayer> child_; 1202 scoped_refptr<FakeContentLayer> child_;
1203 scoped_refptr<FakeScrollbarLayer> scrollbar_with_paints_; 1203 scoped_refptr<FakeScrollbarLayer> scrollbar_with_paints_;
1204 scoped_refptr<FakeScrollbarLayer> scrollbar_without_paints_; 1204 scoped_refptr<FakeScrollbarLayer> scrollbar_without_paints_;
1205 int num_commits_; 1205 int num_commits_;
1206 }; 1206 };
1207 1207
1208 MULTI_THREAD_TEST_F(LayerTreeHostTestAtomicCommitWithPartialUpdate); 1208 // Partial updates are not possible with a delegating renderer.
1209 MULTI_THREAD_DIRECT_RENDERER_TEST_F(
1210 LayerTreeHostTestAtomicCommitWithPartialUpdate);
1209 1211
1210 class LayerTreeHostTestFinishAllRendering : public LayerTreeHostTest { 1212 class LayerTreeHostTestFinishAllRendering : public LayerTreeHostTest {
1211 public: 1213 public:
1212 LayerTreeHostTestFinishAllRendering() : once_(false), draw_count_(0) {} 1214 LayerTreeHostTestFinishAllRendering() : once_(false), draw_count_(0) {}
1213 1215
1214 virtual void BeginTest() OVERRIDE { 1216 virtual void BeginTest() OVERRIDE {
1215 layer_tree_host()->SetNeedsRedraw(); 1217 layer_tree_host()->SetNeedsRedraw();
1216 PostSetNeedsCommitToMainThread(); 1218 PostSetNeedsCommitToMainThread();
1217 } 1219 }
1218 1220
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1351 1353
1352 private: 1354 private:
1353 FakeContentLayerClient client_; 1355 FakeContentLayerClient client_;
1354 scoped_refptr<FakeContentLayer> root_layer_; 1356 scoped_refptr<FakeContentLayer> root_layer_;
1355 scoped_refptr<FakeContentLayer> surface_layer1_; 1357 scoped_refptr<FakeContentLayer> surface_layer1_;
1356 scoped_refptr<FakeContentLayer> replica_layer1_; 1358 scoped_refptr<FakeContentLayer> replica_layer1_;
1357 scoped_refptr<FakeContentLayer> surface_layer2_; 1359 scoped_refptr<FakeContentLayer> surface_layer2_;
1358 scoped_refptr<FakeContentLayer> replica_layer2_; 1360 scoped_refptr<FakeContentLayer> replica_layer2_;
1359 }; 1361 };
1360 1362
1361 SINGLE_AND_MULTI_THREAD_TEST_F( 1363 // Surfaces don't exist with a delegated renderer.
1364 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(
1362 LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit); 1365 LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit);
1363 1366
1364 class EvictionTestLayer : public Layer { 1367 class EvictionTestLayer : public Layer {
1365 public: 1368 public:
1366 static scoped_refptr<EvictionTestLayer> Create() { 1369 static scoped_refptr<EvictionTestLayer> Create() {
1367 return make_scoped_refptr(new EvictionTestLayer()); 1370 return make_scoped_refptr(new EvictionTestLayer());
1368 } 1371 }
1369 1372
1370 virtual void Update(ResourceUpdateQueue*, 1373 virtual void Update(ResourceUpdateQueue*,
1371 const OcclusionTracker*, 1374 const OcclusionTracker*,
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 scoped_refptr<PictureLayer> layer_; 1904 scoped_refptr<PictureLayer> layer_;
1902 skia::RefPtr<SkPicture> picture_; 1905 skia::RefPtr<SkPicture> picture_;
1903 }; 1906 };
1904 1907
1905 MULTI_THREAD_TEST_F(LayerTreeHostTestCapturePicture); 1908 MULTI_THREAD_TEST_F(LayerTreeHostTestCapturePicture);
1906 1909
1907 class LayerTreeHostTestMaxPendingFrames : public LayerTreeHostTest { 1910 class LayerTreeHostTestMaxPendingFrames : public LayerTreeHostTest {
1908 public: 1911 public:
1909 LayerTreeHostTestMaxPendingFrames() : LayerTreeHostTest() {} 1912 LayerTreeHostTestMaxPendingFrames() : LayerTreeHostTest() {}
1910 1913
1911 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE {
1912 if (delegating_renderer_)
1913 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>();
1914 return FakeOutputSurface::Create3d().PassAs<OutputSurface>();
1915 }
1916
1917 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 1914 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
1918 1915
1919 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 1916 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
1920 DCHECK(host_impl->proxy()->HasImplThread()); 1917 DCHECK(host_impl->proxy()->HasImplThread());
1921 1918
1922 const ThreadProxy* proxy = static_cast<ThreadProxy*>(host_impl->proxy()); 1919 const ThreadProxy* proxy = static_cast<ThreadProxy*>(host_impl->proxy());
1923 if (delegating_renderer_) { 1920 if (delegating_renderer()) {
1924 EXPECT_EQ(1, proxy->MaxFramesPendingForTesting()); 1921 EXPECT_EQ(1, proxy->MaxFramesPendingForTesting());
1925 } else { 1922 } else {
1926 EXPECT_EQ(FrameRateController::DEFAULT_MAX_FRAMES_PENDING, 1923 EXPECT_EQ(FrameRateController::DEFAULT_MAX_FRAMES_PENDING,
1927 proxy->MaxFramesPendingForTesting()); 1924 proxy->MaxFramesPendingForTesting());
1928 } 1925 }
1929 EndTest(); 1926 EndTest();
1930 } 1927 }
1931 1928
1932 virtual void AfterTest() OVERRIDE {} 1929 virtual void AfterTest() OVERRIDE {}
1933
1934 protected:
1935 bool delegating_renderer_;
1936 }; 1930 };
1937 1931
1938 TEST_F(LayerTreeHostTestMaxPendingFrames, DelegatingRenderer) { 1932 TEST_F(LayerTreeHostTestMaxPendingFrames, DelegatingRenderer) {
1939 delegating_renderer_ = true; 1933 RunTest(true, true);
1940 RunTest(true);
1941 } 1934 }
1942 1935
1943 TEST_F(LayerTreeHostTestMaxPendingFrames, GLRenderer) { 1936 TEST_F(LayerTreeHostTestMaxPendingFrames, GLRenderer) {
1944 delegating_renderer_ = false; 1937 RunTest(true, false);
1945 RunTest(true);
1946 } 1938 }
1947 1939
1948 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted 1940 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted
1949 : public LayerTreeHostTest { 1941 : public LayerTreeHostTest {
1950 public: 1942 public:
1951 LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted() 1943 LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted()
1952 : root_layer_(FakeContentLayer::Create(&client_)), 1944 : root_layer_(FakeContentLayer::Create(&client_)),
1953 child_layer1_(FakeContentLayer::Create(&client_)), 1945 child_layer1_(FakeContentLayer::Create(&client_)),
1954 child_layer2_(FakeContentLayer::Create(&client_)), 1946 child_layer2_(FakeContentLayer::Create(&client_)),
1955 num_commits_(0) {} 1947 num_commits_(0) {}
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
2576 EndTest(); 2568 EndTest();
2577 } 2569 }
2578 2570
2579 virtual void AfterTest() OVERRIDE {} 2571 virtual void AfterTest() OVERRIDE {}
2580 2572
2581 int io_surface_id_; 2573 int io_surface_id_;
2582 MockIOSurfaceWebGraphicsContext3D* mock_context_; 2574 MockIOSurfaceWebGraphicsContext3D* mock_context_;
2583 gfx::Size io_surface_size_; 2575 gfx::Size io_surface_size_;
2584 }; 2576 };
2585 2577
2586 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestIOSurfaceDrawing); 2578 // TODO(danakj): IOSurface layer can not be transported. crbug.com/239335
2579 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(
2580 LayerTreeHostTestIOSurfaceDrawing);
2587 2581
2588 class LayerTreeHostTestAsyncReadback : public LayerTreeHostTest { 2582 class LayerTreeHostTestAsyncReadback : public LayerTreeHostTest {
2589 protected: 2583 protected:
2590 virtual void SetupTree() OVERRIDE { 2584 virtual void SetupTree() OVERRIDE {
2591 root = FakeContentLayer::Create(&client_); 2585 root = FakeContentLayer::Create(&client_);
2592 root->SetBounds(gfx::Size(20, 20)); 2586 root->SetBounds(gfx::Size(20, 20));
2593 2587
2594 child = FakeContentLayer::Create(&client_); 2588 child = FakeContentLayer::Create(&client_);
2595 child->SetBounds(gfx::Size(10, 10)); 2589 child->SetBounds(gfx::Size(10, 10));
2596 root->AddChild(child); 2590 root->AddChild(child);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2676 make_scoped_ptr(new SoftwareOutputDevice)).PassAs<OutputSurface>(); 2670 make_scoped_ptr(new SoftwareOutputDevice)).PassAs<OutputSurface>();
2677 } 2671 }
2678 2672
2679 bool use_gl_renderer_; 2673 bool use_gl_renderer_;
2680 std::vector<gfx::Size> callbacks_; 2674 std::vector<gfx::Size> callbacks_;
2681 FakeContentLayerClient client_; 2675 FakeContentLayerClient client_;
2682 scoped_refptr<FakeContentLayer> root; 2676 scoped_refptr<FakeContentLayer> root;
2683 scoped_refptr<FakeContentLayer> child; 2677 scoped_refptr<FakeContentLayer> child;
2684 }; 2678 };
2685 2679
2680 // Readback can't be done with a delegating renderer.
2686 TEST_F(LayerTreeHostTestAsyncReadback, GLRenderer_RunSingleThread) { 2681 TEST_F(LayerTreeHostTestAsyncReadback, GLRenderer_RunSingleThread) {
2687 use_gl_renderer_ = true; 2682 use_gl_renderer_ = true;
2688 RunTest(false); 2683 RunTest(false, false);
2689 } 2684 }
2690 2685
2691 TEST_F(LayerTreeHostTestAsyncReadback, GLRenderer_RunMultiThread) { 2686 TEST_F(LayerTreeHostTestAsyncReadback, GLRenderer_RunMultiThread) {
2692 use_gl_renderer_ = true; 2687 use_gl_renderer_ = true;
2693 RunTest(true); 2688 RunTest(true, false);
2694 } 2689 }
2695 2690
2696 TEST_F(LayerTreeHostTestAsyncReadback, SoftwareRenderer_RunSingleThread) { 2691 TEST_F(LayerTreeHostTestAsyncReadback, SoftwareRenderer_RunSingleThread) {
2697 use_gl_renderer_ = false; 2692 use_gl_renderer_ = false;
2698 RunTest(false); 2693 RunTest(false, false);
2699 } 2694 }
2700 2695
2701 TEST_F(LayerTreeHostTestAsyncReadback, SoftwareRenderer_RunMultiThread) { 2696 TEST_F(LayerTreeHostTestAsyncReadback, SoftwareRenderer_RunMultiThread) {
2702 use_gl_renderer_ = false; 2697 use_gl_renderer_ = false;
2703 RunTest(true); 2698 RunTest(true, false);
2704 } 2699 }
2705 2700
2706 class LayerTreeHostTestAsyncReadbackLayerDestroyed : public LayerTreeHostTest { 2701 class LayerTreeHostTestAsyncReadbackLayerDestroyed : public LayerTreeHostTest {
2707 protected: 2702 protected:
2708 virtual void SetupTree() OVERRIDE { 2703 virtual void SetupTree() OVERRIDE {
2709 root_ = FakeContentLayer::Create(&client_); 2704 root_ = FakeContentLayer::Create(&client_);
2710 root_->SetBounds(gfx::Size(20, 20)); 2705 root_->SetBounds(gfx::Size(20, 20));
2711 2706
2712 main_destroyed_ = FakeContentLayer::Create(&client_); 2707 main_destroyed_ = FakeContentLayer::Create(&client_);
2713 main_destroyed_->SetBounds(gfx::Size(15, 15)); 2708 main_destroyed_->SetBounds(gfx::Size(15, 15));
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2787 FakeContentLayerClient client_; 2782 FakeContentLayerClient client_;
2788 scoped_refptr<FakeContentLayer> root_; 2783 scoped_refptr<FakeContentLayer> root_;
2789 scoped_refptr<FakeContentLayer> main_destroyed_; 2784 scoped_refptr<FakeContentLayer> main_destroyed_;
2790 scoped_refptr<FakeContentLayer> impl_destroyed_; 2785 scoped_refptr<FakeContentLayer> impl_destroyed_;
2791 }; 2786 };
2792 2787
2793 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestAsyncReadbackLayerDestroyed); 2788 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestAsyncReadbackLayerDestroyed);
2794 2789
2795 class LayerTreeHostTestNumFramesPending : public LayerTreeHostTest { 2790 class LayerTreeHostTestNumFramesPending : public LayerTreeHostTest {
2796 public: 2791 public:
2797 LayerTreeHostTestNumFramesPending() 2792 virtual void BeginTest() OVERRIDE {
2798 : delegating_renderer_(false), 2793 frame_ = 0;
2799 frame_(0) {} 2794 PostSetNeedsCommitToMainThread();
2800
2801 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE {
2802 if (delegating_renderer_)
2803 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>();
2804 return FakeOutputSurface::Create3d().PassAs<OutputSurface>();
2805 } 2795 }
2806 2796
2807 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
2808
2809 // Round 1: commit + draw 2797 // Round 1: commit + draw
2810 // Round 2: commit only (no draw/swap) 2798 // Round 2: commit only (no draw/swap)
2811 // Round 3: draw only (no commit) 2799 // Round 3: draw only (no commit)
2812 // Round 4: composite & readback (2 commits, no draw/swap) 2800 // Round 4: composite & readback (2 commits, no draw/swap)
2813 // Round 5: commit + draw 2801 // Round 5: commit + draw
2814 2802
2815 virtual void DidCommit() OVERRIDE { 2803 virtual void DidCommit() OVERRIDE {
2816 int commit = layer_tree_host()->commit_number(); 2804 int commit = layer_tree_host()->commit_number();
2817 switch (commit) { 2805 switch (commit) {
2818 case 2: 2806 case 2:
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2857 } 2845 }
2858 2846
2859 virtual void SwapBuffersCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 2847 virtual void SwapBuffersCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
2860 const ThreadProxy* proxy = static_cast<ThreadProxy*>(impl->proxy()); 2848 const ThreadProxy* proxy = static_cast<ThreadProxy*>(impl->proxy());
2861 EXPECT_EQ(0, proxy->NumFramesPendingForTesting()); 2849 EXPECT_EQ(0, proxy->NumFramesPendingForTesting());
2862 } 2850 }
2863 2851
2864 virtual void AfterTest() OVERRIDE {} 2852 virtual void AfterTest() OVERRIDE {}
2865 2853
2866 protected: 2854 protected:
2867 bool delegating_renderer_;
2868 int frame_; 2855 int frame_;
2869 }; 2856 };
2870 2857
2871 TEST_F(LayerTreeHostTestNumFramesPending, DelegatingRenderer) { 2858 TEST_F(LayerTreeHostTestNumFramesPending, DelegatingRenderer) {
2872 delegating_renderer_ = true; 2859 RunTest(true, true);
2873 RunTest(true);
2874 } 2860 }
2875 2861
2876 TEST_F(LayerTreeHostTestNumFramesPending, GLRenderer) { 2862 TEST_F(LayerTreeHostTestNumFramesPending, GLRenderer) {
2877 delegating_renderer_ = false; 2863 RunTest(true, false);
2878 RunTest(true);
2879 } 2864 }
2880 2865
2881 } // namespace 2866 } // namespace
2882 } // namespace cc 2867 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_perftest.cc ('k') | cc/trees/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698