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 |