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 |