| Index: cc/trees/layer_tree_host_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
|
| index 74e73a25dccf4550cf8aa4d94b0a6b763809103c..9391be477b0582a97f4f6db29caf18082e006b58 100644
|
| --- a/cc/trees/layer_tree_host_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_unittest.cc
|
| @@ -4965,7 +4965,7 @@ class LayerTreeHostTestGpuRasterizationEnabled : public LayerTreeHostTest {
|
| EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
|
|
|
| // Content-based veto is relevant as well.
|
| - recording_source_->SetUnsuitableForGpuRasterization();
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(true);
|
|
|
| // Veto will take effect when layers are updated.
|
| // The results will be verified after commit is completed below.
|
| @@ -5002,6 +5002,90 @@ class LayerTreeHostTestGpuRasterizationEnabled : public LayerTreeHostTest {
|
|
|
| MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationEnabled);
|
|
|
| +class LayerTreeHostTestGpuRasterizationReenabled : public LayerTreeHostTest {
|
| + protected:
|
| + void InitializeSettings(LayerTreeSettings* settings) override {
|
| + EXPECT_FALSE(settings->gpu_rasterization_enabled);
|
| + settings->gpu_rasterization_enabled = true;
|
| + settings->wait_for_beginframe_interval = false;
|
| + settings->renderer_settings.disable_display_vsync = true;
|
| + }
|
| +
|
| + void SetupTree() override {
|
| + LayerTreeHostTest::SetupTree();
|
| +
|
| + std::unique_ptr<FakeRecordingSource> recording_source(
|
| + new FakeRecordingSource);
|
| + recording_source_ = recording_source.get();
|
| +
|
| + scoped_refptr<FakePictureLayer> layer =
|
| + FakePictureLayer::CreateWithRecordingSource(
|
| + &layer_client_, std::move(recording_source));
|
| + layer_ = layer.get();
|
| + layer->SetBounds(gfx::Size(10, 10));
|
| + layer->SetIsDrawable(true);
|
| + layer_tree_host()->root_layer()->AddChild(layer);
|
| + layer_client_.set_bounds(layer_->bounds());
|
| + }
|
| +
|
| + void BeginTest() override {
|
| + // Verify default value.
|
| + EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger());
|
| +
|
| + // Gpu rasterization trigger is relevant.
|
| + layer_tree_host()->SetHasGpuRasterizationTrigger(true);
|
| + EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
|
| +
|
| + // Content-based veto is relevant as well.
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(true);
|
| +
|
| + // Veto will take effect when layers are updated.
|
| + // The results will be verified after commit is completed below.
|
| + // Since we are manually marking the source as unsuitable,
|
| + // make sure that the layer gets a chance to update.
|
| + layer_->SetNeedsDisplay();
|
| + PostSetNeedsCommitToMainThread();
|
| + }
|
| +
|
| + void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
|
| + SCOPED_TRACE(base::StringPrintf("commit %d", num_commits_));
|
| + if (expected_gpu_enabled_) {
|
| + EXPECT_TRUE(host_impl->use_gpu_rasterization());
|
| + } else {
|
| + EXPECT_FALSE(host_impl->use_gpu_rasterization());
|
| + }
|
| +
|
| + ++num_commits_;
|
| + switch (num_commits_) {
|
| + case 1:
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(false);
|
| + break;
|
| + case 30:
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(true);
|
| + break;
|
| + case 31:
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(false);
|
| + break;
|
| + case 90:
|
| + expected_gpu_enabled_ = true;
|
| + break;
|
| + }
|
| + PostSetNeedsCommitToMainThread();
|
| + if (num_commits_ > 100)
|
| + EndTest();
|
| + }
|
| +
|
| + void AfterTest() override {}
|
| +
|
| + FakeContentLayerClient layer_client_;
|
| + FakePictureLayer* layer_;
|
| + FakeRecordingSource* recording_source_;
|
| + int num_commits_ = 0;
|
| + bool expected_gpu_enabled_ = false;
|
| +};
|
| +
|
| +MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationReenabled);
|
| +
|
| class LayerTreeHostTestGpuRasterizationForced : public LayerTreeHostTest {
|
| protected:
|
| void InitializeSettings(LayerTreeSettings* settings) override {
|
| @@ -5036,7 +5120,7 @@ class LayerTreeHostTestGpuRasterizationForced : public LayerTreeHostTest {
|
| EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
|
|
|
| // Content-based veto is irrelevant as well.
|
| - recording_source_->SetUnsuitableForGpuRasterization();
|
| + recording_source_->SetForceUnsuitableForGpuRasterization(true);
|
|
|
| // Veto will take effect when layers are updated.
|
| // The results will be verified after commit is completed below.
|
|
|