| OLD | NEW |
| 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_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 layer->SetDrawsContent(true); | 296 layer->SetDrawsContent(true); |
| 297 layer->SetBounds(size); | 297 layer->SetBounds(size); |
| 298 layer->SetContentBounds(size); | 298 layer->SetContentBounds(size); |
| 299 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2)); | 299 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2)); |
| 300 return layer.Pass(); | 300 return layer.Pass(); |
| 301 } | 301 } |
| 302 | 302 |
| 303 void DrawFrame() { | 303 void DrawFrame() { |
| 304 LayerTreeHostImpl::FrameData frame; | 304 LayerTreeHostImpl::FrameData frame; |
| 305 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 305 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 306 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 306 host_impl_->PrepareToDraw(&frame)); |
| 307 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 307 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 308 host_impl_->DidDrawAllLayers(frame); | 308 host_impl_->DidDrawAllLayers(frame); |
| 309 } | 309 } |
| 310 | 310 |
| 311 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); | 311 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); |
| 312 void pinch_zoom_pan_viewport_test(float device_scale_factor); | 312 void pinch_zoom_pan_viewport_test(float device_scale_factor); |
| 313 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); | 313 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); |
| 314 void pinch_zoom_pan_viewport_and_scroll_boundary_test( | 314 void pinch_zoom_pan_viewport_and_scroll_boundary_test( |
| 315 float device_scale_factor); | 315 float device_scale_factor); |
| 316 | 316 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 | 382 |
| 383 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); | 383 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); |
| 384 | 384 |
| 385 protected: | 385 protected: |
| 386 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { | 386 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { |
| 387 return FakeOutputSurface::Create3d().PassAs<OutputSurface>(); | 387 return FakeOutputSurface::Create3d().PassAs<OutputSurface>(); |
| 388 } | 388 } |
| 389 | 389 |
| 390 void DrawOneFrame() { | 390 void DrawOneFrame() { |
| 391 LayerTreeHostImpl::FrameData frame_data; | 391 LayerTreeHostImpl::FrameData frame_data; |
| 392 host_impl_->PrepareToDraw(&frame_data, gfx::Rect()); | 392 host_impl_->PrepareToDraw(&frame_data); |
| 393 host_impl_->DidDrawAllLayers(frame_data); | 393 host_impl_->DidDrawAllLayers(frame_data); |
| 394 } | 394 } |
| 395 | 395 |
| 396 FakeProxy proxy_; | 396 FakeProxy proxy_; |
| 397 DebugScopedSetImplThread always_impl_thread_; | 397 DebugScopedSetImplThread always_impl_thread_; |
| 398 DebugScopedSetMainThreadBlocked always_main_thread_blocked_; | 398 DebugScopedSetMainThreadBlocked always_main_thread_blocked_; |
| 399 | 399 |
| 400 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 400 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 401 scoped_ptr<LayerTreeHostImpl> host_impl_; | 401 scoped_ptr<LayerTreeHostImpl> host_impl_; |
| 402 FakeRenderingStatsInstrumentation stats_instrumentation_; | 402 FakeRenderingStatsInstrumentation stats_instrumentation_; |
| (...skipping 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1721 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 1721 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 1722 host_impl_->active_tree()->root_layer()); | 1722 host_impl_->active_tree()->root_layer()); |
| 1723 | 1723 |
| 1724 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 1724 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 1725 DidDrawCheckLayer* layer = | 1725 DidDrawCheckLayer* layer = |
| 1726 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 1726 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 1727 | 1727 |
| 1728 { | 1728 { |
| 1729 LayerTreeHostImpl::FrameData frame; | 1729 LayerTreeHostImpl::FrameData frame; |
| 1730 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1730 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1731 host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); | 1731 host_impl_->PrepareToDraw(&frame)); |
| 1732 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1732 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1733 host_impl_->DidDrawAllLayers(frame); | 1733 host_impl_->DidDrawAllLayers(frame); |
| 1734 | 1734 |
| 1735 EXPECT_TRUE(layer->will_draw_called()); | 1735 EXPECT_TRUE(layer->will_draw_called()); |
| 1736 EXPECT_TRUE(layer->append_quads_called()); | 1736 EXPECT_TRUE(layer->append_quads_called()); |
| 1737 EXPECT_TRUE(layer->did_draw_called()); | 1737 EXPECT_TRUE(layer->did_draw_called()); |
| 1738 } | 1738 } |
| 1739 | 1739 |
| 1740 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); |
| 1741 |
| 1740 { | 1742 { |
| 1741 LayerTreeHostImpl::FrameData frame; | 1743 LayerTreeHostImpl::FrameData frame; |
| 1742 | 1744 |
| 1743 layer->set_will_draw_returns_false(); | 1745 layer->set_will_draw_returns_false(); |
| 1744 layer->ClearDidDrawCheck(); | 1746 layer->ClearDidDrawCheck(); |
| 1745 | 1747 |
| 1746 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1748 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1747 host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10))); | 1749 host_impl_->PrepareToDraw(&frame)); |
| 1748 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1750 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1749 host_impl_->DidDrawAllLayers(frame); | 1751 host_impl_->DidDrawAllLayers(frame); |
| 1750 | 1752 |
| 1751 EXPECT_TRUE(layer->will_draw_called()); | 1753 EXPECT_TRUE(layer->will_draw_called()); |
| 1752 EXPECT_FALSE(layer->append_quads_called()); | 1754 EXPECT_FALSE(layer->append_quads_called()); |
| 1753 EXPECT_FALSE(layer->did_draw_called()); | 1755 EXPECT_FALSE(layer->did_draw_called()); |
| 1754 } | 1756 } |
| 1755 } | 1757 } |
| 1756 | 1758 |
| 1757 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { | 1759 TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1770 layer->SetPosition(gfx::PointF(100.f, 100.f)); | 1772 layer->SetPosition(gfx::PointF(100.f, 100.f)); |
| 1771 layer->SetBounds(gfx::Size(10, 10)); | 1773 layer->SetBounds(gfx::Size(10, 10)); |
| 1772 layer->SetContentBounds(gfx::Size(10, 10)); | 1774 layer->SetContentBounds(gfx::Size(10, 10)); |
| 1773 | 1775 |
| 1774 LayerTreeHostImpl::FrameData frame; | 1776 LayerTreeHostImpl::FrameData frame; |
| 1775 | 1777 |
| 1776 EXPECT_FALSE(layer->will_draw_called()); | 1778 EXPECT_FALSE(layer->will_draw_called()); |
| 1777 EXPECT_FALSE(layer->did_draw_called()); | 1779 EXPECT_FALSE(layer->did_draw_called()); |
| 1778 | 1780 |
| 1779 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1781 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1780 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1782 host_impl_->PrepareToDraw(&frame)); |
| 1781 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1783 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1782 host_impl_->DidDrawAllLayers(frame); | 1784 host_impl_->DidDrawAllLayers(frame); |
| 1783 | 1785 |
| 1784 EXPECT_FALSE(layer->will_draw_called()); | 1786 EXPECT_FALSE(layer->will_draw_called()); |
| 1785 EXPECT_FALSE(layer->did_draw_called()); | 1787 EXPECT_FALSE(layer->did_draw_called()); |
| 1786 | 1788 |
| 1787 EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); | 1789 EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); |
| 1788 | 1790 |
| 1789 // Ensure visible_content_rect for layer is not empty | 1791 // Ensure visible_content_rect for layer is not empty |
| 1790 layer->SetPosition(gfx::PointF()); | 1792 layer->SetPosition(gfx::PointF()); |
| 1791 | 1793 |
| 1792 EXPECT_FALSE(layer->will_draw_called()); | 1794 EXPECT_FALSE(layer->will_draw_called()); |
| 1793 EXPECT_FALSE(layer->did_draw_called()); | 1795 EXPECT_FALSE(layer->did_draw_called()); |
| 1794 | 1796 |
| 1795 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1797 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1796 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1798 host_impl_->PrepareToDraw(&frame)); |
| 1797 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1799 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1798 host_impl_->DidDrawAllLayers(frame); | 1800 host_impl_->DidDrawAllLayers(frame); |
| 1799 | 1801 |
| 1800 EXPECT_TRUE(layer->will_draw_called()); | 1802 EXPECT_TRUE(layer->will_draw_called()); |
| 1801 EXPECT_TRUE(layer->did_draw_called()); | 1803 EXPECT_TRUE(layer->did_draw_called()); |
| 1802 | 1804 |
| 1803 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); | 1805 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); |
| 1804 } | 1806 } |
| 1805 | 1807 |
| 1806 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { | 1808 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1826 top_layer->SetContentsOpaque(true); | 1828 top_layer->SetContentsOpaque(true); |
| 1827 | 1829 |
| 1828 LayerTreeHostImpl::FrameData frame; | 1830 LayerTreeHostImpl::FrameData frame; |
| 1829 | 1831 |
| 1830 EXPECT_FALSE(occluded_layer->will_draw_called()); | 1832 EXPECT_FALSE(occluded_layer->will_draw_called()); |
| 1831 EXPECT_FALSE(occluded_layer->did_draw_called()); | 1833 EXPECT_FALSE(occluded_layer->did_draw_called()); |
| 1832 EXPECT_FALSE(top_layer->will_draw_called()); | 1834 EXPECT_FALSE(top_layer->will_draw_called()); |
| 1833 EXPECT_FALSE(top_layer->did_draw_called()); | 1835 EXPECT_FALSE(top_layer->did_draw_called()); |
| 1834 | 1836 |
| 1835 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1837 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1836 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1838 host_impl_->PrepareToDraw(&frame)); |
| 1837 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1839 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1838 host_impl_->DidDrawAllLayers(frame); | 1840 host_impl_->DidDrawAllLayers(frame); |
| 1839 | 1841 |
| 1840 EXPECT_FALSE(occluded_layer->will_draw_called()); | 1842 EXPECT_FALSE(occluded_layer->will_draw_called()); |
| 1841 EXPECT_FALSE(occluded_layer->did_draw_called()); | 1843 EXPECT_FALSE(occluded_layer->did_draw_called()); |
| 1842 EXPECT_TRUE(top_layer->will_draw_called()); | 1844 EXPECT_TRUE(top_layer->will_draw_called()); |
| 1843 EXPECT_TRUE(top_layer->did_draw_called()); | 1845 EXPECT_TRUE(top_layer->did_draw_called()); |
| 1844 } | 1846 } |
| 1845 | 1847 |
| 1846 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { | 1848 TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1859 | 1861 |
| 1860 layer1->SetOpacity(0.3f); | 1862 layer1->SetOpacity(0.3f); |
| 1861 layer1->SetShouldFlattenTransform(true); | 1863 layer1->SetShouldFlattenTransform(true); |
| 1862 | 1864 |
| 1863 EXPECT_FALSE(root->did_draw_called()); | 1865 EXPECT_FALSE(root->did_draw_called()); |
| 1864 EXPECT_FALSE(layer1->did_draw_called()); | 1866 EXPECT_FALSE(layer1->did_draw_called()); |
| 1865 EXPECT_FALSE(layer2->did_draw_called()); | 1867 EXPECT_FALSE(layer2->did_draw_called()); |
| 1866 | 1868 |
| 1867 LayerTreeHostImpl::FrameData frame; | 1869 LayerTreeHostImpl::FrameData frame; |
| 1868 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1870 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1869 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1871 host_impl_->PrepareToDraw(&frame)); |
| 1870 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1872 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1871 host_impl_->DidDrawAllLayers(frame); | 1873 host_impl_->DidDrawAllLayers(frame); |
| 1872 | 1874 |
| 1873 EXPECT_TRUE(root->did_draw_called()); | 1875 EXPECT_TRUE(root->did_draw_called()); |
| 1874 EXPECT_TRUE(layer1->did_draw_called()); | 1876 EXPECT_TRUE(layer1->did_draw_called()); |
| 1875 EXPECT_TRUE(layer2->did_draw_called()); | 1877 EXPECT_TRUE(layer2->did_draw_called()); |
| 1876 | 1878 |
| 1877 EXPECT_NE(root->render_surface(), layer1->render_surface()); | 1879 EXPECT_NE(root->render_surface(), layer1->render_surface()); |
| 1878 EXPECT_TRUE(!!layer1->render_surface()); | 1880 EXPECT_TRUE(!!layer1->render_surface()); |
| 1879 } | 1881 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1945 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1947 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1946 2, | 1948 2, |
| 1947 tile_missing, | 1949 tile_missing, |
| 1948 skips_draw, | 1950 skips_draw, |
| 1949 is_animating, | 1951 is_animating, |
| 1950 host_impl_->resource_provider())); | 1952 host_impl_->resource_provider())); |
| 1951 | 1953 |
| 1952 LayerTreeHostImpl::FrameData frame; | 1954 LayerTreeHostImpl::FrameData frame; |
| 1953 | 1955 |
| 1954 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1956 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1955 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1957 host_impl_->PrepareToDraw(&frame)); |
| 1956 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1958 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1957 host_impl_->DidDrawAllLayers(frame); | 1959 host_impl_->DidDrawAllLayers(frame); |
| 1958 } | 1960 } |
| 1959 | 1961 |
| 1960 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { | 1962 TEST_F(LayerTreeHostImplTest, PrepareToDrawSucceedsWithAnimatedLayer) { |
| 1961 host_impl_->active_tree()->SetRootLayer( | 1963 host_impl_->active_tree()->SetRootLayer( |
| 1962 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 1964 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 1963 DidDrawCheckLayer* root = | 1965 DidDrawCheckLayer* root = |
| 1964 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1966 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1965 bool tile_missing = false; | 1967 bool tile_missing = false; |
| 1966 bool skips_draw = false; | 1968 bool skips_draw = false; |
| 1967 bool is_animating = true; | 1969 bool is_animating = true; |
| 1968 root->AddChild( | 1970 root->AddChild( |
| 1969 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1971 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1970 2, | 1972 2, |
| 1971 tile_missing, | 1973 tile_missing, |
| 1972 skips_draw, | 1974 skips_draw, |
| 1973 is_animating, | 1975 is_animating, |
| 1974 host_impl_->resource_provider())); | 1976 host_impl_->resource_provider())); |
| 1975 | 1977 |
| 1976 LayerTreeHostImpl::FrameData frame; | 1978 LayerTreeHostImpl::FrameData frame; |
| 1977 | 1979 |
| 1978 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1980 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 1979 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1981 host_impl_->PrepareToDraw(&frame)); |
| 1980 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1982 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1981 host_impl_->DidDrawAllLayers(frame); | 1983 host_impl_->DidDrawAllLayers(frame); |
| 1982 } | 1984 } |
| 1983 | 1985 |
| 1984 TEST_F(LayerTreeHostImplTest, | 1986 TEST_F(LayerTreeHostImplTest, |
| 1985 PrepareToDrawSucceedsWithNonAnimatedMissingTexture) { | 1987 PrepareToDrawSucceedsWithNonAnimatedMissingTexture) { |
| 1986 // When a texture is missing and we're not animating, we draw as usual with | 1988 // When a texture is missing and we're not animating, we draw as usual with |
| 1987 // checkerboarding. | 1989 // checkerboarding. |
| 1988 host_impl_->active_tree()->SetRootLayer( | 1990 host_impl_->active_tree()->SetRootLayer( |
| 1989 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 1991 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 1990 DidDrawCheckLayer* root = | 1992 DidDrawCheckLayer* root = |
| 1991 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 1993 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 1992 | 1994 |
| 1993 bool tile_missing = true; | 1995 bool tile_missing = true; |
| 1994 bool skips_draw = false; | 1996 bool skips_draw = false; |
| 1995 bool is_animating = false; | 1997 bool is_animating = false; |
| 1996 root->AddChild( | 1998 root->AddChild( |
| 1997 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 1999 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 1998 4, | 2000 4, |
| 1999 tile_missing, | 2001 tile_missing, |
| 2000 skips_draw, | 2002 skips_draw, |
| 2001 is_animating, | 2003 is_animating, |
| 2002 host_impl_->resource_provider())); | 2004 host_impl_->resource_provider())); |
| 2003 LayerTreeHostImpl::FrameData frame; | 2005 LayerTreeHostImpl::FrameData frame; |
| 2004 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 2006 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 2005 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 2007 host_impl_->PrepareToDraw(&frame)); |
| 2006 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2008 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2007 host_impl_->DidDrawAllLayers(frame); | 2009 host_impl_->DidDrawAllLayers(frame); |
| 2008 } | 2010 } |
| 2009 | 2011 |
| 2010 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { | 2012 TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
| 2011 // When a texture is missing and we're animating, we don't want to draw | 2013 // When a texture is missing and we're animating, we don't want to draw |
| 2012 // anything. | 2014 // anything. |
| 2013 host_impl_->active_tree()->SetRootLayer( | 2015 host_impl_->active_tree()->SetRootLayer( |
| 2014 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); | 2016 DidDrawCheckLayer::Create(host_impl_->active_tree(), 5)); |
| 2015 DidDrawCheckLayer* root = | 2017 DidDrawCheckLayer* root = |
| 2016 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2018 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2017 bool tile_missing = true; | 2019 bool tile_missing = true; |
| 2018 bool skips_draw = false; | 2020 bool skips_draw = false; |
| 2019 bool is_animating = true; | 2021 bool is_animating = true; |
| 2020 root->AddChild( | 2022 root->AddChild( |
| 2021 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2023 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2022 6, | 2024 6, |
| 2023 tile_missing, | 2025 tile_missing, |
| 2024 skips_draw, | 2026 skips_draw, |
| 2025 is_animating, | 2027 is_animating, |
| 2026 host_impl_->resource_provider())); | 2028 host_impl_->resource_provider())); |
| 2027 LayerTreeHostImpl::FrameData frame; | 2029 LayerTreeHostImpl::FrameData frame; |
| 2028 EXPECT_EQ(DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, | 2030 EXPECT_EQ(DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, |
| 2029 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 2031 host_impl_->PrepareToDraw(&frame)); |
| 2030 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2032 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2031 host_impl_->DidDrawAllLayers(frame); | 2033 host_impl_->DidDrawAllLayers(frame); |
| 2032 } | 2034 } |
| 2033 | 2035 |
| 2034 TEST_F(LayerTreeHostImplTest, | 2036 TEST_F(LayerTreeHostImplTest, |
| 2035 PrepareToDrawSucceedsWithMissingSkippedAnimatedLayer) { | 2037 PrepareToDrawSucceedsWithMissingSkippedAnimatedLayer) { |
| 2036 // When the layer skips draw and we're animating, we still draw the frame. | 2038 // When the layer skips draw and we're animating, we still draw the frame. |
| 2037 host_impl_->active_tree()->SetRootLayer( | 2039 host_impl_->active_tree()->SetRootLayer( |
| 2038 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2040 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2039 DidDrawCheckLayer* root = | 2041 DidDrawCheckLayer* root = |
| 2040 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2042 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2041 bool tile_missing = false; | 2043 bool tile_missing = false; |
| 2042 bool skips_draw = true; | 2044 bool skips_draw = true; |
| 2043 bool is_animating = true; | 2045 bool is_animating = true; |
| 2044 root->AddChild( | 2046 root->AddChild( |
| 2045 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2047 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2046 8, | 2048 8, |
| 2047 tile_missing, | 2049 tile_missing, |
| 2048 skips_draw, | 2050 skips_draw, |
| 2049 is_animating, | 2051 is_animating, |
| 2050 host_impl_->resource_provider())); | 2052 host_impl_->resource_provider())); |
| 2051 LayerTreeHostImpl::FrameData frame; | 2053 LayerTreeHostImpl::FrameData frame; |
| 2052 EXPECT_EQ(host_impl_->PrepareToDraw(&frame, gfx::Rect()), | 2054 EXPECT_EQ(host_impl_->PrepareToDraw(&frame), |
| 2053 DrawSwapReadbackResult::DRAW_SUCCESS); | 2055 DrawSwapReadbackResult::DRAW_SUCCESS); |
| 2054 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2056 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2055 host_impl_->DidDrawAllLayers(frame); | 2057 host_impl_->DidDrawAllLayers(frame); |
| 2056 } | 2058 } |
| 2057 | 2059 |
| 2058 TEST_F(LayerTreeHostImplTest, | 2060 TEST_F(LayerTreeHostImplTest, |
| 2059 PrepareToDrawSucceedsWhenHighResRequiredButNoMissingTextures) { | 2061 PrepareToDrawSucceedsWhenHighResRequiredButNoMissingTextures) { |
| 2060 // When the layer skips draw and we're animating, we still draw the frame. | 2062 // When the layer skips draw and we're animating, we still draw the frame. |
| 2061 host_impl_->active_tree()->SetRootLayer( | 2063 host_impl_->active_tree()->SetRootLayer( |
| 2062 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2064 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2063 DidDrawCheckLayer* root = | 2065 DidDrawCheckLayer* root = |
| 2064 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2066 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2065 bool tile_missing = false; | 2067 bool tile_missing = false; |
| 2066 bool skips_draw = false; | 2068 bool skips_draw = false; |
| 2067 bool is_animating = false; | 2069 bool is_animating = false; |
| 2068 root->AddChild( | 2070 root->AddChild( |
| 2069 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2071 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2070 8, | 2072 8, |
| 2071 tile_missing, | 2073 tile_missing, |
| 2072 skips_draw, | 2074 skips_draw, |
| 2073 is_animating, | 2075 is_animating, |
| 2074 host_impl_->resource_provider())); | 2076 host_impl_->resource_provider())); |
| 2075 host_impl_->active_tree()->SetRequiresHighResToDraw(); | 2077 host_impl_->active_tree()->SetRequiresHighResToDraw(); |
| 2076 LayerTreeHostImpl::FrameData frame; | 2078 LayerTreeHostImpl::FrameData frame; |
| 2077 EXPECT_EQ(host_impl_->PrepareToDraw(&frame, gfx::Rect()), | 2079 EXPECT_EQ(host_impl_->PrepareToDraw(&frame), |
| 2078 DrawSwapReadbackResult::DRAW_SUCCESS); | 2080 DrawSwapReadbackResult::DRAW_SUCCESS); |
| 2079 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2081 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2080 host_impl_->DidDrawAllLayers(frame); | 2082 host_impl_->DidDrawAllLayers(frame); |
| 2081 } | 2083 } |
| 2082 | 2084 |
| 2083 TEST_F(LayerTreeHostImplTest, | 2085 TEST_F(LayerTreeHostImplTest, |
| 2084 PrepareToDrawFailsWhenHighResRequiredAndMissingTextures) { | 2086 PrepareToDrawFailsWhenHighResRequiredAndMissingTextures) { |
| 2085 // When the layer skips draw and we're animating, we still draw the frame. | 2087 // When the layer skips draw and we're animating, we still draw the frame. |
| 2086 host_impl_->active_tree()->SetRootLayer( | 2088 host_impl_->active_tree()->SetRootLayer( |
| 2087 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); | 2089 DidDrawCheckLayer::Create(host_impl_->active_tree(), 7)); |
| 2088 DidDrawCheckLayer* root = | 2090 DidDrawCheckLayer* root = |
| 2089 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2091 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| 2090 bool tile_missing = true; | 2092 bool tile_missing = true; |
| 2091 bool skips_draw = false; | 2093 bool skips_draw = false; |
| 2092 bool is_animating = false; | 2094 bool is_animating = false; |
| 2093 root->AddChild( | 2095 root->AddChild( |
| 2094 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), | 2096 MissingTextureAnimatingLayer::Create(host_impl_->active_tree(), |
| 2095 8, | 2097 8, |
| 2096 tile_missing, | 2098 tile_missing, |
| 2097 skips_draw, | 2099 skips_draw, |
| 2098 is_animating, | 2100 is_animating, |
| 2099 host_impl_->resource_provider())); | 2101 host_impl_->resource_provider())); |
| 2100 host_impl_->active_tree()->SetRequiresHighResToDraw(); | 2102 host_impl_->active_tree()->SetRequiresHighResToDraw(); |
| 2101 LayerTreeHostImpl::FrameData frame; | 2103 LayerTreeHostImpl::FrameData frame; |
| 2102 EXPECT_EQ(host_impl_->PrepareToDraw(&frame, gfx::Rect()), | 2104 EXPECT_EQ(host_impl_->PrepareToDraw(&frame), |
| 2103 DrawSwapReadbackResult::DRAW_ABORTED_MISSING_HIGH_RES_CONTENT); | 2105 DrawSwapReadbackResult::DRAW_ABORTED_MISSING_HIGH_RES_CONTENT); |
| 2104 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2106 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2105 host_impl_->DidDrawAllLayers(frame); | 2107 host_impl_->DidDrawAllLayers(frame); |
| 2106 } | 2108 } |
| 2107 | 2109 |
| 2108 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { | 2110 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { |
| 2109 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 2111 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
| 2110 root->SetScrollClipLayer(Layer::INVALID_ID); | 2112 root->SetScrollClipLayer(Layer::INVALID_ID); |
| 2111 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2113 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 2112 DrawFrame(); | 2114 DrawFrame(); |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2546 EXPECT_EQ(1.f, scroll->contents_scale_y()); | 2548 EXPECT_EQ(1.f, scroll->contents_scale_y()); |
| 2547 EXPECT_EQ(1.f, child->contents_scale_x()); | 2549 EXPECT_EQ(1.f, child->contents_scale_x()); |
| 2548 EXPECT_EQ(1.f, child->contents_scale_y()); | 2550 EXPECT_EQ(1.f, child->contents_scale_y()); |
| 2549 EXPECT_EQ(1.f, grand_child->contents_scale_x()); | 2551 EXPECT_EQ(1.f, grand_child->contents_scale_x()); |
| 2550 EXPECT_EQ(1.f, grand_child->contents_scale_y()); | 2552 EXPECT_EQ(1.f, grand_child->contents_scale_y()); |
| 2551 | 2553 |
| 2552 // Make sure all the layers are drawn with the page scale delta applied, i.e., | 2554 // Make sure all the layers are drawn with the page scale delta applied, i.e., |
| 2553 // the page scale delta on the root layer is applied hierarchically. | 2555 // the page scale delta on the root layer is applied hierarchically. |
| 2554 LayerTreeHostImpl::FrameData frame; | 2556 LayerTreeHostImpl::FrameData frame; |
| 2555 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 2557 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 2556 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 2558 host_impl_->PrepareToDraw(&frame)); |
| 2557 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 2559 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 2558 host_impl_->DidDrawAllLayers(frame); | 2560 host_impl_->DidDrawAllLayers(frame); |
| 2559 | 2561 |
| 2560 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); | 2562 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); |
| 2561 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); | 2563 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); |
| 2562 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); | 2564 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); |
| 2563 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); | 2565 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); |
| 2564 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); | 2566 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); |
| 2565 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); | 2567 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); |
| 2566 EXPECT_EQ(new_page_scale, | 2568 EXPECT_EQ(new_page_scale, |
| (...skipping 969 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3536 static_cast<BlendStateCheckLayer*>(root->children()[0]); | 3538 static_cast<BlendStateCheckLayer*>(root->children()[0]); |
| 3537 layer1->SetPosition(gfx::PointF(2.f, 2.f)); | 3539 layer1->SetPosition(gfx::PointF(2.f, 2.f)); |
| 3538 | 3540 |
| 3539 LayerTreeHostImpl::FrameData frame; | 3541 LayerTreeHostImpl::FrameData frame; |
| 3540 | 3542 |
| 3541 // Opaque layer, drawn without blending. | 3543 // Opaque layer, drawn without blending. |
| 3542 layer1->SetContentsOpaque(true); | 3544 layer1->SetContentsOpaque(true); |
| 3543 layer1->SetExpectation(false, false); | 3545 layer1->SetExpectation(false, false); |
| 3544 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3546 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3545 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3547 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3546 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3548 host_impl_->PrepareToDraw(&frame)); |
| 3547 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3549 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3548 EXPECT_TRUE(layer1->quads_appended()); | 3550 EXPECT_TRUE(layer1->quads_appended()); |
| 3549 host_impl_->DidDrawAllLayers(frame); | 3551 host_impl_->DidDrawAllLayers(frame); |
| 3550 | 3552 |
| 3551 // Layer with translucent content and painting, so drawn with blending. | 3553 // Layer with translucent content and painting, so drawn with blending. |
| 3552 layer1->SetContentsOpaque(false); | 3554 layer1->SetContentsOpaque(false); |
| 3553 layer1->SetExpectation(true, false); | 3555 layer1->SetExpectation(true, false); |
| 3554 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3556 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3555 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3557 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3556 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3558 host_impl_->PrepareToDraw(&frame)); |
| 3557 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3559 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3558 EXPECT_TRUE(layer1->quads_appended()); | 3560 EXPECT_TRUE(layer1->quads_appended()); |
| 3559 host_impl_->DidDrawAllLayers(frame); | 3561 host_impl_->DidDrawAllLayers(frame); |
| 3560 | 3562 |
| 3561 // Layer with translucent opacity, drawn with blending. | 3563 // Layer with translucent opacity, drawn with blending. |
| 3562 layer1->SetContentsOpaque(true); | 3564 layer1->SetContentsOpaque(true); |
| 3563 layer1->SetOpacity(0.5f); | 3565 layer1->SetOpacity(0.5f); |
| 3564 layer1->SetExpectation(true, false); | 3566 layer1->SetExpectation(true, false); |
| 3565 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3567 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3566 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3568 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3567 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3569 host_impl_->PrepareToDraw(&frame)); |
| 3568 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3570 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3569 EXPECT_TRUE(layer1->quads_appended()); | 3571 EXPECT_TRUE(layer1->quads_appended()); |
| 3570 host_impl_->DidDrawAllLayers(frame); | 3572 host_impl_->DidDrawAllLayers(frame); |
| 3571 | 3573 |
| 3572 // Layer with translucent opacity and painting, drawn with blending. | 3574 // Layer with translucent opacity and painting, drawn with blending. |
| 3573 layer1->SetContentsOpaque(true); | 3575 layer1->SetContentsOpaque(true); |
| 3574 layer1->SetOpacity(0.5f); | 3576 layer1->SetOpacity(0.5f); |
| 3575 layer1->SetExpectation(true, false); | 3577 layer1->SetExpectation(true, false); |
| 3576 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3578 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3577 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3579 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3578 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3580 host_impl_->PrepareToDraw(&frame)); |
| 3579 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3581 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3580 EXPECT_TRUE(layer1->quads_appended()); | 3582 EXPECT_TRUE(layer1->quads_appended()); |
| 3581 host_impl_->DidDrawAllLayers(frame); | 3583 host_impl_->DidDrawAllLayers(frame); |
| 3582 | 3584 |
| 3583 layer1->AddChild( | 3585 layer1->AddChild( |
| 3584 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 3586 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
| 3585 3, | 3587 3, |
| 3586 host_impl_->resource_provider())); | 3588 host_impl_->resource_provider())); |
| 3587 BlendStateCheckLayer* layer2 = | 3589 BlendStateCheckLayer* layer2 = |
| 3588 static_cast<BlendStateCheckLayer*>(layer1->children()[0]); | 3590 static_cast<BlendStateCheckLayer*>(layer1->children()[0]); |
| 3589 layer2->SetPosition(gfx::PointF(4.f, 4.f)); | 3591 layer2->SetPosition(gfx::PointF(4.f, 4.f)); |
| 3590 | 3592 |
| 3591 // 2 opaque layers, drawn without blending. | 3593 // 2 opaque layers, drawn without blending. |
| 3592 layer1->SetContentsOpaque(true); | 3594 layer1->SetContentsOpaque(true); |
| 3593 layer1->SetOpacity(1.f); | 3595 layer1->SetOpacity(1.f); |
| 3594 layer1->SetExpectation(false, false); | 3596 layer1->SetExpectation(false, false); |
| 3595 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3597 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3596 layer2->SetContentsOpaque(true); | 3598 layer2->SetContentsOpaque(true); |
| 3597 layer2->SetOpacity(1.f); | 3599 layer2->SetOpacity(1.f); |
| 3598 layer2->SetExpectation(false, false); | 3600 layer2->SetExpectation(false, false); |
| 3599 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3601 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3600 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3602 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3601 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3603 host_impl_->PrepareToDraw(&frame)); |
| 3602 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3604 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3603 EXPECT_TRUE(layer1->quads_appended()); | 3605 EXPECT_TRUE(layer1->quads_appended()); |
| 3604 EXPECT_TRUE(layer2->quads_appended()); | 3606 EXPECT_TRUE(layer2->quads_appended()); |
| 3605 host_impl_->DidDrawAllLayers(frame); | 3607 host_impl_->DidDrawAllLayers(frame); |
| 3606 | 3608 |
| 3607 // Parent layer with translucent content, drawn with blending. | 3609 // Parent layer with translucent content, drawn with blending. |
| 3608 // Child layer with opaque content, drawn without blending. | 3610 // Child layer with opaque content, drawn without blending. |
| 3609 layer1->SetContentsOpaque(false); | 3611 layer1->SetContentsOpaque(false); |
| 3610 layer1->SetExpectation(true, false); | 3612 layer1->SetExpectation(true, false); |
| 3611 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3613 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3612 layer2->SetExpectation(false, false); | 3614 layer2->SetExpectation(false, false); |
| 3613 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3615 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3614 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3616 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3615 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3617 host_impl_->PrepareToDraw(&frame)); |
| 3616 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3618 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3617 EXPECT_TRUE(layer1->quads_appended()); | 3619 EXPECT_TRUE(layer1->quads_appended()); |
| 3618 EXPECT_TRUE(layer2->quads_appended()); | 3620 EXPECT_TRUE(layer2->quads_appended()); |
| 3619 host_impl_->DidDrawAllLayers(frame); | 3621 host_impl_->DidDrawAllLayers(frame); |
| 3620 | 3622 |
| 3621 // Parent layer with translucent content but opaque painting, drawn without | 3623 // Parent layer with translucent content but opaque painting, drawn without |
| 3622 // blending. | 3624 // blending. |
| 3623 // Child layer with opaque content, drawn without blending. | 3625 // Child layer with opaque content, drawn without blending. |
| 3624 layer1->SetContentsOpaque(true); | 3626 layer1->SetContentsOpaque(true); |
| 3625 layer1->SetExpectation(false, false); | 3627 layer1->SetExpectation(false, false); |
| 3626 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3628 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3627 layer2->SetExpectation(false, false); | 3629 layer2->SetExpectation(false, false); |
| 3628 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3630 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3629 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3631 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3630 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3632 host_impl_->PrepareToDraw(&frame)); |
| 3631 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3633 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3632 EXPECT_TRUE(layer1->quads_appended()); | 3634 EXPECT_TRUE(layer1->quads_appended()); |
| 3633 EXPECT_TRUE(layer2->quads_appended()); | 3635 EXPECT_TRUE(layer2->quads_appended()); |
| 3634 host_impl_->DidDrawAllLayers(frame); | 3636 host_impl_->DidDrawAllLayers(frame); |
| 3635 | 3637 |
| 3636 // Parent layer with translucent opacity and opaque content. Since it has a | 3638 // Parent layer with translucent opacity and opaque content. Since it has a |
| 3637 // drawing child, it's drawn to a render surface which carries the opacity, | 3639 // drawing child, it's drawn to a render surface which carries the opacity, |
| 3638 // so it's itself drawn without blending. | 3640 // so it's itself drawn without blending. |
| 3639 // Child layer with opaque content, drawn without blending (parent surface | 3641 // Child layer with opaque content, drawn without blending (parent surface |
| 3640 // carries the inherited opacity). | 3642 // carries the inherited opacity). |
| 3641 layer1->SetContentsOpaque(true); | 3643 layer1->SetContentsOpaque(true); |
| 3642 layer1->SetOpacity(0.5f); | 3644 layer1->SetOpacity(0.5f); |
| 3643 layer1->SetExpectation(false, true); | 3645 layer1->SetExpectation(false, true); |
| 3644 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3646 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3645 layer2->SetExpectation(false, false); | 3647 layer2->SetExpectation(false, false); |
| 3646 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3648 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3647 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3649 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3648 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3650 host_impl_->PrepareToDraw(&frame)); |
| 3649 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3651 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3650 EXPECT_TRUE(layer1->quads_appended()); | 3652 EXPECT_TRUE(layer1->quads_appended()); |
| 3651 EXPECT_TRUE(layer2->quads_appended()); | 3653 EXPECT_TRUE(layer2->quads_appended()); |
| 3652 host_impl_->DidDrawAllLayers(frame); | 3654 host_impl_->DidDrawAllLayers(frame); |
| 3653 | 3655 |
| 3654 // Draw again, but with child non-opaque, to make sure | 3656 // Draw again, but with child non-opaque, to make sure |
| 3655 // layer1 not culled. | 3657 // layer1 not culled. |
| 3656 layer1->SetContentsOpaque(true); | 3658 layer1->SetContentsOpaque(true); |
| 3657 layer1->SetOpacity(1.f); | 3659 layer1->SetOpacity(1.f); |
| 3658 layer1->SetExpectation(false, false); | 3660 layer1->SetExpectation(false, false); |
| 3659 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3661 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3660 layer2->SetContentsOpaque(true); | 3662 layer2->SetContentsOpaque(true); |
| 3661 layer2->SetOpacity(0.5f); | 3663 layer2->SetOpacity(0.5f); |
| 3662 layer2->SetExpectation(true, false); | 3664 layer2->SetExpectation(true, false); |
| 3663 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3665 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3664 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3666 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3665 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3667 host_impl_->PrepareToDraw(&frame)); |
| 3666 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3668 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3667 EXPECT_TRUE(layer1->quads_appended()); | 3669 EXPECT_TRUE(layer1->quads_appended()); |
| 3668 EXPECT_TRUE(layer2->quads_appended()); | 3670 EXPECT_TRUE(layer2->quads_appended()); |
| 3669 host_impl_->DidDrawAllLayers(frame); | 3671 host_impl_->DidDrawAllLayers(frame); |
| 3670 | 3672 |
| 3671 // A second way of making the child non-opaque. | 3673 // A second way of making the child non-opaque. |
| 3672 layer1->SetContentsOpaque(true); | 3674 layer1->SetContentsOpaque(true); |
| 3673 layer1->SetOpacity(1.f); | 3675 layer1->SetOpacity(1.f); |
| 3674 layer1->SetExpectation(false, false); | 3676 layer1->SetExpectation(false, false); |
| 3675 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3677 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3676 layer2->SetContentsOpaque(false); | 3678 layer2->SetContentsOpaque(false); |
| 3677 layer2->SetOpacity(1.f); | 3679 layer2->SetOpacity(1.f); |
| 3678 layer2->SetExpectation(true, false); | 3680 layer2->SetExpectation(true, false); |
| 3679 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3681 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3680 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3682 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3681 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3683 host_impl_->PrepareToDraw(&frame)); |
| 3682 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3684 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3683 EXPECT_TRUE(layer1->quads_appended()); | 3685 EXPECT_TRUE(layer1->quads_appended()); |
| 3684 EXPECT_TRUE(layer2->quads_appended()); | 3686 EXPECT_TRUE(layer2->quads_appended()); |
| 3685 host_impl_->DidDrawAllLayers(frame); | 3687 host_impl_->DidDrawAllLayers(frame); |
| 3686 | 3688 |
| 3687 // And when the layer says its not opaque but is painted opaque, it is not | 3689 // And when the layer says its not opaque but is painted opaque, it is not |
| 3688 // blended. | 3690 // blended. |
| 3689 layer1->SetContentsOpaque(true); | 3691 layer1->SetContentsOpaque(true); |
| 3690 layer1->SetOpacity(1.f); | 3692 layer1->SetOpacity(1.f); |
| 3691 layer1->SetExpectation(false, false); | 3693 layer1->SetExpectation(false, false); |
| 3692 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3694 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3693 layer2->SetContentsOpaque(true); | 3695 layer2->SetContentsOpaque(true); |
| 3694 layer2->SetOpacity(1.f); | 3696 layer2->SetOpacity(1.f); |
| 3695 layer2->SetExpectation(false, false); | 3697 layer2->SetExpectation(false, false); |
| 3696 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3698 layer2->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3697 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3699 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3698 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3700 host_impl_->PrepareToDraw(&frame)); |
| 3699 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3701 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3700 EXPECT_TRUE(layer1->quads_appended()); | 3702 EXPECT_TRUE(layer1->quads_appended()); |
| 3701 EXPECT_TRUE(layer2->quads_appended()); | 3703 EXPECT_TRUE(layer2->quads_appended()); |
| 3702 host_impl_->DidDrawAllLayers(frame); | 3704 host_impl_->DidDrawAllLayers(frame); |
| 3703 | 3705 |
| 3704 // Layer with partially opaque contents, drawn with blending. | 3706 // Layer with partially opaque contents, drawn with blending. |
| 3705 layer1->SetContentsOpaque(false); | 3707 layer1->SetContentsOpaque(false); |
| 3706 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 3708 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |
| 3707 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); | 3709 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); |
| 3708 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 3710 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
| 3709 layer1->SetExpectation(true, false); | 3711 layer1->SetExpectation(true, false); |
| 3710 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3712 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3711 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3713 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3712 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3714 host_impl_->PrepareToDraw(&frame)); |
| 3713 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3715 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3714 EXPECT_TRUE(layer1->quads_appended()); | 3716 EXPECT_TRUE(layer1->quads_appended()); |
| 3715 host_impl_->DidDrawAllLayers(frame); | 3717 host_impl_->DidDrawAllLayers(frame); |
| 3716 | 3718 |
| 3717 // Layer with partially opaque contents partially culled, drawn with blending. | 3719 // Layer with partially opaque contents partially culled, drawn with blending. |
| 3718 layer1->SetContentsOpaque(false); | 3720 layer1->SetContentsOpaque(false); |
| 3719 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 3721 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |
| 3720 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); | 3722 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); |
| 3721 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 3723 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
| 3722 layer1->SetExpectation(true, false); | 3724 layer1->SetExpectation(true, false); |
| 3723 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3725 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3724 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3726 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3725 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3727 host_impl_->PrepareToDraw(&frame)); |
| 3726 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3728 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3727 EXPECT_TRUE(layer1->quads_appended()); | 3729 EXPECT_TRUE(layer1->quads_appended()); |
| 3728 host_impl_->DidDrawAllLayers(frame); | 3730 host_impl_->DidDrawAllLayers(frame); |
| 3729 | 3731 |
| 3730 // Layer with partially opaque contents culled, drawn with blending. | 3732 // Layer with partially opaque contents culled, drawn with blending. |
| 3731 layer1->SetContentsOpaque(false); | 3733 layer1->SetContentsOpaque(false); |
| 3732 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 3734 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |
| 3733 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); | 3735 layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); |
| 3734 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 3736 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
| 3735 layer1->SetExpectation(true, false); | 3737 layer1->SetExpectation(true, false); |
| 3736 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3738 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3737 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3739 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3738 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3740 host_impl_->PrepareToDraw(&frame)); |
| 3739 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3741 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3740 EXPECT_TRUE(layer1->quads_appended()); | 3742 EXPECT_TRUE(layer1->quads_appended()); |
| 3741 host_impl_->DidDrawAllLayers(frame); | 3743 host_impl_->DidDrawAllLayers(frame); |
| 3742 | 3744 |
| 3743 // Layer with partially opaque contents and translucent contents culled, drawn | 3745 // Layer with partially opaque contents and translucent contents culled, drawn |
| 3744 // without blending. | 3746 // without blending. |
| 3745 layer1->SetContentsOpaque(false); | 3747 layer1->SetContentsOpaque(false); |
| 3746 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); | 3748 layer1->SetQuadRect(gfx::Rect(5, 5, 5, 5)); |
| 3747 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); | 3749 layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); |
| 3748 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); | 3750 layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
| 3749 layer1->SetExpectation(false, false); | 3751 layer1->SetExpectation(false, false); |
| 3750 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); | 3752 layer1->SetUpdateRect(gfx::RectF(layer1->content_bounds())); |
| 3751 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3753 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3752 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3754 host_impl_->PrepareToDraw(&frame)); |
| 3753 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 3755 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 3754 EXPECT_TRUE(layer1->quads_appended()); | 3756 EXPECT_TRUE(layer1->quads_appended()); |
| 3755 host_impl_->DidDrawAllLayers(frame); | 3757 host_impl_->DidDrawAllLayers(frame); |
| 3756 } | 3758 } |
| 3757 | 3759 |
| 3758 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { | 3760 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { |
| 3759 protected: | 3761 protected: |
| 3760 LayerTreeHostImplViewportCoveredTest() : | 3762 LayerTreeHostImplViewportCoveredTest() : |
| 3761 gutter_quad_material_(DrawQuad::SOLID_COLOR), | 3763 gutter_quad_material_(DrawQuad::SOLID_COLOR), |
| 3762 child_(NULL), | 3764 child_(NULL), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 3788 void TestLayerCoversFullViewport() { | 3790 void TestLayerCoversFullViewport() { |
| 3789 gfx::Rect layer_rect(viewport_size_); | 3791 gfx::Rect layer_rect(viewport_size_); |
| 3790 child_->SetPosition(layer_rect.origin()); | 3792 child_->SetPosition(layer_rect.origin()); |
| 3791 child_->SetBounds(layer_rect.size()); | 3793 child_->SetBounds(layer_rect.size()); |
| 3792 child_->SetContentBounds(layer_rect.size()); | 3794 child_->SetContentBounds(layer_rect.size()); |
| 3793 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 3795 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| 3794 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); | 3796 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
| 3795 | 3797 |
| 3796 LayerTreeHostImpl::FrameData frame; | 3798 LayerTreeHostImpl::FrameData frame; |
| 3797 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3799 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3798 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3800 host_impl_->PrepareToDraw(&frame)); |
| 3799 ASSERT_EQ(1u, frame.render_passes.size()); | 3801 ASSERT_EQ(1u, frame.render_passes.size()); |
| 3800 | 3802 |
| 3801 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 3803 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
| 3802 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 3804 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 3803 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 3805 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
| 3804 | 3806 |
| 3805 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); | 3807 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); |
| 3806 host_impl_->DidDrawAllLayers(frame); | 3808 host_impl_->DidDrawAllLayers(frame); |
| 3807 } | 3809 } |
| 3808 | 3810 |
| 3809 // Expect fullscreen gutter rect. | 3811 // Expect fullscreen gutter rect. |
| 3810 void TestEmptyLayer() { | 3812 void TestEmptyLayer() { |
| 3811 gfx::Rect layer_rect(0, 0, 0, 0); | 3813 gfx::Rect layer_rect(0, 0, 0, 0); |
| 3812 child_->SetPosition(layer_rect.origin()); | 3814 child_->SetPosition(layer_rect.origin()); |
| 3813 child_->SetBounds(layer_rect.size()); | 3815 child_->SetBounds(layer_rect.size()); |
| 3814 child_->SetContentBounds(layer_rect.size()); | 3816 child_->SetContentBounds(layer_rect.size()); |
| 3815 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 3817 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| 3816 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); | 3818 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
| 3817 | 3819 |
| 3818 LayerTreeHostImpl::FrameData frame; | 3820 LayerTreeHostImpl::FrameData frame; |
| 3819 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3821 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3820 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3822 host_impl_->PrepareToDraw(&frame)); |
| 3821 ASSERT_EQ(1u, frame.render_passes.size()); | 3823 ASSERT_EQ(1u, frame.render_passes.size()); |
| 3822 | 3824 |
| 3823 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 3825 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
| 3824 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 3826 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 3825 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 3827 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
| 3826 | 3828 |
| 3827 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); | 3829 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); |
| 3828 host_impl_->DidDrawAllLayers(frame); | 3830 host_impl_->DidDrawAllLayers(frame); |
| 3829 } | 3831 } |
| 3830 | 3832 |
| 3831 // Expect four surrounding gutter rects. | 3833 // Expect four surrounding gutter rects. |
| 3832 void TestLayerInMiddleOfViewport() { | 3834 void TestLayerInMiddleOfViewport() { |
| 3833 gfx::Rect layer_rect(500, 500, 200, 200); | 3835 gfx::Rect layer_rect(500, 500, 200, 200); |
| 3834 child_->SetPosition(layer_rect.origin()); | 3836 child_->SetPosition(layer_rect.origin()); |
| 3835 child_->SetBounds(layer_rect.size()); | 3837 child_->SetBounds(layer_rect.size()); |
| 3836 child_->SetContentBounds(layer_rect.size()); | 3838 child_->SetContentBounds(layer_rect.size()); |
| 3837 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 3839 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| 3838 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); | 3840 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
| 3839 | 3841 |
| 3840 LayerTreeHostImpl::FrameData frame; | 3842 LayerTreeHostImpl::FrameData frame; |
| 3841 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3843 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3842 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3844 host_impl_->PrepareToDraw(&frame)); |
| 3843 ASSERT_EQ(1u, frame.render_passes.size()); | 3845 ASSERT_EQ(1u, frame.render_passes.size()); |
| 3844 | 3846 |
| 3845 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 3847 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
| 3846 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size()); | 3848 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size()); |
| 3847 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 3849 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
| 3848 | 3850 |
| 3849 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); | 3851 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); |
| 3850 host_impl_->DidDrawAllLayers(frame); | 3852 host_impl_->DidDrawAllLayers(frame); |
| 3851 } | 3853 } |
| 3852 | 3854 |
| 3853 // Expect no gutter rects. | 3855 // Expect no gutter rects. |
| 3854 void TestLayerIsLargerThanViewport() { | 3856 void TestLayerIsLargerThanViewport() { |
| 3855 gfx::Rect layer_rect(viewport_size_.width() + 10, | 3857 gfx::Rect layer_rect(viewport_size_.width() + 10, |
| 3856 viewport_size_.height() + 10); | 3858 viewport_size_.height() + 10); |
| 3857 child_->SetPosition(layer_rect.origin()); | 3859 child_->SetPosition(layer_rect.origin()); |
| 3858 child_->SetBounds(layer_rect.size()); | 3860 child_->SetBounds(layer_rect.size()); |
| 3859 child_->SetContentBounds(layer_rect.size()); | 3861 child_->SetContentBounds(layer_rect.size()); |
| 3860 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 3862 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| 3861 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); | 3863 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
| 3862 | 3864 |
| 3863 LayerTreeHostImpl::FrameData frame; | 3865 LayerTreeHostImpl::FrameData frame; |
| 3864 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 3866 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 3865 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 3867 host_impl_->PrepareToDraw(&frame)); |
| 3866 ASSERT_EQ(1u, frame.render_passes.size()); | 3868 ASSERT_EQ(1u, frame.render_passes.size()); |
| 3867 | 3869 |
| 3868 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 3870 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
| 3869 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 3871 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 3870 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 3872 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
| 3871 | 3873 |
| 3872 host_impl_->DidDrawAllLayers(frame); | 3874 host_impl_->DidDrawAllLayers(frame); |
| 3873 } | 3875 } |
| 3874 | 3876 |
| 3875 virtual void DidActivatePendingTree() OVERRIDE { | 3877 virtual void DidActivatePendingTree() OVERRIDE { |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4071 root->SetContentBounds(gfx::Size(10, 10)); | 4073 root->SetContentBounds(gfx::Size(10, 10)); |
| 4072 root->SetDrawsContent(true); | 4074 root->SetDrawsContent(true); |
| 4073 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 4075 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 4074 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); | 4076 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); |
| 4075 provider->TestContext3d()->clear_reshape_called(); | 4077 provider->TestContext3d()->clear_reshape_called(); |
| 4076 | 4078 |
| 4077 LayerTreeHostImpl::FrameData frame; | 4079 LayerTreeHostImpl::FrameData frame; |
| 4078 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 4080 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
| 4079 host_impl_->SetDeviceScaleFactor(1.f); | 4081 host_impl_->SetDeviceScaleFactor(1.f); |
| 4080 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4082 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4081 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4083 host_impl_->PrepareToDraw(&frame)); |
| 4082 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4084 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4083 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); | 4085 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); |
| 4084 EXPECT_EQ(provider->TestContext3d()->width(), 10); | 4086 EXPECT_EQ(provider->TestContext3d()->width(), 10); |
| 4085 EXPECT_EQ(provider->TestContext3d()->height(), 10); | 4087 EXPECT_EQ(provider->TestContext3d()->height(), 10); |
| 4086 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); | 4088 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); |
| 4087 host_impl_->DidDrawAllLayers(frame); | 4089 host_impl_->DidDrawAllLayers(frame); |
| 4088 provider->TestContext3d()->clear_reshape_called(); | 4090 provider->TestContext3d()->clear_reshape_called(); |
| 4089 | 4091 |
| 4090 host_impl_->SetViewportSize(gfx::Size(20, 30)); | 4092 host_impl_->SetViewportSize(gfx::Size(20, 30)); |
| 4091 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4093 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4092 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4094 host_impl_->PrepareToDraw(&frame)); |
| 4093 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4095 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4094 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); | 4096 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); |
| 4095 EXPECT_EQ(provider->TestContext3d()->width(), 20); | 4097 EXPECT_EQ(provider->TestContext3d()->width(), 20); |
| 4096 EXPECT_EQ(provider->TestContext3d()->height(), 30); | 4098 EXPECT_EQ(provider->TestContext3d()->height(), 30); |
| 4097 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); | 4099 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); |
| 4098 host_impl_->DidDrawAllLayers(frame); | 4100 host_impl_->DidDrawAllLayers(frame); |
| 4099 provider->TestContext3d()->clear_reshape_called(); | 4101 provider->TestContext3d()->clear_reshape_called(); |
| 4100 | 4102 |
| 4101 host_impl_->SetDeviceScaleFactor(2.f); | 4103 host_impl_->SetDeviceScaleFactor(2.f); |
| 4102 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4104 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4103 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4105 host_impl_->PrepareToDraw(&frame)); |
| 4104 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4106 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4105 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); | 4107 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); |
| 4106 EXPECT_EQ(provider->TestContext3d()->width(), 20); | 4108 EXPECT_EQ(provider->TestContext3d()->width(), 20); |
| 4107 EXPECT_EQ(provider->TestContext3d()->height(), 30); | 4109 EXPECT_EQ(provider->TestContext3d()->height(), 30); |
| 4108 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f); | 4110 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 2.f); |
| 4109 host_impl_->DidDrawAllLayers(frame); | 4111 host_impl_->DidDrawAllLayers(frame); |
| 4110 provider->TestContext3d()->clear_reshape_called(); | 4112 provider->TestContext3d()->clear_reshape_called(); |
| 4111 } | 4113 } |
| 4112 | 4114 |
| 4113 // Make sure damage tracking propagates all the way to the graphics context, | 4115 // Make sure damage tracking propagates all the way to the graphics context, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4150 root->SetBounds(gfx::Size(500, 500)); | 4152 root->SetBounds(gfx::Size(500, 500)); |
| 4151 root->SetContentBounds(gfx::Size(500, 500)); | 4153 root->SetContentBounds(gfx::Size(500, 500)); |
| 4152 root->SetDrawsContent(true); | 4154 root->SetDrawsContent(true); |
| 4153 root->AddChild(child.Pass()); | 4155 root->AddChild(child.Pass()); |
| 4154 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); | 4156 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); |
| 4155 | 4157 |
| 4156 LayerTreeHostImpl::FrameData frame; | 4158 LayerTreeHostImpl::FrameData frame; |
| 4157 | 4159 |
| 4158 // First frame, the entire screen should get swapped. | 4160 // First frame, the entire screen should get swapped. |
| 4159 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4161 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4160 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 4162 layer_tree_host_impl->PrepareToDraw(&frame)); |
| 4161 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4163 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4162 layer_tree_host_impl->DidDrawAllLayers(frame); | 4164 layer_tree_host_impl->DidDrawAllLayers(frame); |
| 4163 layer_tree_host_impl->SwapBuffers(frame); | 4165 layer_tree_host_impl->SwapBuffers(frame); |
| 4164 EXPECT_EQ(TestContextSupport::SWAP, | 4166 EXPECT_EQ(TestContextSupport::SWAP, |
| 4165 context_provider->support()->last_swap_type()); | 4167 context_provider->support()->last_swap_type()); |
| 4166 | 4168 |
| 4167 // Second frame, only the damaged area should get swapped. Damage should be | 4169 // Second frame, only the damaged area should get swapped. Damage should be |
| 4168 // the union of old and new child rects. | 4170 // the union of old and new child rects. |
| 4169 // expected damage rect: gfx::Rect(26, 28); | 4171 // expected damage rect: gfx::Rect(26, 28); |
| 4170 // expected swap rect: vertically flipped, with origin at bottom left corner. | 4172 // expected swap rect: vertically flipped, with origin at bottom left corner. |
| 4171 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( | 4173 layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( |
| 4172 gfx::PointF()); | 4174 gfx::PointF()); |
| 4173 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4175 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4174 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 4176 layer_tree_host_impl->PrepareToDraw(&frame)); |
| 4175 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4177 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4176 host_impl_->DidDrawAllLayers(frame); | 4178 host_impl_->DidDrawAllLayers(frame); |
| 4177 layer_tree_host_impl->SwapBuffers(frame); | 4179 layer_tree_host_impl->SwapBuffers(frame); |
| 4178 | 4180 |
| 4179 // Make sure that partial swap is constrained to the viewport dimensions | 4181 // Make sure that partial swap is constrained to the viewport dimensions |
| 4180 // expected damage rect: gfx::Rect(500, 500); | 4182 // expected damage rect: gfx::Rect(500, 500); |
| 4181 // expected swap rect: flipped damage rect, but also clamped to viewport | 4183 // expected swap rect: flipped damage rect, but also clamped to viewport |
| 4182 EXPECT_EQ(TestContextSupport::PARTIAL_SWAP, | 4184 EXPECT_EQ(TestContextSupport::PARTIAL_SWAP, |
| 4183 context_provider->support()->last_swap_type()); | 4185 context_provider->support()->last_swap_type()); |
| 4184 gfx::Rect expected_swap_rect(0, 500-28, 26, 28); | 4186 gfx::Rect expected_swap_rect(0, 500-28, 26, 28); |
| 4185 EXPECT_EQ(expected_swap_rect.ToString(), | 4187 EXPECT_EQ(expected_swap_rect.ToString(), |
| 4186 context_provider->support()-> | 4188 context_provider->support()-> |
| 4187 last_partial_swap_rect().ToString()); | 4189 last_partial_swap_rect().ToString()); |
| 4188 | 4190 |
| 4189 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); | 4191 layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10)); |
| 4190 // This will damage everything. | 4192 // This will damage everything. |
| 4191 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( | 4193 layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor( |
| 4192 SK_ColorBLACK); | 4194 SK_ColorBLACK); |
| 4193 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4195 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4194 layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 4196 layer_tree_host_impl->PrepareToDraw(&frame)); |
| 4195 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4197 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4196 host_impl_->DidDrawAllLayers(frame); | 4198 host_impl_->DidDrawAllLayers(frame); |
| 4197 layer_tree_host_impl->SwapBuffers(frame); | 4199 layer_tree_host_impl->SwapBuffers(frame); |
| 4198 | 4200 |
| 4199 EXPECT_EQ(TestContextSupport::SWAP, | 4201 EXPECT_EQ(TestContextSupport::SWAP, |
| 4200 context_provider->support()->last_swap_type()); | 4202 context_provider->support()->last_swap_type()); |
| 4201 } | 4203 } |
| 4202 | 4204 |
| 4203 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { | 4205 TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { |
| 4204 scoped_ptr<LayerImpl> root = | 4206 scoped_ptr<LayerImpl> root = |
| 4205 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); | 4207 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); |
| 4206 scoped_ptr<LayerImpl> child = | 4208 scoped_ptr<LayerImpl> child = |
| 4207 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); | 4209 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 2); |
| 4208 child->SetAnchorPoint(gfx::PointF()); | 4210 child->SetAnchorPoint(gfx::PointF()); |
| 4209 child->SetBounds(gfx::Size(10, 10)); | 4211 child->SetBounds(gfx::Size(10, 10)); |
| 4210 child->SetContentBounds(gfx::Size(10, 10)); | 4212 child->SetContentBounds(gfx::Size(10, 10)); |
| 4211 child->SetDrawsContent(true); | 4213 child->SetDrawsContent(true); |
| 4212 root->SetAnchorPoint(gfx::PointF()); | 4214 root->SetAnchorPoint(gfx::PointF()); |
| 4213 root->SetBounds(gfx::Size(10, 10)); | 4215 root->SetBounds(gfx::Size(10, 10)); |
| 4214 root->SetContentBounds(gfx::Size(10, 10)); | 4216 root->SetContentBounds(gfx::Size(10, 10)); |
| 4215 root->SetDrawsContent(true); | 4217 root->SetDrawsContent(true); |
| 4216 root->SetForceRenderSurface(true); | 4218 root->SetForceRenderSurface(true); |
| 4217 root->AddChild(child.Pass()); | 4219 root->AddChild(child.Pass()); |
| 4218 | 4220 |
| 4219 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 4221 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 4220 | 4222 |
| 4221 LayerTreeHostImpl::FrameData frame; | 4223 LayerTreeHostImpl::FrameData frame; |
| 4222 | 4224 |
| 4223 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4225 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4224 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4226 host_impl_->PrepareToDraw(&frame)); |
| 4225 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); | 4227 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); |
| 4226 EXPECT_EQ(1u, frame.render_passes.size()); | 4228 EXPECT_EQ(1u, frame.render_passes.size()); |
| 4227 host_impl_->DidDrawAllLayers(frame); | 4229 host_impl_->DidDrawAllLayers(frame); |
| 4228 } | 4230 } |
| 4229 | 4231 |
| 4230 class FakeLayerWithQuads : public LayerImpl { | 4232 class FakeLayerWithQuads : public LayerImpl { |
| 4231 public: | 4233 public: |
| 4232 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 4234 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
| 4233 return scoped_ptr<LayerImpl>(new FakeLayerWithQuads(tree_impl, id)); | 4235 return scoped_ptr<LayerImpl>(new FakeLayerWithQuads(tree_impl, id)); |
| 4234 } | 4236 } |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4352 settings.partial_swap_enabled = false; | 4354 settings.partial_swap_enabled = false; |
| 4353 CreateHostImpl(settings, output_surface.Pass()); | 4355 CreateHostImpl(settings, output_surface.Pass()); |
| 4354 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 4356 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 4355 | 4357 |
| 4356 // Without partial swap, and no clipping, no scissor is set. | 4358 // Without partial swap, and no clipping, no scissor is set. |
| 4357 harness.MustDrawSolidQuad(); | 4359 harness.MustDrawSolidQuad(); |
| 4358 harness.MustSetNoScissor(); | 4360 harness.MustSetNoScissor(); |
| 4359 { | 4361 { |
| 4360 LayerTreeHostImpl::FrameData frame; | 4362 LayerTreeHostImpl::FrameData frame; |
| 4361 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4363 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4362 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4364 host_impl_->PrepareToDraw(&frame)); |
| 4363 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4365 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4364 host_impl_->DidDrawAllLayers(frame); | 4366 host_impl_->DidDrawAllLayers(frame); |
| 4365 } | 4367 } |
| 4366 Mock::VerifyAndClearExpectations(&mock_context); | 4368 Mock::VerifyAndClearExpectations(&mock_context); |
| 4367 | 4369 |
| 4368 // Without partial swap, but a layer does clip its subtree, one scissor is | 4370 // Without partial swap, but a layer does clip its subtree, one scissor is |
| 4369 // set. | 4371 // set. |
| 4370 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); | 4372 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); |
| 4371 harness.MustDrawSolidQuad(); | 4373 harness.MustDrawSolidQuad(); |
| 4372 harness.MustSetScissor(0, 0, 10, 10); | 4374 harness.MustSetScissor(0, 0, 10, 10); |
| 4373 { | 4375 { |
| 4374 LayerTreeHostImpl::FrameData frame; | 4376 LayerTreeHostImpl::FrameData frame; |
| 4375 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4377 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4376 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4378 host_impl_->PrepareToDraw(&frame)); |
| 4377 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4379 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4378 host_impl_->DidDrawAllLayers(frame); | 4380 host_impl_->DidDrawAllLayers(frame); |
| 4379 } | 4381 } |
| 4380 Mock::VerifyAndClearExpectations(&mock_context); | 4382 Mock::VerifyAndClearExpectations(&mock_context); |
| 4381 } | 4383 } |
| 4382 | 4384 |
| 4383 TEST_F(LayerTreeHostImplTest, PartialSwap) { | 4385 TEST_F(LayerTreeHostImplTest, PartialSwap) { |
| 4384 scoped_ptr<MockContext> context_owned(new MockContext); | 4386 scoped_ptr<MockContext> context_owned(new MockContext); |
| 4385 MockContext* mock_context = context_owned.get(); | 4387 MockContext* mock_context = context_owned.get(); |
| 4386 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 4388 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
| 4387 context_owned.PassAs<TestWebGraphicsContext3D>())); | 4389 context_owned.PassAs<TestWebGraphicsContext3D>())); |
| 4388 MockContextHarness harness(mock_context); | 4390 MockContextHarness harness(mock_context); |
| 4389 | 4391 |
| 4390 LayerTreeSettings settings = DefaultSettings(); | 4392 LayerTreeSettings settings = DefaultSettings(); |
| 4391 settings.partial_swap_enabled = true; | 4393 settings.partial_swap_enabled = true; |
| 4392 CreateHostImpl(settings, output_surface.Pass()); | 4394 CreateHostImpl(settings, output_surface.Pass()); |
| 4393 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 4395 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 4394 | 4396 |
| 4395 // The first frame is not a partially-swapped one. | 4397 // The first frame is not a partially-swapped one. |
| 4396 harness.MustSetScissor(0, 0, 10, 10); | 4398 harness.MustSetScissor(0, 0, 10, 10); |
| 4397 harness.MustDrawSolidQuad(); | 4399 harness.MustDrawSolidQuad(); |
| 4398 { | 4400 { |
| 4399 LayerTreeHostImpl::FrameData frame; | 4401 LayerTreeHostImpl::FrameData frame; |
| 4400 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4402 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4401 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4403 host_impl_->PrepareToDraw(&frame)); |
| 4402 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4404 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4403 host_impl_->DidDrawAllLayers(frame); | 4405 host_impl_->DidDrawAllLayers(frame); |
| 4404 } | 4406 } |
| 4405 Mock::VerifyAndClearExpectations(&mock_context); | 4407 Mock::VerifyAndClearExpectations(&mock_context); |
| 4406 | 4408 |
| 4407 // Damage a portion of the frame. | 4409 // Damage a portion of the frame. |
| 4408 host_impl_->active_tree()->root_layer()->SetUpdateRect( | 4410 host_impl_->active_tree()->root_layer()->SetUpdateRect( |
| 4409 gfx::Rect(0, 0, 2, 3)); | 4411 gfx::Rect(0, 0, 2, 3)); |
| 4410 | 4412 |
| 4411 // The second frame will be partially-swapped (the y coordinates are flipped). | 4413 // The second frame will be partially-swapped (the y coordinates are flipped). |
| 4412 harness.MustSetScissor(0, 7, 2, 3); | 4414 harness.MustSetScissor(0, 7, 2, 3); |
| 4413 harness.MustDrawSolidQuad(); | 4415 harness.MustDrawSolidQuad(); |
| 4414 { | 4416 { |
| 4415 LayerTreeHostImpl::FrameData frame; | 4417 LayerTreeHostImpl::FrameData frame; |
| 4416 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4418 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4417 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4419 host_impl_->PrepareToDraw(&frame)); |
| 4418 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4420 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4419 host_impl_->DidDrawAllLayers(frame); | 4421 host_impl_->DidDrawAllLayers(frame); |
| 4420 } | 4422 } |
| 4421 Mock::VerifyAndClearExpectations(&mock_context); | 4423 Mock::VerifyAndClearExpectations(&mock_context); |
| 4422 } | 4424 } |
| 4423 | 4425 |
| 4424 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity( | 4426 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity( |
| 4425 bool partial_swap, | 4427 bool partial_swap, |
| 4426 LayerTreeHostImplClient* client, | 4428 LayerTreeHostImplClient* client, |
| 4427 Proxy* proxy, | 4429 Proxy* proxy, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4506 new TestSharedBitmapManager()); | 4508 new TestSharedBitmapManager()); |
| 4507 scoped_ptr<LayerTreeHostImpl> my_host_impl = | 4509 scoped_ptr<LayerTreeHostImpl> my_host_impl = |
| 4508 SetupLayersForOpacity(true, | 4510 SetupLayersForOpacity(true, |
| 4509 this, | 4511 this, |
| 4510 &proxy_, | 4512 &proxy_, |
| 4511 shared_bitmap_manager.get(), | 4513 shared_bitmap_manager.get(), |
| 4512 &stats_instrumentation_); | 4514 &stats_instrumentation_); |
| 4513 { | 4515 { |
| 4514 LayerTreeHostImpl::FrameData frame; | 4516 LayerTreeHostImpl::FrameData frame; |
| 4515 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4517 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4516 my_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 4518 my_host_impl->PrepareToDraw(&frame)); |
| 4517 | 4519 |
| 4518 // Verify all quads have been computed | 4520 // Verify all quads have been computed |
| 4519 ASSERT_EQ(2U, frame.render_passes.size()); | 4521 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4520 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4522 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4521 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4523 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4522 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4524 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4523 frame.render_passes[0]->quad_list[0]->material); | 4525 frame.render_passes[0]->quad_list[0]->material); |
| 4524 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4526 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4525 frame.render_passes[1]->quad_list[0]->material); | 4527 frame.render_passes[1]->quad_list[0]->material); |
| 4526 | 4528 |
| 4527 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4529 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4528 my_host_impl->DidDrawAllLayers(frame); | 4530 my_host_impl->DidDrawAllLayers(frame); |
| 4529 } | 4531 } |
| 4530 } | 4532 } |
| 4531 | 4533 |
| 4532 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 4534 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
| 4533 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 4535 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 4534 new TestSharedBitmapManager()); | 4536 new TestSharedBitmapManager()); |
| 4535 scoped_ptr<LayerTreeHostImpl> my_host_impl = | 4537 scoped_ptr<LayerTreeHostImpl> my_host_impl = |
| 4536 SetupLayersForOpacity(false, | 4538 SetupLayersForOpacity(false, |
| 4537 this, | 4539 this, |
| 4538 &proxy_, | 4540 &proxy_, |
| 4539 shared_bitmap_manager.get(), | 4541 shared_bitmap_manager.get(), |
| 4540 &stats_instrumentation_); | 4542 &stats_instrumentation_); |
| 4541 { | 4543 { |
| 4542 LayerTreeHostImpl::FrameData frame; | 4544 LayerTreeHostImpl::FrameData frame; |
| 4543 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4545 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4544 my_host_impl->PrepareToDraw(&frame, gfx::Rect())); | 4546 my_host_impl->PrepareToDraw(&frame)); |
| 4545 | 4547 |
| 4546 // Verify all quads have been computed | 4548 // Verify all quads have been computed |
| 4547 ASSERT_EQ(2U, frame.render_passes.size()); | 4549 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4548 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4550 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4549 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4551 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4550 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4552 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4551 frame.render_passes[0]->quad_list[0]->material); | 4553 frame.render_passes[0]->quad_list[0]->material); |
| 4552 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4554 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4553 frame.render_passes[1]->quad_list[0]->material); | 4555 frame.render_passes[1]->quad_list[0]->material); |
| 4554 | 4556 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4591 io_surface_layer->SetDrawsContent(true); | 4593 io_surface_layer->SetDrawsContent(true); |
| 4592 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); | 4594 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); |
| 4593 root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); | 4595 root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); |
| 4594 | 4596 |
| 4595 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 4597 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
| 4596 | 4598 |
| 4597 EXPECT_EQ(0u, context3d->NumTextures()); | 4599 EXPECT_EQ(0u, context3d->NumTextures()); |
| 4598 | 4600 |
| 4599 LayerTreeHostImpl::FrameData frame; | 4601 LayerTreeHostImpl::FrameData frame; |
| 4600 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4602 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4601 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4603 host_impl_->PrepareToDraw(&frame)); |
| 4602 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4604 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4603 host_impl_->DidDrawAllLayers(frame); | 4605 host_impl_->DidDrawAllLayers(frame); |
| 4604 host_impl_->SwapBuffers(frame); | 4606 host_impl_->SwapBuffers(frame); |
| 4605 | 4607 |
| 4606 EXPECT_GT(context3d->NumTextures(), 0u); | 4608 EXPECT_GT(context3d->NumTextures(), 0u); |
| 4607 | 4609 |
| 4608 // Kill the layer tree. | 4610 // Kill the layer tree. |
| 4609 host_impl_->active_tree()->SetRootLayer( | 4611 host_impl_->active_tree()->SetRootLayer( |
| 4610 LayerImpl::Create(host_impl_->active_tree(), 100)); | 4612 LayerImpl::Create(host_impl_->active_tree(), 100)); |
| 4611 // There should be no textures left in use after. | 4613 // There should be no textures left in use after. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 4637 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); | 4639 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); |
| 4638 | 4640 |
| 4639 // Verify one quad is drawn when transparent background set is not set. | 4641 // Verify one quad is drawn when transparent background set is not set. |
| 4640 host_impl_->active_tree()->set_has_transparent_background(false); | 4642 host_impl_->active_tree()->set_has_transparent_background(false); |
| 4641 EXPECT_CALL(*mock_context, useProgram(_)) | 4643 EXPECT_CALL(*mock_context, useProgram(_)) |
| 4642 .Times(1); | 4644 .Times(1); |
| 4643 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) | 4645 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) |
| 4644 .Times(1); | 4646 .Times(1); |
| 4645 LayerTreeHostImpl::FrameData frame; | 4647 LayerTreeHostImpl::FrameData frame; |
| 4646 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4648 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4647 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4649 host_impl_->PrepareToDraw(&frame)); |
| 4648 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4650 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4649 host_impl_->DidDrawAllLayers(frame); | 4651 host_impl_->DidDrawAllLayers(frame); |
| 4650 Mock::VerifyAndClearExpectations(&mock_context); | 4652 Mock::VerifyAndClearExpectations(&mock_context); |
| 4651 | 4653 |
| 4652 // Verify no quads are drawn when transparent background is set. | 4654 // Verify no quads are drawn when transparent background is set. |
| 4653 host_impl_->active_tree()->set_has_transparent_background(true); | 4655 host_impl_->active_tree()->set_has_transparent_background(true); |
| 4654 host_impl_->SetFullRootLayerDamage(); | 4656 host_impl_->SetFullRootLayerDamage(); |
| 4655 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4657 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4656 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4658 host_impl_->PrepareToDraw(&frame)); |
| 4657 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4659 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4658 host_impl_->DidDrawAllLayers(frame); | 4660 host_impl_->DidDrawAllLayers(frame); |
| 4659 Mock::VerifyAndClearExpectations(&mock_context); | 4661 Mock::VerifyAndClearExpectations(&mock_context); |
| 4660 } | 4662 } |
| 4661 | 4663 |
| 4662 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { | 4664 TEST_F(LayerTreeHostImplTest, ReleaseContentsTextureShouldTriggerCommit) { |
| 4663 set_reduce_memory_result(false); | 4665 set_reduce_memory_result(false); |
| 4664 | 4666 |
| 4665 // If changing the memory limit wouldn't result in changing what was | 4667 // If changing the memory limit wouldn't result in changing what was |
| 4666 // committed, then no commit should be requested. | 4668 // committed, then no commit should be requested. |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4704 protected: | 4706 protected: |
| 4705 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { | 4707 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { |
| 4706 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); | 4708 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); |
| 4707 } | 4709 } |
| 4708 | 4710 |
| 4709 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { | 4711 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { |
| 4710 bool expect_to_draw = !expected_damage.IsEmpty(); | 4712 bool expect_to_draw = !expected_damage.IsEmpty(); |
| 4711 | 4713 |
| 4712 LayerTreeHostImpl::FrameData frame; | 4714 LayerTreeHostImpl::FrameData frame; |
| 4713 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4715 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4714 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4716 host_impl_->PrepareToDraw(&frame)); |
| 4715 | 4717 |
| 4716 if (!expect_to_draw) { | 4718 if (!expect_to_draw) { |
| 4717 // With no damage, we don't draw, and no quads are created. | 4719 // With no damage, we don't draw, and no quads are created. |
| 4718 ASSERT_EQ(0u, frame.render_passes.size()); | 4720 ASSERT_EQ(0u, frame.render_passes.size()); |
| 4719 } else { | 4721 } else { |
| 4720 ASSERT_EQ(1u, frame.render_passes.size()); | 4722 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4721 | 4723 |
| 4722 // Verify the damage rect for the root render pass. | 4724 // Verify the damage rect for the root render pass. |
| 4723 const RenderPass* root_render_pass = frame.render_passes.back(); | 4725 const RenderPass* root_render_pass = frame.render_passes.back(); |
| 4724 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); | 4726 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4864 | 4866 |
| 4865 | 4867 |
| 4866 // Check that the tree scaling is correctly taken into account for the mask, | 4868 // Check that the tree scaling is correctly taken into account for the mask, |
| 4867 // that should fully map onto the quad. | 4869 // that should fully map onto the quad. |
| 4868 float device_scale_factor = 1.f; | 4870 float device_scale_factor = 1.f; |
| 4869 host_impl_->SetViewportSize(root_size); | 4871 host_impl_->SetViewportSize(root_size); |
| 4870 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4872 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4871 { | 4873 { |
| 4872 LayerTreeHostImpl::FrameData frame; | 4874 LayerTreeHostImpl::FrameData frame; |
| 4873 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4875 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4874 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4876 host_impl_->PrepareToDraw(&frame)); |
| 4875 | 4877 |
| 4876 ASSERT_EQ(1u, frame.render_passes.size()); | 4878 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4877 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4879 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4878 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4880 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4879 frame.render_passes[0]->quad_list[0]->material); | 4881 frame.render_passes[0]->quad_list[0]->material); |
| 4880 const RenderPassDrawQuad* render_pass_quad = | 4882 const RenderPassDrawQuad* render_pass_quad = |
| 4881 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4883 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 4882 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 4884 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 4883 render_pass_quad->rect.ToString()); | 4885 render_pass_quad->rect.ToString()); |
| 4884 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4886 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4885 render_pass_quad->mask_uv_rect.ToString()); | 4887 render_pass_quad->mask_uv_rect.ToString()); |
| 4886 | 4888 |
| 4887 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4889 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4888 host_impl_->DidDrawAllLayers(frame); | 4890 host_impl_->DidDrawAllLayers(frame); |
| 4889 } | 4891 } |
| 4890 | 4892 |
| 4891 | 4893 |
| 4892 // Applying a DSF should change the render surface size, but won't affect | 4894 // Applying a DSF should change the render surface size, but won't affect |
| 4893 // which part of the mask is used. | 4895 // which part of the mask is used. |
| 4894 device_scale_factor = 2.f; | 4896 device_scale_factor = 2.f; |
| 4895 gfx::Size device_viewport = | 4897 gfx::Size device_viewport = |
| 4896 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 4898 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 4897 host_impl_->SetViewportSize(device_viewport); | 4899 host_impl_->SetViewportSize(device_viewport); |
| 4898 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4900 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4899 host_impl_->active_tree()->set_needs_update_draw_properties(); | 4901 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 4900 { | 4902 { |
| 4901 LayerTreeHostImpl::FrameData frame; | 4903 LayerTreeHostImpl::FrameData frame; |
| 4902 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4904 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4903 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4905 host_impl_->PrepareToDraw(&frame)); |
| 4904 | 4906 |
| 4905 ASSERT_EQ(1u, frame.render_passes.size()); | 4907 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4906 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4908 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4907 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4909 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4908 frame.render_passes[0]->quad_list[0]->material); | 4910 frame.render_passes[0]->quad_list[0]->material); |
| 4909 const RenderPassDrawQuad* render_pass_quad = | 4911 const RenderPassDrawQuad* render_pass_quad = |
| 4910 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4912 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 4911 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 4913 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 4912 render_pass_quad->rect.ToString()); | 4914 render_pass_quad->rect.ToString()); |
| 4913 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4915 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4924 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 4926 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |
| 4925 device_scale_factor)); | 4927 device_scale_factor)); |
| 4926 content_layer->SetContentBounds(content_bounds); | 4928 content_layer->SetContentBounds(content_bounds); |
| 4927 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 4929 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 4928 mask_layer->SetContentBounds(content_bounds); | 4930 mask_layer->SetContentBounds(content_bounds); |
| 4929 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 4931 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 4930 host_impl_->active_tree()->set_needs_update_draw_properties(); | 4932 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 4931 { | 4933 { |
| 4932 LayerTreeHostImpl::FrameData frame; | 4934 LayerTreeHostImpl::FrameData frame; |
| 4933 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4935 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4934 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 4936 host_impl_->PrepareToDraw(&frame)); |
| 4935 | 4937 |
| 4936 ASSERT_EQ(1u, frame.render_passes.size()); | 4938 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4937 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4939 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4938 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4940 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4939 frame.render_passes[0]->quad_list[0]->material); | 4941 frame.render_passes[0]->quad_list[0]->material); |
| 4940 const RenderPassDrawQuad* render_pass_quad = | 4942 const RenderPassDrawQuad* render_pass_quad = |
| 4941 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4943 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 4942 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 4944 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 4943 render_pass_quad->rect.ToString()); | 4945 render_pass_quad->rect.ToString()); |
| 4944 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4946 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4988 mask_layer->SetAnchorPoint(gfx::PointF()); | 4990 mask_layer->SetAnchorPoint(gfx::PointF()); |
| 4989 mask_layer->SetDrawsContent(true); | 4991 mask_layer->SetDrawsContent(true); |
| 4990 | 4992 |
| 4991 // Check that the mask fills the surface. | 4993 // Check that the mask fills the surface. |
| 4992 float device_scale_factor = 1.f; | 4994 float device_scale_factor = 1.f; |
| 4993 host_impl_->SetViewportSize(root_size); | 4995 host_impl_->SetViewportSize(root_size); |
| 4994 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4996 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4995 { | 4997 { |
| 4996 LayerTreeHostImpl::FrameData frame; | 4998 LayerTreeHostImpl::FrameData frame; |
| 4997 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 4999 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 4998 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5000 host_impl_->PrepareToDraw(&frame)); |
| 4999 | 5001 |
| 5000 ASSERT_EQ(1u, frame.render_passes.size()); | 5002 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5001 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5003 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5002 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5004 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5003 frame.render_passes[0]->quad_list[0]->material); | 5005 frame.render_passes[0]->quad_list[0]->material); |
| 5004 const RenderPassDrawQuad* render_pass_quad = | 5006 const RenderPassDrawQuad* render_pass_quad = |
| 5005 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5007 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5006 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5008 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5007 render_pass_quad->rect.ToString()); | 5009 render_pass_quad->rect.ToString()); |
| 5008 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5010 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5009 render_pass_quad->mask_uv_rect.ToString()); | 5011 render_pass_quad->mask_uv_rect.ToString()); |
| 5010 | 5012 |
| 5011 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5013 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5012 host_impl_->DidDrawAllLayers(frame); | 5014 host_impl_->DidDrawAllLayers(frame); |
| 5013 } | 5015 } |
| 5014 | 5016 |
| 5015 // Applying a DSF should change the render surface size, but won't affect | 5017 // Applying a DSF should change the render surface size, but won't affect |
| 5016 // which part of the mask is used. | 5018 // which part of the mask is used. |
| 5017 device_scale_factor = 2.f; | 5019 device_scale_factor = 2.f; |
| 5018 gfx::Size device_viewport = | 5020 gfx::Size device_viewport = |
| 5019 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5021 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5020 host_impl_->SetViewportSize(device_viewport); | 5022 host_impl_->SetViewportSize(device_viewport); |
| 5021 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5023 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5022 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5024 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5023 { | 5025 { |
| 5024 LayerTreeHostImpl::FrameData frame; | 5026 LayerTreeHostImpl::FrameData frame; |
| 5025 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5027 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5026 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5028 host_impl_->PrepareToDraw(&frame)); |
| 5027 | 5029 |
| 5028 ASSERT_EQ(1u, frame.render_passes.size()); | 5030 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5029 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5031 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5030 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5032 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5031 frame.render_passes[0]->quad_list[0]->material); | 5033 frame.render_passes[0]->quad_list[0]->material); |
| 5032 const RenderPassDrawQuad* render_pass_quad = | 5034 const RenderPassDrawQuad* render_pass_quad = |
| 5033 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5035 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5034 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5036 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5035 render_pass_quad->rect.ToString()); | 5037 render_pass_quad->rect.ToString()); |
| 5036 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5038 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| (...skipping 10 matching lines...) Expand all Loading... |
| 5047 content_layer->SetContentBounds(layer_size_large); | 5049 content_layer->SetContentBounds(layer_size_large); |
| 5048 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5050 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5049 gfx::Size mask_size_large = | 5051 gfx::Size mask_size_large = |
| 5050 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5052 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5051 mask_layer->SetContentBounds(mask_size_large); | 5053 mask_layer->SetContentBounds(mask_size_large); |
| 5052 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5054 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5053 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5055 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5054 { | 5056 { |
| 5055 LayerTreeHostImpl::FrameData frame; | 5057 LayerTreeHostImpl::FrameData frame; |
| 5056 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5058 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5057 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5059 host_impl_->PrepareToDraw(&frame)); |
| 5058 | 5060 |
| 5059 ASSERT_EQ(1u, frame.render_passes.size()); | 5061 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5060 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5062 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5061 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5063 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5062 frame.render_passes[0]->quad_list[0]->material); | 5064 frame.render_passes[0]->quad_list[0]->material); |
| 5063 const RenderPassDrawQuad* render_pass_quad = | 5065 const RenderPassDrawQuad* render_pass_quad = |
| 5064 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5066 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5065 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5067 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5066 render_pass_quad->rect.ToString()); | 5068 render_pass_quad->rect.ToString()); |
| 5067 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5069 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5068 render_pass_quad->mask_uv_rect.ToString()); | 5070 render_pass_quad->mask_uv_rect.ToString()); |
| 5069 | 5071 |
| 5070 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5072 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5071 host_impl_->DidDrawAllLayers(frame); | 5073 host_impl_->DidDrawAllLayers(frame); |
| 5072 } | 5074 } |
| 5073 | 5075 |
| 5074 // Applying a different contents scale to the mask layer means it will have | 5076 // Applying a different contents scale to the mask layer means it will have |
| 5075 // a larger texture, but it should use the same tex coords to cover the | 5077 // a larger texture, but it should use the same tex coords to cover the |
| 5076 // layer it masks. | 5078 // layer it masks. |
| 5077 mask_layer->SetContentBounds(mask_size); | 5079 mask_layer->SetContentBounds(mask_size); |
| 5078 mask_layer->SetContentsScale(1.f, 1.f); | 5080 mask_layer->SetContentsScale(1.f, 1.f); |
| 5079 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5081 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5080 { | 5082 { |
| 5081 LayerTreeHostImpl::FrameData frame; | 5083 LayerTreeHostImpl::FrameData frame; |
| 5082 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5084 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5083 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5085 host_impl_->PrepareToDraw(&frame)); |
| 5084 | 5086 |
| 5085 ASSERT_EQ(1u, frame.render_passes.size()); | 5087 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5086 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5088 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5087 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5089 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5088 frame.render_passes[0]->quad_list[0]->material); | 5090 frame.render_passes[0]->quad_list[0]->material); |
| 5089 const RenderPassDrawQuad* render_pass_quad = | 5091 const RenderPassDrawQuad* render_pass_quad = |
| 5090 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5092 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5091 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5093 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5092 render_pass_quad->rect.ToString()); | 5094 render_pass_quad->rect.ToString()); |
| 5093 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5095 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5142 mask_layer->SetAnchorPoint(gfx::PointF()); | 5144 mask_layer->SetAnchorPoint(gfx::PointF()); |
| 5143 mask_layer->SetDrawsContent(true); | 5145 mask_layer->SetDrawsContent(true); |
| 5144 | 5146 |
| 5145 // Check that the mask fills the surface. | 5147 // Check that the mask fills the surface. |
| 5146 float device_scale_factor = 1.f; | 5148 float device_scale_factor = 1.f; |
| 5147 host_impl_->SetViewportSize(root_size); | 5149 host_impl_->SetViewportSize(root_size); |
| 5148 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5150 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5149 { | 5151 { |
| 5150 LayerTreeHostImpl::FrameData frame; | 5152 LayerTreeHostImpl::FrameData frame; |
| 5151 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5153 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5152 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5154 host_impl_->PrepareToDraw(&frame)); |
| 5153 | 5155 |
| 5154 ASSERT_EQ(1u, frame.render_passes.size()); | 5156 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5155 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5157 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5156 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5158 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5157 frame.render_passes[0]->quad_list[1]->material); | 5159 frame.render_passes[0]->quad_list[1]->material); |
| 5158 const RenderPassDrawQuad* replica_quad = | 5160 const RenderPassDrawQuad* replica_quad = |
| 5159 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5161 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |
| 5160 EXPECT_TRUE(replica_quad->is_replica); | 5162 EXPECT_TRUE(replica_quad->is_replica); |
| 5161 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5163 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5162 replica_quad->rect.ToString()); | 5164 replica_quad->rect.ToString()); |
| 5163 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5165 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5164 replica_quad->mask_uv_rect.ToString()); | 5166 replica_quad->mask_uv_rect.ToString()); |
| 5165 | 5167 |
| 5166 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5168 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5167 host_impl_->DidDrawAllLayers(frame); | 5169 host_impl_->DidDrawAllLayers(frame); |
| 5168 } | 5170 } |
| 5169 | 5171 |
| 5170 // Applying a DSF should change the render surface size, but won't affect | 5172 // Applying a DSF should change the render surface size, but won't affect |
| 5171 // which part of the mask is used. | 5173 // which part of the mask is used. |
| 5172 device_scale_factor = 2.f; | 5174 device_scale_factor = 2.f; |
| 5173 gfx::Size device_viewport = | 5175 gfx::Size device_viewport = |
| 5174 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5176 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5175 host_impl_->SetViewportSize(device_viewport); | 5177 host_impl_->SetViewportSize(device_viewport); |
| 5176 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5178 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5177 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5179 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5178 { | 5180 { |
| 5179 LayerTreeHostImpl::FrameData frame; | 5181 LayerTreeHostImpl::FrameData frame; |
| 5180 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5182 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5181 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5183 host_impl_->PrepareToDraw(&frame)); |
| 5182 | 5184 |
| 5183 ASSERT_EQ(1u, frame.render_passes.size()); | 5185 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5184 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5186 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5185 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5187 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5186 frame.render_passes[0]->quad_list[1]->material); | 5188 frame.render_passes[0]->quad_list[1]->material); |
| 5187 const RenderPassDrawQuad* replica_quad = | 5189 const RenderPassDrawQuad* replica_quad = |
| 5188 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5190 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |
| 5189 EXPECT_TRUE(replica_quad->is_replica); | 5191 EXPECT_TRUE(replica_quad->is_replica); |
| 5190 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5192 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5191 replica_quad->rect.ToString()); | 5193 replica_quad->rect.ToString()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 5203 content_layer->SetContentBounds(layer_size_large); | 5205 content_layer->SetContentBounds(layer_size_large); |
| 5204 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5206 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5205 gfx::Size mask_size_large = | 5207 gfx::Size mask_size_large = |
| 5206 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5208 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5207 mask_layer->SetContentBounds(mask_size_large); | 5209 mask_layer->SetContentBounds(mask_size_large); |
| 5208 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5210 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5209 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5211 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5210 { | 5212 { |
| 5211 LayerTreeHostImpl::FrameData frame; | 5213 LayerTreeHostImpl::FrameData frame; |
| 5212 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5214 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5213 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5215 host_impl_->PrepareToDraw(&frame)); |
| 5214 | 5216 |
| 5215 ASSERT_EQ(1u, frame.render_passes.size()); | 5217 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5216 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5218 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5217 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5219 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5218 frame.render_passes[0]->quad_list[1]->material); | 5220 frame.render_passes[0]->quad_list[1]->material); |
| 5219 const RenderPassDrawQuad* replica_quad = | 5221 const RenderPassDrawQuad* replica_quad = |
| 5220 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5222 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |
| 5221 EXPECT_TRUE(replica_quad->is_replica); | 5223 EXPECT_TRUE(replica_quad->is_replica); |
| 5222 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5224 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5223 replica_quad->rect.ToString()); | 5225 replica_quad->rect.ToString()); |
| 5224 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5226 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5225 replica_quad->mask_uv_rect.ToString()); | 5227 replica_quad->mask_uv_rect.ToString()); |
| 5226 | 5228 |
| 5227 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5229 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5228 host_impl_->DidDrawAllLayers(frame); | 5230 host_impl_->DidDrawAllLayers(frame); |
| 5229 } | 5231 } |
| 5230 | 5232 |
| 5231 // Applying a different contents scale to the mask layer means it will have | 5233 // Applying a different contents scale to the mask layer means it will have |
| 5232 // a larger texture, but it should use the same tex coords to cover the | 5234 // a larger texture, but it should use the same tex coords to cover the |
| 5233 // layer it masks. | 5235 // layer it masks. |
| 5234 mask_layer->SetContentBounds(mask_size); | 5236 mask_layer->SetContentBounds(mask_size); |
| 5235 mask_layer->SetContentsScale(1.f, 1.f); | 5237 mask_layer->SetContentsScale(1.f, 1.f); |
| 5236 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5238 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5237 { | 5239 { |
| 5238 LayerTreeHostImpl::FrameData frame; | 5240 LayerTreeHostImpl::FrameData frame; |
| 5239 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5241 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5240 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5242 host_impl_->PrepareToDraw(&frame)); |
| 5241 | 5243 |
| 5242 ASSERT_EQ(1u, frame.render_passes.size()); | 5244 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5243 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5245 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5244 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5246 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5245 frame.render_passes[0]->quad_list[1]->material); | 5247 frame.render_passes[0]->quad_list[1]->material); |
| 5246 const RenderPassDrawQuad* replica_quad = | 5248 const RenderPassDrawQuad* replica_quad = |
| 5247 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5249 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); |
| 5248 EXPECT_TRUE(replica_quad->is_replica); | 5250 EXPECT_TRUE(replica_quad->is_replica); |
| 5249 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5251 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5250 replica_quad->rect.ToString()); | 5252 replica_quad->rect.ToString()); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5311 mask_layer->SetPosition(gfx::PointF()); | 5313 mask_layer->SetPosition(gfx::PointF()); |
| 5312 mask_layer->SetAnchorPoint(gfx::PointF()); | 5314 mask_layer->SetAnchorPoint(gfx::PointF()); |
| 5313 mask_layer->SetDrawsContent(true); | 5315 mask_layer->SetDrawsContent(true); |
| 5314 | 5316 |
| 5315 float device_scale_factor = 1.f; | 5317 float device_scale_factor = 1.f; |
| 5316 host_impl_->SetViewportSize(root_size); | 5318 host_impl_->SetViewportSize(root_size); |
| 5317 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5319 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5318 { | 5320 { |
| 5319 LayerTreeHostImpl::FrameData frame; | 5321 LayerTreeHostImpl::FrameData frame; |
| 5320 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5322 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5321 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5323 host_impl_->PrepareToDraw(&frame)); |
| 5322 | 5324 |
| 5323 ASSERT_EQ(1u, frame.render_passes.size()); | 5325 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5324 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5326 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5325 | 5327 |
| 5326 // The surface is 100x50. | 5328 // The surface is 100x50. |
| 5327 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5329 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5328 frame.render_passes[0]->quad_list[0]->material); | 5330 frame.render_passes[0]->quad_list[0]->material); |
| 5329 const RenderPassDrawQuad* render_pass_quad = | 5331 const RenderPassDrawQuad* render_pass_quad = |
| 5330 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5332 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5331 EXPECT_FALSE(render_pass_quad->is_replica); | 5333 EXPECT_FALSE(render_pass_quad->is_replica); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 5346 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5347 host_impl_->DidDrawAllLayers(frame); | 5349 host_impl_->DidDrawAllLayers(frame); |
| 5348 } | 5350 } |
| 5349 | 5351 |
| 5350 // Move the child to (-50, 0) instead. Now the mask should be moved to still | 5352 // Move the child to (-50, 0) instead. Now the mask should be moved to still |
| 5351 // cover the layer being replicated. | 5353 // cover the layer being replicated. |
| 5352 content_child_layer->SetPosition(gfx::Point(-50, 0)); | 5354 content_child_layer->SetPosition(gfx::Point(-50, 0)); |
| 5353 { | 5355 { |
| 5354 LayerTreeHostImpl::FrameData frame; | 5356 LayerTreeHostImpl::FrameData frame; |
| 5355 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5357 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5356 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5358 host_impl_->PrepareToDraw(&frame)); |
| 5357 | 5359 |
| 5358 ASSERT_EQ(1u, frame.render_passes.size()); | 5360 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5359 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5361 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5360 | 5362 |
| 5361 // The surface is 100x50 with its origin at (-50, 0). | 5363 // The surface is 100x50 with its origin at (-50, 0). |
| 5362 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5364 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5363 frame.render_passes[0]->quad_list[0]->material); | 5365 frame.render_passes[0]->quad_list[0]->material); |
| 5364 const RenderPassDrawQuad* render_pass_quad = | 5366 const RenderPassDrawQuad* render_pass_quad = |
| 5365 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5367 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5366 EXPECT_FALSE(render_pass_quad->is_replica); | 5368 EXPECT_FALSE(render_pass_quad->is_replica); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5446 mask_layer->SetPosition(gfx::PointF()); | 5448 mask_layer->SetPosition(gfx::PointF()); |
| 5447 mask_layer->SetAnchorPoint(gfx::PointF()); | 5449 mask_layer->SetAnchorPoint(gfx::PointF()); |
| 5448 mask_layer->SetDrawsContent(true); | 5450 mask_layer->SetDrawsContent(true); |
| 5449 | 5451 |
| 5450 float device_scale_factor = 1.f; | 5452 float device_scale_factor = 1.f; |
| 5451 host_impl_->SetViewportSize(root_size); | 5453 host_impl_->SetViewportSize(root_size); |
| 5452 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5454 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5453 { | 5455 { |
| 5454 LayerTreeHostImpl::FrameData frame; | 5456 LayerTreeHostImpl::FrameData frame; |
| 5455 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5457 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5456 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5458 host_impl_->PrepareToDraw(&frame)); |
| 5457 | 5459 |
| 5458 ASSERT_EQ(1u, frame.render_passes.size()); | 5460 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5459 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5461 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5460 | 5462 |
| 5461 // The surface is clipped to 10x20. | 5463 // The surface is clipped to 10x20. |
| 5462 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5464 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5463 frame.render_passes[0]->quad_list[0]->material); | 5465 frame.render_passes[0]->quad_list[0]->material); |
| 5464 const RenderPassDrawQuad* render_pass_quad = | 5466 const RenderPassDrawQuad* render_pass_quad = |
| 5465 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5467 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); |
| 5466 EXPECT_FALSE(render_pass_quad->is_replica); | 5468 EXPECT_FALSE(render_pass_quad->is_replica); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5528 scrolling_layer->SetScrollClipLayer(root->id()); | 5530 scrolling_layer->SetScrollClipLayer(root->id()); |
| 5529 scrolling_layer->SetScrollOffset(scroll_offset); | 5531 scrolling_layer->SetScrollOffset(scroll_offset); |
| 5530 | 5532 |
| 5531 host_impl_->ActivatePendingTree(); | 5533 host_impl_->ActivatePendingTree(); |
| 5532 | 5534 |
| 5533 host_impl_->active_tree()->UpdateDrawProperties(); | 5535 host_impl_->active_tree()->UpdateDrawProperties(); |
| 5534 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5536 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
| 5535 | 5537 |
| 5536 LayerTreeHostImpl::FrameData frame; | 5538 LayerTreeHostImpl::FrameData frame; |
| 5537 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5539 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5538 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5540 host_impl_->PrepareToDraw(&frame)); |
| 5539 | 5541 |
| 5540 ASSERT_EQ(1u, frame.render_passes.size()); | 5542 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5541 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5543 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 5542 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 5544 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; |
| 5543 | 5545 |
| 5544 float edge[24]; | 5546 float edge[24]; |
| 5545 gfx::QuadF device_layer_quad; | 5547 gfx::QuadF device_layer_quad; |
| 5546 bool antialiased = | 5548 bool antialiased = |
| 5547 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 5549 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |
| 5548 quad->quadTransform(), quad, &device_layer_quad, edge); | 5550 quad->quadTransform(), quad, &device_layer_quad, edge); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 5563 } | 5565 } |
| 5564 | 5566 |
| 5565 int swap_buffers_complete_; | 5567 int swap_buffers_complete_; |
| 5566 }; | 5568 }; |
| 5567 | 5569 |
| 5568 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { | 5570 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { |
| 5569 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 5571 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 5570 { | 5572 { |
| 5571 LayerTreeHostImpl::FrameData frame; | 5573 LayerTreeHostImpl::FrameData frame; |
| 5572 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5574 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5573 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5575 host_impl_->PrepareToDraw(&frame)); |
| 5574 host_impl_->DrawLayers(&frame, base::TimeTicks()); | 5576 host_impl_->DrawLayers(&frame, base::TimeTicks()); |
| 5575 host_impl_->DidDrawAllLayers(frame); | 5577 host_impl_->DidDrawAllLayers(frame); |
| 5576 } | 5578 } |
| 5577 CompositorFrameAck ack; | 5579 CompositorFrameAck ack; |
| 5578 host_impl_->ReclaimResources(&ack); | 5580 host_impl_->ReclaimResources(&ack); |
| 5579 host_impl_->DidSwapBuffersComplete(); | 5581 host_impl_->DidSwapBuffersComplete(); |
| 5580 EXPECT_EQ(swap_buffers_complete_, 1); | 5582 EXPECT_EQ(swap_buffers_complete_, 1); |
| 5581 } | 5583 } |
| 5582 | 5584 |
| 5583 class CountingSoftwareDevice : public SoftwareOutputDevice { | 5585 class CountingSoftwareDevice : public SoftwareOutputDevice { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5644 scoped_ptr<VideoLayerImpl> video_layer = | 5646 scoped_ptr<VideoLayerImpl> video_layer = |
| 5645 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); | 5647 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); |
| 5646 video_layer->SetBounds(gfx::Size(10, 10)); | 5648 video_layer->SetBounds(gfx::Size(10, 10)); |
| 5647 video_layer->SetContentBounds(gfx::Size(10, 10)); | 5649 video_layer->SetContentBounds(gfx::Size(10, 10)); |
| 5648 video_layer->SetDrawsContent(true); | 5650 video_layer->SetDrawsContent(true); |
| 5649 root_layer->AddChild(video_layer.PassAs<LayerImpl>()); | 5651 root_layer->AddChild(video_layer.PassAs<LayerImpl>()); |
| 5650 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); | 5652 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); |
| 5651 | 5653 |
| 5652 LayerTreeHostImpl::FrameData frame; | 5654 LayerTreeHostImpl::FrameData frame; |
| 5653 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5655 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5654 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5656 host_impl_->PrepareToDraw(&frame)); |
| 5655 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5657 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5656 host_impl_->DidDrawAllLayers(frame); | 5658 host_impl_->DidDrawAllLayers(frame); |
| 5657 | 5659 |
| 5658 EXPECT_EQ(1u, frame.will_draw_layers.size()); | 5660 EXPECT_EQ(1u, frame.will_draw_layers.size()); |
| 5659 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); | 5661 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); |
| 5660 } | 5662 } |
| 5661 | 5663 |
| 5662 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { | 5664 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { |
| 5663 protected: | 5665 protected: |
| 5664 virtual void SetUp() OVERRIDE { | 5666 virtual void SetUp() OVERRIDE { |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5910 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 5912 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 5911 | 5913 |
| 5912 ScopedPtrVector<CopyOutputRequest> requests; | 5914 ScopedPtrVector<CopyOutputRequest> requests; |
| 5913 requests.push_back(CopyOutputRequest::CreateRequest( | 5915 requests.push_back(CopyOutputRequest::CreateRequest( |
| 5914 base::Bind(&ShutdownReleasesContext_Callback))); | 5916 base::Bind(&ShutdownReleasesContext_Callback))); |
| 5915 | 5917 |
| 5916 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); | 5918 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); |
| 5917 | 5919 |
| 5918 LayerTreeHostImpl::FrameData frame; | 5920 LayerTreeHostImpl::FrameData frame; |
| 5919 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 5921 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 5920 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 5922 host_impl_->PrepareToDraw(&frame)); |
| 5921 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5923 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5922 host_impl_->DidDrawAllLayers(frame); | 5924 host_impl_->DidDrawAllLayers(frame); |
| 5923 | 5925 |
| 5924 // The CopyOutputResult's callback has a ref on the ContextProvider and a | 5926 // The CopyOutputResult's callback has a ref on the ContextProvider and a |
| 5925 // texture in a texture mailbox. | 5927 // texture in a texture mailbox. |
| 5926 EXPECT_FALSE(context_provider->HasOneRef()); | 5928 EXPECT_FALSE(context_provider->HasOneRef()); |
| 5927 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); | 5929 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); |
| 5928 | 5930 |
| 5929 host_impl_.reset(); | 5931 host_impl_.reset(); |
| 5930 | 5932 |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6186 latency_info.AddLatencyNumber( | 6188 latency_info.AddLatencyNumber( |
| 6187 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0); | 6189 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0); |
| 6188 scoped_ptr<SwapPromise> swap_promise( | 6190 scoped_ptr<SwapPromise> swap_promise( |
| 6189 new LatencyInfoSwapPromise(latency_info)); | 6191 new LatencyInfoSwapPromise(latency_info)); |
| 6190 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); | 6192 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); |
| 6191 host_impl_->SetNeedsRedraw(); | 6193 host_impl_->SetNeedsRedraw(); |
| 6192 | 6194 |
| 6193 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); | 6195 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); |
| 6194 LayerTreeHostImpl::FrameData frame; | 6196 LayerTreeHostImpl::FrameData frame; |
| 6195 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 6197 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, |
| 6196 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 6198 host_impl_->PrepareToDraw(&frame)); |
| 6197 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 6199 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 6198 host_impl_->DidDrawAllLayers(frame); | 6200 host_impl_->DidDrawAllLayers(frame); |
| 6199 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); | 6201 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); |
| 6200 | 6202 |
| 6201 const std::vector<ui::LatencyInfo>& metadata_latency_after = | 6203 const std::vector<ui::LatencyInfo>& metadata_latency_after = |
| 6202 fake_output_surface->last_sent_frame().metadata.latency_info; | 6204 fake_output_surface->last_sent_frame().metadata.latency_info; |
| 6203 EXPECT_EQ(1u, metadata_latency_after.size()); | 6205 EXPECT_EQ(1u, metadata_latency_after.size()); |
| 6204 EXPECT_TRUE(metadata_latency_after[0].FindLatency( | 6206 EXPECT_TRUE(metadata_latency_after[0].FindLatency( |
| 6205 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); | 6207 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); |
| 6206 } | 6208 } |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6541 FakePictureLayerImpl* active_mask_content = | 6543 FakePictureLayerImpl* active_mask_content = |
| 6542 static_cast<FakePictureLayerImpl*>( | 6544 static_cast<FakePictureLayerImpl*>( |
| 6543 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); | 6545 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); |
| 6544 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); | 6546 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); |
| 6545 | 6547 |
| 6546 ASSERT_TRUE(!r2.IsEmpty()); | 6548 ASSERT_TRUE(!r2.IsEmpty()); |
| 6547 } | 6549 } |
| 6548 | 6550 |
| 6549 } // namespace | 6551 } // namespace |
| 6550 } // namespace cc | 6552 } // namespace cc |
| OLD | NEW |