Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 448303002: Use custom ListContainer to allocate DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perftest
Patch Set: change header files to try fix compile error Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_pixeltest_on_demand_raster.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698