| 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/layer_tree_host_impl.h" | 5 #include "cc/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 1850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1861 child->setBounds(layerRect.size()); | 1861 child->setBounds(layerRect.size()); |
| 1862 child->setContentBounds(layerRect.size()); | 1862 child->setContentBounds(layerRect.size()); |
| 1863 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1863 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1864 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1864 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1865 | 1865 |
| 1866 LayerTreeHostImpl::FrameData frame; | 1866 LayerTreeHostImpl::FrameData frame; |
| 1867 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1867 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 1868 ASSERT_EQ(1u, frame.renderPasses.size()); | 1868 ASSERT_EQ(1u, frame.renderPasses.size()); |
| 1869 | 1869 |
| 1870 size_t numGutterQuads = 0; | 1870 size_t numGutterQuads = 0; |
| 1871 for (size_t i = 0; i < frame.renderPasses[0]->quadList().size(); ++i) | 1871 for (size_t i = 0; i < frame.renderPasses[0]->quad_list.size(); ++i) |
| 1872 numGutterQuads += (frame.renderPasses[0]->quadList()[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; | 1872 numGutterQuads += (frame.renderPasses[0]->quad_list[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; |
| 1873 EXPECT_EQ(0u, numGutterQuads); | 1873 EXPECT_EQ(0u, numGutterQuads); |
| 1874 EXPECT_EQ(1u, frame.renderPasses[0]->quadList().size()); | 1874 EXPECT_EQ(1u, frame.renderPasses[0]->quad_list.size()); |
| 1875 | 1875 |
| 1876 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quadList(), gfx::Rect
(gfx::Point(), viewportSize)); | 1876 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quad_list, gfx::Rect(
gfx::Point(), viewportSize)); |
| 1877 m_hostImpl->didDrawAllLayers(frame); | 1877 m_hostImpl->didDrawAllLayers(frame); |
| 1878 } | 1878 } |
| 1879 | 1879 |
| 1880 // Empty visible content area (fullscreen gutter rect) | 1880 // Empty visible content area (fullscreen gutter rect) |
| 1881 { | 1881 { |
| 1882 gfx::Rect layerRect(0, 0, 0, 0); | 1882 gfx::Rect layerRect(0, 0, 0, 0); |
| 1883 child->setPosition(layerRect.origin()); | 1883 child->setPosition(layerRect.origin()); |
| 1884 child->setBounds(layerRect.size()); | 1884 child->setBounds(layerRect.size()); |
| 1885 child->setContentBounds(layerRect.size()); | 1885 child->setContentBounds(layerRect.size()); |
| 1886 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1886 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1887 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1887 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1888 | 1888 |
| 1889 LayerTreeHostImpl::FrameData frame; | 1889 LayerTreeHostImpl::FrameData frame; |
| 1890 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1890 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 1891 ASSERT_EQ(1u, frame.renderPasses.size()); | 1891 ASSERT_EQ(1u, frame.renderPasses.size()); |
| 1892 m_hostImpl->didDrawAllLayers(frame); | 1892 m_hostImpl->didDrawAllLayers(frame); |
| 1893 | 1893 |
| 1894 size_t numGutterQuads = 0; | 1894 size_t numGutterQuads = 0; |
| 1895 for (size_t i = 0; i < frame.renderPasses[0]->quadList().size(); ++i) | 1895 for (size_t i = 0; i < frame.renderPasses[0]->quad_list.size(); ++i) |
| 1896 numGutterQuads += (frame.renderPasses[0]->quadList()[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; | 1896 numGutterQuads += (frame.renderPasses[0]->quad_list[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; |
| 1897 EXPECT_EQ(1u, numGutterQuads); | 1897 EXPECT_EQ(1u, numGutterQuads); |
| 1898 EXPECT_EQ(1u, frame.renderPasses[0]->quadList().size()); | 1898 EXPECT_EQ(1u, frame.renderPasses[0]->quad_list.size()); |
| 1899 | 1899 |
| 1900 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quadList(), gfx::Rect
(gfx::Point(), viewportSize)); | 1900 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quad_list, gfx::Rect(
gfx::Point(), viewportSize)); |
| 1901 m_hostImpl->didDrawAllLayers(frame); | 1901 m_hostImpl->didDrawAllLayers(frame); |
| 1902 } | 1902 } |
| 1903 | 1903 |
| 1904 // Content area in middle of clip rect (four surrounding gutter rects) | 1904 // Content area in middle of clip rect (four surrounding gutter rects) |
| 1905 { | 1905 { |
| 1906 gfx::Rect layerRect(500, 500, 200, 200); | 1906 gfx::Rect layerRect(500, 500, 200, 200); |
| 1907 child->setPosition(layerRect.origin()); | 1907 child->setPosition(layerRect.origin()); |
| 1908 child->setBounds(layerRect.size()); | 1908 child->setBounds(layerRect.size()); |
| 1909 child->setContentBounds(layerRect.size()); | 1909 child->setContentBounds(layerRect.size()); |
| 1910 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1910 child->setQuadRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1911 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); | 1911 child->setQuadVisibleRect(gfx::Rect(gfx::Point(), layerRect.size())); |
| 1912 | 1912 |
| 1913 LayerTreeHostImpl::FrameData frame; | 1913 LayerTreeHostImpl::FrameData frame; |
| 1914 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1914 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 1915 ASSERT_EQ(1u, frame.renderPasses.size()); | 1915 ASSERT_EQ(1u, frame.renderPasses.size()); |
| 1916 | 1916 |
| 1917 size_t numGutterQuads = 0; | 1917 size_t numGutterQuads = 0; |
| 1918 for (size_t i = 0; i < frame.renderPasses[0]->quadList().size(); ++i) | 1918 for (size_t i = 0; i < frame.renderPasses[0]->quad_list.size(); ++i) |
| 1919 numGutterQuads += (frame.renderPasses[0]->quadList()[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; | 1919 numGutterQuads += (frame.renderPasses[0]->quad_list[i]->material ==
DrawQuad::SOLID_COLOR) ? 1 : 0; |
| 1920 EXPECT_EQ(4u, numGutterQuads); | 1920 EXPECT_EQ(4u, numGutterQuads); |
| 1921 EXPECT_EQ(5u, frame.renderPasses[0]->quadList().size()); | 1921 EXPECT_EQ(5u, frame.renderPasses[0]->quad_list.size()); |
| 1922 | 1922 |
| 1923 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quadList(), gfx::Rect
(gfx::Point(), viewportSize)); | 1923 verifyQuadsExactlyCoverRect(frame.renderPasses[0]->quad_list, gfx::Rect(
gfx::Point(), viewportSize)); |
| 1924 m_hostImpl->didDrawAllLayers(frame); | 1924 m_hostImpl->didDrawAllLayers(frame); |
| 1925 } | 1925 } |
| 1926 | 1926 |
| 1927 } | 1927 } |
| 1928 | 1928 |
| 1929 | 1929 |
| 1930 class ReshapeTrackerContext: public FakeWebGraphicsContext3D { | 1930 class ReshapeTrackerContext: public FakeWebGraphicsContext3D { |
| 1931 public: | 1931 public: |
| 1932 ReshapeTrackerContext() : m_reshapeCalled(false) { } | 1932 ReshapeTrackerContext() : m_reshapeCalled(false) { } |
| 1933 | 1933 |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2359 { | 2359 { |
| 2360 LayerTreeHostImpl::FrameData frame; | 2360 LayerTreeHostImpl::FrameData frame; |
| 2361 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 2361 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 2362 | 2362 |
| 2363 // Just for consistency, the most interesting stuff already happened | 2363 // Just for consistency, the most interesting stuff already happened |
| 2364 myHostImpl->drawLayers(frame); | 2364 myHostImpl->drawLayers(frame); |
| 2365 myHostImpl->didDrawAllLayers(frame); | 2365 myHostImpl->didDrawAllLayers(frame); |
| 2366 | 2366 |
| 2367 // Verify all quads have been computed | 2367 // Verify all quads have been computed |
| 2368 ASSERT_EQ(2U, frame.renderPasses.size()); | 2368 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 2369 ASSERT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 2369 ASSERT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 2370 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 2370 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 2371 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quadList()[0]->m
aterial); | 2371 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 2372 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 2372 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 2373 } | 2373 } |
| 2374 } | 2374 } |
| 2375 | 2375 |
| 2376 TEST_P(LayerTreeHostImplTest, contributingLayerEmptyScissorNoPartialSwap) | 2376 TEST_P(LayerTreeHostImplTest, contributingLayerEmptyScissorNoPartialSwap) |
| 2377 { | 2377 { |
| 2378 scoped_ptr<LayerTreeHostImpl> myHostImpl = setupLayersForOpacity(false, this
, &m_proxy); | 2378 scoped_ptr<LayerTreeHostImpl> myHostImpl = setupLayersForOpacity(false, this
, &m_proxy); |
| 2379 | 2379 |
| 2380 { | 2380 { |
| 2381 LayerTreeHostImpl::FrameData frame; | 2381 LayerTreeHostImpl::FrameData frame; |
| 2382 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 2382 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 2383 | 2383 |
| 2384 // Just for consistency, the most interesting stuff already happened | 2384 // Just for consistency, the most interesting stuff already happened |
| 2385 myHostImpl->drawLayers(frame); | 2385 myHostImpl->drawLayers(frame); |
| 2386 myHostImpl->didDrawAllLayers(frame); | 2386 myHostImpl->didDrawAllLayers(frame); |
| 2387 | 2387 |
| 2388 // Verify all quads have been computed | 2388 // Verify all quads have been computed |
| 2389 ASSERT_EQ(2U, frame.renderPasses.size()); | 2389 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 2390 ASSERT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 2390 ASSERT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 2391 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 2391 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 2392 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quadList()[0]->m
aterial); | 2392 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 2393 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 2393 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 2394 } | 2394 } |
| 2395 } | 2395 } |
| 2396 | 2396 |
| 2397 // Make sure that context lost notifications are propagated through the tree. | 2397 // Make sure that context lost notifications are propagated through the tree. |
| 2398 class ContextLostNotificationCheckLayer : public LayerImpl { | 2398 class ContextLostNotificationCheckLayer : public LayerImpl { |
| 2399 public: | 2399 public: |
| 2400 static scoped_ptr<LayerImpl> create(int id) { return scoped_ptr<LayerImpl>(n
ew ContextLostNotificationCheckLayer(id)); } | 2400 static scoped_ptr<LayerImpl> create(int id) { return scoped_ptr<LayerImpl>(n
ew ContextLostNotificationCheckLayer(id)); } |
| 2401 | 2401 |
| 2402 virtual void didLoseContext() OVERRIDE | 2402 virtual void didLoseContext() OVERRIDE |
| 2403 { | 2403 { |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2707 explicit FakeScrollbarLayerImpl(int id) | 2707 explicit FakeScrollbarLayerImpl(int id) |
| 2708 : ScrollbarLayerImpl(id) | 2708 : ScrollbarLayerImpl(id) |
| 2709 { | 2709 { |
| 2710 } | 2710 } |
| 2711 }; | 2711 }; |
| 2712 | 2712 |
| 2713 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid
er* provider) | 2713 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid
er* provider) |
| 2714 { | 2714 { |
| 2715 ResourceProvider::ResourceId resourceId = provider->createResource(0, gfx::S
ize(1, 1), GL_RGBA, ResourceProvider::TextureUsageAny); | 2715 ResourceProvider::ResourceId resourceId = provider->createResource(0, gfx::S
ize(1, 1), GL_RGBA, ResourceProvider::TextureUsageAny); |
| 2716 | 2716 |
| 2717 scoped_ptr<TestRenderPass> pass = TestRenderPass::create(RenderPass::Id(1, 1
), gfx::Rect(0, 0, 1, 1), WebTransformationMatrix()); | 2717 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 2718 pass->SetNew(RenderPass::Id(1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1,
1), WebTransformationMatrix()); |
| 2718 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create(); | 2719 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create(); |
| 2719 sharedState->SetAll(WebTransformationMatrix(), gfx::Rect(0, 0, 1, 1), gfx::R
ect(0, 0, 1, 1), 1); | 2720 sharedState->SetAll(WebTransformationMatrix(), gfx::Rect(0, 0, 1, 1), gfx::R
ect(0, 0, 1, 1), 1); |
| 2720 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 2721 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
| 2721 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)
, resourceId, false, gfx::RectF(0, 0, 1, 1), false); | 2722 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)
, resourceId, false, gfx::RectF(0, 0, 1, 1), false); |
| 2722 | 2723 |
| 2723 pass->appendSharedQuadState(sharedState.Pass()); | 2724 pass->AppendSharedQuadState(sharedState.Pass()); |
| 2724 pass->appendQuad(quad.PassAs<DrawQuad>()); | 2725 pass->AppendQuad(quad.PassAs<DrawQuad>()); |
| 2725 | 2726 |
| 2726 return pass.PassAs<RenderPass>(); | 2727 return pass.PassAs<RenderPass>(); |
| 2727 } | 2728 } |
| 2728 | 2729 |
| 2729 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostContext) | 2730 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostContext) |
| 2730 { | 2731 { |
| 2731 int layerId = 1; | 2732 int layerId = 1; |
| 2732 | 2733 |
| 2733 scoped_ptr<LayerImpl> rootLayer(LayerImpl::create(layerId++)); | 2734 scoped_ptr<LayerImpl> rootLayer(LayerImpl::create(layerId++)); |
| 2734 rootLayer->setBounds(gfx::Size(10, 10)); | 2735 rootLayer->setBounds(gfx::Size(10, 10)); |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3141 transform.rotate(35); | 3142 transform.rotate(35); |
| 3142 transform.translate(-50, -50); | 3143 transform.translate(-50, -50); |
| 3143 surfaceLayerPtr->setTransform(transform); | 3144 surfaceLayerPtr->setTransform(transform); |
| 3144 | 3145 |
| 3145 { | 3146 { |
| 3146 LayerTreeHostImpl::FrameData frame; | 3147 LayerTreeHostImpl::FrameData frame; |
| 3147 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3148 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3148 | 3149 |
| 3149 // Must receive two render passes, each with one quad | 3150 // Must receive two render passes, each with one quad |
| 3150 ASSERT_EQ(2U, frame.renderPasses.size()); | 3151 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3151 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3152 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3152 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3153 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3153 | 3154 |
| 3154 // Verify that the child layers are being clipped. | 3155 // Verify that the child layers are being clipped. |
| 3155 gfx::Rect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->visibl
e_rect; | 3156 gfx::Rect quadVisibleRect = frame.renderPasses[0]->quad_list[0]->visible
_rect; |
| 3156 EXPECT_LT(quadVisibleRect.width(), 100); | 3157 EXPECT_LT(quadVisibleRect.width(), 100); |
| 3157 | 3158 |
| 3158 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->visible_rect; | 3159 quadVisibleRect = frame.renderPasses[0]->quad_list[1]->visible_rect; |
| 3159 EXPECT_LT(quadVisibleRect.width(), 100); | 3160 EXPECT_LT(quadVisibleRect.width(), 100); |
| 3160 | 3161 |
| 3161 // Verify that the render surface texture is *not* clipped. | 3162 // Verify that the render surface texture is *not* clipped. |
| 3162 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), frame.renderPasses[0]->outputR
ect()); | 3163 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), frame.renderPasses[0]->output_
rect); |
| 3163 | 3164 |
| 3164 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 3165 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3165 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 3166 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3166 EXPECT_FALSE(quad->contents_changed_since_last_frame.IsEmpty()); | 3167 EXPECT_FALSE(quad->contents_changed_since_last_frame.IsEmpty()); |
| 3167 | 3168 |
| 3168 myHostImpl->drawLayers(frame); | 3169 myHostImpl->drawLayers(frame); |
| 3169 myHostImpl->didDrawAllLayers(frame); | 3170 myHostImpl->didDrawAllLayers(frame); |
| 3170 } | 3171 } |
| 3171 | 3172 |
| 3172 transform = surfaceLayerPtr->transform(); | 3173 transform = surfaceLayerPtr->transform(); |
| 3173 transform.translate(50, 50); | 3174 transform.translate(50, 50); |
| 3174 transform.rotate(-35); | 3175 transform.rotate(-35); |
| 3175 transform.translate(-50, -50); | 3176 transform.translate(-50, -50); |
| 3176 surfaceLayerPtr->setTransform(transform); | 3177 surfaceLayerPtr->setTransform(transform); |
| 3177 | 3178 |
| 3178 // The surface is now aligned again, and the clipped parts are exposed. | 3179 // The surface is now aligned again, and the clipped parts are exposed. |
| 3179 // Since the layers were clipped, even though the render surface size | 3180 // Since the layers were clipped, even though the render surface size |
| 3180 // was not changed, the texture should not be saved. | 3181 // was not changed, the texture should not be saved. |
| 3181 { | 3182 { |
| 3182 LayerTreeHostImpl::FrameData frame; | 3183 LayerTreeHostImpl::FrameData frame; |
| 3183 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3184 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3184 | 3185 |
| 3185 // Must receive two render passes, each with one quad | 3186 // Must receive two render passes, each with one quad |
| 3186 ASSERT_EQ(2U, frame.renderPasses.size()); | 3187 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3187 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3188 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3188 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3189 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3189 | 3190 |
| 3190 myHostImpl->drawLayers(frame); | 3191 myHostImpl->drawLayers(frame); |
| 3191 myHostImpl->didDrawAllLayers(frame); | 3192 myHostImpl->didDrawAllLayers(frame); |
| 3192 } | 3193 } |
| 3193 } | 3194 } |
| 3194 | 3195 |
| 3195 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusion) | 3196 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusion) |
| 3196 { | 3197 { |
| 3197 LayerTreeSettings settings; | 3198 LayerTreeSettings settings; |
| 3198 settings.minimumOcclusionTrackingSize = gfx::Size(); | 3199 settings.minimumOcclusionTrackingSize = gfx::Size(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3247 | 3248 |
| 3248 // Initial draw - must receive all quads | 3249 // Initial draw - must receive all quads |
| 3249 { | 3250 { |
| 3250 LayerTreeHostImpl::FrameData frame; | 3251 LayerTreeHostImpl::FrameData frame; |
| 3251 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3252 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3252 | 3253 |
| 3253 // Must receive 3 render passes. | 3254 // Must receive 3 render passes. |
| 3254 // For Root, there are 2 quads; for S1, there are 2 quads (1 is occluded
); for S2, there is 2 quads. | 3255 // For Root, there are 2 quads; for S1, there are 2 quads (1 is occluded
); for S2, there is 2 quads. |
| 3255 ASSERT_EQ(3U, frame.renderPasses.size()); | 3256 ASSERT_EQ(3U, frame.renderPasses.size()); |
| 3256 | 3257 |
| 3257 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3258 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3258 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3259 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3259 EXPECT_EQ(2U, frame.renderPasses[2]->quadList().size()); | 3260 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3260 | 3261 |
| 3261 myHostImpl->drawLayers(frame); | 3262 myHostImpl->drawLayers(frame); |
| 3262 myHostImpl->didDrawAllLayers(frame); | 3263 myHostImpl->didDrawAllLayers(frame); |
| 3263 } | 3264 } |
| 3264 | 3265 |
| 3265 // "Unocclude" surface S1 and repeat draw. | 3266 // "Unocclude" surface S1 and repeat draw. |
| 3266 // Must remove S2's render pass since it's cached; | 3267 // Must remove S2's render pass since it's cached; |
| 3267 // Must keep S1 quads because texture contained external occlusion. | 3268 // Must keep S1 quads because texture contained external occlusion. |
| 3268 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3269 WebTransformationMatrix transform = layerS2Ptr->transform(); |
| 3269 transform.translate(150, 150); | 3270 transform.translate(150, 150); |
| 3270 layerS2Ptr->setTransform(transform); | 3271 layerS2Ptr->setTransform(transform); |
| 3271 { | 3272 { |
| 3272 LayerTreeHostImpl::FrameData frame; | 3273 LayerTreeHostImpl::FrameData frame; |
| 3273 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3274 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3274 | 3275 |
| 3275 // Must receive 2 render passes. | 3276 // Must receive 2 render passes. |
| 3276 // For Root, there are 2 quads | 3277 // For Root, there are 2 quads |
| 3277 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3278 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3278 // For S2, there is no render pass | 3279 // For S2, there is no render pass |
| 3279 ASSERT_EQ(2U, frame.renderPasses.size()); | 3280 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3280 | 3281 |
| 3281 EXPECT_GT(frame.renderPasses[0]->quadList().size(), 0U); | 3282 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); |
| 3282 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3283 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3283 | 3284 |
| 3284 myHostImpl->drawLayers(frame); | 3285 myHostImpl->drawLayers(frame); |
| 3285 myHostImpl->didDrawAllLayers(frame); | 3286 myHostImpl->didDrawAllLayers(frame); |
| 3286 } | 3287 } |
| 3287 | 3288 |
| 3288 // "Re-occlude" surface S1 and repeat draw. | 3289 // "Re-occlude" surface S1 and repeat draw. |
| 3289 // Must remove S1's render pass since it is now available in full. | 3290 // Must remove S1's render pass since it is now available in full. |
| 3290 // S2 has no change so must also be removed. | 3291 // S2 has no change so must also be removed. |
| 3291 transform = layerS2Ptr->transform(); | 3292 transform = layerS2Ptr->transform(); |
| 3292 transform.translate(-15, -15); | 3293 transform.translate(-15, -15); |
| 3293 layerS2Ptr->setTransform(transform); | 3294 layerS2Ptr->setTransform(transform); |
| 3294 { | 3295 { |
| 3295 LayerTreeHostImpl::FrameData frame; | 3296 LayerTreeHostImpl::FrameData frame; |
| 3296 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3297 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3297 | 3298 |
| 3298 // Must receive 1 render pass - for the root. | 3299 // Must receive 1 render pass - for the root. |
| 3299 ASSERT_EQ(1U, frame.renderPasses.size()); | 3300 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3300 | 3301 |
| 3301 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3302 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3302 | 3303 |
| 3303 myHostImpl->drawLayers(frame); | 3304 myHostImpl->drawLayers(frame); |
| 3304 myHostImpl->didDrawAllLayers(frame); | 3305 myHostImpl->didDrawAllLayers(frame); |
| 3305 } | 3306 } |
| 3306 | 3307 |
| 3307 } | 3308 } |
| 3308 | 3309 |
| 3309 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionEarlyOut) | 3310 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionEarlyOut) |
| 3310 { | 3311 { |
| 3311 LayerTreeSettings settings; | 3312 LayerTreeSettings settings; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3360 | 3361 |
| 3361 // Initial draw - must receive all quads | 3362 // Initial draw - must receive all quads |
| 3362 { | 3363 { |
| 3363 LayerTreeHostImpl::FrameData frame; | 3364 LayerTreeHostImpl::FrameData frame; |
| 3364 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3365 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3365 | 3366 |
| 3366 // Must receive 3 render passes. | 3367 // Must receive 3 render passes. |
| 3367 // For Root, there are 2 quads; for S1, there are 3 quads; for S2, there
is 1 quad. | 3368 // For Root, there are 2 quads; for S1, there are 3 quads; for S2, there
is 1 quad. |
| 3368 ASSERT_EQ(3U, frame.renderPasses.size()); | 3369 ASSERT_EQ(3U, frame.renderPasses.size()); |
| 3369 | 3370 |
| 3370 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3371 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3371 | 3372 |
| 3372 // L14 is culled, so only 3 quads. | 3373 // L14 is culled, so only 3 quads. |
| 3373 EXPECT_EQ(3U, frame.renderPasses[1]->quadList().size()); | 3374 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); |
| 3374 EXPECT_EQ(2U, frame.renderPasses[2]->quadList().size()); | 3375 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3375 | 3376 |
| 3376 myHostImpl->drawLayers(frame); | 3377 myHostImpl->drawLayers(frame); |
| 3377 myHostImpl->didDrawAllLayers(frame); | 3378 myHostImpl->didDrawAllLayers(frame); |
| 3378 } | 3379 } |
| 3379 | 3380 |
| 3380 // "Unocclude" surface S1 and repeat draw. | 3381 // "Unocclude" surface S1 and repeat draw. |
| 3381 // Must remove S2's render pass since it's cached; | 3382 // Must remove S2's render pass since it's cached; |
| 3382 // Must keep S1 quads because texture contained external occlusion. | 3383 // Must keep S1 quads because texture contained external occlusion. |
| 3383 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3384 WebTransformationMatrix transform = layerS2Ptr->transform(); |
| 3384 transform.translate(100, 100); | 3385 transform.translate(100, 100); |
| 3385 layerS2Ptr->setTransform(transform); | 3386 layerS2Ptr->setTransform(transform); |
| 3386 { | 3387 { |
| 3387 LayerTreeHostImpl::FrameData frame; | 3388 LayerTreeHostImpl::FrameData frame; |
| 3388 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3389 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3389 | 3390 |
| 3390 // Must receive 2 render passes. | 3391 // Must receive 2 render passes. |
| 3391 // For Root, there are 2 quads | 3392 // For Root, there are 2 quads |
| 3392 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3393 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3393 // For S2, there is no render pass | 3394 // For S2, there is no render pass |
| 3394 ASSERT_EQ(2U, frame.renderPasses.size()); | 3395 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3395 | 3396 |
| 3396 EXPECT_GT(frame.renderPasses[0]->quadList().size(), 0U); | 3397 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); |
| 3397 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3398 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3398 | 3399 |
| 3399 myHostImpl->drawLayers(frame); | 3400 myHostImpl->drawLayers(frame); |
| 3400 myHostImpl->didDrawAllLayers(frame); | 3401 myHostImpl->didDrawAllLayers(frame); |
| 3401 } | 3402 } |
| 3402 | 3403 |
| 3403 // "Re-occlude" surface S1 and repeat draw. | 3404 // "Re-occlude" surface S1 and repeat draw. |
| 3404 // Must remove S1's render pass since it is now available in full. | 3405 // Must remove S1's render pass since it is now available in full. |
| 3405 // S2 has no change so must also be removed. | 3406 // S2 has no change so must also be removed. |
| 3406 transform = layerS2Ptr->transform(); | 3407 transform = layerS2Ptr->transform(); |
| 3407 transform.translate(-15, -15); | 3408 transform.translate(-15, -15); |
| 3408 layerS2Ptr->setTransform(transform); | 3409 layerS2Ptr->setTransform(transform); |
| 3409 { | 3410 { |
| 3410 LayerTreeHostImpl::FrameData frame; | 3411 LayerTreeHostImpl::FrameData frame; |
| 3411 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3412 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3412 | 3413 |
| 3413 // Must receive 1 render pass - for the root. | 3414 // Must receive 1 render pass - for the root. |
| 3414 ASSERT_EQ(1U, frame.renderPasses.size()); | 3415 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3415 | 3416 |
| 3416 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3417 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3417 | 3418 |
| 3418 myHostImpl->drawLayers(frame); | 3419 myHostImpl->drawLayers(frame); |
| 3419 myHostImpl->didDrawAllLayers(frame); | 3420 myHostImpl->didDrawAllLayers(frame); |
| 3420 } | 3421 } |
| 3421 } | 3422 } |
| 3422 | 3423 |
| 3423 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionExternalOverInternal) | 3424 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionExternalOverInternal) |
| 3424 { | 3425 { |
| 3425 LayerTreeSettings settings; | 3426 LayerTreeSettings settings; |
| 3426 settings.minimumOcclusionTrackingSize = gfx::Size(); | 3427 settings.minimumOcclusionTrackingSize = gfx::Size(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3468 | 3469 |
| 3469 // Initial draw - must receive all quads | 3470 // Initial draw - must receive all quads |
| 3470 { | 3471 { |
| 3471 LayerTreeHostImpl::FrameData frame; | 3472 LayerTreeHostImpl::FrameData frame; |
| 3472 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3473 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3473 | 3474 |
| 3474 // Must receive 3 render passes. | 3475 // Must receive 3 render passes. |
| 3475 // For Root, there are 2 quads; for S1, there are 3 quads; for S2, there
is 1 quad. | 3476 // For Root, there are 2 quads; for S1, there are 3 quads; for S2, there
is 1 quad. |
| 3476 ASSERT_EQ(3U, frame.renderPasses.size()); | 3477 ASSERT_EQ(3U, frame.renderPasses.size()); |
| 3477 | 3478 |
| 3478 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3479 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3479 EXPECT_EQ(3U, frame.renderPasses[1]->quadList().size()); | 3480 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); |
| 3480 EXPECT_EQ(2U, frame.renderPasses[2]->quadList().size()); | 3481 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3481 | 3482 |
| 3482 myHostImpl->drawLayers(frame); | 3483 myHostImpl->drawLayers(frame); |
| 3483 myHostImpl->didDrawAllLayers(frame); | 3484 myHostImpl->didDrawAllLayers(frame); |
| 3484 } | 3485 } |
| 3485 | 3486 |
| 3486 // "Unocclude" surface S1 and repeat draw. | 3487 // "Unocclude" surface S1 and repeat draw. |
| 3487 // Must remove S2's render pass since it's cached; | 3488 // Must remove S2's render pass since it's cached; |
| 3488 // Must keep S1 quads because texture contained external occlusion. | 3489 // Must keep S1 quads because texture contained external occlusion. |
| 3489 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3490 WebTransformationMatrix transform = layerS2Ptr->transform(); |
| 3490 transform.translate(300, 0); | 3491 transform.translate(300, 0); |
| 3491 layerS2Ptr->setTransform(transform); | 3492 layerS2Ptr->setTransform(transform); |
| 3492 { | 3493 { |
| 3493 LayerTreeHostImpl::FrameData frame; | 3494 LayerTreeHostImpl::FrameData frame; |
| 3494 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3495 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3495 | 3496 |
| 3496 // Must receive 2 render passes. | 3497 // Must receive 2 render passes. |
| 3497 // For Root, there are 2 quads | 3498 // For Root, there are 2 quads |
| 3498 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3499 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3499 // For S2, there is no render pass | 3500 // For S2, there is no render pass |
| 3500 ASSERT_EQ(2U, frame.renderPasses.size()); | 3501 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3501 | 3502 |
| 3502 EXPECT_GT(frame.renderPasses[0]->quadList().size(), 0U); | 3503 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); |
| 3503 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3504 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3504 | 3505 |
| 3505 myHostImpl->drawLayers(frame); | 3506 myHostImpl->drawLayers(frame); |
| 3506 myHostImpl->didDrawAllLayers(frame); | 3507 myHostImpl->didDrawAllLayers(frame); |
| 3507 } | 3508 } |
| 3508 } | 3509 } |
| 3509 | 3510 |
| 3510 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionExternalNotAligned) | 3511 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionExternalNotAligned) |
| 3511 { | 3512 { |
| 3512 LayerTreeSettings settings; | 3513 LayerTreeSettings settings; |
| 3513 scoped_ptr<LayerTreeHostImpl> myHostImpl = LayerTreeHostImpl::create(setting
s, this, &m_proxy); | 3514 scoped_ptr<LayerTreeHostImpl> myHostImpl = LayerTreeHostImpl::create(setting
s, this, &m_proxy); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3549 addDrawingLayerTo(layerS1Ptr, 3, gfx::Rect(200, 0, 200, 400), 0); // L11 | 3550 addDrawingLayerTo(layerS1Ptr, 3, gfx::Rect(200, 0, 200, 400), 0); // L11 |
| 3550 | 3551 |
| 3551 // Initial draw - must receive all quads | 3552 // Initial draw - must receive all quads |
| 3552 { | 3553 { |
| 3553 LayerTreeHostImpl::FrameData frame; | 3554 LayerTreeHostImpl::FrameData frame; |
| 3554 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3555 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3555 | 3556 |
| 3556 // Must receive 2 render passes. | 3557 // Must receive 2 render passes. |
| 3557 ASSERT_EQ(2U, frame.renderPasses.size()); | 3558 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3558 | 3559 |
| 3559 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3560 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3560 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3561 EXPECT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3561 | 3562 |
| 3562 myHostImpl->drawLayers(frame); | 3563 myHostImpl->drawLayers(frame); |
| 3563 myHostImpl->didDrawAllLayers(frame); | 3564 myHostImpl->didDrawAllLayers(frame); |
| 3564 } | 3565 } |
| 3565 | 3566 |
| 3566 // Change opacity and draw. Verify we used cached texture. | 3567 // Change opacity and draw. Verify we used cached texture. |
| 3567 layerS1Ptr->setOpacity(0.2f); | 3568 layerS1Ptr->setOpacity(0.2f); |
| 3568 { | 3569 { |
| 3569 LayerTreeHostImpl::FrameData frame; | 3570 LayerTreeHostImpl::FrameData frame; |
| 3570 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3571 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3571 | 3572 |
| 3572 // One render pass must be gone due to cached texture. | 3573 // One render pass must be gone due to cached texture. |
| 3573 ASSERT_EQ(1U, frame.renderPasses.size()); | 3574 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3574 | 3575 |
| 3575 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3576 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3576 | 3577 |
| 3577 myHostImpl->drawLayers(frame); | 3578 myHostImpl->drawLayers(frame); |
| 3578 myHostImpl->didDrawAllLayers(frame); | 3579 myHostImpl->didDrawAllLayers(frame); |
| 3579 } | 3580 } |
| 3580 } | 3581 } |
| 3581 | 3582 |
| 3582 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionPartialSwap) | 3583 TEST_P(LayerTreeHostImplTest, textureCachingWithOcclusionPartialSwap) |
| 3583 { | 3584 { |
| 3584 LayerTreeSettings settings; | 3585 LayerTreeSettings settings; |
| 3585 settings.minimumOcclusionTrackingSize = gfx::Size(); | 3586 settings.minimumOcclusionTrackingSize = gfx::Size(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3635 | 3636 |
| 3636 // Initial draw - must receive all quads | 3637 // Initial draw - must receive all quads |
| 3637 { | 3638 { |
| 3638 LayerTreeHostImpl::FrameData frame; | 3639 LayerTreeHostImpl::FrameData frame; |
| 3639 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3640 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3640 | 3641 |
| 3641 // Must receive 3 render passes. | 3642 // Must receive 3 render passes. |
| 3642 // For Root, there are 2 quads; for S1, there are 2 quads (one is occlud
ed); for S2, there is 2 quads. | 3643 // For Root, there are 2 quads; for S1, there are 2 quads (one is occlud
ed); for S2, there is 2 quads. |
| 3643 ASSERT_EQ(3U, frame.renderPasses.size()); | 3644 ASSERT_EQ(3U, frame.renderPasses.size()); |
| 3644 | 3645 |
| 3645 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3646 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3646 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3647 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3647 EXPECT_EQ(2U, frame.renderPasses[2]->quadList().size()); | 3648 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3648 | 3649 |
| 3649 myHostImpl->drawLayers(frame); | 3650 myHostImpl->drawLayers(frame); |
| 3650 myHostImpl->didDrawAllLayers(frame); | 3651 myHostImpl->didDrawAllLayers(frame); |
| 3651 } | 3652 } |
| 3652 | 3653 |
| 3653 // "Unocclude" surface S1 and repeat draw. | 3654 // "Unocclude" surface S1 and repeat draw. |
| 3654 // Must remove S2's render pass since it's cached; | 3655 // Must remove S2's render pass since it's cached; |
| 3655 // Must keep S1 quads because texture contained external occlusion. | 3656 // Must keep S1 quads because texture contained external occlusion. |
| 3656 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3657 WebTransformationMatrix transform = layerS2Ptr->transform(); |
| 3657 transform.translate(150, 150); | 3658 transform.translate(150, 150); |
| 3658 layerS2Ptr->setTransform(transform); | 3659 layerS2Ptr->setTransform(transform); |
| 3659 { | 3660 { |
| 3660 LayerTreeHostImpl::FrameData frame; | 3661 LayerTreeHostImpl::FrameData frame; |
| 3661 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3662 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3662 | 3663 |
| 3663 // Must receive 2 render passes. | 3664 // Must receive 2 render passes. |
| 3664 // For Root, there are 2 quads. | 3665 // For Root, there are 2 quads. |
| 3665 // For S1, there are 2 quads. | 3666 // For S1, there are 2 quads. |
| 3666 // For S2, there is no render pass | 3667 // For S2, there is no render pass |
| 3667 ASSERT_EQ(2U, frame.renderPasses.size()); | 3668 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3668 | 3669 |
| 3669 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); | 3670 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3670 EXPECT_EQ(2U, frame.renderPasses[1]->quadList().size()); | 3671 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3671 | 3672 |
| 3672 myHostImpl->drawLayers(frame); | 3673 myHostImpl->drawLayers(frame); |
| 3673 myHostImpl->didDrawAllLayers(frame); | 3674 myHostImpl->didDrawAllLayers(frame); |
| 3674 } | 3675 } |
| 3675 | 3676 |
| 3676 // "Re-occlude" surface S1 and repeat draw. | 3677 // "Re-occlude" surface S1 and repeat draw. |
| 3677 // Must remove S1's render pass since it is now available in full. | 3678 // Must remove S1's render pass since it is now available in full. |
| 3678 // S2 has no change so must also be removed. | 3679 // S2 has no change so must also be removed. |
| 3679 transform = layerS2Ptr->transform(); | 3680 transform = layerS2Ptr->transform(); |
| 3680 transform.translate(-15, -15); | 3681 transform.translate(-15, -15); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3809 LayerImpl* childPtr; | 3810 LayerImpl* childPtr; |
| 3810 | 3811 |
| 3811 setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr
, surfaceLayerPtr, childPtr, gfx::Size(100, 100)); | 3812 setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr
, surfaceLayerPtr, childPtr, gfx::Size(100, 100)); |
| 3812 | 3813 |
| 3813 { | 3814 { |
| 3814 LayerTreeHostImpl::FrameData frame; | 3815 LayerTreeHostImpl::FrameData frame; |
| 3815 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3816 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3816 | 3817 |
| 3817 // Must receive two render passes, each with one quad | 3818 // Must receive two render passes, each with one quad |
| 3818 ASSERT_EQ(2U, frame.renderPasses.size()); | 3819 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3819 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3820 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3820 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3821 EXPECT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3821 | 3822 |
| 3822 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 3823 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3823 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 3824 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3824 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3825 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3825 EXPECT_FALSE(targetPass->damageRect().IsEmpty()); | 3826 EXPECT_FALSE(targetPass->damage_rect.IsEmpty()); |
| 3826 | 3827 |
| 3827 myHostImpl->drawLayers(frame); | 3828 myHostImpl->drawLayers(frame); |
| 3828 myHostImpl->didDrawAllLayers(frame); | 3829 myHostImpl->didDrawAllLayers(frame); |
| 3829 } | 3830 } |
| 3830 | 3831 |
| 3831 // Draw without any change | 3832 // Draw without any change |
| 3832 { | 3833 { |
| 3833 LayerTreeHostImpl::FrameData frame; | 3834 LayerTreeHostImpl::FrameData frame; |
| 3834 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3835 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3835 | 3836 |
| 3836 // Must receive one render pass, as the other one should be culled | 3837 // Must receive one render pass, as the other one should be culled |
| 3837 ASSERT_EQ(1U, frame.renderPasses.size()); | 3838 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3838 | 3839 |
| 3839 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3840 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3840 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 3841 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3841 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 3842 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 3842 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3843 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3843 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 3844 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3844 | 3845 |
| 3845 myHostImpl->drawLayers(frame); | 3846 myHostImpl->drawLayers(frame); |
| 3846 myHostImpl->didDrawAllLayers(frame); | 3847 myHostImpl->didDrawAllLayers(frame); |
| 3847 } | 3848 } |
| 3848 | 3849 |
| 3849 // Change opacity and draw | 3850 // Change opacity and draw |
| 3850 surfaceLayerPtr->setOpacity(0.6f); | 3851 surfaceLayerPtr->setOpacity(0.6f); |
| 3851 { | 3852 { |
| 3852 LayerTreeHostImpl::FrameData frame; | 3853 LayerTreeHostImpl::FrameData frame; |
| 3853 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3854 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3854 | 3855 |
| 3855 // Must receive one render pass, as the other one should be culled | 3856 // Must receive one render pass, as the other one should be culled |
| 3856 ASSERT_EQ(1U, frame.renderPasses.size()); | 3857 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3857 | 3858 |
| 3858 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3859 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3859 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 3860 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3860 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 3861 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 3861 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3862 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3862 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 3863 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3863 | 3864 |
| 3864 myHostImpl->drawLayers(frame); | 3865 myHostImpl->drawLayers(frame); |
| 3865 myHostImpl->didDrawAllLayers(frame); | 3866 myHostImpl->didDrawAllLayers(frame); |
| 3866 } | 3867 } |
| 3867 | 3868 |
| 3868 // Change less benign property and draw - should have contents changed flag | 3869 // Change less benign property and draw - should have contents changed flag |
| 3869 surfaceLayerPtr->setStackingOrderChanged(true); | 3870 surfaceLayerPtr->setStackingOrderChanged(true); |
| 3870 { | 3871 { |
| 3871 LayerTreeHostImpl::FrameData frame; | 3872 LayerTreeHostImpl::FrameData frame; |
| 3872 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3873 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3873 | 3874 |
| 3874 // Must receive two render passes, each with one quad | 3875 // Must receive two render passes, each with one quad |
| 3875 ASSERT_EQ(2U, frame.renderPasses.size()); | 3876 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3876 | 3877 |
| 3877 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3878 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3878 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quadList()[0]->m
aterial); | 3879 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3879 | 3880 |
| 3880 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 3881 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3881 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 3882 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3882 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3883 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3883 EXPECT_FALSE(targetPass->damageRect().IsEmpty()); | 3884 EXPECT_FALSE(targetPass->damage_rect.IsEmpty()); |
| 3884 | 3885 |
| 3885 myHostImpl->drawLayers(frame); | 3886 myHostImpl->drawLayers(frame); |
| 3886 myHostImpl->didDrawAllLayers(frame); | 3887 myHostImpl->didDrawAllLayers(frame); |
| 3887 } | 3888 } |
| 3888 | 3889 |
| 3889 // Change opacity again, and evict the cached surface texture. | 3890 // Change opacity again, and evict the cached surface texture. |
| 3890 surfaceLayerPtr->setOpacity(0.5f); | 3891 surfaceLayerPtr->setOpacity(0.5f); |
| 3891 static_cast<GLRendererWithReleaseTextures*>(myHostImpl->renderer())->release
RenderPassTextures(); | 3892 static_cast<GLRendererWithReleaseTextures*>(myHostImpl->renderer())->release
RenderPassTextures(); |
| 3892 | 3893 |
| 3893 // Change opacity and draw | 3894 // Change opacity and draw |
| 3894 surfaceLayerPtr->setOpacity(0.6f); | 3895 surfaceLayerPtr->setOpacity(0.6f); |
| 3895 { | 3896 { |
| 3896 LayerTreeHostImpl::FrameData frame; | 3897 LayerTreeHostImpl::FrameData frame; |
| 3897 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3898 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3898 | 3899 |
| 3899 // Must receive two render passes | 3900 // Must receive two render passes |
| 3900 ASSERT_EQ(2U, frame.renderPasses.size()); | 3901 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3901 | 3902 |
| 3902 // Even though not enough properties changed, the entire thing must be | 3903 // Even though not enough properties changed, the entire thing must be |
| 3903 // redrawn as we don't have cached textures | 3904 // redrawn as we don't have cached textures |
| 3904 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3905 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3905 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3906 EXPECT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3906 | 3907 |
| 3907 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 3908 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3908 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 3909 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3909 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3910 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3910 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 3911 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3911 | 3912 |
| 3912 // Was our surface evicted? | 3913 // Was our surface evicted? |
| 3913 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); | 3914 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id)); |
| 3914 | 3915 |
| 3915 myHostImpl->drawLayers(frame); | 3916 myHostImpl->drawLayers(frame); |
| 3916 myHostImpl->didDrawAllLayers(frame); | 3917 myHostImpl->didDrawAllLayers(frame); |
| 3917 } | 3918 } |
| 3918 | 3919 |
| 3919 // Draw without any change, to make sure the state is clear | 3920 // Draw without any change, to make sure the state is clear |
| 3920 { | 3921 { |
| 3921 LayerTreeHostImpl::FrameData frame; | 3922 LayerTreeHostImpl::FrameData frame; |
| 3922 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3923 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3923 | 3924 |
| 3924 // Must receive one render pass, as the other one should be culled | 3925 // Must receive one render pass, as the other one should be culled |
| 3925 ASSERT_EQ(1U, frame.renderPasses.size()); | 3926 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3926 | 3927 |
| 3927 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3928 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3928 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 3929 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3929 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 3930 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 3930 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3931 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3931 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 3932 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3932 | 3933 |
| 3933 myHostImpl->drawLayers(frame); | 3934 myHostImpl->drawLayers(frame); |
| 3934 myHostImpl->didDrawAllLayers(frame); | 3935 myHostImpl->didDrawAllLayers(frame); |
| 3935 } | 3936 } |
| 3936 | 3937 |
| 3937 // Change location of the intermediate layer | 3938 // Change location of the intermediate layer |
| 3938 WebTransformationMatrix transform = intermediateLayerPtr->transform(); | 3939 WebTransformationMatrix transform = intermediateLayerPtr->transform(); |
| 3939 transform.setM41(1.0001); | 3940 transform.setM41(1.0001); |
| 3940 intermediateLayerPtr->setTransform(transform); | 3941 intermediateLayerPtr->setTransform(transform); |
| 3941 { | 3942 { |
| 3942 LayerTreeHostImpl::FrameData frame; | 3943 LayerTreeHostImpl::FrameData frame; |
| 3943 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3944 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3944 | 3945 |
| 3945 // Must receive one render pass, as the other one should be culled. | 3946 // Must receive one render pass, as the other one should be culled. |
| 3946 ASSERT_EQ(1U, frame.renderPasses.size()); | 3947 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3947 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3948 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3948 | 3949 |
| 3949 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 3950 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3950 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 3951 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 3951 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3952 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3952 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 3953 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3953 | 3954 |
| 3954 myHostImpl->drawLayers(frame); | 3955 myHostImpl->drawLayers(frame); |
| 3955 myHostImpl->didDrawAllLayers(frame); | 3956 myHostImpl->didDrawAllLayers(frame); |
| 3956 } | 3957 } |
| 3957 } | 3958 } |
| 3958 | 3959 |
| 3959 TEST_P(LayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) | 3960 TEST_P(LayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) |
| 3960 { | 3961 { |
| 3961 LayerTreeSettings settings; | 3962 LayerTreeSettings settings; |
| 3962 settings.minimumOcclusionTrackingSize = gfx::Size(); | 3963 settings.minimumOcclusionTrackingSize = gfx::Size(); |
| 3963 scoped_ptr<LayerTreeHostImpl> myHostImpl = LayerTreeHostImpl::create(setting
s, this, &m_proxy); | 3964 scoped_ptr<LayerTreeHostImpl> myHostImpl = LayerTreeHostImpl::create(setting
s, this, &m_proxy); |
| 3964 | 3965 |
| 3965 LayerImpl* rootPtr; | 3966 LayerImpl* rootPtr; |
| 3966 LayerImpl* intermediateLayerPtr; | 3967 LayerImpl* intermediateLayerPtr; |
| 3967 LayerImpl* surfaceLayerPtr; | 3968 LayerImpl* surfaceLayerPtr; |
| 3968 LayerImpl* childPtr; | 3969 LayerImpl* childPtr; |
| 3969 | 3970 |
| 3970 setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr
, surfaceLayerPtr, childPtr, gfx::Size(100, 100)); | 3971 setupLayersForTextureCaching(myHostImpl.get(), rootPtr, intermediateLayerPtr
, surfaceLayerPtr, childPtr, gfx::Size(100, 100)); |
| 3971 | 3972 |
| 3972 { | 3973 { |
| 3973 LayerTreeHostImpl::FrameData frame; | 3974 LayerTreeHostImpl::FrameData frame; |
| 3974 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3975 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3975 | 3976 |
| 3976 // Must receive two render passes, each with one quad | 3977 // Must receive two render passes, each with one quad |
| 3977 ASSERT_EQ(2U, frame.renderPasses.size()); | 3978 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3978 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 3979 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3979 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 3980 EXPECT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 3980 | 3981 |
| 3981 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 3982 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3982 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 3983 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3983 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3984 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3984 EXPECT_FALSE(targetPass->damageRect().IsEmpty()); | 3985 EXPECT_FALSE(targetPass->damage_rect.IsEmpty()); |
| 3985 | 3986 |
| 3986 EXPECT_FALSE(frame.renderPasses[0]->damageRect().IsEmpty()); | 3987 EXPECT_FALSE(frame.renderPasses[0]->damage_rect.IsEmpty()); |
| 3987 EXPECT_FALSE(frame.renderPasses[1]->damageRect().IsEmpty()); | 3988 EXPECT_FALSE(frame.renderPasses[1]->damage_rect.IsEmpty()); |
| 3988 | 3989 |
| 3989 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface
()); | 3990 EXPECT_FALSE(frame.renderPasses[0]->has_occlusion_from_outside_target_su
rface); |
| 3990 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface
()); | 3991 EXPECT_FALSE(frame.renderPasses[1]->has_occlusion_from_outside_target_su
rface); |
| 3991 | 3992 |
| 3992 myHostImpl->drawLayers(frame); | 3993 myHostImpl->drawLayers(frame); |
| 3993 myHostImpl->didDrawAllLayers(frame); | 3994 myHostImpl->didDrawAllLayers(frame); |
| 3994 } | 3995 } |
| 3995 | 3996 |
| 3996 // Draw without any change | 3997 // Draw without any change |
| 3997 { | 3998 { |
| 3998 LayerTreeHostImpl::FrameData frame; | 3999 LayerTreeHostImpl::FrameData frame; |
| 3999 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4000 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4000 | 4001 |
| 4001 // Even though there was no change, we set the damage to entire viewport
. | 4002 // Even though there was no change, we set the damage to entire viewport
. |
| 4002 // One of the passes should be culled as a result, since contents didn't
change | 4003 // One of the passes should be culled as a result, since contents didn't
change |
| 4003 // and we have cached texture. | 4004 // and we have cached texture. |
| 4004 ASSERT_EQ(1U, frame.renderPasses.size()); | 4005 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4005 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4006 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4006 | 4007 |
| 4007 EXPECT_TRUE(frame.renderPasses[0]->damageRect().IsEmpty()); | 4008 EXPECT_TRUE(frame.renderPasses[0]->damage_rect.IsEmpty()); |
| 4008 | 4009 |
| 4009 myHostImpl->drawLayers(frame); | 4010 myHostImpl->drawLayers(frame); |
| 4010 myHostImpl->didDrawAllLayers(frame); | 4011 myHostImpl->didDrawAllLayers(frame); |
| 4011 } | 4012 } |
| 4012 | 4013 |
| 4013 // Change opacity and draw | 4014 // Change opacity and draw |
| 4014 surfaceLayerPtr->setOpacity(0.6f); | 4015 surfaceLayerPtr->setOpacity(0.6f); |
| 4015 { | 4016 { |
| 4016 LayerTreeHostImpl::FrameData frame; | 4017 LayerTreeHostImpl::FrameData frame; |
| 4017 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4018 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4018 | 4019 |
| 4019 // Must receive one render pass, as the other one should be culled | 4020 // Must receive one render pass, as the other one should be culled |
| 4020 ASSERT_EQ(1U, frame.renderPasses.size()); | 4021 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4021 | 4022 |
| 4022 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4023 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4023 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 4024 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 4024 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 4025 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 4025 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 4026 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 4026 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 4027 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 4027 | 4028 |
| 4028 myHostImpl->drawLayers(frame); | 4029 myHostImpl->drawLayers(frame); |
| 4029 myHostImpl->didDrawAllLayers(frame); | 4030 myHostImpl->didDrawAllLayers(frame); |
| 4030 } | 4031 } |
| 4031 | 4032 |
| 4032 // Change less benign property and draw - should have contents changed flag | 4033 // Change less benign property and draw - should have contents changed flag |
| 4033 surfaceLayerPtr->setStackingOrderChanged(true); | 4034 surfaceLayerPtr->setStackingOrderChanged(true); |
| 4034 { | 4035 { |
| 4035 LayerTreeHostImpl::FrameData frame; | 4036 LayerTreeHostImpl::FrameData frame; |
| 4036 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4037 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4037 | 4038 |
| 4038 // Must receive two render passes, each with one quad | 4039 // Must receive two render passes, each with one quad |
| 4039 ASSERT_EQ(2U, frame.renderPasses.size()); | 4040 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 4040 | 4041 |
| 4041 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4042 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4042 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quadList()[0]->m
aterial); | 4043 EXPECT_EQ(DrawQuad::SOLID_COLOR, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 4043 | 4044 |
| 4044 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 4045 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 4045 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 4046 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 4046 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 4047 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 4047 EXPECT_FALSE(targetPass->damageRect().IsEmpty()); | 4048 EXPECT_FALSE(targetPass->damage_rect.IsEmpty()); |
| 4048 | 4049 |
| 4049 myHostImpl->drawLayers(frame); | 4050 myHostImpl->drawLayers(frame); |
| 4050 myHostImpl->didDrawAllLayers(frame); | 4051 myHostImpl->didDrawAllLayers(frame); |
| 4051 } | 4052 } |
| 4052 | 4053 |
| 4053 // Change opacity again, and evict the cached surface texture. | 4054 // Change opacity again, and evict the cached surface texture. |
| 4054 surfaceLayerPtr->setOpacity(0.5f); | 4055 surfaceLayerPtr->setOpacity(0.5f); |
| 4055 static_cast<GLRendererWithReleaseTextures*>(myHostImpl->renderer())->release
RenderPassTextures(); | 4056 static_cast<GLRendererWithReleaseTextures*>(myHostImpl->renderer())->release
RenderPassTextures(); |
| 4056 | 4057 |
| 4057 // Change opacity and draw | 4058 // Change opacity and draw |
| 4058 surfaceLayerPtr->setOpacity(0.6f); | 4059 surfaceLayerPtr->setOpacity(0.6f); |
| 4059 { | 4060 { |
| 4060 LayerTreeHostImpl::FrameData frame; | 4061 LayerTreeHostImpl::FrameData frame; |
| 4061 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4062 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4062 | 4063 |
| 4063 // Must receive two render passes | 4064 // Must receive two render passes |
| 4064 ASSERT_EQ(2U, frame.renderPasses.size()); | 4065 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 4065 | 4066 |
| 4066 // Even though not enough properties changed, the entire thing must be | 4067 // Even though not enough properties changed, the entire thing must be |
| 4067 // redrawn as we don't have cached textures | 4068 // redrawn as we don't have cached textures |
| 4068 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4069 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4069 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); | 4070 EXPECT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| 4070 | 4071 |
| 4071 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quadList()[0]->m
aterial); | 4072 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 4072 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quadList()[0]); | 4073 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 4073 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 4074 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 4074 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 4075 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 4075 | 4076 |
| 4076 // Was our surface evicted? | 4077 // Was our surface evicted? |
| 4077 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id())); | 4078 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(
targetPass->id)); |
| 4078 | 4079 |
| 4079 myHostImpl->drawLayers(frame); | 4080 myHostImpl->drawLayers(frame); |
| 4080 myHostImpl->didDrawAllLayers(frame); | 4081 myHostImpl->didDrawAllLayers(frame); |
| 4081 } | 4082 } |
| 4082 | 4083 |
| 4083 // Draw without any change, to make sure the state is clear | 4084 // Draw without any change, to make sure the state is clear |
| 4084 { | 4085 { |
| 4085 LayerTreeHostImpl::FrameData frame; | 4086 LayerTreeHostImpl::FrameData frame; |
| 4086 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4087 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4087 | 4088 |
| 4088 // Even though there was no change, we set the damage to entire viewport
. | 4089 // Even though there was no change, we set the damage to entire viewport
. |
| 4089 // One of the passes should be culled as a result, since contents didn't
change | 4090 // One of the passes should be culled as a result, since contents didn't
change |
| 4090 // and we have cached texture. | 4091 // and we have cached texture. |
| 4091 ASSERT_EQ(1U, frame.renderPasses.size()); | 4092 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4092 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4093 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4093 | 4094 |
| 4094 myHostImpl->drawLayers(frame); | 4095 myHostImpl->drawLayers(frame); |
| 4095 myHostImpl->didDrawAllLayers(frame); | 4096 myHostImpl->didDrawAllLayers(frame); |
| 4096 } | 4097 } |
| 4097 | 4098 |
| 4098 // Change location of the intermediate layer | 4099 // Change location of the intermediate layer |
| 4099 WebTransformationMatrix transform = intermediateLayerPtr->transform(); | 4100 WebTransformationMatrix transform = intermediateLayerPtr->transform(); |
| 4100 transform.setM41(1.0001); | 4101 transform.setM41(1.0001); |
| 4101 intermediateLayerPtr->setTransform(transform); | 4102 intermediateLayerPtr->setTransform(transform); |
| 4102 { | 4103 { |
| 4103 LayerTreeHostImpl::FrameData frame; | 4104 LayerTreeHostImpl::FrameData frame; |
| 4104 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4105 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4105 | 4106 |
| 4106 // Must receive one render pass, as the other one should be culled. | 4107 // Must receive one render pass, as the other one should be culled. |
| 4107 ASSERT_EQ(1U, frame.renderPasses.size()); | 4108 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4108 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); | 4109 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4109 | 4110 |
| 4110 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quadList()[0]->m
aterial); | 4111 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 4111 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quadList()[0]); | 4112 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 4112 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 4113 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 4113 EXPECT_TRUE(targetPass->damageRect().IsEmpty()); | 4114 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 4114 | 4115 |
| 4115 myHostImpl->drawLayers(frame); | 4116 myHostImpl->drawLayers(frame); |
| 4116 myHostImpl->didDrawAllLayers(frame); | 4117 myHostImpl->didDrawAllLayers(frame); |
| 4117 } | 4118 } |
| 4118 } | 4119 } |
| 4119 | 4120 |
| 4120 TEST_P(LayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) | 4121 TEST_P(LayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) |
| 4121 { | 4122 { |
| 4122 setReduceMemoryResult(false); | 4123 setReduceMemoryResult(false); |
| 4123 | 4124 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4190 renderer->clearCachedTextures(); | 4191 renderer->clearCachedTextures(); |
| 4191 | 4192 |
| 4192 // One shared state for all quads - we don't need the correct details | 4193 // One shared state for all quads - we don't need the correct details |
| 4193 testData.sharedQuadState = SharedQuadState::Create(); | 4194 testData.sharedQuadState = SharedQuadState::Create(); |
| 4194 testData.sharedQuadState->SetAll(WebTransformationMatrix(), gfx::Rect(), gfx
::Rect(), 1.0); | 4195 testData.sharedQuadState->SetAll(WebTransformationMatrix(), gfx::Rect(), gfx
::Rect(), 1.0); |
| 4195 | 4196 |
| 4196 const char* currentChar = testScript; | 4197 const char* currentChar = testScript; |
| 4197 | 4198 |
| 4198 // Pre-create root pass | 4199 // Pre-create root pass |
| 4199 RenderPass::Id rootRenderPassId = RenderPass::Id(testScript[0], testScript[1
]); | 4200 RenderPass::Id rootRenderPassId = RenderPass::Id(testScript[0], testScript[1
]); |
| 4200 testData.renderPassCache.add(rootRenderPassId, TestRenderPass::create(rootRe
nderPassId, gfx::Rect(), WebTransformationMatrix())); | 4201 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 4202 pass->SetNew(rootRenderPassId, gfx::Rect(), gfx::Rect(), WebTransformationMa
trix()); |
| 4203 testData.renderPassCache.add(rootRenderPassId, pass.Pass()); |
| 4201 while (*currentChar) { | 4204 while (*currentChar) { |
| 4202 int layerId = *currentChar; | 4205 int layerId = *currentChar; |
| 4203 currentChar++; | 4206 currentChar++; |
| 4204 ASSERT_TRUE(currentChar); | 4207 ASSERT_TRUE(currentChar); |
| 4205 int index = *currentChar; | 4208 int index = *currentChar; |
| 4206 currentChar++; | 4209 currentChar++; |
| 4207 | 4210 |
| 4208 RenderPass::Id renderPassId = RenderPass::Id(layerId, index); | 4211 RenderPass::Id renderPassId = RenderPass::Id(layerId, index); |
| 4209 | 4212 |
| 4210 bool isReplica = false; | 4213 bool isReplica = false; |
| 4211 if (!testData.renderPassCache.contains(renderPassId)) | 4214 if (!testData.renderPassCache.contains(renderPassId)) |
| 4212 isReplica = true; | 4215 isReplica = true; |
| 4213 | 4216 |
| 4214 scoped_ptr<TestRenderPass> renderPass = testData.renderPassCache.take(re
nderPassId); | 4217 scoped_ptr<TestRenderPass> renderPass = testData.renderPassCache.take(re
nderPassId); |
| 4215 | 4218 |
| 4216 // Cycle through quad data and create all quads | 4219 // Cycle through quad data and create all quads |
| 4217 while (*currentChar && *currentChar != '\n') { | 4220 while (*currentChar && *currentChar != '\n') { |
| 4218 if (*currentChar == 's') { | 4221 if (*currentChar == 's') { |
| 4219 // Solid color draw quad | 4222 // Solid color draw quad |
| 4220 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create
(); | 4223 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create
(); |
| 4221 quad->SetNew(testData.sharedQuadState.get(), gfx::Rect(0, 0, 10,
10), SK_ColorWHITE); | 4224 quad->SetNew(testData.sharedQuadState.get(), gfx::Rect(0, 0, 10,
10), SK_ColorWHITE); |
| 4222 | 4225 |
| 4223 renderPass->appendQuad(quad.PassAs<DrawQuad>()); | 4226 renderPass->AppendQuad(quad.PassAs<DrawQuad>()); |
| 4224 currentChar++; | 4227 currentChar++; |
| 4225 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) { | 4228 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) { |
| 4226 // RenderPass draw quad | 4229 // RenderPass draw quad |
| 4227 int layerId = *currentChar; | 4230 int layerId = *currentChar; |
| 4228 currentChar++; | 4231 currentChar++; |
| 4229 ASSERT_TRUE(currentChar); | 4232 ASSERT_TRUE(currentChar); |
| 4230 int index = *currentChar; | 4233 int index = *currentChar; |
| 4231 currentChar++; | 4234 currentChar++; |
| 4232 RenderPass::Id newRenderPassId = RenderPass::Id(layerId, index); | 4235 RenderPass::Id newRenderPassId = RenderPass::Id(layerId, index); |
| 4233 ASSERT_NE(rootRenderPassId, newRenderPassId); | 4236 ASSERT_NE(rootRenderPassId, newRenderPassId); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4248 currentChar++; | 4251 currentChar++; |
| 4249 } | 4252 } |
| 4250 if (*currentChar == ']') | 4253 if (*currentChar == ']') |
| 4251 currentChar++; | 4254 currentChar++; |
| 4252 } | 4255 } |
| 4253 | 4256 |
| 4254 if (testData.renderPassCache.find(newRenderPassId) == testData.r
enderPassCache.end()) { | 4257 if (testData.renderPassCache.find(newRenderPassId) == testData.r
enderPassCache.end()) { |
| 4255 if (hasTexture) | 4258 if (hasTexture) |
| 4256 renderer->setHaveCachedResourcesForRenderPassId(newRende
rPassId); | 4259 renderer->setHaveCachedResourcesForRenderPassId(newRende
rPassId); |
| 4257 | 4260 |
| 4258 testData.renderPassCache.add(newRenderPassId, TestRenderPass
::create(newRenderPassId, gfx::Rect(), WebTransformationMatrix())); | 4261 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 4262 pass->SetNew(newRenderPassId, gfx::Rect(), gfx::Rect(), WebT
ransformationMatrix()); |
| 4263 testData.renderPassCache.add(newRenderPassId, pass.Pass()); |
| 4259 } | 4264 } |
| 4260 | 4265 |
| 4261 gfx::Rect quadRect = gfx::Rect(0, 0, 1, 1); | 4266 gfx::Rect quadRect = gfx::Rect(0, 0, 1, 1); |
| 4262 gfx::Rect contentsChangedRect = contentsChanged ? quadRect : gfx
::Rect(); | 4267 gfx::Rect contentsChangedRect = contentsChanged ? quadRect : gfx
::Rect(); |
| 4263 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create
(); | 4268 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create
(); |
| 4264 quad->SetNew(testData.sharedQuadState.get(), quadRect, newRender
PassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0); | 4269 quad->SetNew(testData.sharedQuadState.get(), quadRect, newRender
PassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0); |
| 4265 renderPass->appendQuad(quad.PassAs<DrawQuad>()); | 4270 renderPass->AppendQuad(quad.PassAs<DrawQuad>()); |
| 4266 } | 4271 } |
| 4267 } | 4272 } |
| 4268 testData.renderPasses.insert(testData.renderPasses.begin(), renderPass.g
et()); | 4273 testData.renderPasses.insert(testData.renderPasses.begin(), renderPass.g
et()); |
| 4269 testData.renderPassesById.add(renderPassId, renderPass.PassAs<RenderPass
>()); | 4274 testData.renderPassesById.add(renderPassId, renderPass.PassAs<RenderPass
>()); |
| 4270 if (*currentChar) | 4275 if (*currentChar) |
| 4271 currentChar++; | 4276 currentChar++; |
| 4272 } | 4277 } |
| 4273 } | 4278 } |
| 4274 | 4279 |
| 4275 void dumpRenderPassTestData(const RenderPassRemovalTestData& testData, char* buf
fer) | 4280 void dumpRenderPassTestData(const RenderPassRemovalTestData& testData, char* buf
fer) |
| 4276 { | 4281 { |
| 4277 char* pos = buffer; | 4282 char* pos = buffer; |
| 4278 for (RenderPassList::const_reverse_iterator it = testData.renderPasses.rbegi
n(); it != testData.renderPasses.rend(); ++it) { | 4283 for (RenderPassList::const_reverse_iterator it = testData.renderPasses.rbegi
n(); it != testData.renderPasses.rend(); ++it) { |
| 4279 const RenderPass* currentPass = *it; | 4284 const RenderPass* currentPass = *it; |
| 4280 *pos = currentPass->id().layerId; | 4285 *pos = currentPass->id.layer_id; |
| 4281 pos++; | 4286 pos++; |
| 4282 *pos = currentPass->id().index; | 4287 *pos = currentPass->id.index; |
| 4283 pos++; | 4288 pos++; |
| 4284 | 4289 |
| 4285 QuadList::const_iterator quadListIterator = currentPass->quadList().begi
n(); | 4290 QuadList::const_iterator quadListIterator = currentPass->quad_list.begin
(); |
| 4286 while (quadListIterator != currentPass->quadList().end()) { | 4291 while (quadListIterator != currentPass->quad_list.end()) { |
| 4287 DrawQuad* currentQuad = *quadListIterator; | 4292 DrawQuad* currentQuad = *quadListIterator; |
| 4288 switch (currentQuad->material) { | 4293 switch (currentQuad->material) { |
| 4289 case DrawQuad::SOLID_COLOR: | 4294 case DrawQuad::SOLID_COLOR: |
| 4290 *pos = 's'; | 4295 *pos = 's'; |
| 4291 pos++; | 4296 pos++; |
| 4292 break; | 4297 break; |
| 4293 case DrawQuad::RENDER_PASS: | 4298 case DrawQuad::RENDER_PASS: |
| 4294 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas
s_id.layerId; | 4299 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas
s_id.layer_id; |
| 4295 pos++; | 4300 pos++; |
| 4296 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas
s_id.index; | 4301 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas
s_id.index; |
| 4297 pos++; | 4302 pos++; |
| 4298 break; | 4303 break; |
| 4299 default: | 4304 default: |
| 4300 *pos = 'x'; | 4305 *pos = 'x'; |
| 4301 pos++; | 4306 pos++; |
| 4302 break; | 4307 break; |
| 4303 } | 4308 } |
| 4304 | 4309 |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4475 testCaseIndex++; | 4480 testCaseIndex++; |
| 4476 } | 4481 } |
| 4477 } | 4482 } |
| 4478 | 4483 |
| 4479 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, | 4484 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, |
| 4480 LayerTreeHostImplTest, | 4485 LayerTreeHostImplTest, |
| 4481 ::testing::Values(false, true)); | 4486 ::testing::Values(false, true)); |
| 4482 | 4487 |
| 4483 } // namespace | 4488 } // namespace |
| 4484 } // namespace cc | 4489 } // namespace cc |
| OLD | NEW |