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 |