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

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

Issue 916723002: cc: Add threaded GPU rasterization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Implement ContextProviderInProcess::DetachFromThread(). Created 5 years, 10 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
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/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 2926 matching lines...) Expand 10 before | Expand all | Expand 10 after
2937 } 2937 }
2938 } 2938 }
2939 2939
2940 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { 2940 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) {
2941 EXPECT_FALSE(did_initialize_gl_); 2941 EXPECT_FALSE(did_initialize_gl_);
2942 // SetAndInitializeContext3D calls SetNeedsCommit. 2942 // SetAndInitializeContext3D calls SetNeedsCommit.
2943 FakeOutputSurface* fake_output_surface = 2943 FakeOutputSurface* fake_output_surface =
2944 static_cast<FakeOutputSurface*>(host_impl->output_surface()); 2944 static_cast<FakeOutputSurface*>(host_impl->output_surface());
2945 scoped_refptr<TestContextProvider> context_provider = 2945 scoped_refptr<TestContextProvider> context_provider =
2946 TestContextProvider::Create(); // Not bound to thread. 2946 TestContextProvider::Create(); // Not bound to thread.
2947 EXPECT_TRUE( 2947 scoped_refptr<TestContextProvider> worker_context_provider =
2948 fake_output_surface->InitializeAndSetContext3d(context_provider)); 2948 TestContextProvider::Create(); // Not bound to thread.
2949 EXPECT_TRUE(fake_output_surface->InitializeAndSetContext3d(
2950 context_provider, worker_context_provider));
2949 did_initialize_gl_ = true; 2951 did_initialize_gl_ = true;
2950 } 2952 }
2951 2953
2952 void ReleaseGLAndRedraw(LayerTreeHostImpl* host_impl) { 2954 void ReleaseGLAndRedraw(LayerTreeHostImpl* host_impl) {
2953 EXPECT_TRUE(did_initialize_gl_); 2955 EXPECT_TRUE(did_initialize_gl_);
2954 EXPECT_FALSE(did_release_gl_); 2956 EXPECT_FALSE(did_release_gl_);
2955 // ReleaseGL calls SetNeedsCommit. 2957 // ReleaseGL calls SetNeedsCommit.
2956 static_cast<FakeOutputSurface*>(host_impl->output_surface())->ReleaseGL(); 2958 static_cast<FakeOutputSurface*>(host_impl->output_surface())->ReleaseGL();
2957 did_release_gl_ = true; 2959 did_release_gl_ = true;
2958 } 2960 }
(...skipping 2857 matching lines...) Expand 10 before | Expand all | Expand 10 after
5816 EndTest(); 5818 EndTest();
5817 return draw_result; 5819 return draw_result;
5818 } 5820 }
5819 void AfterTest() override {} 5821 void AfterTest() override {}
5820 5822
5821 FakeContentLayerClient client_; 5823 FakeContentLayerClient client_;
5822 }; 5824 };
5823 5825
5824 MULTI_THREAD_IMPL_TEST_F(RasterizeWithGpuRasterizationCreatesResources); 5826 MULTI_THREAD_IMPL_TEST_F(RasterizeWithGpuRasterizationCreatesResources);
5825 5827
5826 class GpuRasterizationRasterizesVisibleOnly : public LayerTreeHostTest { 5828 class SynchronousGpuRasterizationRasterizesVisibleOnly
5829 : public LayerTreeHostTest {
5827 protected: 5830 protected:
5828 GpuRasterizationRasterizesVisibleOnly() : viewport_size_(1024, 2048) {} 5831 SynchronousGpuRasterizationRasterizesVisibleOnly()
5832 : viewport_size_(1024, 2048) {}
5829 5833
5830 void InitializeSettings(LayerTreeSettings* settings) override { 5834 void InitializeSettings(LayerTreeSettings* settings) override {
5831 settings->impl_side_painting = true; 5835 settings->impl_side_painting = true;
5832 settings->gpu_rasterization_enabled = true; 5836 settings->gpu_rasterization_enabled = true;
5833 settings->gpu_rasterization_forced = true; 5837 settings->gpu_rasterization_forced = true;
5838 settings->threaded_gpu_rasterization_enabled = false;
5834 } 5839 }
5835 5840
5836 void SetupTree() override { 5841 void SetupTree() override {
5837 client_.set_fill_with_nonsolid_color(true); 5842 client_.set_fill_with_nonsolid_color(true);
5838 5843
5839 scoped_ptr<FakePicturePile> pile( 5844 scoped_ptr<FakePicturePile> pile(
5840 new FakePicturePile(ImplSidePaintingSettings().minimum_contents_scale, 5845 new FakePicturePile(ImplSidePaintingSettings().minimum_contents_scale,
5841 ImplSidePaintingSettings().default_tile_grid_size)); 5846 ImplSidePaintingSettings().default_tile_grid_size));
5842 scoped_refptr<FakePictureLayer> root = 5847 scoped_refptr<FakePictureLayer> root =
5843 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass()); 5848 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5875 return draw_result; 5880 return draw_result;
5876 } 5881 }
5877 5882
5878 void AfterTest() override {} 5883 void AfterTest() override {}
5879 5884
5880 private: 5885 private:
5881 FakeContentLayerClient client_; 5886 FakeContentLayerClient client_;
5882 gfx::Size viewport_size_; 5887 gfx::Size viewport_size_;
5883 }; 5888 };
5884 5889
5885 MULTI_THREAD_IMPL_TEST_F(GpuRasterizationRasterizesVisibleOnly); 5890 MULTI_THREAD_IMPL_TEST_F(SynchronousGpuRasterizationRasterizesVisibleOnly);
5891
5892 class ThreadedGpuRasterizationRasterizesBorderTiles : public LayerTreeHostTest {
5893 protected:
5894 ThreadedGpuRasterizationRasterizesBorderTiles()
5895 : viewport_size_(1024, 2048) {}
5896
5897 void InitializeSettings(LayerTreeSettings* settings) override {
5898 settings->impl_side_painting = true;
5899 settings->gpu_rasterization_enabled = true;
5900 settings->gpu_rasterization_forced = true;
5901 settings->threaded_gpu_rasterization_enabled = true;
5902 }
5903
5904 void SetupTree() override {
5905 client_.set_fill_with_nonsolid_color(true);
5906
5907 scoped_ptr<FakePicturePile> pile(
5908 new FakePicturePile(ImplSidePaintingSettings().minimum_contents_scale,
5909 ImplSidePaintingSettings().default_tile_grid_size));
5910 scoped_refptr<FakePictureLayer> root =
5911 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
5912 root->SetBounds(gfx::Size(10000, 10000));
5913 root->SetContentsOpaque(true);
5914
5915 layer_tree_host()->SetRootLayer(root);
5916 LayerTreeHostTest::SetupTree();
5917 layer_tree_host()->SetViewportSize(viewport_size_);
5918 }
5919
5920 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5921
5922 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5923 LayerTreeHostImpl::FrameData* frame_data,
5924 DrawResult draw_result) override {
5925 EXPECT_EQ(10u, host_impl->resource_provider()->num_resources());
5926 EndTest();
5927 return draw_result;
5928 }
5929
5930 void AfterTest() override {}
5931
5932 private:
5933 FakeContentLayerClient client_;
5934 gfx::Size viewport_size_;
5935 };
5936
5937 MULTI_THREAD_IMPL_TEST_F(ThreadedGpuRasterizationRasterizesBorderTiles);
5886 5938
5887 class LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles 5939 class LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles
5888 : public LayerTreeHostTest { 5940 : public LayerTreeHostTest {
5889 protected: 5941 protected:
5890 LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles() 5942 LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles()
5891 : playback_allowed_event_(true, true) {} 5943 : playback_allowed_event_(true, true) {}
5892 5944
5893 void InitializeSettings(LayerTreeSettings* settings) override { 5945 void InitializeSettings(LayerTreeSettings* settings) override {
5894 settings->impl_side_painting = true; 5946 settings->impl_side_painting = true;
5895 } 5947 }
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
6261 6313
6262 void AfterTest() override { EXPECT_TRUE(did_commit_); } 6314 void AfterTest() override { EXPECT_TRUE(did_commit_); }
6263 6315
6264 private: 6316 private:
6265 bool did_commit_; 6317 bool did_commit_;
6266 }; 6318 };
6267 6319
6268 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit); 6320 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit);
6269 6321
6270 } // namespace cc 6322 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698