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 4054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4065 void set_gutter_quad_material(DrawQuad::Material material) { | 4065 void set_gutter_quad_material(DrawQuad::Material material) { |
4066 gutter_quad_material_ = material; | 4066 gutter_quad_material_ = material; |
4067 } | 4067 } |
4068 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { | 4068 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { |
4069 gutter_texture_size_ = gutter_texture_size; | 4069 gutter_texture_size_ = gutter_texture_size; |
4070 } | 4070 } |
4071 | 4071 |
4072 protected: | 4072 protected: |
4073 size_t CountGutterQuads(const QuadList& quad_list) { | 4073 size_t CountGutterQuads(const QuadList& quad_list) { |
4074 size_t num_gutter_quads = 0; | 4074 size_t num_gutter_quads = 0; |
4075 for (size_t i = 0; i < quad_list.size(); ++i) { | 4075 for (QuadList::ConstIterator iter = quad_list.begin(); |
4076 num_gutter_quads += (quad_list[i]->material == | 4076 iter != quad_list.end(); |
4077 gutter_quad_material_) ? 1 : 0; | 4077 ++iter) { |
| 4078 num_gutter_quads += (iter->material == gutter_quad_material_) ? 1 : 0; |
4078 } | 4079 } |
4079 return num_gutter_quads; | 4080 return num_gutter_quads; |
4080 } | 4081 } |
4081 | 4082 |
4082 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { | 4083 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { |
4083 LayerTestCommon::VerifyQuadsExactlyCoverRect( | 4084 LayerTestCommon::VerifyQuadsExactlyCoverRect( |
4084 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); | 4085 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); |
4085 } | 4086 } |
4086 | 4087 |
4087 // Make sure that the texture coordinates match their expectations. | 4088 // Make sure that the texture coordinates match their expectations. |
4088 void ValidateTextureDrawQuads(const QuadList& quad_list) { | 4089 void ValidateTextureDrawQuads(const QuadList& quad_list) { |
4089 for (size_t i = 0; i < quad_list.size(); ++i) { | 4090 for (QuadList::ConstIterator iter = quad_list.begin(); |
4090 if (quad_list[i]->material != DrawQuad::TEXTURE_CONTENT) | 4091 iter != quad_list.end(); |
| 4092 ++iter) { |
| 4093 if (iter->material != DrawQuad::TEXTURE_CONTENT) |
4091 continue; | 4094 continue; |
4092 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(quad_list[i]); | 4095 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(&*iter); |
4093 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( | 4096 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( |
4094 gutter_texture_size_, host_impl_->device_scale_factor()); | 4097 gutter_texture_size_, host_impl_->device_scale_factor()); |
4095 EXPECT_EQ(quad->uv_top_left.x(), | 4098 EXPECT_EQ(quad->uv_top_left.x(), |
4096 quad->rect.x() / gutter_texture_size_pixels.width()); | 4099 quad->rect.x() / gutter_texture_size_pixels.width()); |
4097 EXPECT_EQ(quad->uv_top_left.y(), | 4100 EXPECT_EQ(quad->uv_top_left.y(), |
4098 quad->rect.y() / gutter_texture_size_pixels.height()); | 4101 quad->rect.y() / gutter_texture_size_pixels.height()); |
4099 EXPECT_EQ(quad->uv_bottom_right.x(), | 4102 EXPECT_EQ(quad->uv_bottom_right.x(), |
4100 quad->rect.right() / gutter_texture_size_pixels.width()); | 4103 quad->rect.right() / gutter_texture_size_pixels.width()); |
4101 EXPECT_EQ(quad->uv_bottom_right.y(), | 4104 EXPECT_EQ(quad->uv_bottom_right.y(), |
4102 quad->rect.bottom() / gutter_texture_size_pixels.height()); | 4105 quad->rect.bottom() / gutter_texture_size_pixels.height()); |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4681 &stats_instrumentation_); | 4684 &stats_instrumentation_); |
4682 { | 4685 { |
4683 LayerTreeHostImpl::FrameData frame; | 4686 LayerTreeHostImpl::FrameData frame; |
4684 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4687 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
4685 | 4688 |
4686 // Verify all quads have been computed | 4689 // Verify all quads have been computed |
4687 ASSERT_EQ(2U, frame.render_passes.size()); | 4690 ASSERT_EQ(2U, frame.render_passes.size()); |
4688 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4691 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
4689 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4692 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
4690 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4693 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
4691 frame.render_passes[0]->quad_list[0]->material); | 4694 frame.render_passes[0]->quad_list.front()->material); |
4692 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4695 EXPECT_EQ(DrawQuad::RENDER_PASS, |
4693 frame.render_passes[1]->quad_list[0]->material); | 4696 frame.render_passes[1]->quad_list.front()->material); |
4694 | 4697 |
4695 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4698 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
4696 my_host_impl->DidDrawAllLayers(frame); | 4699 my_host_impl->DidDrawAllLayers(frame); |
4697 } | 4700 } |
4698 } | 4701 } |
4699 | 4702 |
4700 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 4703 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
4701 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 4704 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
4702 new TestSharedBitmapManager()); | 4705 new TestSharedBitmapManager()); |
4703 scoped_ptr<LayerTreeHostImpl> my_host_impl = | 4706 scoped_ptr<LayerTreeHostImpl> my_host_impl = |
4704 SetupLayersForOpacity(false, | 4707 SetupLayersForOpacity(false, |
4705 this, | 4708 this, |
4706 &proxy_, | 4709 &proxy_, |
4707 shared_bitmap_manager.get(), | 4710 shared_bitmap_manager.get(), |
4708 &stats_instrumentation_); | 4711 &stats_instrumentation_); |
4709 { | 4712 { |
4710 LayerTreeHostImpl::FrameData frame; | 4713 LayerTreeHostImpl::FrameData frame; |
4711 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 4714 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
4712 | 4715 |
4713 // Verify all quads have been computed | 4716 // Verify all quads have been computed |
4714 ASSERT_EQ(2U, frame.render_passes.size()); | 4717 ASSERT_EQ(2U, frame.render_passes.size()); |
4715 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 4718 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
4716 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 4719 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
4717 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 4720 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
4718 frame.render_passes[0]->quad_list[0]->material); | 4721 frame.render_passes[0]->quad_list.front()->material); |
4719 EXPECT_EQ(DrawQuad::RENDER_PASS, | 4722 EXPECT_EQ(DrawQuad::RENDER_PASS, |
4720 frame.render_passes[1]->quad_list[0]->material); | 4723 frame.render_passes[1]->quad_list.front()->material); |
4721 | 4724 |
4722 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); | 4725 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); |
4723 my_host_impl->DidDrawAllLayers(frame); | 4726 my_host_impl->DidDrawAllLayers(frame); |
4724 } | 4727 } |
4725 } | 4728 } |
4726 | 4729 |
4727 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { | 4730 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { |
4728 scoped_ptr<TestWebGraphicsContext3D> context = | 4731 scoped_ptr<TestWebGraphicsContext3D> context = |
4729 TestWebGraphicsContext3D::Create(); | 4732 TestWebGraphicsContext3D::Create(); |
4730 TestWebGraphicsContext3D* context3d = context.get(); | 4733 TestWebGraphicsContext3D* context3d = context.get(); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4883 const RenderPass* root_render_pass = frame.render_passes.back(); | 4886 const RenderPass* root_render_pass = frame.render_passes.back(); |
4884 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); | 4887 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
4885 | 4888 |
4886 // Verify the root and child layers' quads are generated and not being | 4889 // Verify the root and child layers' quads are generated and not being |
4887 // culled. | 4890 // culled. |
4888 ASSERT_EQ(2u, root_render_pass->quad_list.size()); | 4891 ASSERT_EQ(2u, root_render_pass->quad_list.size()); |
4889 | 4892 |
4890 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; | 4893 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; |
4891 gfx::RectF expected_child_visible_rect(child->content_bounds()); | 4894 gfx::RectF expected_child_visible_rect(child->content_bounds()); |
4892 EXPECT_RECT_EQ(expected_child_visible_rect, | 4895 EXPECT_RECT_EQ(expected_child_visible_rect, |
4893 root_render_pass->quad_list[0]->visible_rect); | 4896 root_render_pass->quad_list.front()->visible_rect); |
4894 | 4897 |
4895 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 4898 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
4896 gfx::RectF expected_root_visible_rect(root->content_bounds()); | 4899 gfx::RectF expected_root_visible_rect(root->content_bounds()); |
4897 EXPECT_RECT_EQ(expected_root_visible_rect, | 4900 EXPECT_RECT_EQ(expected_root_visible_rect, |
4898 root_render_pass->quad_list[1]->visible_rect); | 4901 root_render_pass->quad_list.ElementAt(1)->visible_rect); |
4899 } | 4902 } |
4900 | 4903 |
4901 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4904 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
4902 host_impl_->DidDrawAllLayers(frame); | 4905 host_impl_->DidDrawAllLayers(frame); |
4903 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); | 4906 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |
4904 } | 4907 } |
4905 }; | 4908 }; |
4906 | 4909 |
4907 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { | 4910 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
4908 scoped_ptr<SolidColorLayerImpl> root = | 4911 scoped_ptr<SolidColorLayerImpl> root = |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5022 float device_scale_factor = 1.f; | 5025 float device_scale_factor = 1.f; |
5023 host_impl_->SetViewportSize(root_size); | 5026 host_impl_->SetViewportSize(root_size); |
5024 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5027 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5025 { | 5028 { |
5026 LayerTreeHostImpl::FrameData frame; | 5029 LayerTreeHostImpl::FrameData frame; |
5027 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5030 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5028 | 5031 |
5029 ASSERT_EQ(1u, frame.render_passes.size()); | 5032 ASSERT_EQ(1u, frame.render_passes.size()); |
5030 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5033 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5031 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5034 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5032 frame.render_passes[0]->quad_list[0]->material); | 5035 frame.render_passes[0]->quad_list.front()->material); |
5033 const RenderPassDrawQuad* render_pass_quad = | 5036 const RenderPassDrawQuad* render_pass_quad = |
5034 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5037 RenderPassDrawQuad::MaterialCast( |
| 5038 frame.render_passes[0]->quad_list.front()); |
5035 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5039 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5036 render_pass_quad->rect.ToString()); | 5040 render_pass_quad->rect.ToString()); |
5037 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5041 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5038 render_pass_quad->mask_uv_rect.ToString()); | 5042 render_pass_quad->mask_uv_rect.ToString()); |
5039 | 5043 |
5040 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5044 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5041 host_impl_->DidDrawAllLayers(frame); | 5045 host_impl_->DidDrawAllLayers(frame); |
5042 } | 5046 } |
5043 | 5047 |
5044 | 5048 |
5045 // Applying a DSF should change the render surface size, but won't affect | 5049 // Applying a DSF should change the render surface size, but won't affect |
5046 // which part of the mask is used. | 5050 // which part of the mask is used. |
5047 device_scale_factor = 2.f; | 5051 device_scale_factor = 2.f; |
5048 gfx::Size device_viewport = | 5052 gfx::Size device_viewport = |
5049 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5053 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
5050 host_impl_->SetViewportSize(device_viewport); | 5054 host_impl_->SetViewportSize(device_viewport); |
5051 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5055 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5052 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5056 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5053 { | 5057 { |
5054 LayerTreeHostImpl::FrameData frame; | 5058 LayerTreeHostImpl::FrameData frame; |
5055 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5059 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5056 | 5060 |
5057 ASSERT_EQ(1u, frame.render_passes.size()); | 5061 ASSERT_EQ(1u, frame.render_passes.size()); |
5058 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5062 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5059 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5063 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5060 frame.render_passes[0]->quad_list[0]->material); | 5064 frame.render_passes[0]->quad_list.front()->material); |
5061 const RenderPassDrawQuad* render_pass_quad = | 5065 const RenderPassDrawQuad* render_pass_quad = |
5062 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5066 RenderPassDrawQuad::MaterialCast( |
| 5067 frame.render_passes[0]->quad_list.front()); |
5063 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5068 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
5064 render_pass_quad->rect.ToString()); | 5069 render_pass_quad->rect.ToString()); |
5065 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5070 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5066 render_pass_quad->mask_uv_rect.ToString()); | 5071 render_pass_quad->mask_uv_rect.ToString()); |
5067 | 5072 |
5068 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5073 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5069 host_impl_->DidDrawAllLayers(frame); | 5074 host_impl_->DidDrawAllLayers(frame); |
5070 } | 5075 } |
5071 | 5076 |
5072 | 5077 |
5073 // Applying an equivalent content scale on the content layer and the mask | 5078 // Applying an equivalent content scale on the content layer and the mask |
5074 // should still result in the same part of the mask being used. | 5079 // should still result in the same part of the mask being used. |
5075 gfx::Size content_bounds = | 5080 gfx::Size content_bounds = |
5076 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, | 5081 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, |
5077 device_scale_factor)); | 5082 device_scale_factor)); |
5078 content_layer->SetContentBounds(content_bounds); | 5083 content_layer->SetContentBounds(content_bounds); |
5079 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5084 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5080 mask_layer->SetContentBounds(content_bounds); | 5085 mask_layer->SetContentBounds(content_bounds); |
5081 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5086 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5082 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5087 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5083 { | 5088 { |
5084 LayerTreeHostImpl::FrameData frame; | 5089 LayerTreeHostImpl::FrameData frame; |
5085 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5090 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5086 | 5091 |
5087 ASSERT_EQ(1u, frame.render_passes.size()); | 5092 ASSERT_EQ(1u, frame.render_passes.size()); |
5088 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5093 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5089 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5094 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5090 frame.render_passes[0]->quad_list[0]->material); | 5095 frame.render_passes[0]->quad_list.front()->material); |
5091 const RenderPassDrawQuad* render_pass_quad = | 5096 const RenderPassDrawQuad* render_pass_quad = |
5092 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5097 RenderPassDrawQuad::MaterialCast( |
| 5098 frame.render_passes[0]->quad_list.front()); |
5093 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), | 5099 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
5094 render_pass_quad->rect.ToString()); | 5100 render_pass_quad->rect.ToString()); |
5095 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5101 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5096 render_pass_quad->mask_uv_rect.ToString()); | 5102 render_pass_quad->mask_uv_rect.ToString()); |
5097 | 5103 |
5098 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5104 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5099 host_impl_->DidDrawAllLayers(frame); | 5105 host_impl_->DidDrawAllLayers(frame); |
5100 } | 5106 } |
5101 } | 5107 } |
5102 | 5108 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5140 float device_scale_factor = 1.f; | 5146 float device_scale_factor = 1.f; |
5141 host_impl_->SetViewportSize(root_size); | 5147 host_impl_->SetViewportSize(root_size); |
5142 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5148 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5143 { | 5149 { |
5144 LayerTreeHostImpl::FrameData frame; | 5150 LayerTreeHostImpl::FrameData frame; |
5145 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5151 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5146 | 5152 |
5147 ASSERT_EQ(1u, frame.render_passes.size()); | 5153 ASSERT_EQ(1u, frame.render_passes.size()); |
5148 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5154 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5149 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5155 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5150 frame.render_passes[0]->quad_list[0]->material); | 5156 frame.render_passes[0]->quad_list.front()->material); |
5151 const RenderPassDrawQuad* render_pass_quad = | 5157 const RenderPassDrawQuad* render_pass_quad = |
5152 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5158 RenderPassDrawQuad::MaterialCast( |
| 5159 frame.render_passes[0]->quad_list.front()); |
5153 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5160 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
5154 render_pass_quad->rect.ToString()); | 5161 render_pass_quad->rect.ToString()); |
5155 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5162 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5156 render_pass_quad->mask_uv_rect.ToString()); | 5163 render_pass_quad->mask_uv_rect.ToString()); |
5157 | 5164 |
5158 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5165 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5159 host_impl_->DidDrawAllLayers(frame); | 5166 host_impl_->DidDrawAllLayers(frame); |
5160 } | 5167 } |
5161 | 5168 |
5162 // Applying a DSF should change the render surface size, but won't affect | 5169 // Applying a DSF should change the render surface size, but won't affect |
5163 // which part of the mask is used. | 5170 // which part of the mask is used. |
5164 device_scale_factor = 2.f; | 5171 device_scale_factor = 2.f; |
5165 gfx::Size device_viewport = | 5172 gfx::Size device_viewport = |
5166 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5173 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
5167 host_impl_->SetViewportSize(device_viewport); | 5174 host_impl_->SetViewportSize(device_viewport); |
5168 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5175 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5169 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5176 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5170 { | 5177 { |
5171 LayerTreeHostImpl::FrameData frame; | 5178 LayerTreeHostImpl::FrameData frame; |
5172 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5179 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5173 | 5180 |
5174 ASSERT_EQ(1u, frame.render_passes.size()); | 5181 ASSERT_EQ(1u, frame.render_passes.size()); |
5175 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5182 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5176 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5183 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5177 frame.render_passes[0]->quad_list[0]->material); | 5184 frame.render_passes[0]->quad_list.front()->material); |
5178 const RenderPassDrawQuad* render_pass_quad = | 5185 const RenderPassDrawQuad* render_pass_quad = |
5179 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5186 RenderPassDrawQuad::MaterialCast( |
| 5187 frame.render_passes[0]->quad_list.front()); |
5180 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5188 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5181 render_pass_quad->rect.ToString()); | 5189 render_pass_quad->rect.ToString()); |
5182 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5190 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5183 render_pass_quad->mask_uv_rect.ToString()); | 5191 render_pass_quad->mask_uv_rect.ToString()); |
5184 | 5192 |
5185 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5193 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5186 host_impl_->DidDrawAllLayers(frame); | 5194 host_impl_->DidDrawAllLayers(frame); |
5187 } | 5195 } |
5188 | 5196 |
5189 // Applying an equivalent content scale on the content layer and the mask | 5197 // Applying an equivalent content scale on the content layer and the mask |
5190 // should still result in the same part of the mask being used. | 5198 // should still result in the same part of the mask being used. |
5191 gfx::Size layer_size_large = | 5199 gfx::Size layer_size_large = |
5192 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5200 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
5193 content_layer->SetContentBounds(layer_size_large); | 5201 content_layer->SetContentBounds(layer_size_large); |
5194 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5202 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5195 gfx::Size mask_size_large = | 5203 gfx::Size mask_size_large = |
5196 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5204 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
5197 mask_layer->SetContentBounds(mask_size_large); | 5205 mask_layer->SetContentBounds(mask_size_large); |
5198 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5206 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5199 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5207 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5200 { | 5208 { |
5201 LayerTreeHostImpl::FrameData frame; | 5209 LayerTreeHostImpl::FrameData frame; |
5202 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5203 | 5211 |
5204 ASSERT_EQ(1u, frame.render_passes.size()); | 5212 ASSERT_EQ(1u, frame.render_passes.size()); |
5205 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5213 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5206 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5214 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5207 frame.render_passes[0]->quad_list[0]->material); | 5215 frame.render_passes[0]->quad_list.front()->material); |
5208 const RenderPassDrawQuad* render_pass_quad = | 5216 const RenderPassDrawQuad* render_pass_quad = |
5209 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5217 RenderPassDrawQuad::MaterialCast( |
| 5218 frame.render_passes[0]->quad_list.front()); |
5210 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5219 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5211 render_pass_quad->rect.ToString()); | 5220 render_pass_quad->rect.ToString()); |
5212 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5221 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5213 render_pass_quad->mask_uv_rect.ToString()); | 5222 render_pass_quad->mask_uv_rect.ToString()); |
5214 | 5223 |
5215 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5224 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5216 host_impl_->DidDrawAllLayers(frame); | 5225 host_impl_->DidDrawAllLayers(frame); |
5217 } | 5226 } |
5218 | 5227 |
5219 // Applying a different contents scale to the mask layer means it will have | 5228 // Applying a different contents scale to the mask layer means it will have |
5220 // a larger texture, but it should use the same tex coords to cover the | 5229 // a larger texture, but it should use the same tex coords to cover the |
5221 // layer it masks. | 5230 // layer it masks. |
5222 mask_layer->SetContentBounds(mask_size); | 5231 mask_layer->SetContentBounds(mask_size); |
5223 mask_layer->SetContentsScale(1.f, 1.f); | 5232 mask_layer->SetContentsScale(1.f, 1.f); |
5224 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5233 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5225 { | 5234 { |
5226 LayerTreeHostImpl::FrameData frame; | 5235 LayerTreeHostImpl::FrameData frame; |
5227 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5236 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5228 | 5237 |
5229 ASSERT_EQ(1u, frame.render_passes.size()); | 5238 ASSERT_EQ(1u, frame.render_passes.size()); |
5230 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5239 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5231 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5240 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5232 frame.render_passes[0]->quad_list[0]->material); | 5241 frame.render_passes[0]->quad_list.front()->material); |
5233 const RenderPassDrawQuad* render_pass_quad = | 5242 const RenderPassDrawQuad* render_pass_quad = |
5234 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5243 RenderPassDrawQuad::MaterialCast( |
| 5244 frame.render_passes[0]->quad_list.front()); |
5235 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5245 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5236 render_pass_quad->rect.ToString()); | 5246 render_pass_quad->rect.ToString()); |
5237 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5247 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5238 render_pass_quad->mask_uv_rect.ToString()); | 5248 render_pass_quad->mask_uv_rect.ToString()); |
5239 | 5249 |
5240 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5250 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5241 host_impl_->DidDrawAllLayers(frame); | 5251 host_impl_->DidDrawAllLayers(frame); |
5242 } | 5252 } |
5243 } | 5253 } |
5244 | 5254 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5287 float device_scale_factor = 1.f; | 5297 float device_scale_factor = 1.f; |
5288 host_impl_->SetViewportSize(root_size); | 5298 host_impl_->SetViewportSize(root_size); |
5289 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5299 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5290 { | 5300 { |
5291 LayerTreeHostImpl::FrameData frame; | 5301 LayerTreeHostImpl::FrameData frame; |
5292 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5302 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5293 | 5303 |
5294 ASSERT_EQ(1u, frame.render_passes.size()); | 5304 ASSERT_EQ(1u, frame.render_passes.size()); |
5295 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5305 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5296 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5306 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5297 frame.render_passes[0]->quad_list[1]->material); | 5307 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5298 const RenderPassDrawQuad* replica_quad = | 5308 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5299 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5309 frame.render_passes[0]->quad_list.ElementAt(1)); |
5300 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), | 5310 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
5301 replica_quad->rect.ToString()); | 5311 replica_quad->rect.ToString()); |
5302 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5312 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5303 replica_quad->mask_uv_rect.ToString()); | 5313 replica_quad->mask_uv_rect.ToString()); |
5304 | 5314 |
5305 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5306 host_impl_->DidDrawAllLayers(frame); | 5316 host_impl_->DidDrawAllLayers(frame); |
5307 } | 5317 } |
5308 | 5318 |
5309 // Applying a DSF should change the render surface size, but won't affect | 5319 // Applying a DSF should change the render surface size, but won't affect |
5310 // which part of the mask is used. | 5320 // which part of the mask is used. |
5311 device_scale_factor = 2.f; | 5321 device_scale_factor = 2.f; |
5312 gfx::Size device_viewport = | 5322 gfx::Size device_viewport = |
5313 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); | 5323 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); |
5314 host_impl_->SetViewportSize(device_viewport); | 5324 host_impl_->SetViewportSize(device_viewport); |
5315 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5325 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5316 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5326 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5317 { | 5327 { |
5318 LayerTreeHostImpl::FrameData frame; | 5328 LayerTreeHostImpl::FrameData frame; |
5319 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5329 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5320 | 5330 |
5321 ASSERT_EQ(1u, frame.render_passes.size()); | 5331 ASSERT_EQ(1u, frame.render_passes.size()); |
5322 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5332 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5323 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5333 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5324 frame.render_passes[0]->quad_list[1]->material); | 5334 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5325 const RenderPassDrawQuad* replica_quad = | 5335 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5326 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5336 frame.render_passes[0]->quad_list.ElementAt(1)); |
5327 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5337 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5328 replica_quad->rect.ToString()); | 5338 replica_quad->rect.ToString()); |
5329 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5339 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5330 replica_quad->mask_uv_rect.ToString()); | 5340 replica_quad->mask_uv_rect.ToString()); |
5331 | 5341 |
5332 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5342 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5333 host_impl_->DidDrawAllLayers(frame); | 5343 host_impl_->DidDrawAllLayers(frame); |
5334 } | 5344 } |
5335 | 5345 |
5336 // Applying an equivalent content scale on the content layer and the mask | 5346 // Applying an equivalent content scale on the content layer and the mask |
5337 // should still result in the same part of the mask being used. | 5347 // should still result in the same part of the mask being used. |
5338 gfx::Size layer_size_large = | 5348 gfx::Size layer_size_large = |
5339 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); | 5349 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); |
5340 content_layer->SetContentBounds(layer_size_large); | 5350 content_layer->SetContentBounds(layer_size_large); |
5341 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5351 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5342 gfx::Size mask_size_large = | 5352 gfx::Size mask_size_large = |
5343 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); | 5353 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); |
5344 mask_layer->SetContentBounds(mask_size_large); | 5354 mask_layer->SetContentBounds(mask_size_large); |
5345 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); | 5355 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
5346 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5356 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5347 { | 5357 { |
5348 LayerTreeHostImpl::FrameData frame; | 5358 LayerTreeHostImpl::FrameData frame; |
5349 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5359 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5350 | 5360 |
5351 ASSERT_EQ(1u, frame.render_passes.size()); | 5361 ASSERT_EQ(1u, frame.render_passes.size()); |
5352 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5362 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5353 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5363 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5354 frame.render_passes[0]->quad_list[1]->material); | 5364 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5355 const RenderPassDrawQuad* replica_quad = | 5365 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5356 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5366 frame.render_passes[0]->quad_list.ElementAt(1)); |
5357 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5367 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5358 replica_quad->rect.ToString()); | 5368 replica_quad->rect.ToString()); |
5359 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5369 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5360 replica_quad->mask_uv_rect.ToString()); | 5370 replica_quad->mask_uv_rect.ToString()); |
5361 | 5371 |
5362 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5372 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5363 host_impl_->DidDrawAllLayers(frame); | 5373 host_impl_->DidDrawAllLayers(frame); |
5364 } | 5374 } |
5365 | 5375 |
5366 // Applying a different contents scale to the mask layer means it will have | 5376 // Applying a different contents scale to the mask layer means it will have |
5367 // a larger texture, but it should use the same tex coords to cover the | 5377 // a larger texture, but it should use the same tex coords to cover the |
5368 // layer it masks. | 5378 // layer it masks. |
5369 mask_layer->SetContentBounds(mask_size); | 5379 mask_layer->SetContentBounds(mask_size); |
5370 mask_layer->SetContentsScale(1.f, 1.f); | 5380 mask_layer->SetContentsScale(1.f, 1.f); |
5371 host_impl_->active_tree()->set_needs_update_draw_properties(); | 5381 host_impl_->active_tree()->set_needs_update_draw_properties(); |
5372 { | 5382 { |
5373 LayerTreeHostImpl::FrameData frame; | 5383 LayerTreeHostImpl::FrameData frame; |
5374 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5384 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5375 | 5385 |
5376 ASSERT_EQ(1u, frame.render_passes.size()); | 5386 ASSERT_EQ(1u, frame.render_passes.size()); |
5377 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5387 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5378 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5388 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5379 frame.render_passes[0]->quad_list[1]->material); | 5389 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5380 const RenderPassDrawQuad* replica_quad = | 5390 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5381 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5391 frame.render_passes[0]->quad_list.ElementAt(1)); |
5382 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), | 5392 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
5383 replica_quad->rect.ToString()); | 5393 replica_quad->rect.ToString()); |
5384 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), | 5394 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
5385 replica_quad->mask_uv_rect.ToString()); | 5395 replica_quad->mask_uv_rect.ToString()); |
5386 | 5396 |
5387 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5397 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5388 host_impl_->DidDrawAllLayers(frame); | 5398 host_impl_->DidDrawAllLayers(frame); |
5389 } | 5399 } |
5390 } | 5400 } |
5391 | 5401 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5446 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5456 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5447 { | 5457 { |
5448 LayerTreeHostImpl::FrameData frame; | 5458 LayerTreeHostImpl::FrameData frame; |
5449 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5459 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5450 | 5460 |
5451 ASSERT_EQ(1u, frame.render_passes.size()); | 5461 ASSERT_EQ(1u, frame.render_passes.size()); |
5452 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5462 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5453 | 5463 |
5454 // The surface is 100x50. | 5464 // The surface is 100x50. |
5455 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5465 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5456 frame.render_passes[0]->quad_list[0]->material); | 5466 frame.render_passes[0]->quad_list.front()->material); |
5457 const RenderPassDrawQuad* render_pass_quad = | 5467 const RenderPassDrawQuad* render_pass_quad = |
5458 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5468 RenderPassDrawQuad::MaterialCast( |
| 5469 frame.render_passes[0]->quad_list.front()); |
5459 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5470 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
5460 render_pass_quad->rect.ToString()); | 5471 render_pass_quad->rect.ToString()); |
5461 | 5472 |
5462 // The mask covers the owning layer only. | 5473 // The mask covers the owning layer only. |
5463 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5474 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5464 frame.render_passes[0]->quad_list[1]->material); | 5475 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5465 const RenderPassDrawQuad* replica_quad = | 5476 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5466 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5477 frame.render_passes[0]->quad_list.ElementAt(1)); |
5467 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), | 5478 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), |
5468 replica_quad->rect.ToString()); | 5479 replica_quad->rect.ToString()); |
5469 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), | 5480 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), |
5470 replica_quad->mask_uv_rect.ToString()); | 5481 replica_quad->mask_uv_rect.ToString()); |
5471 | 5482 |
5472 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5483 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5473 host_impl_->DidDrawAllLayers(frame); | 5484 host_impl_->DidDrawAllLayers(frame); |
5474 } | 5485 } |
5475 | 5486 |
5476 // Move the child to (-50, 0) instead. Now the mask should be moved to still | 5487 // Move the child to (-50, 0) instead. Now the mask should be moved to still |
5477 // cover the layer being replicated. | 5488 // cover the layer being replicated. |
5478 content_child_layer->SetPosition(gfx::Point(-50, 0)); | 5489 content_child_layer->SetPosition(gfx::Point(-50, 0)); |
5479 { | 5490 { |
5480 LayerTreeHostImpl::FrameData frame; | 5491 LayerTreeHostImpl::FrameData frame; |
5481 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5492 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5482 | 5493 |
5483 ASSERT_EQ(1u, frame.render_passes.size()); | 5494 ASSERT_EQ(1u, frame.render_passes.size()); |
5484 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); | 5495 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); |
5485 | 5496 |
5486 // The surface is 100x50 with its origin at (-50, 0). | 5497 // The surface is 100x50 with its origin at (-50, 0). |
5487 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5498 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5488 frame.render_passes[0]->quad_list[0]->material); | 5499 frame.render_passes[0]->quad_list.front()->material); |
5489 const RenderPassDrawQuad* render_pass_quad = | 5500 const RenderPassDrawQuad* render_pass_quad = |
5490 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5501 RenderPassDrawQuad::MaterialCast( |
| 5502 frame.render_passes[0]->quad_list.front()); |
5491 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5503 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
5492 render_pass_quad->rect.ToString()); | 5504 render_pass_quad->rect.ToString()); |
5493 | 5505 |
5494 // The mask covers the owning layer only. | 5506 // The mask covers the owning layer only. |
5495 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5507 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5496 frame.render_passes[0]->quad_list[1]->material); | 5508 frame.render_passes[0]->quad_list.ElementAt(1)->material); |
5497 const RenderPassDrawQuad* replica_quad = | 5509 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( |
5498 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); | 5510 frame.render_passes[0]->quad_list.ElementAt(1)); |
5499 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), | 5511 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), |
5500 replica_quad->rect.ToString()); | 5512 replica_quad->rect.ToString()); |
5501 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), | 5513 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), |
5502 replica_quad->mask_uv_rect.ToString()); | 5514 replica_quad->mask_uv_rect.ToString()); |
5503 | 5515 |
5504 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5516 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5505 host_impl_->DidDrawAllLayers(frame); | 5517 host_impl_->DidDrawAllLayers(frame); |
5506 } | 5518 } |
5507 } | 5519 } |
5508 | 5520 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5570 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 5582 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
5571 { | 5583 { |
5572 LayerTreeHostImpl::FrameData frame; | 5584 LayerTreeHostImpl::FrameData frame; |
5573 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5585 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5574 | 5586 |
5575 ASSERT_EQ(1u, frame.render_passes.size()); | 5587 ASSERT_EQ(1u, frame.render_passes.size()); |
5576 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 5588 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
5577 | 5589 |
5578 // The surface is clipped to 10x20. | 5590 // The surface is clipped to 10x20. |
5579 ASSERT_EQ(DrawQuad::RENDER_PASS, | 5591 ASSERT_EQ(DrawQuad::RENDER_PASS, |
5580 frame.render_passes[0]->quad_list[0]->material); | 5592 frame.render_passes[0]->quad_list.front()->material); |
5581 const RenderPassDrawQuad* render_pass_quad = | 5593 const RenderPassDrawQuad* render_pass_quad = |
5582 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); | 5594 RenderPassDrawQuad::MaterialCast( |
| 5595 frame.render_passes[0]->quad_list.front()); |
5583 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), | 5596 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), |
5584 render_pass_quad->rect.ToString()); | 5597 render_pass_quad->rect.ToString()); |
5585 | 5598 |
5586 // The masked layer is 50x50, but the surface size is 10x20. So the texture | 5599 // The masked layer is 50x50, but the surface size is 10x20. So the texture |
5587 // coords in the mask are scaled by 10/50 and 20/50. | 5600 // coords in the mask are scaled by 10/50 and 20/50. |
5588 // The surface is clipped to (20,10) so the mask texture coords are offset | 5601 // The surface is clipped to (20,10) so the mask texture coords are offset |
5589 // by 20/50 and 10/50 | 5602 // by 20/50 and 10/50 |
5590 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), | 5603 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), |
5591 1.f / 50.f).ToString(), | 5604 1.f / 50.f).ToString(), |
5592 render_pass_quad->mask_uv_rect.ToString()); | 5605 render_pass_quad->mask_uv_rect.ToString()); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5647 host_impl_->ActivateSyncTree(); | 5660 host_impl_->ActivateSyncTree(); |
5648 | 5661 |
5649 host_impl_->active_tree()->UpdateDrawProperties(); | 5662 host_impl_->active_tree()->UpdateDrawProperties(); |
5650 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5663 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
5651 | 5664 |
5652 LayerTreeHostImpl::FrameData frame; | 5665 LayerTreeHostImpl::FrameData frame; |
5653 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5666 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5654 | 5667 |
5655 ASSERT_EQ(1u, frame.render_passes.size()); | 5668 ASSERT_EQ(1u, frame.render_passes.size()); |
5656 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5669 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
5657 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; | 5670 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
5658 | 5671 |
5659 float edge[24]; | 5672 float edge[24]; |
5660 gfx::QuadF device_layer_quad; | 5673 gfx::QuadF device_layer_quad; |
5661 bool antialiased = | 5674 bool antialiased = |
5662 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( | 5675 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( |
5663 quad->quadTransform(), quad, &device_layer_quad, edge); | 5676 quad->quadTransform(), quad, &device_layer_quad, edge); |
5664 EXPECT_FALSE(antialiased); | 5677 EXPECT_FALSE(antialiased); |
5665 | 5678 |
5666 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5679 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5667 host_impl_->DidDrawAllLayers(frame); | 5680 host_impl_->DidDrawAllLayers(frame); |
(...skipping 1502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7170 // surface. | 7183 // surface. |
7171 EXPECT_EQ(0, num_lost_surfaces_); | 7184 EXPECT_EQ(0, num_lost_surfaces_); |
7172 host_impl_->DidLoseOutputSurface(); | 7185 host_impl_->DidLoseOutputSurface(); |
7173 EXPECT_EQ(1, num_lost_surfaces_); | 7186 EXPECT_EQ(1, num_lost_surfaces_); |
7174 host_impl_->DidLoseOutputSurface(); | 7187 host_impl_->DidLoseOutputSurface(); |
7175 EXPECT_LE(1, num_lost_surfaces_); | 7188 EXPECT_LE(1, num_lost_surfaces_); |
7176 } | 7189 } |
7177 | 7190 |
7178 } // namespace | 7191 } // namespace |
7179 } // namespace cc | 7192 } // namespace cc |
OLD | NEW |