| Index: cc/layers/delegated_renderer_layer_impl_unittest.cc
|
| diff --git a/cc/layers/delegated_renderer_layer_impl_unittest.cc b/cc/layers/delegated_renderer_layer_impl_unittest.cc
|
| index 94ba6c7de5b889cde896ec033eec7f534b39f097..ee65ed3b82f5f83b3efb3a08004894c1cad1c80e 100644
|
| --- a/cc/layers/delegated_renderer_layer_impl_unittest.cc
|
| +++ b/cc/layers/delegated_renderer_layer_impl_unittest.cc
|
| @@ -1374,10 +1374,10 @@ TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) {
|
| TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| gfx::Size layer_size(1000, 1000);
|
| gfx::Size viewport_size(1000, 1000);
|
| - gfx::Rect quad_rect(200, 300, 400, 500);
|
| + gfx::Rect quad_screen_rect(211, 300, 400, 500);
|
|
|
| gfx::Transform transform;
|
| - transform.Translate(11.0, 0.0);
|
| + transform.Translate(211.0, 300.0);
|
|
|
| LayerTestCommon::LayerImplTest impl;
|
|
|
| @@ -1387,14 +1387,18 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| delegated_renderer_layer_impl->SetContentBounds(layer_size);
|
| delegated_renderer_layer_impl->SetDrawsContent(true);
|
|
|
| + // Contributing render pass is offset by a transform and holds a quad that
|
| + // covers it entirely.
|
| RenderPassList delegated_render_passes;
|
| // pass2 is just the size of the quad. It contributes to |pass1| with a
|
| - // translation of (11,0).
|
| + // translation of (211,300).
|
| RenderPassId pass2_id =
|
| delegated_renderer_layer_impl->FirstContributingRenderPassId();
|
| - TestRenderPass* pass2 =
|
| - AddRenderPass(&delegated_render_passes, pass2_id, quad_rect, transform);
|
| - AddQuad(pass2, gfx::Rect(quad_rect.size()), SK_ColorRED);
|
| + TestRenderPass* pass2 = AddRenderPass(&delegated_render_passes,
|
| + pass2_id,
|
| + gfx::Rect(quad_screen_rect.size()),
|
| + transform);
|
| + AddQuad(pass2, gfx::Rect(quad_screen_rect.size()), SK_ColorRED);
|
| // |pass1| covers the whole layer.
|
| RenderPassId pass1_id = RenderPassId(impl.root_layer()->id(), 0);
|
| TestRenderPass* pass1 = AddRenderPass(&delegated_render_passes,
|
| @@ -1407,9 +1411,6 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
|
|
| impl.CalcDrawProps(viewport_size);
|
|
|
| - // The |quad_rect| translated by the |transform|.
|
| - gfx::Rect quad_screen_rect = quad_rect + gfx::Vector2d(11, 0);
|
| -
|
| {
|
| SCOPED_TRACE("No occlusion");
|
| gfx::Rect occluded;
|
| @@ -1427,8 +1428,8 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| SCOPED_TRACE("Contributing render pass");
|
| impl.AppendQuadsForPassWithOcclusion(
|
| delegated_renderer_layer_impl, pass2_id, occluded);
|
| - LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(),
|
| - gfx::Rect(quad_rect.size()));
|
| + LayerTestCommon::VerifyQuadsExactlyCoverRect(
|
| + impl.quad_list(), gfx::Rect(quad_screen_rect.size()));
|
| ASSERT_EQ(1u, impl.quad_list().size());
|
| EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list()[0]->material);
|
| }
|
| @@ -1448,8 +1449,6 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| }
|
| {
|
| gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect());
|
| - // Move the occlusion to where it is in the contributing surface.
|
| - occluded -= quad_rect.OffsetFromOrigin();
|
|
|
| SCOPED_TRACE("Contributing render pass");
|
| impl.AppendQuadsForPassWithOcclusion(
|
| @@ -1463,34 +1462,32 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| {
|
| SCOPED_TRACE("Partial occlusion");
|
| {
|
| - gfx::Rect occluded(0, 0, 500, 1000);
|
| + gfx::Rect occlusion_in_root_target(0, 0, 500, 1000);
|
|
|
| SCOPED_TRACE("Root render pass");
|
| impl.AppendQuadsForPassWithOcclusion(
|
| - delegated_renderer_layer_impl, pass1_id, occluded);
|
| + delegated_renderer_layer_impl, pass1_id, occlusion_in_root_target);
|
| size_t partially_occluded_count = 0;
|
| - LayerTestCommon::VerifyQuadsCoverRectWithOcclusion(
|
| - impl.quad_list(),
|
| - quad_screen_rect,
|
| - occluded,
|
| - &partially_occluded_count);
|
| + LayerTestCommon::VerifyQuadsAreOccluded(impl.quad_list(),
|
| + occlusion_in_root_target,
|
| + &partially_occluded_count);
|
| // The layer outputs one quad, which is partially occluded.
|
| EXPECT_EQ(1u, impl.quad_list().size());
|
| EXPECT_EQ(1u, partially_occluded_count);
|
| }
|
| {
|
| - gfx::Rect occluded(0, 0, 500, 1000);
|
| + gfx::Rect occlusion_in_root_target(0, 0, 500, 1000);
|
| // Move the occlusion to where it is in the contributing surface.
|
| - occluded -= quad_rect.OffsetFromOrigin() + gfx::Vector2d(11, 0);
|
| + gfx::Rect occlusion_in_target_of_delegated_quad =
|
| + occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin();
|
|
|
| SCOPED_TRACE("Contributing render pass");
|
| impl.AppendQuadsForPassWithOcclusion(
|
| - delegated_renderer_layer_impl, pass2_id, occluded);
|
| + delegated_renderer_layer_impl, pass2_id, occlusion_in_root_target);
|
| size_t partially_occluded_count = 0;
|
| - LayerTestCommon::VerifyQuadsCoverRectWithOcclusion(
|
| + LayerTestCommon::VerifyQuadsAreOccluded(
|
| impl.quad_list(),
|
| - gfx::Rect(quad_rect.size()),
|
| - occluded,
|
| + occlusion_in_target_of_delegated_quad,
|
| &partially_occluded_count);
|
| // The layer outputs one quad, which is partially occluded.
|
| EXPECT_EQ(1u, impl.quad_list().size());
|
| @@ -1501,33 +1498,38 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
|
| EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(),
|
| impl.quad_list()[0]->visible_rect.ToString());
|
| }
|
| - }
|
| - {
|
| - gfx::Rect occluded(0, 0, 500, 1000);
|
| - // Move the occlusion to where it is in the contributing surface.
|
| - occluded -= quad_rect.OffsetFromOrigin() + gfx::Vector2d(11, 0);
|
| + {
|
| + gfx::Rect occlusion_in_root_target(0, 0, 500, 1000);
|
| + // Move the occlusion to where it is in the contributing surface.
|
| + gfx::Rect occlusion_in_target_of_delegated_quad =
|
| + occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin();
|
|
|
| - SCOPED_TRACE("Contributing render pass with transformed root");
|
| + SCOPED_TRACE("Contributing render pass with transformed root");
|
|
|
| - delegated_renderer_layer_impl->SetTransform(transform);
|
| - impl.CalcDrawProps(viewport_size);
|
| + gfx::Transform layer_transform;
|
| + layer_transform.Translate(11.0, 0.0);
|
| + delegated_renderer_layer_impl->SetTransform(layer_transform);
|
|
|
| - impl.AppendQuadsForPassWithOcclusion(
|
| - delegated_renderer_layer_impl, pass2_id, occluded);
|
| - size_t partially_occluded_count = 0;
|
| - LayerTestCommon::VerifyQuadsCoverRectWithOcclusion(
|
| - impl.quad_list(),
|
| - gfx::Rect(quad_rect.size()),
|
| - occluded,
|
| - &partially_occluded_count);
|
| - // The layer outputs one quad, which is partially occluded.
|
| - EXPECT_EQ(1u, impl.quad_list().size());
|
| - EXPECT_EQ(1u, partially_occluded_count);
|
| - // The quad in the contributing surface is at (222,300) in the transformed
|
| - // root. The occlusion extends to 500 in the x-axis, pushing the left of the
|
| - // visible part of the quad to 500 - 222 = 300 - 22 inside the quad.
|
| - EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(),
|
| - impl.quad_list()[0]->visible_rect.ToString());
|
| + occlusion_in_target_of_delegated_quad += gfx::Vector2d(11, 0);
|
| +
|
| + impl.CalcDrawProps(viewport_size);
|
| +
|
| + impl.AppendQuadsForPassWithOcclusion(
|
| + delegated_renderer_layer_impl, pass2_id, occlusion_in_root_target);
|
| + size_t partially_occluded_count = 0;
|
| + LayerTestCommon::VerifyQuadsAreOccluded(
|
| + impl.quad_list(),
|
| + occlusion_in_target_of_delegated_quad,
|
| + &partially_occluded_count);
|
| + // The layer outputs one quad, which is partially occluded.
|
| + EXPECT_EQ(1u, impl.quad_list().size());
|
| + EXPECT_EQ(1u, partially_occluded_count);
|
| + // The quad in the contributing surface is at (222,300) in the transformed
|
| + // root. The occlusion extends to 500 in the x-axis, pushing the left of
|
| + // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad.
|
| + EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(),
|
| + impl.quad_list()[0]->visible_rect.ToString());
|
| + }
|
| }
|
| }
|
|
|
|
|