| 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 3875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3886 void set_gutter_quad_material(DrawQuad::Material material) { | 3886 void set_gutter_quad_material(DrawQuad::Material material) { |
| 3887 gutter_quad_material_ = material; | 3887 gutter_quad_material_ = material; |
| 3888 } | 3888 } |
| 3889 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { | 3889 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { |
| 3890 gutter_texture_size_ = gutter_texture_size; | 3890 gutter_texture_size_ = gutter_texture_size; |
| 3891 } | 3891 } |
| 3892 | 3892 |
| 3893 protected: | 3893 protected: |
| 3894 size_t CountGutterQuads(const QuadList& quad_list) { | 3894 size_t CountGutterQuads(const QuadList& quad_list) { |
| 3895 size_t num_gutter_quads = 0; | 3895 size_t num_gutter_quads = 0; |
| 3896 for (size_t i = 0; i < quad_list.size(); ++i) { | 3896 for (QuadList::ConstIterator iter = quad_list.begin(); |
| 3897 num_gutter_quads += (quad_list[i]->material == | 3897 iter != quad_list.end(); |
| 3898 gutter_quad_material_) ? 1 : 0; | 3898 ++iter) { |
| 3899 num_gutter_quads += (iter->material == gutter_quad_material_) ? 1 : 0; |
| 3899 } | 3900 } |
| 3900 return num_gutter_quads; | 3901 return num_gutter_quads; |
| 3901 } | 3902 } |
| 3902 | 3903 |
| 3903 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { | 3904 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { |
| 3904 LayerTestCommon::VerifyQuadsExactlyCoverRect( | 3905 LayerTestCommon::VerifyQuadsExactlyCoverRect( |
| 3905 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); | 3906 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); |
| 3906 } | 3907 } |
| 3907 | 3908 |
| 3908 // Make sure that the texture coordinates match their expectations. | 3909 // Make sure that the texture coordinates match their expectations. |
| 3909 void ValidateTextureDrawQuads(const QuadList& quad_list) { | 3910 void ValidateTextureDrawQuads(const QuadList& quad_list) { |
| 3910 for (size_t i = 0; i < quad_list.size(); ++i) { | 3911 for (QuadList::ConstIterator iter = quad_list.begin(); |
| 3911 if (quad_list[i]->material != DrawQuad::TEXTURE_CONTENT) | 3912 iter != quad_list.end(); |
| 3913 ++iter) { |
| 3914 if (iter->material != DrawQuad::TEXTURE_CONTENT) |
| 3912 continue; | 3915 continue; |
| 3913 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(quad_list[i]); | 3916 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(&*iter); |
| 3914 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( | 3917 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( |
| 3915 gutter_texture_size_, host_impl_->device_scale_factor()); | 3918 gutter_texture_size_, host_impl_->device_scale_factor()); |
| 3916 EXPECT_EQ(quad->uv_top_left.x(), | 3919 EXPECT_EQ(quad->uv_top_left.x(), |
| 3917 quad->rect.x() / gutter_texture_size_pixels.width()); | 3920 quad->rect.x() / gutter_texture_size_pixels.width()); |
| 3918 EXPECT_EQ(quad->uv_top_left.y(), | 3921 EXPECT_EQ(quad->uv_top_left.y(), |
| 3919 quad->rect.y() / gutter_texture_size_pixels.height()); | 3922 quad->rect.y() / gutter_texture_size_pixels.height()); |
| 3920 EXPECT_EQ(quad->uv_bottom_right.x(), | 3923 EXPECT_EQ(quad->uv_bottom_right.x(), |
| 3921 quad->rect.right() / gutter_texture_size_pixels.width()); | 3924 quad->rect.right() / gutter_texture_size_pixels.width()); |
| 3922 EXPECT_EQ(quad->uv_bottom_right.y(), | 3925 EXPECT_EQ(quad->uv_bottom_right.y(), |
| 3923 quad->rect.bottom() / gutter_texture_size_pixels.height()); | 3926 quad->rect.bottom() / gutter_texture_size_pixels.height()); |
| (...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4502 &stats_instrumentation_); | 4505 &stats_instrumentation_); |
| 4503 { | 4506 { |
| 4504 LayerTreeHostImpl::FrameData frame; | 4507 LayerTreeHostImpl::FrameData frame; |
| 4505 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4508 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 4506 | 4509 |
| 4507 // Verify all quads have been computed | 4510 // Verify all quads have been computed |
| 4508 ASSERT_EQ(2U, frame.render_passes.size()); | 4511 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4509 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4512 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4510 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4513 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4511 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4514 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4512 frame.render_passes[0]->quad_list[0]->material); | 4515 frame.render_passes[0]->quad_list.front()->material); |
| 4513 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4516 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4514 frame.render_passes[1]->quad_list[0]->material); | 4517 frame.render_passes[1]->quad_list.front()->material); |
| 4515 | 4518 |
| 4516 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4519 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4517 my_host_impl->DidDrawAllLayers(frame); | 4520 my_host_impl->DidDrawAllLayers(frame); |
| 4518 } | 4521 } |
| 4519 } | 4522 } |
| 4520 | 4523 |
| 4521 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 4524 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
| 4522 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 4525 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 4523 new TestSharedBitmapManager()); | 4526 new TestSharedBitmapManager()); |
| 4524 scoped_ptr<LayerTreeHostImpl> my_host_impl = | 4527 scoped_ptr<LayerTreeHostImpl> my_host_impl = |
| 4525 SetupLayersForOpacity(false, | 4528 SetupLayersForOpacity(false, |
| 4526 this, | 4529 this, |
| 4527 &proxy_, | 4530 &proxy_, |
| 4528 shared_bitmap_manager.get(), | 4531 shared_bitmap_manager.get(), |
| 4529 &stats_instrumentation_); | 4532 &stats_instrumentation_); |
| 4530 { | 4533 { |
| 4531 LayerTreeHostImpl::FrameData frame; | 4534 LayerTreeHostImpl::FrameData frame; |
| 4532 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4535 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 4533 | 4536 |
| 4534 // Verify all quads have been computed | 4537 // Verify all quads have been computed |
| 4535 ASSERT_EQ(2U, frame.render_passes.size()); | 4538 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4536 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4539 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4537 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4540 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4538 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4541 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4539 frame.render_passes[0]->quad_list[0]->material); | 4542 frame.render_passes[0]->quad_list.front()->material); |
| 4540 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4543 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4541 frame.render_passes[1]->quad_list[0]->material); | 4544 frame.render_passes[1]->quad_list.front()->material); |
| 4542 | 4545 |
| 4543 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4546 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4544 my_host_impl->DidDrawAllLayers(frame); | 4547 my_host_impl->DidDrawAllLayers(frame); |
| 4545 } | 4548 } |
| 4546 } | 4549 } |
| 4547 | 4550 |
| 4548 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { | 4551 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { |
| 4549 scoped_ptr<TestWebGraphicsContext3D> context = | 4552 scoped_ptr<TestWebGraphicsContext3D> context = |
| 4550 TestWebGraphicsContext3D::Create(); | 4553 TestWebGraphicsContext3D::Create(); |
| 4551 TestWebGraphicsContext3D* context3d = context.get(); | 4554 TestWebGraphicsContext3D* context3d = context.get(); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4704 const RenderPass* root_render_pass = frame.render_passes.back(); | 4707 const RenderPass* root_render_pass = frame.render_passes.back(); |
| 4705 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); | 4708 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
| 4706 | 4709 |
| 4707 // Verify the root and child layers' quads are generated and not being | 4710 // Verify the root and child layers' quads are generated and not being |
| 4708 // culled. | 4711 // culled. |
| 4709 ASSERT_EQ(2u, root_render_pass->quad_list.size()); | 4712 ASSERT_EQ(2u, root_render_pass->quad_list.size()); |
| 4710 | 4713 |
| 4711 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; | 4714 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; |
| 4712 gfx::RectF expected_child_visible_rect(child->content_bounds()); | 4715 gfx::RectF expected_child_visible_rect(child->content_bounds()); |
| 4713 EXPECT_RECT_EQ(expected_child_visible_rect, | 4716 EXPECT_RECT_EQ(expected_child_visible_rect, |
| 4714 root_render_pass->quad_list[0]->visible_rect); | 4717 root_render_pass->quad_list.front()->visible_rect); |
| 4715 | 4718 |
| 4716 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 4719 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 4717 gfx::RectF expected_root_visible_rect(root->content_bounds()); | 4720 gfx::RectF expected_root_visible_rect(root->content_bounds()); |
| 4718 EXPECT_RECT_EQ(expected_root_visible_rect, | 4721 QuadList::ConstIterator iter = root_render_pass->quad_list.begin(); |
| 4719 root_render_pass->quad_list[1]->visible_rect); | 4722 ++iter; |
| 4723 EXPECT_RECT_EQ(expected_root_visible_rect, iter->visible_rect); |
| 4720 } | 4724 } |
| 4721 | 4725 |
| 4722 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4726 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4723 host_impl_->DidDrawAllLayers(frame); | 4727 host_impl_->DidDrawAllLayers(frame); |
| 4724 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); | 4728 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |
| 4725 } | 4729 } |
| 4726 }; | 4730 }; |
| 4727 | 4731 |
| 4728 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 4732 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
| 4729 scoped_ptr<SolidColorLayerImpl> root = | 4733 scoped_ptr<SolidColorLayerImpl> root = |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4843 float device_scale_factor = 1.f; | 4847 float device_scale_factor = 1.f; |
| 4844 host_impl_->SetViewportSize(root_size); | 4848 host_impl_->SetViewportSize(root_size); |
| 4845 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4849 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4846 { | 4850 { |
| 4847 LayerTreeHostImpl::FrameData frame; | 4851 LayerTreeHostImpl::FrameData frame; |
| 4848 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4852 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4849 | 4853 |
| 4850 ASSERT_EQ(1u, frame.render_passes.size()); | 4854 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4851 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4855 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4852 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4856 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4853 frame.render_passes[0]->quad_list[0]->material); | 4857 frame.render_passes[0]->quad_list.front()->material); |
| 4854 const RenderPassDrawQuad* render_pass_quad = | 4858 const RenderPassDrawQuad* render_pass_quad = |
| 4855 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4859 RenderPassDrawQuad::MaterialCast( |
| 4860 frame.render_passes[0]->quad_list.front()); |
| 4856 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 4861 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 4857 render_pass_quad->rect.ToString()); | 4862 render_pass_quad->rect.ToString()); |
| 4858 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4863 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4859 render_pass_quad->mask_uv_rect.ToString()); | 4864 render_pass_quad->mask_uv_rect.ToString()); |
| 4860 | 4865 |
| 4861 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4866 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4862 host_impl_->DidDrawAllLayers(frame); | 4867 host_impl_->DidDrawAllLayers(frame); |
| 4863 } | 4868 } |
| 4864 | 4869 |
| 4865 | 4870 |
| 4866 // Applying a DSF should change the render surface size, but won't affect | 4871 // Applying a DSF should change the render surface size, but won't affect |
| 4867 // which part of the mask is used. | 4872 // which part of the mask is used. |
| 4868 device_scale_factor = 2.f; | 4873 device_scale_factor = 2.f; |
| 4869 gfx::Size device_viewport = | 4874 gfx::Size device_viewport = |
| 4870 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 4875 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 4871 host_impl_->SetViewportSize(device_viewport); | 4876 host_impl_->SetViewportSize(device_viewport); |
| 4872 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4877 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4873 host_impl_->active_tree()->set_needs_update_draw_properties(); | 4878 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 4874 { | 4879 { |
| 4875 LayerTreeHostImpl::FrameData frame; | 4880 LayerTreeHostImpl::FrameData frame; |
| 4876 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4881 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4877 | 4882 |
| 4878 ASSERT_EQ(1u, frame.render_passes.size()); | 4883 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4879 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4884 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4880 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4885 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4881 frame.render_passes[0]->quad_list[0]->material); | 4886 frame.render_passes[0]->quad_list.front()->material); |
| 4882 const RenderPassDrawQuad* render_pass_quad = | 4887 const RenderPassDrawQuad* render_pass_quad = |
| 4883 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4888 RenderPassDrawQuad::MaterialCast( |
| 4889 frame.render_passes[0]->quad_list.front()); |
| 4884 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 4890 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 4885 render_pass_quad->rect.ToString()); | 4891 render_pass_quad->rect.ToString()); |
| 4886 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4892 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4887 render_pass_quad->mask_uv_rect.ToString()); | 4893 render_pass_quad->mask_uv_rect.ToString()); |
| 4888 | 4894 |
| 4889 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4895 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4890 host_impl_->DidDrawAllLayers(frame); | 4896 host_impl_->DidDrawAllLayers(frame); |
| 4891 } | 4897 } |
| 4892 | 4898 |
| 4893 | 4899 |
| 4894 // Applying an equivalent content scale on the content layer and the mask | 4900 // Applying an equivalent content scale on the content layer and the mask |
| 4895 // should still result in the same part of the mask being used. | 4901 // should still result in the same part of the mask being used. |
| 4896 gfx::Size content_bounds = | 4902 gfx::Size content_bounds = |
| 4897 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 4903 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |
| 4898 device_scale_factor)); | 4904 device_scale_factor)); |
| 4899 content_layer->SetContentBounds(content_bounds); | 4905 content_layer->SetContentBounds(content_bounds); |
| 4900 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 4906 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 4901 mask_layer->SetContentBounds(content_bounds); | 4907 mask_layer->SetContentBounds(content_bounds); |
| 4902 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 4908 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 4903 host_impl_->active_tree()->set_needs_update_draw_properties(); | 4909 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 4904 { | 4910 { |
| 4905 LayerTreeHostImpl::FrameData frame; | 4911 LayerTreeHostImpl::FrameData frame; |
| 4906 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4912 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4907 | 4913 |
| 4908 ASSERT_EQ(1u, frame.render_passes.size()); | 4914 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4909 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4915 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4910 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4916 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4911 frame.render_passes[0]->quad_list[0]->material); | 4917 frame.render_passes[0]->quad_list.front()->material); |
| 4912 const RenderPassDrawQuad* render_pass_quad = | 4918 const RenderPassDrawQuad* render_pass_quad = |
| 4913 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4919 RenderPassDrawQuad::MaterialCast( |
| 4920 frame.render_passes[0]->quad_list.front()); |
| 4914 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 4921 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 4915 render_pass_quad->rect.ToString()); | 4922 render_pass_quad->rect.ToString()); |
| 4916 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4923 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4917 render_pass_quad->mask_uv_rect.ToString()); | 4924 render_pass_quad->mask_uv_rect.ToString()); |
| 4918 | 4925 |
| 4919 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4926 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4920 host_impl_->DidDrawAllLayers(frame); | 4927 host_impl_->DidDrawAllLayers(frame); |
| 4921 } | 4928 } |
| 4922 } | 4929 } |
| 4923 | 4930 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4961 float device_scale_factor = 1.f; | 4968 float device_scale_factor = 1.f; |
| 4962 host_impl_->SetViewportSize(root_size); | 4969 host_impl_->SetViewportSize(root_size); |
| 4963 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4970 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4964 { | 4971 { |
| 4965 LayerTreeHostImpl::FrameData frame; | 4972 LayerTreeHostImpl::FrameData frame; |
| 4966 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4973 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4967 | 4974 |
| 4968 ASSERT_EQ(1u, frame.render_passes.size()); | 4975 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4969 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4976 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4970 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4977 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4971 frame.render_passes[0]->quad_list[0]->material); | 4978 frame.render_passes[0]->quad_list.front()->material); |
| 4972 const RenderPassDrawQuad* render_pass_quad = | 4979 const RenderPassDrawQuad* render_pass_quad = |
| 4973 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4980 RenderPassDrawQuad::MaterialCast( |
| 4981 frame.render_passes[0]->quad_list.front()); |
| 4974 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 4982 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 4975 render_pass_quad->rect.ToString()); | 4983 render_pass_quad->rect.ToString()); |
| 4976 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4984 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4977 render_pass_quad->mask_uv_rect.ToString()); | 4985 render_pass_quad->mask_uv_rect.ToString()); |
| 4978 | 4986 |
| 4979 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4987 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4980 host_impl_->DidDrawAllLayers(frame); | 4988 host_impl_->DidDrawAllLayers(frame); |
| 4981 } | 4989 } |
| 4982 | 4990 |
| 4983 // Applying a DSF should change the render surface size, but won't affect | 4991 // Applying a DSF should change the render surface size, but won't affect |
| 4984 // which part of the mask is used. | 4992 // which part of the mask is used. |
| 4985 device_scale_factor = 2.f; | 4993 device_scale_factor = 2.f; |
| 4986 gfx::Size device_viewport = | 4994 gfx::Size device_viewport = |
| 4987 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 4995 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 4988 host_impl_->SetViewportSize(device_viewport); | 4996 host_impl_->SetViewportSize(device_viewport); |
| 4989 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4997 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4990 host_impl_->active_tree()->set_needs_update_draw_properties(); | 4998 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 4991 { | 4999 { |
| 4992 LayerTreeHostImpl::FrameData frame; | 5000 LayerTreeHostImpl::FrameData frame; |
| 4993 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5001 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4994 | 5002 |
| 4995 ASSERT_EQ(1u, frame.render_passes.size()); | 5003 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4996 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5004 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4997 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5005 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4998 frame.render_passes[0]->quad_list[0]->material); | 5006 frame.render_passes[0]->quad_list.front()->material); |
| 4999 const RenderPassDrawQuad* render_pass_quad = | 5007 const RenderPassDrawQuad* render_pass_quad = |
| 5000 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5008 RenderPassDrawQuad::MaterialCast( |
| 5009 frame.render_passes[0]->quad_list.front()); |
| 5001 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5010 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5002 render_pass_quad->rect.ToString()); | 5011 render_pass_quad->rect.ToString()); |
| 5003 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5012 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5004 render_pass_quad->mask_uv_rect.ToString()); | 5013 render_pass_quad->mask_uv_rect.ToString()); |
| 5005 | 5014 |
| 5006 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5015 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5007 host_impl_->DidDrawAllLayers(frame); | 5016 host_impl_->DidDrawAllLayers(frame); |
| 5008 } | 5017 } |
| 5009 | 5018 |
| 5010 // Applying an equivalent content scale on the content layer and the mask | 5019 // Applying an equivalent content scale on the content layer and the mask |
| 5011 // should still result in the same part of the mask being used. | 5020 // should still result in the same part of the mask being used. |
| 5012 gfx::Size layer_size_large = | 5021 gfx::Size layer_size_large = |
| 5013 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5022 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5014 content_layer->SetContentBounds(layer_size_large); | 5023 content_layer->SetContentBounds(layer_size_large); |
| 5015 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5024 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5016 gfx::Size mask_size_large = | 5025 gfx::Size mask_size_large = |
| 5017 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5026 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5018 mask_layer->SetContentBounds(mask_size_large); | 5027 mask_layer->SetContentBounds(mask_size_large); |
| 5019 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5028 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5020 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5029 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5021 { | 5030 { |
| 5022 LayerTreeHostImpl::FrameData frame; | 5031 LayerTreeHostImpl::FrameData frame; |
| 5023 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5032 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5024 | 5033 |
| 5025 ASSERT_EQ(1u, frame.render_passes.size()); | 5034 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5026 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5035 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5027 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5036 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5028 frame.render_passes[0]->quad_list[0]->material); | 5037 frame.render_passes[0]->quad_list.front()->material); |
| 5029 const RenderPassDrawQuad* render_pass_quad = | 5038 const RenderPassDrawQuad* render_pass_quad = |
| 5030 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5039 RenderPassDrawQuad::MaterialCast( |
| 5040 frame.render_passes[0]->quad_list.front()); |
| 5031 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5041 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5032 render_pass_quad->rect.ToString()); | 5042 render_pass_quad->rect.ToString()); |
| 5033 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5043 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5034 render_pass_quad->mask_uv_rect.ToString()); | 5044 render_pass_quad->mask_uv_rect.ToString()); |
| 5035 | 5045 |
| 5036 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5046 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5037 host_impl_->DidDrawAllLayers(frame); | 5047 host_impl_->DidDrawAllLayers(frame); |
| 5038 } | 5048 } |
| 5039 | 5049 |
| 5040 // Applying a different contents scale to the mask layer means it will have | 5050 // Applying a different contents scale to the mask layer means it will have |
| 5041 // a larger texture, but it should use the same tex coords to cover the | 5051 // a larger texture, but it should use the same tex coords to cover the |
| 5042 // layer it masks. | 5052 // layer it masks. |
| 5043 mask_layer->SetContentBounds(mask_size); | 5053 mask_layer->SetContentBounds(mask_size); |
| 5044 mask_layer->SetContentsScale(1.f, 1.f); | 5054 mask_layer->SetContentsScale(1.f, 1.f); |
| 5045 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5055 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5046 { | 5056 { |
| 5047 LayerTreeHostImpl::FrameData frame; | 5057 LayerTreeHostImpl::FrameData frame; |
| 5048 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5058 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5049 | 5059 |
| 5050 ASSERT_EQ(1u, frame.render_passes.size()); | 5060 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5051 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5061 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5052 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5062 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5053 frame.render_passes[0]->quad_list[0]->material); | 5063 frame.render_passes[0]->quad_list.front()->material); |
| 5054 const RenderPassDrawQuad* render_pass_quad = | 5064 const RenderPassDrawQuad* render_pass_quad = |
| 5055 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5065 RenderPassDrawQuad::MaterialCast( |
| 5066 frame.render_passes[0]->quad_list.front()); |
| 5056 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5067 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5057 render_pass_quad->rect.ToString()); | 5068 render_pass_quad->rect.ToString()); |
| 5058 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(), |
| 5059 render_pass_quad->mask_uv_rect.ToString()); | 5070 render_pass_quad->mask_uv_rect.ToString()); |
| 5060 | 5071 |
| 5061 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5072 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5062 host_impl_->DidDrawAllLayers(frame); | 5073 host_impl_->DidDrawAllLayers(frame); |
| 5063 } | 5074 } |
| 5064 } | 5075 } |
| 5065 | 5076 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5107 // Check that the mask fills the surface. | 5118 // Check that the mask fills the surface. |
| 5108 float device_scale_factor = 1.f; | 5119 float device_scale_factor = 1.f; |
| 5109 host_impl_->SetViewportSize(root_size); | 5120 host_impl_->SetViewportSize(root_size); |
| 5110 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5121 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5111 { | 5122 { |
| 5112 LayerTreeHostImpl::FrameData frame; | 5123 LayerTreeHostImpl::FrameData frame; |
| 5113 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5124 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5114 | 5125 |
| 5115 ASSERT_EQ(1u, frame.render_passes.size()); | 5126 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5116 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5127 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5117 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5128 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5118 frame.render_passes[0]->quad_list[1]->material); | 5129 ++iter; |
| 5130 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5119 const RenderPassDrawQuad* replica_quad = | 5131 const RenderPassDrawQuad* replica_quad = |
| 5120 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5132 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5121 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5133 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5122 replica_quad->rect.ToString()); | 5134 replica_quad->rect.ToString()); |
| 5123 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5135 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5124 replica_quad->mask_uv_rect.ToString()); | 5136 replica_quad->mask_uv_rect.ToString()); |
| 5125 | 5137 |
| 5126 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5138 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5127 host_impl_->DidDrawAllLayers(frame); | 5139 host_impl_->DidDrawAllLayers(frame); |
| 5128 } | 5140 } |
| 5129 | 5141 |
| 5130 // Applying a DSF should change the render surface size, but won't affect | 5142 // Applying a DSF should change the render surface size, but won't affect |
| 5131 // which part of the mask is used. | 5143 // which part of the mask is used. |
| 5132 device_scale_factor = 2.f; | 5144 device_scale_factor = 2.f; |
| 5133 gfx::Size device_viewport = | 5145 gfx::Size device_viewport = |
| 5134 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5146 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5135 host_impl_->SetViewportSize(device_viewport); | 5147 host_impl_->SetViewportSize(device_viewport); |
| 5136 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5148 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5137 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5149 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5138 { | 5150 { |
| 5139 LayerTreeHostImpl::FrameData frame; | 5151 LayerTreeHostImpl::FrameData frame; |
| 5140 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5152 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5141 | 5153 |
| 5142 ASSERT_EQ(1u, frame.render_passes.size()); | 5154 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5143 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5155 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5144 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5156 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5145 frame.render_passes[0]->quad_list[1]->material); | 5157 ++iter; |
| 5158 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5146 const RenderPassDrawQuad* replica_quad = | 5159 const RenderPassDrawQuad* replica_quad = |
| 5147 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5160 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5148 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5161 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5149 replica_quad->rect.ToString()); | 5162 replica_quad->rect.ToString()); |
| 5150 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5163 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5151 replica_quad->mask_uv_rect.ToString()); | 5164 replica_quad->mask_uv_rect.ToString()); |
| 5152 | 5165 |
| 5153 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5166 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5154 host_impl_->DidDrawAllLayers(frame); | 5167 host_impl_->DidDrawAllLayers(frame); |
| 5155 } | 5168 } |
| 5156 | 5169 |
| 5157 // Applying an equivalent content scale on the content layer and the mask | 5170 // Applying an equivalent content scale on the content layer and the mask |
| 5158 // should still result in the same part of the mask being used. | 5171 // should still result in the same part of the mask being used. |
| 5159 gfx::Size layer_size_large = | 5172 gfx::Size layer_size_large = |
| 5160 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5173 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5161 content_layer->SetContentBounds(layer_size_large); | 5174 content_layer->SetContentBounds(layer_size_large); |
| 5162 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5175 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5163 gfx::Size mask_size_large = | 5176 gfx::Size mask_size_large = |
| 5164 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5177 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5165 mask_layer->SetContentBounds(mask_size_large); | 5178 mask_layer->SetContentBounds(mask_size_large); |
| 5166 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5179 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5167 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5180 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5168 { | 5181 { |
| 5169 LayerTreeHostImpl::FrameData frame; | 5182 LayerTreeHostImpl::FrameData frame; |
| 5170 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5183 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5171 | 5184 |
| 5172 ASSERT_EQ(1u, frame.render_passes.size()); | 5185 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5173 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5186 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5174 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5187 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5175 frame.render_passes[0]->quad_list[1]->material); | 5188 ++iter; |
| 5189 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5176 const RenderPassDrawQuad* replica_quad = | 5190 const RenderPassDrawQuad* replica_quad = |
| 5177 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5191 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5178 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5192 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5179 replica_quad->rect.ToString()); | 5193 replica_quad->rect.ToString()); |
| 5180 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5194 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5181 replica_quad->mask_uv_rect.ToString()); | 5195 replica_quad->mask_uv_rect.ToString()); |
| 5182 | 5196 |
| 5183 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5197 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5184 host_impl_->DidDrawAllLayers(frame); | 5198 host_impl_->DidDrawAllLayers(frame); |
| 5185 } | 5199 } |
| 5186 | 5200 |
| 5187 // Applying a different contents scale to the mask layer means it will have | 5201 // Applying a different contents scale to the mask layer means it will have |
| 5188 // a larger texture, but it should use the same tex coords to cover the | 5202 // a larger texture, but it should use the same tex coords to cover the |
| 5189 // layer it masks. | 5203 // layer it masks. |
| 5190 mask_layer->SetContentBounds(mask_size); | 5204 mask_layer->SetContentBounds(mask_size); |
| 5191 mask_layer->SetContentsScale(1.f, 1.f); | 5205 mask_layer->SetContentsScale(1.f, 1.f); |
| 5192 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5206 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5193 { | 5207 { |
| 5194 LayerTreeHostImpl::FrameData frame; | 5208 LayerTreeHostImpl::FrameData frame; |
| 5195 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5209 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5196 | 5210 |
| 5197 ASSERT_EQ(1u, frame.render_passes.size()); | 5211 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5198 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5212 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5199 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5213 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5200 frame.render_passes[0]->quad_list[1]->material); | 5214 ++iter; |
| 5215 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5201 const RenderPassDrawQuad* replica_quad = | 5216 const RenderPassDrawQuad* replica_quad = |
| 5202 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5217 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5203 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5218 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5204 replica_quad->rect.ToString()); | 5219 replica_quad->rect.ToString()); |
| 5205 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5220 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5206 replica_quad->mask_uv_rect.ToString()); | 5221 replica_quad->mask_uv_rect.ToString()); |
| 5207 | 5222 |
| 5208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5223 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5209 host_impl_->DidDrawAllLayers(frame); | 5224 host_impl_->DidDrawAllLayers(frame); |
| 5210 } | 5225 } |
| 5211 } | 5226 } |
| 5212 | 5227 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5267 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5282 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5268 { | 5283 { |
| 5269 LayerTreeHostImpl::FrameData frame; | 5284 LayerTreeHostImpl::FrameData frame; |
| 5270 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5285 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5271 | 5286 |
| 5272 ASSERT_EQ(1u, frame.render_passes.size()); | 5287 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5273 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5288 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5274 | 5289 |
| 5275 // The surface is 100x50. | 5290 // The surface is 100x50. |
| 5276 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5291 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5277 frame.render_passes[0]->quad_list[0]->material); | 5292 frame.render_passes[0]->quad_list.front()->material); |
| 5278 const RenderPassDrawQuad* render_pass_quad = | 5293 const RenderPassDrawQuad* render_pass_quad = |
| 5279 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5294 RenderPassDrawQuad::MaterialCast( |
| 5295 frame.render_passes[0]->quad_list.front()); |
| 5280 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5296 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5281 render_pass_quad->rect.ToString()); | 5297 render_pass_quad->rect.ToString()); |
| 5282 | 5298 |
| 5283 // The mask covers the owning layer only. | 5299 // The mask covers the owning layer only. |
| 5284 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5300 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5285 frame.render_passes[0]->quad_list[1]->material); | 5301 ++iter; |
| 5302 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5286 const RenderPassDrawQuad* replica_quad = | 5303 const RenderPassDrawQuad* replica_quad = |
| 5287 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5304 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5288 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5305 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5289 replica_quad->rect.ToString()); | 5306 replica_quad->rect.ToString()); |
| 5290 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), | 5307 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), |
| 5291 replica_quad->mask_uv_rect.ToString()); | 5308 replica_quad->mask_uv_rect.ToString()); |
| 5292 | 5309 |
| 5293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5310 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5294 host_impl_->DidDrawAllLayers(frame); | 5311 host_impl_->DidDrawAllLayers(frame); |
| 5295 } | 5312 } |
| 5296 | 5313 |
| 5297 // Move the child to (-50, 0) instead. Now the mask should be moved to still | 5314 // Move the child to (-50, 0) instead. Now the mask should be moved to still |
| 5298 // cover the layer being replicated. | 5315 // cover the layer being replicated. |
| 5299 content_child_layer->SetPosition(gfx::Point(-50, 0)); | 5316 content_child_layer->SetPosition(gfx::Point(-50, 0)); |
| 5300 { | 5317 { |
| 5301 LayerTreeHostImpl::FrameData frame; | 5318 LayerTreeHostImpl::FrameData frame; |
| 5302 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5319 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5303 | 5320 |
| 5304 ASSERT_EQ(1u, frame.render_passes.size()); | 5321 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5305 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5322 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5306 | 5323 |
| 5307 // The surface is 100x50 with its origin at (-50, 0). | 5324 // The surface is 100x50 with its origin at (-50, 0). |
| 5308 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5325 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5309 frame.render_passes[0]->quad_list[0]->material); | 5326 frame.render_passes[0]->quad_list.front()->material); |
| 5310 const RenderPassDrawQuad* render_pass_quad = | 5327 const RenderPassDrawQuad* render_pass_quad = |
| 5311 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5328 RenderPassDrawQuad::MaterialCast( |
| 5329 frame.render_passes[0]->quad_list.front()); |
| 5312 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5330 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5313 render_pass_quad->rect.ToString()); | 5331 render_pass_quad->rect.ToString()); |
| 5314 | 5332 |
| 5315 // The mask covers the owning layer only. | 5333 // The mask covers the owning layer only. |
| 5316 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5334 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5317 frame.render_passes[0]->quad_list[1]->material); | 5335 ++iter; |
| 5336 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5318 const RenderPassDrawQuad* replica_quad = | 5337 const RenderPassDrawQuad* replica_quad = |
| 5319 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5338 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5320 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5339 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5321 replica_quad->rect.ToString()); | 5340 replica_quad->rect.ToString()); |
| 5322 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), | 5341 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), |
| 5323 replica_quad->mask_uv_rect.ToString()); | 5342 replica_quad->mask_uv_rect.ToString()); |
| 5324 | 5343 |
| 5325 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5344 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5326 host_impl_->DidDrawAllLayers(frame); | 5345 host_impl_->DidDrawAllLayers(frame); |
| 5327 } | 5346 } |
| 5328 } | 5347 } |
| 5329 | 5348 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5391 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5410 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5392 { | 5411 { |
| 5393 LayerTreeHostImpl::FrameData frame; | 5412 LayerTreeHostImpl::FrameData frame; |
| 5394 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5413 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5395 | 5414 |
| 5396 ASSERT_EQ(1u, frame.render_passes.size()); | 5415 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5397 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5416 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5398 | 5417 |
| 5399 // The surface is clipped to 10x20. | 5418 // The surface is clipped to 10x20. |
| 5400 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5419 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5401 frame.render_passes[0]->quad_list[0]->material); | 5420 frame.render_passes[0]->quad_list.front()->material); |
| 5402 const RenderPassDrawQuad* render_pass_quad = | 5421 const RenderPassDrawQuad* render_pass_quad = |
| 5403 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5422 RenderPassDrawQuad::MaterialCast( |
| 5423 frame.render_passes[0]->quad_list.front()); |
| 5404 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), | 5424 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), |
| 5405 render_pass_quad->rect.ToString()); | 5425 render_pass_quad->rect.ToString()); |
| 5406 | 5426 |
| 5407 // The masked layer is 50x50, but the surface size is 10x20. So the texture | 5427 // The masked layer is 50x50, but the surface size is 10x20. So the texture |
| 5408 // coords in the mask are scaled by 10/50 and 20/50. | 5428 // coords in the mask are scaled by 10/50 and 20/50. |
| 5409 // The surface is clipped to (20,10) so the mask texture coords are offset | 5429 // The surface is clipped to (20,10) so the mask texture coords are offset |
| 5410 // by 20/50 and 10/50 | 5430 // by 20/50 and 10/50 |
| 5411 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), | 5431 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), |
| 5412 1.f / 50.f).ToString(), | 5432 1.f / 50.f).ToString(), |
| 5413 render_pass_quad->mask_uv_rect.ToString()); | 5433 render_pass_quad->mask_uv_rect.ToString()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5468 host_impl_->ActivateSyncTree(); | 5488 host_impl_->ActivateSyncTree(); |
| 5469 | 5489 |
| 5470 host_impl_->active_tree()->UpdateDrawProperties(); | 5490 host_impl_->active_tree()->UpdateDrawProperties(); |
| 5471 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5491 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
| 5472 | 5492 |
| 5473 LayerTreeHostImpl::FrameData frame; | 5493 LayerTreeHostImpl::FrameData frame; |
| 5474 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5494 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5475 | 5495 |
| 5476 ASSERT_EQ(1u, frame.render_passes.size()); | 5496 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5477 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5497 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 5478 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 5498 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
| 5479 | 5499 |
| 5480 float edge[24]; | 5500 float edge[24]; |
| 5481 gfx::QuadF device_layer_quad; | 5501 gfx::QuadF device_layer_quad; |
| 5482 bool antialiased = | 5502 bool antialiased = |
| 5483 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 5503 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |
| 5484 quad->quadTransform(), quad, &device_layer_quad, edge); | 5504 quad->quadTransform(), quad, &device_layer_quad, edge); |
| 5485 EXPECT_FALSE(antialiased); | 5505 EXPECT_FALSE(antialiased); |
| 5486 | 5506 |
| 5487 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5507 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5488 host_impl_->DidDrawAllLayers(frame); | 5508 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 1490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6979 // surface. | 6999 // surface. |
| 6980 EXPECT_EQ(0, num_lost_surfaces_); | 7000 EXPECT_EQ(0, num_lost_surfaces_); |
| 6981 host_impl_->DidLoseOutputSurface(); | 7001 host_impl_->DidLoseOutputSurface(); |
| 6982 EXPECT_EQ(1, num_lost_surfaces_); | 7002 EXPECT_EQ(1, num_lost_surfaces_); |
| 6983 host_impl_->DidLoseOutputSurface(); | 7003 host_impl_->DidLoseOutputSurface(); |
| 6984 EXPECT_LE(1, num_lost_surfaces_); | 7004 EXPECT_LE(1, num_lost_surfaces_); |
| 6985 } | 7005 } |
| 6986 | 7006 |
| 6987 } // namespace | 7007 } // namespace |
| 6988 } // namespace cc | 7008 } // namespace cc |
| OLD | NEW |