| 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 EXPECT_RECT_EQ(expected_root_visible_rect, |
| 4852 root_render_pass->quad_list[1]->visible_rect); | 4855 root_render_pass->quad_list.at(1)->visible_rect); |
| 4853 } | 4856 } |
| 4854 | 4857 |
| 4855 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4858 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4856 host_impl_->DidDrawAllLayers(frame); | 4859 host_impl_->DidDrawAllLayers(frame); |
| 4857 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); | 4860 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |
| 4858 } | 4861 } |
| 4859 }; | 4862 }; |
| 4860 | 4863 |
| 4861 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 4864 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
| 4862 scoped_ptr<SolidColorLayerImpl> root = | 4865 scoped_ptr<SolidColorLayerImpl> root = |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4976 float device_scale_factor = 1.f; | 4979 float device_scale_factor = 1.f; |
| 4977 host_impl_->SetViewportSize(root_size); | 4980 host_impl_->SetViewportSize(root_size); |
| 4978 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 4981 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 4979 { | 4982 { |
| 4980 LayerTreeHostImpl::FrameData frame; | 4983 LayerTreeHostImpl::FrameData frame; |
| 4981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4984 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 4982 | 4985 |
| 4983 ASSERT_EQ(1u, frame.render_passes.size()); | 4986 ASSERT_EQ(1u, frame.render_passes.size()); |
| 4984 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4987 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 4985 ASSERT_EQ(DrawQuad::RENDER_PASS, | 4988 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 4986 frame.render_passes[0]->quad_list[0]->material); | 4989 frame.render_passes[0]->quad_list.front()->material); |
| 4987 const RenderPassDrawQuad* render_pass_quad = | 4990 const RenderPassDrawQuad* render_pass_quad = |
| 4988 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 4991 RenderPassDrawQuad::MaterialCast( |
| 4992 frame.render_passes[0]->quad_list.front()); |
| 4989 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 4993 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 4990 render_pass_quad->rect.ToString()); | 4994 render_pass_quad->rect.ToString()); |
| 4991 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 4995 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 4992 render_pass_quad->mask_uv_rect.ToString()); | 4996 render_pass_quad->mask_uv_rect.ToString()); |
| 4993 | 4997 |
| 4994 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4998 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 4995 host_impl_->DidDrawAllLayers(frame); | 4999 host_impl_->DidDrawAllLayers(frame); |
| 4996 } | 5000 } |
| 4997 | 5001 |
| 4998 | 5002 |
| 4999 // Applying a DSF should change the render surface size, but won't affect | 5003 // Applying a DSF should change the render surface size, but won't affect |
| 5000 // which part of the mask is used. | 5004 // which part of the mask is used. |
| 5001 device_scale_factor = 2.f; | 5005 device_scale_factor = 2.f; |
| 5002 gfx::Size device_viewport = | 5006 gfx::Size device_viewport = |
| 5003 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5007 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5004 host_impl_->SetViewportSize(device_viewport); | 5008 host_impl_->SetViewportSize(device_viewport); |
| 5005 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5009 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5006 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5010 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5007 { | 5011 { |
| 5008 LayerTreeHostImpl::FrameData frame; | 5012 LayerTreeHostImpl::FrameData frame; |
| 5009 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5013 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5010 | 5014 |
| 5011 ASSERT_EQ(1u, frame.render_passes.size()); | 5015 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5012 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5016 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5013 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5017 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5014 frame.render_passes[0]->quad_list[0]->material); | 5018 frame.render_passes[0]->quad_list.front()->material); |
| 5015 const RenderPassDrawQuad* render_pass_quad = | 5019 const RenderPassDrawQuad* render_pass_quad = |
| 5016 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5020 RenderPassDrawQuad::MaterialCast( |
| 5021 frame.render_passes[0]->quad_list.front()); |
| 5017 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5022 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 5018 render_pass_quad->rect.ToString()); | 5023 render_pass_quad->rect.ToString()); |
| 5019 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5024 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5020 render_pass_quad->mask_uv_rect.ToString()); | 5025 render_pass_quad->mask_uv_rect.ToString()); |
| 5021 | 5026 |
| 5022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5027 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5023 host_impl_->DidDrawAllLayers(frame); | 5028 host_impl_->DidDrawAllLayers(frame); |
| 5024 } | 5029 } |
| 5025 | 5030 |
| 5026 | 5031 |
| 5027 // Applying an equivalent content scale on the content layer and the mask | 5032 // 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. | 5033 // should still result in the same part of the mask being used. |
| 5029 gfx::Size content_bounds = | 5034 gfx::Size content_bounds = |
| 5030 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 5035 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |
| 5031 device_scale_factor)); | 5036 device_scale_factor)); |
| 5032 content_layer->SetContentBounds(content_bounds); | 5037 content_layer->SetContentBounds(content_bounds); |
| 5033 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5038 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5034 mask_layer->SetContentBounds(content_bounds); | 5039 mask_layer->SetContentBounds(content_bounds); |
| 5035 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5040 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5036 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5041 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5037 { | 5042 { |
| 5038 LayerTreeHostImpl::FrameData frame; | 5043 LayerTreeHostImpl::FrameData frame; |
| 5039 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5044 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5040 | 5045 |
| 5041 ASSERT_EQ(1u, frame.render_passes.size()); | 5046 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5042 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5047 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5043 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5048 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5044 frame.render_passes[0]->quad_list[0]->material); | 5049 frame.render_passes[0]->quad_list.front()->material); |
| 5045 const RenderPassDrawQuad* render_pass_quad = | 5050 const RenderPassDrawQuad* render_pass_quad = |
| 5046 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5051 RenderPassDrawQuad::MaterialCast( |
| 5052 frame.render_passes[0]->quad_list.front()); |
| 5047 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5053 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
| 5048 render_pass_quad->rect.ToString()); | 5054 render_pass_quad->rect.ToString()); |
| 5049 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5055 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5050 render_pass_quad->mask_uv_rect.ToString()); | 5056 render_pass_quad->mask_uv_rect.ToString()); |
| 5051 | 5057 |
| 5052 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5058 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5053 host_impl_->DidDrawAllLayers(frame); | 5059 host_impl_->DidDrawAllLayers(frame); |
| 5054 } | 5060 } |
| 5055 } | 5061 } |
| 5056 | 5062 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5094 float device_scale_factor = 1.f; | 5100 float device_scale_factor = 1.f; |
| 5095 host_impl_->SetViewportSize(root_size); | 5101 host_impl_->SetViewportSize(root_size); |
| 5096 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5102 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5097 { | 5103 { |
| 5098 LayerTreeHostImpl::FrameData frame; | 5104 LayerTreeHostImpl::FrameData frame; |
| 5099 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5105 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5100 | 5106 |
| 5101 ASSERT_EQ(1u, frame.render_passes.size()); | 5107 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5102 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5108 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5103 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5109 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5104 frame.render_passes[0]->quad_list[0]->material); | 5110 frame.render_passes[0]->quad_list.front()->material); |
| 5105 const RenderPassDrawQuad* render_pass_quad = | 5111 const RenderPassDrawQuad* render_pass_quad = |
| 5106 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5112 RenderPassDrawQuad::MaterialCast( |
| 5113 frame.render_passes[0]->quad_list.front()); |
| 5107 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5114 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5108 render_pass_quad->rect.ToString()); | 5115 render_pass_quad->rect.ToString()); |
| 5109 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5116 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5110 render_pass_quad->mask_uv_rect.ToString()); | 5117 render_pass_quad->mask_uv_rect.ToString()); |
| 5111 | 5118 |
| 5112 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5119 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5113 host_impl_->DidDrawAllLayers(frame); | 5120 host_impl_->DidDrawAllLayers(frame); |
| 5114 } | 5121 } |
| 5115 | 5122 |
| 5116 // Applying a DSF should change the render surface size, but won't affect | 5123 // Applying a DSF should change the render surface size, but won't affect |
| 5117 // which part of the mask is used. | 5124 // which part of the mask is used. |
| 5118 device_scale_factor = 2.f; | 5125 device_scale_factor = 2.f; |
| 5119 gfx::Size device_viewport = | 5126 gfx::Size device_viewport = |
| 5120 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5127 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5121 host_impl_->SetViewportSize(device_viewport); | 5128 host_impl_->SetViewportSize(device_viewport); |
| 5122 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5129 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5123 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5130 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5124 { | 5131 { |
| 5125 LayerTreeHostImpl::FrameData frame; | 5132 LayerTreeHostImpl::FrameData frame; |
| 5126 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5133 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5127 | 5134 |
| 5128 ASSERT_EQ(1u, frame.render_passes.size()); | 5135 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5129 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5136 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5130 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5137 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5131 frame.render_passes[0]->quad_list[0]->material); | 5138 frame.render_passes[0]->quad_list.front()->material); |
| 5132 const RenderPassDrawQuad* render_pass_quad = | 5139 const RenderPassDrawQuad* render_pass_quad = |
| 5133 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5140 RenderPassDrawQuad::MaterialCast( |
| 5141 frame.render_passes[0]->quad_list.front()); |
| 5134 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5142 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5135 render_pass_quad->rect.ToString()); | 5143 render_pass_quad->rect.ToString()); |
| 5136 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5144 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5137 render_pass_quad->mask_uv_rect.ToString()); | 5145 render_pass_quad->mask_uv_rect.ToString()); |
| 5138 | 5146 |
| 5139 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5147 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5140 host_impl_->DidDrawAllLayers(frame); | 5148 host_impl_->DidDrawAllLayers(frame); |
| 5141 } | 5149 } |
| 5142 | 5150 |
| 5143 // Applying an equivalent content scale on the content layer and the mask | 5151 // 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. | 5152 // should still result in the same part of the mask being used. |
| 5145 gfx::Size layer_size_large = | 5153 gfx::Size layer_size_large = |
| 5146 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5154 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5147 content_layer->SetContentBounds(layer_size_large); | 5155 content_layer->SetContentBounds(layer_size_large); |
| 5148 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5156 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5149 gfx::Size mask_size_large = | 5157 gfx::Size mask_size_large = |
| 5150 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5158 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5151 mask_layer->SetContentBounds(mask_size_large); | 5159 mask_layer->SetContentBounds(mask_size_large); |
| 5152 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5160 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5153 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5161 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5154 { | 5162 { |
| 5155 LayerTreeHostImpl::FrameData frame; | 5163 LayerTreeHostImpl::FrameData frame; |
| 5156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5164 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5157 | 5165 |
| 5158 ASSERT_EQ(1u, frame.render_passes.size()); | 5166 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5159 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5167 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5160 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5168 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5161 frame.render_passes[0]->quad_list[0]->material); | 5169 frame.render_passes[0]->quad_list.front()->material); |
| 5162 const RenderPassDrawQuad* render_pass_quad = | 5170 const RenderPassDrawQuad* render_pass_quad = |
| 5163 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5171 RenderPassDrawQuad::MaterialCast( |
| 5172 frame.render_passes[0]->quad_list.front()); |
| 5164 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5173 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5165 render_pass_quad->rect.ToString()); | 5174 render_pass_quad->rect.ToString()); |
| 5166 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5175 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5167 render_pass_quad->mask_uv_rect.ToString()); | 5176 render_pass_quad->mask_uv_rect.ToString()); |
| 5168 | 5177 |
| 5169 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5178 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5170 host_impl_->DidDrawAllLayers(frame); | 5179 host_impl_->DidDrawAllLayers(frame); |
| 5171 } | 5180 } |
| 5172 | 5181 |
| 5173 // Applying a different contents scale to the mask layer means it will have | 5182 // 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 | 5183 // a larger texture, but it should use the same tex coords to cover the |
| 5175 // layer it masks. | 5184 // layer it masks. |
| 5176 mask_layer->SetContentBounds(mask_size); | 5185 mask_layer->SetContentBounds(mask_size); |
| 5177 mask_layer->SetContentsScale(1.f, 1.f); | 5186 mask_layer->SetContentsScale(1.f, 1.f); |
| 5178 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5187 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5179 { | 5188 { |
| 5180 LayerTreeHostImpl::FrameData frame; | 5189 LayerTreeHostImpl::FrameData frame; |
| 5181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5190 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5182 | 5191 |
| 5183 ASSERT_EQ(1u, frame.render_passes.size()); | 5192 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5184 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5193 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5185 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5194 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5186 frame.render_passes[0]->quad_list[0]->material); | 5195 frame.render_passes[0]->quad_list.front()->material); |
| 5187 const RenderPassDrawQuad* render_pass_quad = | 5196 const RenderPassDrawQuad* render_pass_quad = |
| 5188 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5197 RenderPassDrawQuad::MaterialCast( |
| 5198 frame.render_passes[0]->quad_list.front()); |
| 5189 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5199 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5190 render_pass_quad->rect.ToString()); | 5200 render_pass_quad->rect.ToString()); |
| 5191 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5201 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5192 render_pass_quad->mask_uv_rect.ToString()); | 5202 render_pass_quad->mask_uv_rect.ToString()); |
| 5193 | 5203 |
| 5194 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5195 host_impl_->DidDrawAllLayers(frame); | 5205 host_impl_->DidDrawAllLayers(frame); |
| 5196 } | 5206 } |
| 5197 } | 5207 } |
| 5198 | 5208 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5241 float device_scale_factor = 1.f; | 5251 float device_scale_factor = 1.f; |
| 5242 host_impl_->SetViewportSize(root_size); | 5252 host_impl_->SetViewportSize(root_size); |
| 5243 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5253 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5244 { | 5254 { |
| 5245 LayerTreeHostImpl::FrameData frame; | 5255 LayerTreeHostImpl::FrameData frame; |
| 5246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5256 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5247 | 5257 |
| 5248 ASSERT_EQ(1u, frame.render_passes.size()); | 5258 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5249 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5259 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5250 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5260 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5251 frame.render_passes[0]->quad_list[1]->material); | 5261 frame.render_passes[0]->quad_list.at(1)->material); |
| 5252 const RenderPassDrawQuad* replica_quad = | 5262 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5253 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5263 frame.render_passes[0]->quad_list.at(1)); |
| 5254 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5264 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
| 5255 replica_quad->rect.ToString()); | 5265 replica_quad->rect.ToString()); |
| 5256 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5266 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5257 replica_quad->mask_uv_rect.ToString()); | 5267 replica_quad->mask_uv_rect.ToString()); |
| 5258 | 5268 |
| 5259 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5269 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5260 host_impl_->DidDrawAllLayers(frame); | 5270 host_impl_->DidDrawAllLayers(frame); |
| 5261 } | 5271 } |
| 5262 | 5272 |
| 5263 // Applying a DSF should change the render surface size, but won't affect | 5273 // Applying a DSF should change the render surface size, but won't affect |
| 5264 // which part of the mask is used. | 5274 // which part of the mask is used. |
| 5265 device_scale_factor = 2.f; | 5275 device_scale_factor = 2.f; |
| 5266 gfx::Size device_viewport = | 5276 gfx::Size device_viewport = |
| 5267 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5277 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
| 5268 host_impl_->SetViewportSize(device_viewport); | 5278 host_impl_->SetViewportSize(device_viewport); |
| 5269 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5279 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5270 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5280 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5271 { | 5281 { |
| 5272 LayerTreeHostImpl::FrameData frame; | 5282 LayerTreeHostImpl::FrameData frame; |
| 5273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5283 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5274 | 5284 |
| 5275 ASSERT_EQ(1u, frame.render_passes.size()); | 5285 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5276 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5286 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5277 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5287 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5278 frame.render_passes[0]->quad_list[1]->material); | 5288 frame.render_passes[0]->quad_list.at(1)->material); |
| 5279 const RenderPassDrawQuad* replica_quad = | 5289 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5280 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5290 frame.render_passes[0]->quad_list.at(1)); |
| 5281 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5291 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5282 replica_quad->rect.ToString()); | 5292 replica_quad->rect.ToString()); |
| 5283 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5293 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5284 replica_quad->mask_uv_rect.ToString()); | 5294 replica_quad->mask_uv_rect.ToString()); |
| 5285 | 5295 |
| 5286 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5296 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5287 host_impl_->DidDrawAllLayers(frame); | 5297 host_impl_->DidDrawAllLayers(frame); |
| 5288 } | 5298 } |
| 5289 | 5299 |
| 5290 // Applying an equivalent content scale on the content layer and the mask | 5300 // 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. | 5301 // should still result in the same part of the mask being used. |
| 5292 gfx::Size layer_size_large = | 5302 gfx::Size layer_size_large = |
| 5293 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5303 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
| 5294 content_layer->SetContentBounds(layer_size_large); | 5304 content_layer->SetContentBounds(layer_size_large); |
| 5295 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5305 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5296 gfx::Size mask_size_large = | 5306 gfx::Size mask_size_large = |
| 5297 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5307 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
| 5298 mask_layer->SetContentBounds(mask_size_large); | 5308 mask_layer->SetContentBounds(mask_size_large); |
| 5299 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5309 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
| 5300 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5310 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5301 { | 5311 { |
| 5302 LayerTreeHostImpl::FrameData frame; | 5312 LayerTreeHostImpl::FrameData frame; |
| 5303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5313 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5304 | 5314 |
| 5305 ASSERT_EQ(1u, frame.render_passes.size()); | 5315 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5306 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5316 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5307 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5317 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5308 frame.render_passes[0]->quad_list[1]->material); | 5318 frame.render_passes[0]->quad_list.at(1)->material); |
| 5309 const RenderPassDrawQuad* replica_quad = | 5319 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5310 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5320 frame.render_passes[0]->quad_list.at(1)); |
| 5311 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5321 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5312 replica_quad->rect.ToString()); | 5322 replica_quad->rect.ToString()); |
| 5313 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5323 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5314 replica_quad->mask_uv_rect.ToString()); | 5324 replica_quad->mask_uv_rect.ToString()); |
| 5315 | 5325 |
| 5316 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5317 host_impl_->DidDrawAllLayers(frame); | 5327 host_impl_->DidDrawAllLayers(frame); |
| 5318 } | 5328 } |
| 5319 | 5329 |
| 5320 // Applying a different contents scale to the mask layer means it will have | 5330 // 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 | 5331 // a larger texture, but it should use the same tex coords to cover the |
| 5322 // layer it masks. | 5332 // layer it masks. |
| 5323 mask_layer->SetContentBounds(mask_size); | 5333 mask_layer->SetContentBounds(mask_size); |
| 5324 mask_layer->SetContentsScale(1.f, 1.f); | 5334 mask_layer->SetContentsScale(1.f, 1.f); |
| 5325 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5335 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 5326 { | 5336 { |
| 5327 LayerTreeHostImpl::FrameData frame; | 5337 LayerTreeHostImpl::FrameData frame; |
| 5328 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5338 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5329 | 5339 |
| 5330 ASSERT_EQ(1u, frame.render_passes.size()); | 5340 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5331 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5341 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5332 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5342 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5333 frame.render_passes[0]->quad_list[1]->material); | 5343 frame.render_passes[0]->quad_list.at(1)->material); |
| 5334 const RenderPassDrawQuad* replica_quad = | 5344 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5335 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5345 frame.render_passes[0]->quad_list.at(1)); |
| 5336 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5346 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
| 5337 replica_quad->rect.ToString()); | 5347 replica_quad->rect.ToString()); |
| 5338 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5348 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
| 5339 replica_quad->mask_uv_rect.ToString()); | 5349 replica_quad->mask_uv_rect.ToString()); |
| 5340 | 5350 |
| 5341 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5351 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5342 host_impl_->DidDrawAllLayers(frame); | 5352 host_impl_->DidDrawAllLayers(frame); |
| 5343 } | 5353 } |
| 5344 } | 5354 } |
| 5345 | 5355 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5400 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5410 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5401 { | 5411 { |
| 5402 LayerTreeHostImpl::FrameData frame; | 5412 LayerTreeHostImpl::FrameData frame; |
| 5403 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5413 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5404 | 5414 |
| 5405 ASSERT_EQ(1u, frame.render_passes.size()); | 5415 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5406 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5416 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5407 | 5417 |
| 5408 // The surface is 100x50. | 5418 // The surface is 100x50. |
| 5409 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5419 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5410 frame.render_passes[0]->quad_list[0]->material); | 5420 frame.render_passes[0]->quad_list.front()->material); |
| 5411 const RenderPassDrawQuad* render_pass_quad = | 5421 const RenderPassDrawQuad* render_pass_quad = |
| 5412 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5422 RenderPassDrawQuad::MaterialCast( |
| 5423 frame.render_passes[0]->quad_list.front()); |
| 5413 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5424 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5414 render_pass_quad->rect.ToString()); | 5425 render_pass_quad->rect.ToString()); |
| 5415 | 5426 |
| 5416 // The mask covers the owning layer only. | 5427 // The mask covers the owning layer only. |
| 5417 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5428 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5418 frame.render_passes[0]->quad_list[1]->material); | 5429 frame.render_passes[0]->quad_list.at(1)->material); |
| 5419 const RenderPassDrawQuad* replica_quad = | 5430 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5420 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5431 frame.render_passes[0]->quad_list.at(1)); |
| 5421 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5432 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
| 5422 replica_quad->rect.ToString()); | 5433 replica_quad->rect.ToString()); |
| 5423 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), | 5434 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), |
| 5424 replica_quad->mask_uv_rect.ToString()); | 5435 replica_quad->mask_uv_rect.ToString()); |
| 5425 | 5436 |
| 5426 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5437 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5427 host_impl_->DidDrawAllLayers(frame); | 5438 host_impl_->DidDrawAllLayers(frame); |
| 5428 } | 5439 } |
| 5429 | 5440 |
| 5430 // Move the child to (-50, 0) instead. Now the mask should be moved to still | 5441 // Move the child to (-50, 0) instead. Now the mask should be moved to still |
| 5431 // cover the layer being replicated. | 5442 // cover the layer being replicated. |
| 5432 content_child_layer->SetPosition(gfx::Point(-50, 0)); | 5443 content_child_layer->SetPosition(gfx::Point(-50, 0)); |
| 5433 { | 5444 { |
| 5434 LayerTreeHostImpl::FrameData frame; | 5445 LayerTreeHostImpl::FrameData frame; |
| 5435 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5446 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5436 | 5447 |
| 5437 ASSERT_EQ(1u, frame.render_passes.size()); | 5448 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5438 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5449 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
| 5439 | 5450 |
| 5440 // The surface is 100x50 with its origin at (-50, 0). | 5451 // The surface is 100x50 with its origin at (-50, 0). |
| 5441 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5452 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5442 frame.render_passes[0]->quad_list[0]->material); | 5453 frame.render_passes[0]->quad_list.front()->material); |
| 5443 const RenderPassDrawQuad* render_pass_quad = | 5454 const RenderPassDrawQuad* render_pass_quad = |
| 5444 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5455 RenderPassDrawQuad::MaterialCast( |
| 5456 frame.render_passes[0]->quad_list.front()); |
| 5445 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5457 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5446 render_pass_quad->rect.ToString()); | 5458 render_pass_quad->rect.ToString()); |
| 5447 | 5459 |
| 5448 // The mask covers the owning layer only. | 5460 // The mask covers the owning layer only. |
| 5449 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5461 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5450 frame.render_passes[0]->quad_list[1]->material); | 5462 frame.render_passes[0]->quad_list.at(1)->material); |
| 5451 const RenderPassDrawQuad* replica_quad = | 5463 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
| 5452 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5464 frame.render_passes[0]->quad_list.at(1)); |
| 5453 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5465 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
| 5454 replica_quad->rect.ToString()); | 5466 replica_quad->rect.ToString()); |
| 5455 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), | 5467 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), |
| 5456 replica_quad->mask_uv_rect.ToString()); | 5468 replica_quad->mask_uv_rect.ToString()); |
| 5457 | 5469 |
| 5458 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5470 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5459 host_impl_->DidDrawAllLayers(frame); | 5471 host_impl_->DidDrawAllLayers(frame); |
| 5460 } | 5472 } |
| 5461 } | 5473 } |
| 5462 | 5474 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5524 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5536 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
| 5525 { | 5537 { |
| 5526 LayerTreeHostImpl::FrameData frame; | 5538 LayerTreeHostImpl::FrameData frame; |
| 5527 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5539 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5528 | 5540 |
| 5529 ASSERT_EQ(1u, frame.render_passes.size()); | 5541 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5530 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5542 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 5531 | 5543 |
| 5532 // The surface is clipped to 10x20. | 5544 // The surface is clipped to 10x20. |
| 5533 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5545 ASSERT_EQ(DrawQuad::RENDER_PASS, |
| 5534 frame.render_passes[0]->quad_list[0]->material); | 5546 frame.render_passes[0]->quad_list.front()->material); |
| 5535 const RenderPassDrawQuad* render_pass_quad = | 5547 const RenderPassDrawQuad* render_pass_quad = |
| 5536 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5548 RenderPassDrawQuad::MaterialCast( |
| 5549 frame.render_passes[0]->quad_list.front()); |
| 5537 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), | 5550 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), |
| 5538 render_pass_quad->rect.ToString()); | 5551 render_pass_quad->rect.ToString()); |
| 5539 | 5552 |
| 5540 // The masked layer is 50x50, but the surface size is 10x20. So the texture | 5553 // 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. | 5554 // 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 | 5555 // The surface is clipped to (20,10) so the mask texture coords are offset |
| 5543 // by 20/50 and 10/50 | 5556 // by 20/50 and 10/50 |
| 5544 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), | 5557 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), |
| 5545 1.f / 50.f).ToString(), | 5558 1.f / 50.f).ToString(), |
| 5546 render_pass_quad->mask_uv_rect.ToString()); | 5559 render_pass_quad->mask_uv_rect.ToString()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5601 host_impl_->ActivateSyncTree(); | 5614 host_impl_->ActivateSyncTree(); |
| 5602 | 5615 |
| 5603 host_impl_->active_tree()->UpdateDrawProperties(); | 5616 host_impl_->active_tree()->UpdateDrawProperties(); |
| 5604 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5617 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
| 5605 | 5618 |
| 5606 LayerTreeHostImpl::FrameData frame; | 5619 LayerTreeHostImpl::FrameData frame; |
| 5607 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5620 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5608 | 5621 |
| 5609 ASSERT_EQ(1u, frame.render_passes.size()); | 5622 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5610 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5623 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 5611 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 5624 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
| 5612 | 5625 |
| 5613 float edge[24]; | 5626 float edge[24]; |
| 5614 gfx::QuadF device_layer_quad; | 5627 gfx::QuadF device_layer_quad; |
| 5615 bool antialiased = | 5628 bool antialiased = |
| 5616 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 5629 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |
| 5617 quad->quadTransform(), quad, &device_layer_quad, edge); | 5630 quad->quadTransform(), quad, &device_layer_quad, edge); |
| 5618 EXPECT_FALSE(antialiased); | 5631 EXPECT_FALSE(antialiased); |
| 5619 | 5632 |
| 5620 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5633 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 5621 host_impl_->DidDrawAllLayers(frame); | 5634 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7118 // surface. | 7131 // surface. |
| 7119 EXPECT_EQ(0, num_lost_surfaces_); | 7132 EXPECT_EQ(0, num_lost_surfaces_); |
| 7120 host_impl_->DidLoseOutputSurface(); | 7133 host_impl_->DidLoseOutputSurface(); |
| 7121 EXPECT_EQ(1, num_lost_surfaces_); | 7134 EXPECT_EQ(1, num_lost_surfaces_); |
| 7122 host_impl_->DidLoseOutputSurface(); | 7135 host_impl_->DidLoseOutputSurface(); |
| 7123 EXPECT_LE(1, num_lost_surfaces_); | 7136 EXPECT_LE(1, num_lost_surfaces_); |
| 7124 } | 7137 } |
| 7125 | 7138 |
| 7126 } // namespace | 7139 } // namespace |
| 7127 } // namespace cc | 7140 } // namespace cc |
| OLD | NEW |