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

Unified Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 279013002: Remove CompositeAndReadback from LayerTreeHost(Impl) and the Proxys. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rm-cnr-lth-proxy-renderer: rebase-on-drawresult Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_unittest_animation.cc ('k') | cc/trees/layer_tree_host_unittest_damage.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_unittest_context.cc
diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc
index 57f901bdb6a34ca95bef0d5d2c9784f8b20e8d79..3128f47fd4e2e00675161652365887b9f272c0be 100644
--- a/cc/trees/layer_tree_host_unittest_context.cc
+++ b/cc/trees/layer_tree_host_unittest_context.cc
@@ -915,237 +915,6 @@ class LayerTreeHostContextTestDontUseLostResources
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestDontUseLostResources);
-class LayerTreeHostContextTestCompositeAndReadbackBeforeOutputSurfaceInit
- : public LayerTreeHostContextTest {
- public:
- virtual void BeginTest() OVERRIDE {
- // This must be called immediately after creating LTH, before the first
- // OutputSurface is initialized.
- ASSERT_TRUE(layer_tree_host()->output_surface_lost());
-
- times_output_surface_created_ = 0;
-
- // Post the SetNeedsCommit before the readback to make sure it is run
- // on the main thread before the readback's replacement commit when
- // we have a threaded compositor.
- PostSetNeedsCommitToMainThread();
-
- char pixels[4];
- bool result =
- layer_tree_host()->CompositeAndReadback(&pixels, gfx::Rect(1, 1));
- EXPECT_EQ(!delegating_renderer(), result);
- EXPECT_EQ(1, times_output_surface_created_);
- }
-
- virtual void DidInitializeOutputSurface() OVERRIDE {
- ++times_output_surface_created_;
- }
-
- virtual void DidCommitAndDrawFrame() OVERRIDE { EndTest(); }
-
- virtual void AfterTest() OVERRIDE {
- // Should not try to create output surface again after successfully
- // created by CompositeAndReadback.
- EXPECT_EQ(1, times_output_surface_created_);
- }
-
- virtual DrawResult PrepareToDrawOnThread(
- LayerTreeHostImpl* host_impl,
- LayerTreeHostImpl::FrameData* frame_data,
- DrawResult draw_result) OVERRIDE {
- EXPECT_GE(host_impl->active_tree()->source_frame_number(), 0);
- EXPECT_LE(host_impl->active_tree()->source_frame_number(), 1);
- return draw_result;
- }
-
- virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
- // We should only draw for the readback and the replacement commit.
- // The replacement commit will also be the first commit after output
- // surface initialization.
- EXPECT_GE(host_impl->active_tree()->source_frame_number(), 0);
- EXPECT_LE(host_impl->active_tree()->source_frame_number(), 1);
- }
-
- virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl,
- bool result) OVERRIDE {
- // We should only swap for the replacement commit.
- EXPECT_EQ(host_impl->active_tree()->source_frame_number(), 1);
- EndTest();
- }
-
- private:
- int times_output_surface_created_;
-};
-
-SINGLE_AND_MULTI_THREAD_TEST_F(
- LayerTreeHostContextTestCompositeAndReadbackBeforeOutputSurfaceInit);
-
-// This test verifies that losing an output surface during a
-// simultaneous readback and forced redraw works and does not deadlock.
-class LayerTreeHostContextTestLoseOutputSurfaceDuringReadbackAndForcedDraw
- : public LayerTreeHostContextTest {
- protected:
- static const int kFirstOutputSurfaceInitSourceFrameNumber = 0;
- static const int kReadbackSourceFrameNumber = 1;
- static const int kReadbackReplacementSourceFrameNumber = 2;
- static const int kSecondOutputSurfaceInitSourceFrameNumber = 3;
-
- LayerTreeHostContextTestLoseOutputSurfaceDuringReadbackAndForcedDraw()
- : did_react_to_first_commit_(false) {}
-
- virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
- // This enables forced draws after a single prepare to draw failure.
- settings->timeout_and_draw_when_animation_checkerboards = true;
- settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1;
- }
-
- virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
-
- virtual DrawResult PrepareToDrawOnThread(
- LayerTreeHostImpl* host_impl,
- LayerTreeHostImpl::FrameData* frame_data,
- DrawResult draw_result) OVERRIDE {
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kFirstOutputSurfaceInitSourceFrameNumber ||
- sfn == kSecondOutputSurfaceInitSourceFrameNumber ||
- sfn == kReadbackSourceFrameNumber)
- << sfn;
-
- // Before we react to the failed draw by initiating the forced draw
- // sequence, start a readback on the main thread and then lose the context
- // to start output surface initialization all at the same time.
- if (sfn == kFirstOutputSurfaceInitSourceFrameNumber &&
- !did_react_to_first_commit_) {
- did_react_to_first_commit_ = true;
- PostReadbackToMainThread();
- LoseContext();
- }
-
- return DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
- }
-
- virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl,
- bool success) OVERRIDE {
- // -1 is for the first output surface initialization.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == -1 || sfn == kReadbackReplacementSourceFrameNumber)
- << sfn;
- }
-
- virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
- // We should only draw the first commit after output surface initialization
- // and attempt to draw the readback commit (which will fail).
- // All others should abort because the output surface is lost.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kSecondOutputSurfaceInitSourceFrameNumber ||
- sfn == kReadbackSourceFrameNumber)
- << sfn;
- }
-
- virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl,
- bool result) OVERRIDE {
- // We should only swap the first commit after the second output surface
- // initialization.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kSecondOutputSurfaceInitSourceFrameNumber) << sfn;
- EndTest();
- }
-
- virtual void AfterTest() OVERRIDE {}
-
- int did_react_to_first_commit_;
-};
-
-MULTI_THREAD_TEST_F(
- LayerTreeHostContextTestLoseOutputSurfaceDuringReadbackAndForcedDraw);
-
-// This test verifies that losing an output surface right before a
-// simultaneous readback and forced redraw works and does not deadlock.
-class LayerTreeHostContextTestReadbackWithForcedDrawAndOutputSurfaceInit
- : public LayerTreeHostContextTest {
- protected:
- static const int kFirstOutputSurfaceInitSourceFrameNumber = 0;
- static const int kReadbackSourceFrameNumber = 1;
- static const int kForcedDrawCommitSourceFrameNumber = 2;
- static const int kSecondOutputSurfaceInitSourceFrameNumber = 2;
-
- LayerTreeHostContextTestReadbackWithForcedDrawAndOutputSurfaceInit()
- : did_lose_context_(false) {}
-
- virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
- // This enables forced draws after a single prepare to draw failure.
- settings->timeout_and_draw_when_animation_checkerboards = true;
- settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1;
- }
-
- virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
-
- virtual DrawResult PrepareToDrawOnThread(
- LayerTreeHostImpl* host_impl,
- LayerTreeHostImpl::FrameData* frame_data,
- DrawResult draw_result) OVERRIDE {
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kFirstOutputSurfaceInitSourceFrameNumber ||
- sfn == kSecondOutputSurfaceInitSourceFrameNumber ||
- sfn == kReadbackSourceFrameNumber)
- << sfn;
-
- // Before we react to the failed draw by initiating the forced draw
- // sequence, start a readback on the main thread and then lose the context
- // to start output surface initialization all at the same time.
- if (sfn == kFirstOutputSurfaceInitSourceFrameNumber && !did_lose_context_) {
- did_lose_context_ = true;
- LoseContext();
- }
-
- // Returning false will result in a forced draw.
- return DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
- }
-
- virtual void DidInitializeOutputSurface() OVERRIDE {
- if (layer_tree_host()->source_frame_number() > 0) {
- // Perform a readback right after the second output surface
- // initialization.
- char pixels[4];
- layer_tree_host()->CompositeAndReadback(&pixels, gfx::Rect(0, 0, 1, 1));
- }
- }
-
- virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl,
- bool success) OVERRIDE {
- // -1 is for the first output surface initialization.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == -1 || sfn == kFirstOutputSurfaceInitSourceFrameNumber)
- << sfn;
- }
-
- virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
- // We should only draw the first commit after output surface initialization
- // and attempt to draw the readback commit (which will fail).
- // All others should abort because the output surface is lost.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kForcedDrawCommitSourceFrameNumber ||
- sfn == kReadbackSourceFrameNumber)
- << sfn;
- }
-
- virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl,
- bool result) OVERRIDE {
- // We should only swap the first commit after the second output surface
- // initialization.
- int sfn = host_impl->active_tree()->source_frame_number();
- EXPECT_TRUE(sfn == kForcedDrawCommitSourceFrameNumber) << sfn;
- EndTest();
- }
-
- virtual void AfterTest() OVERRIDE {}
-
- int did_lose_context_;
-};
-
-MULTI_THREAD_TEST_F(
- LayerTreeHostContextTestReadbackWithForcedDrawAndOutputSurfaceInit);
-
class ImplSidePaintingLayerTreeHostContextTest
: public LayerTreeHostContextTest {
public:
« no previous file with comments | « cc/trees/layer_tree_host_unittest_animation.cc ('k') | cc/trees/layer_tree_host_unittest_damage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698