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

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 1394263004: android webview: allow cc to fail hardware draw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: damage before hardware to avoid invalidate-draw loop Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_impl_unittest.cc
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 019c969884e3938b6454b7a82e7fc73aff2186ab..fb16600165b3e0c662a5136c8d8f648cc3a4f381 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -119,6 +119,7 @@ class LayerTreeHostImplTest : public testing::Test,
void SetMaxSwapsPendingOnImplThread(int max) override {}
void DidSwapBuffersOnImplThread() override {}
void DidSwapBuffersCompleteOnImplThread() override {}
+ void OnResourcelessSoftareDrawStateChanged(bool resourceless_draw) override {}
void OnCanDrawStateChanged(bool can_draw) override {
on_can_draw_state_changed_called_ = true;
}
@@ -467,7 +468,15 @@ TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) {
TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) {
CreateHostImpl(DefaultSettings(),
- FakeOutputSurface::CreateAlwaysDrawAndSwap3d());
+ FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice())));
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
bool always_draw = true;
CheckNotifyCalledIfCanDrawChanged(always_draw);
@@ -3118,10 +3127,16 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsAndFails) {
TEST_F(LayerTreeHostImplTest,
PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) {
CreateHostImpl(DefaultSettings(),
- FakeOutputSurface::CreateAlwaysDrawAndSwap3d());
- EXPECT_TRUE(host_impl_->output_surface()
- ->capabilities()
- .draw_and_swap_full_viewport_every_frame);
+ FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice())));
+
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
std::vector<PrepareToDrawSuccessTestCase> cases;
@@ -5530,9 +5545,10 @@ class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
child_(NULL),
did_activate_pending_tree_(false) {}
- scoped_ptr<OutputSurface> CreateFakeOutputSurface(bool always_draw) {
- if (always_draw) {
- return FakeOutputSurface::CreateAlwaysDrawAndSwap3d();
+ scoped_ptr<OutputSurface> CreateFakeOutputSurface(bool software) {
+ if (software) {
+ return FakeOutputSurface::CreateSoftware(
+ make_scoped_ptr(new SoftwareOutputDevice()));
}
return FakeOutputSurface::Create3d();
}
@@ -5682,6 +5698,16 @@ class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
size, host_impl_->active_tree()->device_scale_factor());
}
+ void SetResourcelessSoftwareDraw() {
+ const gfx::Transform external_transform;
+ const gfx::Rect external_viewport;
+ const gfx::Rect external_clip;
+ const bool resourceless_software_draw = true;
+ host_impl_->SetExternalDrawConstraints(
+ external_transform, external_viewport, external_clip, external_viewport,
+ external_transform, resourceless_software_draw);
+ }
+
DrawQuad::Material gutter_quad_material_;
gfx::Size gutter_texture_size_;
gfx::Size viewport_size_;
@@ -5692,8 +5718,8 @@ class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest {
TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCovered) {
viewport_size_ = gfx::Size(1000, 1000);
- bool always_draw = false;
- CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ bool software = false;
+ CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software));
host_impl_->SetViewportSize(DipSizeToPixelSize(viewport_size_));
SetupActiveTreeLayers();
@@ -5706,8 +5732,8 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCovered) {
TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCoveredScaled) {
viewport_size_ = gfx::Size(1000, 1000);
- bool always_draw = false;
- CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ bool software = false;
+ CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software));
host_impl_->active_tree()->SetDeviceScaleFactor(2.f);
host_impl_->SetViewportSize(DipSizeToPixelSize(viewport_size_));
@@ -5721,8 +5747,9 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCoveredScaled) {
TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeGrowViewportInvalid) {
viewport_size_ = gfx::Size(1000, 1000);
- bool always_draw = true;
- CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ bool software = true;
+ CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software));
+ SetResourcelessSoftwareDraw();
// Pending tree to force active_tree size invalid. Not used otherwise.
host_impl_->CreatePendingTree();
@@ -5738,8 +5765,9 @@ TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeGrowViewportInvalid) {
TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeShrinkViewportInvalid) {
viewport_size_ = gfx::Size(1000, 1000);
- bool always_draw = true;
- CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(always_draw));
+ bool software = true;
+ CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software));
+ SetResourcelessSoftwareDraw();
// Set larger viewport and activate it to active tree.
host_impl_->CreatePendingTree();
@@ -8225,11 +8253,8 @@ TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) {
external_transform, external_viewport, external_clip1, external_viewport,
external_transform, resourceless_software_draw);
EXPECT_FALSE(did_request_redraw_);
- {
- LayerTreeHostImpl::FrameData frame;
- EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
- EXPECT_TRUE(frame.has_no_damage);
- }
+ // Can't call PrepareToDrawFrame with no change for resourceless software
+ // draw.
// Unsetting resourceless_software_draw do not need redraw.
did_request_redraw_ = false;
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698