| 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 4008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4019 void set_gutter_quad_material(DrawQuad::Material material) { | 4019 void set_gutter_quad_material(DrawQuad::Material material) { |
| 4020 gutter_quad_material_ = material; | 4020 gutter_quad_material_ = material; |
| 4021 } | 4021 } |
| 4022 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { | 4022 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { |
| 4023 gutter_texture_size_ = gutter_texture_size; | 4023 gutter_texture_size_ = gutter_texture_size; |
| 4024 } | 4024 } |
| 4025 | 4025 |
| 4026 protected: | 4026 protected: |
| 4027 size_t CountGutterQuads(const QuadList& quad_list) { | 4027 size_t CountGutterQuads(const QuadList& quad_list) { |
| 4028 size_t num_gutter_quads = 0; | 4028 size_t num_gutter_quads = 0; |
| 4029 for (size_t i = 0; i < quad_list.size(); ++i) { | 4029 for (QuadList::ConstIterator iter = quad_list.begin(); |
| 4030 num_gutter_quads += (quad_list[i]->material == | 4030 iter != quad_list.end(); |
| 4031 gutter_quad_material_) ? 1 : 0; | 4031 ++iter) { |
| 4032 num_gutter_quads += (iter->material == gutter_quad_material_) ? 1 : 0; |
| 4032 } | 4033 } |
| 4033 return num_gutter_quads; | 4034 return num_gutter_quads; |
| 4034 } | 4035 } |
| 4035 | 4036 |
| 4036 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { | 4037 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { |
| 4037 LayerTestCommon::VerifyQuadsExactlyCoverRect( | 4038 LayerTestCommon::VerifyQuadsExactlyCoverRect( |
| 4038 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); | 4039 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); |
| 4039 } | 4040 } |
| 4040 | 4041 |
| 4041 // Make sure that the texture coordinates match their expectations. | 4042 // Make sure that the texture coordinates match their expectations. |
| 4042 void ValidateTextureDrawQuads(const QuadList& quad_list) { | 4043 void ValidateTextureDrawQuads(const QuadList& quad_list) { |
| 4043 for (size_t i = 0; i < quad_list.size(); ++i) { | 4044 for (QuadList::ConstIterator iter = quad_list.begin(); |
| 4044 if (quad_list[i]->material != DrawQuad::TEXTURE_CONTENT) | 4045 iter != quad_list.end(); |
| 4046 ++iter) { |
| 4047 if (iter->material != DrawQuad::TEXTURE_CONTENT) |
| 4045 continue; | 4048 continue; |
| 4046 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(quad_list[i]); | 4049 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(&*iter); |
| 4047 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( | 4050 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( |
| 4048 gutter_texture_size_, host_impl_->device_scale_factor()); | 4051 gutter_texture_size_, host_impl_->device_scale_factor()); |
| 4049 EXPECT_EQ(quad->uv_top_left.x(), | 4052 EXPECT_EQ(quad->uv_top_left.x(), |
| 4050 quad->rect.x() / gutter_texture_size_pixels.width()); | 4053 quad->rect.x() / gutter_texture_size_pixels.width()); |
| 4051 EXPECT_EQ(quad->uv_top_left.y(), | 4054 EXPECT_EQ(quad->uv_top_left.y(), |
| 4052 quad->rect.y() / gutter_texture_size_pixels.height()); | 4055 quad->rect.y() / gutter_texture_size_pixels.height()); |
| 4053 EXPECT_EQ(quad->uv_bottom_right.x(), | 4056 EXPECT_EQ(quad->uv_bottom_right.x(), |
| 4054 quad->rect.right() / gutter_texture_size_pixels.width()); | 4057 quad->rect.right() / gutter_texture_size_pixels.width()); |
| 4055 EXPECT_EQ(quad->uv_bottom_right.y(), | 4058 EXPECT_EQ(quad->uv_bottom_right.y(), |
| 4056 quad->rect.bottom() / gutter_texture_size_pixels.height()); | 4059 quad->rect.bottom() / gutter_texture_size_pixels.height()); |
| (...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4635 &stats_instrumentation_); | 4638 &stats_instrumentation_); |
| 4636 { | 4639 { |
| 4637 LayerTreeHostImpl::FrameData frame; | 4640 LayerTreeHostImpl::FrameData frame; |
| 4638 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4641 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 4639 | 4642 |
| 4640 // Verify all quads have been computed | 4643 // Verify all quads have been computed |
| 4641 ASSERT_EQ(2U, frame.render_passes.size()); | 4644 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4642 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4645 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4643 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4646 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4644 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4647 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4645 frame.render_passes[0]->quad_list[0]->material); | 4648 frame.render_passes[0]->quad_list.front()->material); |
| 4646 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4649 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4647 frame.render_passes[1]->quad_list[0]->material); | 4650 frame.render_passes[1]->quad_list.front()->material); |
| 4648 | 4651 |
| 4649 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4652 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4650 my_host_impl->DidDrawAllLayers(frame); | 4653 my_host_impl->DidDrawAllLayers(frame); |
| 4651 } | 4654 } |
| 4652 } | 4655 } |
| 4653 | 4656 |
| 4654 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 4657 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
| 4655 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 4658 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 4656 new TestSharedBitmapManager()); | 4659 new TestSharedBitmapManager()); |
| 4657 scoped_ptr<LayerTreeHostImpl> my_host_impl = | 4660 scoped_ptr<LayerTreeHostImpl> my_host_impl = |
| 4658 SetupLayersForOpacity(false, | 4661 SetupLayersForOpacity(false, |
| 4659 this, | 4662 this, |
| 4660 &proxy_, | 4663 &proxy_, |
| 4661 shared_bitmap_manager.get(), | 4664 shared_bitmap_manager.get(), |
| 4662 &stats_instrumentation_); | 4665 &stats_instrumentation_); |
| 4663 { | 4666 { |
| 4664 LayerTreeHostImpl::FrameData frame; | 4667 LayerTreeHostImpl::FrameData frame; |
| 4665 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4668 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 4666 | 4669 |
| 4667 // Verify all quads have been computed | 4670 // Verify all quads have been computed |
| 4668 ASSERT_EQ(2U, frame.render_passes.size()); | 4671 ASSERT_EQ(2U, frame.render_passes.size()); |
| 4669 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4672 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 4670 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4673 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 4671 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4674 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 4672 frame.render_passes[0]->quad_list[0]->material); | 4675 frame.render_passes[0]->quad_list.front()->material); |
| 4673 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4676 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 4674 frame.render_passes[1]->quad_list[0]->material); | 4677 frame.render_passes[1]->quad_list.front()->material); |
| 4675 | 4678 |
| 4676 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4679 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4677 my_host_impl->DidDrawAllLayers(frame); | 4680 my_host_impl->DidDrawAllLayers(frame); |
| 4678 } | 4681 } |
| 4679 } | 4682 } |
| 4680 | 4683 |
| 4681 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { | 4684 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { |
| 4682 scoped_ptr<TestWebGraphicsContext3D> context = | 4685 scoped_ptr<TestWebGraphicsContext3D> context = |
| 4683 TestWebGraphicsContext3D::Create(); | 4686 TestWebGraphicsContext3D::Create(); |
| 4684 TestWebGraphicsContext3D* context3d = context.get(); | 4687 TestWebGraphicsContext3D* context3d = context.get(); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4837 const RenderPass* root_render_pass = frame.render_passes.back(); | 4840 const RenderPass* root_render_pass = frame.render_passes.back(); |
| 4838 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); | 4841 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
| 4839 | 4842 |
| 4840 // Verify the root and child layers' quads are generated and not being | 4843 // Verify the root and child layers' quads are generated and not being |
| 4841 // culled. | 4844 // culled. |
| 4842 ASSERT_EQ(2u, root_render_pass->quad_list.size()); | 4845 ASSERT_EQ(2u, root_render_pass->quad_list.size()); |
| 4843 | 4846 |
| 4844 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; | 4847 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; |
| 4845 gfx::RectF expected_child_visible_rect(child->content_bounds()); | 4848 gfx::RectF expected_child_visible_rect(child->content_bounds()); |
| 4846 EXPECT_RECT_EQ(expected_child_visible_rect, | 4849 EXPECT_RECT_EQ(expected_child_visible_rect, |
| 4847 root_render_pass->quad_list[0]->visible_rect); | 4850 root_render_pass->quad_list.front()->visible_rect); |
| 4848 | 4851 |
| 4849 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 4852 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 4850 gfx::RectF expected_root_visible_rect(root->content_bounds()); | 4853 gfx::RectF expected_root_visible_rect(root->content_bounds()); |
| 4851 EXPECT_RECT_EQ(expected_root_visible_rect, | 4854 QuadList::ConstIterator iter = root_render_pass->quad_list.begin(); |
| 4852 root_render_pass->quad_list[1]->visible_rect); | 4855 ++iter; |
| 4856 EXPECT_RECT_EQ(expected_root_visible_rect, iter->visible_rect); |
| 4853 } | 4857 } |
| 4854 | 4858 |
| 4855 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4859 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4856 host_impl_->DidDrawAllLayers(frame); | 4860 host_impl_->DidDrawAllLayers(frame); |
| 4857 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); | 4861 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |
| 4858 } | 4862 } |
| 4859 }; | 4863 }; |
| 4860 | 4864 |
| 4861 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 4865 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
| 4862 scoped_ptr<SolidColorLayerImpl> root = | 4866 scoped_ptr<SolidColorLayerImpl> root = |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4976 float device_scale_factor = 1.f; | 4980 float device_scale_factor = 1.f; |
| 4977 host_impl_->SetViewportSize(root_size); | 4981 host_impl_->SetViewportSize(root_size); |
| 4978 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4982 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4979 { | 4983 { |
| 4980 LayerTreeHostImpl::FrameData frame; | 4984 LayerTreeHostImpl::FrameData frame; |
| 4981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4985 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4982 | 4986 |
| 4983 ASSERT_EQ(1u, frame.render_passes.size()); | 4987 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4984 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4988 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4985 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4989 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4986 frame.render_passes[0]->quad_list[0]->material); | 4990 frame.render_passes[0]->quad_list.front()->material); |
| 4987 const RenderPassDrawQuad* render_pass_quad = | 4991 const RenderPassDrawQuad* render_pass_quad = |
| 4988 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4992 RenderPassDrawQuad::MaterialCast( |
| 4993 frame.render_passes[0]->quad_list.front()); |
| 4989 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 4994 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 4990 render_pass_quad->rect.ToString()); | 4995 render_pass_quad->rect.ToString()); |
| 4991 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4996 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4992 render_pass_quad->mask_uv_rect.ToString()); | 4997 render_pass_quad->mask_uv_rect.ToString()); |
| 4993 | 4998 |
| 4994 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4999 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4995 host_impl_->DidDrawAllLayers(frame); | 5000 host_impl_->DidDrawAllLayers(frame); |
| 4996 } | 5001 } |
| 4997 | 5002 |
| 4998 | 5003 |
| 4999 // Applying a DSF should change the render surface size, but won't affect | 5004 // Applying a DSF should change the render surface size, but won't affect |
| 5000 // which part of the mask is used. | 5005 // which part of the mask is used. |
| 5001 device_scale_factor = 2.f; | 5006 device_scale_factor = 2.f; |
| 5002 gfx::Size device_viewport = | 5007 gfx::Size device_viewport = |
| 5003 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5008 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5004 host_impl_->SetViewportSize(device_viewport); | 5009 host_impl_->SetViewportSize(device_viewport); |
| 5005 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5010 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5006 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5011 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5007 { | 5012 { |
| 5008 LayerTreeHostImpl::FrameData frame; | 5013 LayerTreeHostImpl::FrameData frame; |
| 5009 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5014 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5010 | 5015 |
| 5011 ASSERT_EQ(1u, frame.render_passes.size()); | 5016 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5012 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5017 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5013 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5018 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5014 frame.render_passes[0]->quad_list[0]->material); | 5019 frame.render_passes[0]->quad_list.front()->material); |
| 5015 const RenderPassDrawQuad* render_pass_quad = | 5020 const RenderPassDrawQuad* render_pass_quad = |
| 5016 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5021 RenderPassDrawQuad::MaterialCast( |
| 5022 frame.render_passes[0]->quad_list.front()); |
| 5017 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5023 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 5018 render_pass_quad->rect.ToString()); | 5024 render_pass_quad->rect.ToString()); |
| 5019 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5025 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5020 render_pass_quad->mask_uv_rect.ToString()); | 5026 render_pass_quad->mask_uv_rect.ToString()); |
| 5021 | 5027 |
| 5022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5028 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5023 host_impl_->DidDrawAllLayers(frame); | 5029 host_impl_->DidDrawAllLayers(frame); |
| 5024 } | 5030 } |
| 5025 | 5031 |
| 5026 | 5032 |
| 5027 // Applying an equivalent content scale on the content layer and the mask | 5033 // Applying an equivalent content scale on the content layer and the mask |
| 5028 // should still result in the same part of the mask being used. | 5034 // should still result in the same part of the mask being used. |
| 5029 gfx::Size content_bounds = | 5035 gfx::Size content_bounds = |
| 5030 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 5036 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |
| 5031 device_scale_factor)); | 5037 device_scale_factor)); |
| 5032 content_layer->SetContentBounds(content_bounds); | 5038 content_layer->SetContentBounds(content_bounds); |
| 5033 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5039 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5034 mask_layer->SetContentBounds(content_bounds); | 5040 mask_layer->SetContentBounds(content_bounds); |
| 5035 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5041 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5036 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5042 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5037 { | 5043 { |
| 5038 LayerTreeHostImpl::FrameData frame; | 5044 LayerTreeHostImpl::FrameData frame; |
| 5039 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5045 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5040 | 5046 |
| 5041 ASSERT_EQ(1u, frame.render_passes.size()); | 5047 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5042 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5048 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5043 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5049 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5044 frame.render_passes[0]->quad_list[0]->material); | 5050 frame.render_passes[0]->quad_list.front()->material); |
| 5045 const RenderPassDrawQuad* render_pass_quad = | 5051 const RenderPassDrawQuad* render_pass_quad = |
| 5046 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5052 RenderPassDrawQuad::MaterialCast( |
| 5053 frame.render_passes[0]->quad_list.front()); |
| 5047 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5054 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 5048 render_pass_quad->rect.ToString()); | 5055 render_pass_quad->rect.ToString()); |
| 5049 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5056 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5050 render_pass_quad->mask_uv_rect.ToString()); | 5057 render_pass_quad->mask_uv_rect.ToString()); |
| 5051 | 5058 |
| 5052 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5059 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5053 host_impl_->DidDrawAllLayers(frame); | 5060 host_impl_->DidDrawAllLayers(frame); |
| 5054 } | 5061 } |
| 5055 } | 5062 } |
| 5056 | 5063 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5094 float device_scale_factor = 1.f; | 5101 float device_scale_factor = 1.f; |
| 5095 host_impl_->SetViewportSize(root_size); | 5102 host_impl_->SetViewportSize(root_size); |
| 5096 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5103 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5097 { | 5104 { |
| 5098 LayerTreeHostImpl::FrameData frame; | 5105 LayerTreeHostImpl::FrameData frame; |
| 5099 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5106 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5100 | 5107 |
| 5101 ASSERT_EQ(1u, frame.render_passes.size()); | 5108 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5102 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5109 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5103 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5110 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5104 frame.render_passes[0]->quad_list[0]->material); | 5111 frame.render_passes[0]->quad_list.front()->material); |
| 5105 const RenderPassDrawQuad* render_pass_quad = | 5112 const RenderPassDrawQuad* render_pass_quad = |
| 5106 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5113 RenderPassDrawQuad::MaterialCast( |
| 5114 frame.render_passes[0]->quad_list.front()); |
| 5107 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5115 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5108 render_pass_quad->rect.ToString()); | 5116 render_pass_quad->rect.ToString()); |
| 5109 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5117 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5110 render_pass_quad->mask_uv_rect.ToString()); | 5118 render_pass_quad->mask_uv_rect.ToString()); |
| 5111 | 5119 |
| 5112 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5120 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5113 host_impl_->DidDrawAllLayers(frame); | 5121 host_impl_->DidDrawAllLayers(frame); |
| 5114 } | 5122 } |
| 5115 | 5123 |
| 5116 // Applying a DSF should change the render surface size, but won't affect | 5124 // Applying a DSF should change the render surface size, but won't affect |
| 5117 // which part of the mask is used. | 5125 // which part of the mask is used. |
| 5118 device_scale_factor = 2.f; | 5126 device_scale_factor = 2.f; |
| 5119 gfx::Size device_viewport = | 5127 gfx::Size device_viewport = |
| 5120 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5128 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5121 host_impl_->SetViewportSize(device_viewport); | 5129 host_impl_->SetViewportSize(device_viewport); |
| 5122 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5130 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5123 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5131 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5124 { | 5132 { |
| 5125 LayerTreeHostImpl::FrameData frame; | 5133 LayerTreeHostImpl::FrameData frame; |
| 5126 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5134 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5127 | 5135 |
| 5128 ASSERT_EQ(1u, frame.render_passes.size()); | 5136 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5129 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5137 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5130 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5138 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5131 frame.render_passes[0]->quad_list[0]->material); | 5139 frame.render_passes[0]->quad_list.front()->material); |
| 5132 const RenderPassDrawQuad* render_pass_quad = | 5140 const RenderPassDrawQuad* render_pass_quad = |
| 5133 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5141 RenderPassDrawQuad::MaterialCast( |
| 5142 frame.render_passes[0]->quad_list.front()); |
| 5134 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5143 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5135 render_pass_quad->rect.ToString()); | 5144 render_pass_quad->rect.ToString()); |
| 5136 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5145 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5137 render_pass_quad->mask_uv_rect.ToString()); | 5146 render_pass_quad->mask_uv_rect.ToString()); |
| 5138 | 5147 |
| 5139 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5148 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5140 host_impl_->DidDrawAllLayers(frame); | 5149 host_impl_->DidDrawAllLayers(frame); |
| 5141 } | 5150 } |
| 5142 | 5151 |
| 5143 // Applying an equivalent content scale on the content layer and the mask | 5152 // Applying an equivalent content scale on the content layer and the mask |
| 5144 // should still result in the same part of the mask being used. | 5153 // should still result in the same part of the mask being used. |
| 5145 gfx::Size layer_size_large = | 5154 gfx::Size layer_size_large = |
| 5146 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5155 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5147 content_layer->SetContentBounds(layer_size_large); | 5156 content_layer->SetContentBounds(layer_size_large); |
| 5148 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5157 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5149 gfx::Size mask_size_large = | 5158 gfx::Size mask_size_large = |
| 5150 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5159 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5151 mask_layer->SetContentBounds(mask_size_large); | 5160 mask_layer->SetContentBounds(mask_size_large); |
| 5152 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5161 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5153 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5162 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5154 { | 5163 { |
| 5155 LayerTreeHostImpl::FrameData frame; | 5164 LayerTreeHostImpl::FrameData frame; |
| 5156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5165 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5157 | 5166 |
| 5158 ASSERT_EQ(1u, frame.render_passes.size()); | 5167 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5159 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5168 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5160 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5169 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5161 frame.render_passes[0]->quad_list[0]->material); | 5170 frame.render_passes[0]->quad_list.front()->material); |
| 5162 const RenderPassDrawQuad* render_pass_quad = | 5171 const RenderPassDrawQuad* render_pass_quad = |
| 5163 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5172 RenderPassDrawQuad::MaterialCast( |
| 5173 frame.render_passes[0]->quad_list.front()); |
| 5164 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5174 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5165 render_pass_quad->rect.ToString()); | 5175 render_pass_quad->rect.ToString()); |
| 5166 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5176 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5167 render_pass_quad->mask_uv_rect.ToString()); | 5177 render_pass_quad->mask_uv_rect.ToString()); |
| 5168 | 5178 |
| 5169 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5179 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5170 host_impl_->DidDrawAllLayers(frame); | 5180 host_impl_->DidDrawAllLayers(frame); |
| 5171 } | 5181 } |
| 5172 | 5182 |
| 5173 // Applying a different contents scale to the mask layer means it will have | 5183 // Applying a different contents scale to the mask layer means it will have |
| 5174 // a larger texture, but it should use the same tex coords to cover the | 5184 // a larger texture, but it should use the same tex coords to cover the |
| 5175 // layer it masks. | 5185 // layer it masks. |
| 5176 mask_layer->SetContentBounds(mask_size); | 5186 mask_layer->SetContentBounds(mask_size); |
| 5177 mask_layer->SetContentsScale(1.f, 1.f); | 5187 mask_layer->SetContentsScale(1.f, 1.f); |
| 5178 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5188 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5179 { | 5189 { |
| 5180 LayerTreeHostImpl::FrameData frame; | 5190 LayerTreeHostImpl::FrameData frame; |
| 5181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5191 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5182 | 5192 |
| 5183 ASSERT_EQ(1u, frame.render_passes.size()); | 5193 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5184 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5194 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5185 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5195 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5186 frame.render_passes[0]->quad_list[0]->material); | 5196 frame.render_passes[0]->quad_list.front()->material); |
| 5187 const RenderPassDrawQuad* render_pass_quad = | 5197 const RenderPassDrawQuad* render_pass_quad = |
| 5188 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5198 RenderPassDrawQuad::MaterialCast( |
| 5199 frame.render_passes[0]->quad_list.front()); |
| 5189 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5200 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5190 render_pass_quad->rect.ToString()); | 5201 render_pass_quad->rect.ToString()); |
| 5191 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5202 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5192 render_pass_quad->mask_uv_rect.ToString()); | 5203 render_pass_quad->mask_uv_rect.ToString()); |
| 5193 | 5204 |
| 5194 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5205 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5195 host_impl_->DidDrawAllLayers(frame); | 5206 host_impl_->DidDrawAllLayers(frame); |
| 5196 } | 5207 } |
| 5197 } | 5208 } |
| 5198 | 5209 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5240 // Check that the mask fills the surface. | 5251 // Check that the mask fills the surface. |
| 5241 float device_scale_factor = 1.f; | 5252 float device_scale_factor = 1.f; |
| 5242 host_impl_->SetViewportSize(root_size); | 5253 host_impl_->SetViewportSize(root_size); |
| 5243 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5254 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5244 { | 5255 { |
| 5245 LayerTreeHostImpl::FrameData frame; | 5256 LayerTreeHostImpl::FrameData frame; |
| 5246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5257 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5247 | 5258 |
| 5248 ASSERT_EQ(1u, frame.render_passes.size()); | 5259 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5249 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5260 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5250 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5261 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5251 frame.render_passes[0]->quad_list[1]->material); | 5262 ++iter; |
| 5263 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5252 const RenderPassDrawQuad* replica_quad = | 5264 const RenderPassDrawQuad* replica_quad = |
| 5253 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5265 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5254 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5266 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5255 replica_quad->rect.ToString()); | 5267 replica_quad->rect.ToString()); |
| 5256 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5268 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5257 replica_quad->mask_uv_rect.ToString()); | 5269 replica_quad->mask_uv_rect.ToString()); |
| 5258 | 5270 |
| 5259 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5271 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5260 host_impl_->DidDrawAllLayers(frame); | 5272 host_impl_->DidDrawAllLayers(frame); |
| 5261 } | 5273 } |
| 5262 | 5274 |
| 5263 // Applying a DSF should change the render surface size, but won't affect | 5275 // Applying a DSF should change the render surface size, but won't affect |
| 5264 // which part of the mask is used. | 5276 // which part of the mask is used. |
| 5265 device_scale_factor = 2.f; | 5277 device_scale_factor = 2.f; |
| 5266 gfx::Size device_viewport = | 5278 gfx::Size device_viewport = |
| 5267 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5279 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5268 host_impl_->SetViewportSize(device_viewport); | 5280 host_impl_->SetViewportSize(device_viewport); |
| 5269 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5281 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5270 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5282 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5271 { | 5283 { |
| 5272 LayerTreeHostImpl::FrameData frame; | 5284 LayerTreeHostImpl::FrameData frame; |
| 5273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5285 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5274 | 5286 |
| 5275 ASSERT_EQ(1u, frame.render_passes.size()); | 5287 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5276 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5288 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5277 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5289 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5278 frame.render_passes[0]->quad_list[1]->material); | 5290 ++iter; |
| 5291 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5279 const RenderPassDrawQuad* replica_quad = | 5292 const RenderPassDrawQuad* replica_quad = |
| 5280 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5293 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5281 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5294 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5282 replica_quad->rect.ToString()); | 5295 replica_quad->rect.ToString()); |
| 5283 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5296 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5284 replica_quad->mask_uv_rect.ToString()); | 5297 replica_quad->mask_uv_rect.ToString()); |
| 5285 | 5298 |
| 5286 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5299 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5287 host_impl_->DidDrawAllLayers(frame); | 5300 host_impl_->DidDrawAllLayers(frame); |
| 5288 } | 5301 } |
| 5289 | 5302 |
| 5290 // Applying an equivalent content scale on the content layer and the mask | 5303 // Applying an equivalent content scale on the content layer and the mask |
| 5291 // should still result in the same part of the mask being used. | 5304 // should still result in the same part of the mask being used. |
| 5292 gfx::Size layer_size_large = | 5305 gfx::Size layer_size_large = |
| 5293 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5306 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5294 content_layer->SetContentBounds(layer_size_large); | 5307 content_layer->SetContentBounds(layer_size_large); |
| 5295 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5308 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5296 gfx::Size mask_size_large = | 5309 gfx::Size mask_size_large = |
| 5297 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5310 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5298 mask_layer->SetContentBounds(mask_size_large); | 5311 mask_layer->SetContentBounds(mask_size_large); |
| 5299 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5312 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5300 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5313 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5301 { | 5314 { |
| 5302 LayerTreeHostImpl::FrameData frame; | 5315 LayerTreeHostImpl::FrameData frame; |
| 5303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5316 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5304 | 5317 |
| 5305 ASSERT_EQ(1u, frame.render_passes.size()); | 5318 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5306 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5319 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5307 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5320 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5308 frame.render_passes[0]->quad_list[1]->material); | 5321 ++iter; |
| 5322 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5309 const RenderPassDrawQuad* replica_quad = | 5323 const RenderPassDrawQuad* replica_quad = |
| 5310 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5324 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5311 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5325 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5312 replica_quad->rect.ToString()); | 5326 replica_quad->rect.ToString()); |
| 5313 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5327 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5314 replica_quad->mask_uv_rect.ToString()); | 5328 replica_quad->mask_uv_rect.ToString()); |
| 5315 | 5329 |
| 5316 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5317 host_impl_->DidDrawAllLayers(frame); | 5331 host_impl_->DidDrawAllLayers(frame); |
| 5318 } | 5332 } |
| 5319 | 5333 |
| 5320 // Applying a different contents scale to the mask layer means it will have | 5334 // Applying a different contents scale to the mask layer means it will have |
| 5321 // a larger texture, but it should use the same tex coords to cover the | 5335 // a larger texture, but it should use the same tex coords to cover the |
| 5322 // layer it masks. | 5336 // layer it masks. |
| 5323 mask_layer->SetContentBounds(mask_size); | 5337 mask_layer->SetContentBounds(mask_size); |
| 5324 mask_layer->SetContentsScale(1.f, 1.f); | 5338 mask_layer->SetContentsScale(1.f, 1.f); |
| 5325 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5339 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5326 { | 5340 { |
| 5327 LayerTreeHostImpl::FrameData frame; | 5341 LayerTreeHostImpl::FrameData frame; |
| 5328 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5342 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5329 | 5343 |
| 5330 ASSERT_EQ(1u, frame.render_passes.size()); | 5344 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5331 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5345 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5332 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5346 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5333 frame.render_passes[0]->quad_list[1]->material); | 5347 ++iter; |
| 5348 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5334 const RenderPassDrawQuad* replica_quad = | 5349 const RenderPassDrawQuad* replica_quad = |
| 5335 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5350 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5336 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5351 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5337 replica_quad->rect.ToString()); | 5352 replica_quad->rect.ToString()); |
| 5338 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5353 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5339 replica_quad->mask_uv_rect.ToString()); | 5354 replica_quad->mask_uv_rect.ToString()); |
| 5340 | 5355 |
| 5341 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5356 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5342 host_impl_->DidDrawAllLayers(frame); | 5357 host_impl_->DidDrawAllLayers(frame); |
| 5343 } | 5358 } |
| 5344 } | 5359 } |
| 5345 | 5360 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5400 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5415 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5401 { | 5416 { |
| 5402 LayerTreeHostImpl::FrameData frame; | 5417 LayerTreeHostImpl::FrameData frame; |
| 5403 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5418 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5404 | 5419 |
| 5405 ASSERT_EQ(1u, frame.render_passes.size()); | 5420 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5406 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5421 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5407 | 5422 |
| 5408 // The surface is 100x50. | 5423 // The surface is 100x50. |
| 5409 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5424 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5410 frame.render_passes[0]->quad_list[0]->material); | 5425 frame.render_passes[0]->quad_list.front()->material); |
| 5411 const RenderPassDrawQuad* render_pass_quad = | 5426 const RenderPassDrawQuad* render_pass_quad = |
| 5412 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5427 RenderPassDrawQuad::MaterialCast( |
| 5428 frame.render_passes[0]->quad_list.front()); |
| 5413 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5429 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5414 render_pass_quad->rect.ToString()); | 5430 render_pass_quad->rect.ToString()); |
| 5415 | 5431 |
| 5416 // The mask covers the owning layer only. | 5432 // The mask covers the owning layer only. |
| 5417 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5433 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5418 frame.render_passes[0]->quad_list[1]->material); | 5434 ++iter; |
| 5435 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5419 const RenderPassDrawQuad* replica_quad = | 5436 const RenderPassDrawQuad* replica_quad = |
| 5420 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5437 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5421 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5438 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5422 replica_quad->rect.ToString()); | 5439 replica_quad->rect.ToString()); |
| 5423 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), | 5440 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), |
| 5424 replica_quad->mask_uv_rect.ToString()); | 5441 replica_quad->mask_uv_rect.ToString()); |
| 5425 | 5442 |
| 5426 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5443 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5427 host_impl_->DidDrawAllLayers(frame); | 5444 host_impl_->DidDrawAllLayers(frame); |
| 5428 } | 5445 } |
| 5429 | 5446 |
| 5430 // Move the child to (-50, 0) instead. Now the mask should be moved to still | 5447 // Move the child to (-50, 0) instead. Now the mask should be moved to still |
| 5431 // cover the layer being replicated. | 5448 // cover the layer being replicated. |
| 5432 content_child_layer->SetPosition(gfx::Point(-50, 0)); | 5449 content_child_layer->SetPosition(gfx::Point(-50, 0)); |
| 5433 { | 5450 { |
| 5434 LayerTreeHostImpl::FrameData frame; | 5451 LayerTreeHostImpl::FrameData frame; |
| 5435 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5452 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5436 | 5453 |
| 5437 ASSERT_EQ(1u, frame.render_passes.size()); | 5454 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5438 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5455 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5439 | 5456 |
| 5440 // The surface is 100x50 with its origin at (-50, 0). | 5457 // The surface is 100x50 with its origin at (-50, 0). |
| 5441 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5458 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5442 frame.render_passes[0]->quad_list[0]->material); | 5459 frame.render_passes[0]->quad_list.front()->material); |
| 5443 const RenderPassDrawQuad* render_pass_quad = | 5460 const RenderPassDrawQuad* render_pass_quad = |
| 5444 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5461 RenderPassDrawQuad::MaterialCast( |
| 5462 frame.render_passes[0]->quad_list.front()); |
| 5445 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5463 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5446 render_pass_quad->rect.ToString()); | 5464 render_pass_quad->rect.ToString()); |
| 5447 | 5465 |
| 5448 // The mask covers the owning layer only. | 5466 // The mask covers the owning layer only. |
| 5449 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5467 QuadList::ConstIterator iter = frame.render_passes[0]->quad_list.begin(); |
| 5450 frame.render_passes[0]->quad_list[1]->material); | 5468 ++iter; |
| 5469 ASSERT_EQ(DrawQuad::RENDER_PASS, iter->material); |
| 5451 const RenderPassDrawQuad* replica_quad = | 5470 const RenderPassDrawQuad* replica_quad = |
| 5452 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5471 RenderPassDrawQuad::MaterialCast(&*iter); |
| 5453 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5472 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5454 replica_quad->rect.ToString()); | 5473 replica_quad->rect.ToString()); |
| 5455 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), | 5474 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), |
| 5456 replica_quad->mask_uv_rect.ToString()); | 5475 replica_quad->mask_uv_rect.ToString()); |
| 5457 | 5476 |
| 5458 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5477 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5459 host_impl_->DidDrawAllLayers(frame); | 5478 host_impl_->DidDrawAllLayers(frame); |
| 5460 } | 5479 } |
| 5461 } | 5480 } |
| 5462 | 5481 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5524 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5543 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5525 { | 5544 { |
| 5526 LayerTreeHostImpl::FrameData frame; | 5545 LayerTreeHostImpl::FrameData frame; |
| 5527 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5546 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5528 | 5547 |
| 5529 ASSERT_EQ(1u, frame.render_passes.size()); | 5548 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5530 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5549 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5531 | 5550 |
| 5532 // The surface is clipped to 10x20. | 5551 // The surface is clipped to 10x20. |
| 5533 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5552 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5534 frame.render_passes[0]->quad_list[0]->material); | 5553 frame.render_passes[0]->quad_list.front()->material); |
| 5535 const RenderPassDrawQuad* render_pass_quad = | 5554 const RenderPassDrawQuad* render_pass_quad = |
| 5536 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5555 RenderPassDrawQuad::MaterialCast( |
| 5556 frame.render_passes[0]->quad_list.front()); |
| 5537 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), | 5557 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), |
| 5538 render_pass_quad->rect.ToString()); | 5558 render_pass_quad->rect.ToString()); |
| 5539 | 5559 |
| 5540 // The masked layer is 50x50, but the surface size is 10x20. So the texture | 5560 // The masked layer is 50x50, but the surface size is 10x20. So the texture |
| 5541 // coords in the mask are scaled by 10/50 and 20/50. | 5561 // coords in the mask are scaled by 10/50 and 20/50. |
| 5542 // The surface is clipped to (20,10) so the mask texture coords are offset | 5562 // The surface is clipped to (20,10) so the mask texture coords are offset |
| 5543 // by 20/50 and 10/50 | 5563 // by 20/50 and 10/50 |
| 5544 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), | 5564 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), |
| 5545 1.f / 50.f).ToString(), | 5565 1.f / 50.f).ToString(), |
| 5546 render_pass_quad->mask_uv_rect.ToString()); | 5566 render_pass_quad->mask_uv_rect.ToString()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5601 host_impl_->ActivateSyncTree(); | 5621 host_impl_->ActivateSyncTree(); |
| 5602 | 5622 |
| 5603 host_impl_->active_tree()->UpdateDrawProperties(); | 5623 host_impl_->active_tree()->UpdateDrawProperties(); |
| 5604 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5624 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
| 5605 | 5625 |
| 5606 LayerTreeHostImpl::FrameData frame; | 5626 LayerTreeHostImpl::FrameData frame; |
| 5607 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5627 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5608 | 5628 |
| 5609 ASSERT_EQ(1u, frame.render_passes.size()); | 5629 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5610 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5630 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 5611 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 5631 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
| 5612 | 5632 |
| 5613 float edge[24]; | 5633 float edge[24]; |
| 5614 gfx::QuadF device_layer_quad; | 5634 gfx::QuadF device_layer_quad; |
| 5615 bool antialiased = | 5635 bool antialiased = |
| 5616 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 5636 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |
| 5617 quad->quadTransform(), quad, &device_layer_quad, edge); | 5637 quad->quadTransform(), quad, &device_layer_quad, edge); |
| 5618 EXPECT_FALSE(antialiased); | 5638 EXPECT_FALSE(antialiased); |
| 5619 | 5639 |
| 5620 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5640 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5621 host_impl_->DidDrawAllLayers(frame); | 5641 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7118 // surface. | 7138 // surface. |
| 7119 EXPECT_EQ(0, num_lost_surfaces_); | 7139 EXPECT_EQ(0, num_lost_surfaces_); |
| 7120 host_impl_->DidLoseOutputSurface(); | 7140 host_impl_->DidLoseOutputSurface(); |
| 7121 EXPECT_EQ(1, num_lost_surfaces_); | 7141 EXPECT_EQ(1, num_lost_surfaces_); |
| 7122 host_impl_->DidLoseOutputSurface(); | 7142 host_impl_->DidLoseOutputSurface(); |
| 7123 EXPECT_LE(1, num_lost_surfaces_); | 7143 EXPECT_LE(1, num_lost_surfaces_); |
| 7124 } | 7144 } |
| 7125 | 7145 |
| 7126 } // namespace | 7146 } // namespace |
| 7127 } // namespace cc | 7147 } // namespace cc |
| OLD | NEW |