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

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: use at() for cc message unittest Created 6 years, 3 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 4008 matching lines...) Expand 10 before | Expand all | Expand 10 after
4019 void set_gutter_quad_material(DrawQuad::Material material) { 4019 void set_gutter_quad_material(DrawQuad::Material material) {
4020 gutter_quad_material_ = material; 4020 gutter_quad_material_ = material;
4021 } 4021 }
4022 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { 4022 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) {
4023 gutter_texture_size_ = gutter_texture_size; 4023 gutter_texture_size_ = gutter_texture_size;
4024 } 4024 }
4025 4025
4026 protected: 4026 protected:
4027 size_t CountGutterQuads(const QuadList& quad_list) { 4027 size_t CountGutterQuads(const QuadList& quad_list) {
4028 size_t num_gutter_quads = 0; 4028 size_t num_gutter_quads = 0;
4029 for (size_t i = 0; i < quad_list.size(); ++i) { 4029 for (QuadList::ConstIterator iter = quad_list.begin();
4030 num_gutter_quads += (quad_list[i]->material == 4030 iter != quad_list.end();
4031 gutter_quad_material_) ? 1 : 0; 4031 ++iter) {
4032 num_gutter_quads += (iter->material == gutter_quad_material_) ? 1 : 0;
4032 } 4033 }
4033 return num_gutter_quads; 4034 return num_gutter_quads;
4034 } 4035 }
4035 4036
4036 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) { 4037 void VerifyQuadsExactlyCoverViewport(const QuadList& quad_list) {
4037 LayerTestCommon::VerifyQuadsExactlyCoverRect( 4038 LayerTestCommon::VerifyQuadsExactlyCoverRect(
4038 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_))); 4039 quad_list, gfx::Rect(DipSizeToPixelSize(viewport_size_)));
4039 } 4040 }
4040 4041
4041 // Make sure that the texture coordinates match their expectations. 4042 // Make sure that the texture coordinates match their expectations.
4042 void ValidateTextureDrawQuads(const QuadList& quad_list) { 4043 void ValidateTextureDrawQuads(const QuadList& quad_list) {
4043 for (size_t i = 0; i < quad_list.size(); ++i) { 4044 for (QuadList::ConstIterator iter = quad_list.begin();
4044 if (quad_list[i]->material != DrawQuad::TEXTURE_CONTENT) 4045 iter != quad_list.end();
4046 ++iter) {
4047 if (iter->material != DrawQuad::TEXTURE_CONTENT)
4045 continue; 4048 continue;
4046 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(quad_list[i]); 4049 const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(&*iter);
4047 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize( 4050 gfx::SizeF gutter_texture_size_pixels = gfx::ScaleSize(
4048 gutter_texture_size_, host_impl_->device_scale_factor()); 4051 gutter_texture_size_, host_impl_->device_scale_factor());
4049 EXPECT_EQ(quad->uv_top_left.x(), 4052 EXPECT_EQ(quad->uv_top_left.x(),
4050 quad->rect.x() / gutter_texture_size_pixels.width()); 4053 quad->rect.x() / gutter_texture_size_pixels.width());
4051 EXPECT_EQ(quad->uv_top_left.y(), 4054 EXPECT_EQ(quad->uv_top_left.y(),
4052 quad->rect.y() / gutter_texture_size_pixels.height()); 4055 quad->rect.y() / gutter_texture_size_pixels.height());
4053 EXPECT_EQ(quad->uv_bottom_right.x(), 4056 EXPECT_EQ(quad->uv_bottom_right.x(),
4054 quad->rect.right() / gutter_texture_size_pixels.width()); 4057 quad->rect.right() / gutter_texture_size_pixels.width());
4055 EXPECT_EQ(quad->uv_bottom_right.y(), 4058 EXPECT_EQ(quad->uv_bottom_right.y(),
4056 quad->rect.bottom() / gutter_texture_size_pixels.height()); 4059 quad->rect.bottom() / gutter_texture_size_pixels.height());
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
4635 &stats_instrumentation_); 4638 &stats_instrumentation_);
4636 { 4639 {
4637 LayerTreeHostImpl::FrameData frame; 4640 LayerTreeHostImpl::FrameData frame;
4638 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); 4641 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame));
4639 4642
4640 // Verify all quads have been computed 4643 // Verify all quads have been computed
4641 ASSERT_EQ(2U, frame.render_passes.size()); 4644 ASSERT_EQ(2U, frame.render_passes.size());
4642 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 4645 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
4643 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 4646 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
4644 EXPECT_EQ(DrawQuad::SOLID_COLOR, 4647 EXPECT_EQ(DrawQuad::SOLID_COLOR,
4645 frame.render_passes[0]->quad_list[0]->material); 4648 frame.render_passes[0]->quad_list.front()->material);
4646 EXPECT_EQ(DrawQuad::RENDER_PASS, 4649 EXPECT_EQ(DrawQuad::RENDER_PASS,
4647 frame.render_passes[1]->quad_list[0]->material); 4650 frame.render_passes[1]->quad_list.front()->material);
4648 4651
4649 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 4652 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
4650 my_host_impl->DidDrawAllLayers(frame); 4653 my_host_impl->DidDrawAllLayers(frame);
4651 } 4654 }
4652 } 4655 }
4653 4656
4654 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { 4657 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
4655 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 4658 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
4656 new TestSharedBitmapManager()); 4659 new TestSharedBitmapManager());
4657 scoped_ptr<LayerTreeHostImpl> my_host_impl = 4660 scoped_ptr<LayerTreeHostImpl> my_host_impl =
4658 SetupLayersForOpacity(false, 4661 SetupLayersForOpacity(false,
4659 this, 4662 this,
4660 &proxy_, 4663 &proxy_,
4661 shared_bitmap_manager.get(), 4664 shared_bitmap_manager.get(),
4662 &stats_instrumentation_); 4665 &stats_instrumentation_);
4663 { 4666 {
4664 LayerTreeHostImpl::FrameData frame; 4667 LayerTreeHostImpl::FrameData frame;
4665 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); 4668 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame));
4666 4669
4667 // Verify all quads have been computed 4670 // Verify all quads have been computed
4668 ASSERT_EQ(2U, frame.render_passes.size()); 4671 ASSERT_EQ(2U, frame.render_passes.size());
4669 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 4672 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
4670 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 4673 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
4671 EXPECT_EQ(DrawQuad::SOLID_COLOR, 4674 EXPECT_EQ(DrawQuad::SOLID_COLOR,
4672 frame.render_passes[0]->quad_list[0]->material); 4675 frame.render_passes[0]->quad_list.front()->material);
4673 EXPECT_EQ(DrawQuad::RENDER_PASS, 4676 EXPECT_EQ(DrawQuad::RENDER_PASS,
4674 frame.render_passes[1]->quad_list[0]->material); 4677 frame.render_passes[1]->quad_list.front()->material);
4675 4678
4676 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 4679 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
4677 my_host_impl->DidDrawAllLayers(frame); 4680 my_host_impl->DidDrawAllLayers(frame);
4678 } 4681 }
4679 } 4682 }
4680 4683
4681 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { 4684 TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
4682 scoped_ptr<TestWebGraphicsContext3D> context = 4685 scoped_ptr<TestWebGraphicsContext3D> context =
4683 TestWebGraphicsContext3D::Create(); 4686 TestWebGraphicsContext3D::Create();
4684 TestWebGraphicsContext3D* context3d = context.get(); 4687 TestWebGraphicsContext3D* context3d = context.get();
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
4837 const RenderPass* root_render_pass = frame.render_passes.back(); 4840 const RenderPass* root_render_pass = frame.render_passes.back();
4838 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); 4841 EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect);
4839 4842
4840 // Verify the root and child layers' quads are generated and not being 4843 // Verify the root and child layers' quads are generated and not being
4841 // culled. 4844 // culled.
4842 ASSERT_EQ(2u, root_render_pass->quad_list.size()); 4845 ASSERT_EQ(2u, root_render_pass->quad_list.size());
4843 4846
4844 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0]; 4847 LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0];
4845 gfx::RectF expected_child_visible_rect(child->content_bounds()); 4848 gfx::RectF expected_child_visible_rect(child->content_bounds());
4846 EXPECT_RECT_EQ(expected_child_visible_rect, 4849 EXPECT_RECT_EQ(expected_child_visible_rect,
4847 root_render_pass->quad_list[0]->visible_rect); 4850 root_render_pass->quad_list.front()->visible_rect);
4848 4851
4849 LayerImpl* root = host_impl_->active_tree()->root_layer(); 4852 LayerImpl* root = host_impl_->active_tree()->root_layer();
4850 gfx::RectF expected_root_visible_rect(root->content_bounds()); 4853 gfx::RectF expected_root_visible_rect(root->content_bounds());
4851 EXPECT_RECT_EQ(expected_root_visible_rect, 4854 EXPECT_RECT_EQ(expected_root_visible_rect,
4852 root_render_pass->quad_list[1]->visible_rect); 4855 root_render_pass->quad_list.at(1)->visible_rect);
4853 } 4856 }
4854 4857
4855 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4858 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4856 host_impl_->DidDrawAllLayers(frame); 4859 host_impl_->DidDrawAllLayers(frame);
4857 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); 4860 EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame));
4858 } 4861 }
4859 }; 4862 };
4860 4863
4861 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { 4864 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) {
4862 scoped_ptr<SolidColorLayerImpl> root = 4865 scoped_ptr<SolidColorLayerImpl> root =
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
4976 float device_scale_factor = 1.f; 4979 float device_scale_factor = 1.f;
4977 host_impl_->SetViewportSize(root_size); 4980 host_impl_->SetViewportSize(root_size);
4978 host_impl_->SetDeviceScaleFactor(device_scale_factor); 4981 host_impl_->SetDeviceScaleFactor(device_scale_factor);
4979 { 4982 {
4980 LayerTreeHostImpl::FrameData frame; 4983 LayerTreeHostImpl::FrameData frame;
4981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4984 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4982 4985
4983 ASSERT_EQ(1u, frame.render_passes.size()); 4986 ASSERT_EQ(1u, frame.render_passes.size());
4984 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4987 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
4985 ASSERT_EQ(DrawQuad::RENDER_PASS, 4988 ASSERT_EQ(DrawQuad::RENDER_PASS,
4986 frame.render_passes[0]->quad_list[0]->material); 4989 frame.render_passes[0]->quad_list.front()->material);
4987 const RenderPassDrawQuad* render_pass_quad = 4990 const RenderPassDrawQuad* render_pass_quad =
4988 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 4991 RenderPassDrawQuad::MaterialCast(
4992 frame.render_passes[0]->quad_list.front());
4989 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 4993 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
4990 render_pass_quad->rect.ToString()); 4994 render_pass_quad->rect.ToString());
4991 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 4995 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
4992 render_pass_quad->mask_uv_rect.ToString()); 4996 render_pass_quad->mask_uv_rect.ToString());
4993 4997
4994 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4998 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4995 host_impl_->DidDrawAllLayers(frame); 4999 host_impl_->DidDrawAllLayers(frame);
4996 } 5000 }
4997 5001
4998 5002
4999 // Applying a DSF should change the render surface size, but won't affect 5003 // Applying a DSF should change the render surface size, but won't affect
5000 // which part of the mask is used. 5004 // which part of the mask is used.
5001 device_scale_factor = 2.f; 5005 device_scale_factor = 2.f;
5002 gfx::Size device_viewport = 5006 gfx::Size device_viewport =
5003 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 5007 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
5004 host_impl_->SetViewportSize(device_viewport); 5008 host_impl_->SetViewportSize(device_viewport);
5005 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5009 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5006 host_impl_->active_tree()->set_needs_update_draw_properties(); 5010 host_impl_->active_tree()->set_needs_update_draw_properties();
5007 { 5011 {
5008 LayerTreeHostImpl::FrameData frame; 5012 LayerTreeHostImpl::FrameData frame;
5009 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5013 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5010 5014
5011 ASSERT_EQ(1u, frame.render_passes.size()); 5015 ASSERT_EQ(1u, frame.render_passes.size());
5012 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5016 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5013 ASSERT_EQ(DrawQuad::RENDER_PASS, 5017 ASSERT_EQ(DrawQuad::RENDER_PASS,
5014 frame.render_passes[0]->quad_list[0]->material); 5018 frame.render_passes[0]->quad_list.front()->material);
5015 const RenderPassDrawQuad* render_pass_quad = 5019 const RenderPassDrawQuad* render_pass_quad =
5016 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5020 RenderPassDrawQuad::MaterialCast(
5021 frame.render_passes[0]->quad_list.front());
5017 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 5022 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
5018 render_pass_quad->rect.ToString()); 5023 render_pass_quad->rect.ToString());
5019 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5024 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5020 render_pass_quad->mask_uv_rect.ToString()); 5025 render_pass_quad->mask_uv_rect.ToString());
5021 5026
5022 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5027 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5023 host_impl_->DidDrawAllLayers(frame); 5028 host_impl_->DidDrawAllLayers(frame);
5024 } 5029 }
5025 5030
5026 5031
5027 // Applying an equivalent content scale on the content layer and the mask 5032 // Applying an equivalent content scale on the content layer and the mask
5028 // should still result in the same part of the mask being used. 5033 // should still result in the same part of the mask being used.
5029 gfx::Size content_bounds = 5034 gfx::Size content_bounds =
5030 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, 5035 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size,
5031 device_scale_factor)); 5036 device_scale_factor));
5032 content_layer->SetContentBounds(content_bounds); 5037 content_layer->SetContentBounds(content_bounds);
5033 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5038 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5034 mask_layer->SetContentBounds(content_bounds); 5039 mask_layer->SetContentBounds(content_bounds);
5035 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5040 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5036 host_impl_->active_tree()->set_needs_update_draw_properties(); 5041 host_impl_->active_tree()->set_needs_update_draw_properties();
5037 { 5042 {
5038 LayerTreeHostImpl::FrameData frame; 5043 LayerTreeHostImpl::FrameData frame;
5039 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5044 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5040 5045
5041 ASSERT_EQ(1u, frame.render_passes.size()); 5046 ASSERT_EQ(1u, frame.render_passes.size());
5042 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5047 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5043 ASSERT_EQ(DrawQuad::RENDER_PASS, 5048 ASSERT_EQ(DrawQuad::RENDER_PASS,
5044 frame.render_passes[0]->quad_list[0]->material); 5049 frame.render_passes[0]->quad_list.front()->material);
5045 const RenderPassDrawQuad* render_pass_quad = 5050 const RenderPassDrawQuad* render_pass_quad =
5046 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5051 RenderPassDrawQuad::MaterialCast(
5052 frame.render_passes[0]->quad_list.front());
5047 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 5053 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
5048 render_pass_quad->rect.ToString()); 5054 render_pass_quad->rect.ToString());
5049 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5055 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5050 render_pass_quad->mask_uv_rect.ToString()); 5056 render_pass_quad->mask_uv_rect.ToString());
5051 5057
5052 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5058 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5053 host_impl_->DidDrawAllLayers(frame); 5059 host_impl_->DidDrawAllLayers(frame);
5054 } 5060 }
5055 } 5061 }
5056 5062
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
5094 float device_scale_factor = 1.f; 5100 float device_scale_factor = 1.f;
5095 host_impl_->SetViewportSize(root_size); 5101 host_impl_->SetViewportSize(root_size);
5096 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5102 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5097 { 5103 {
5098 LayerTreeHostImpl::FrameData frame; 5104 LayerTreeHostImpl::FrameData frame;
5099 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5105 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5100 5106
5101 ASSERT_EQ(1u, frame.render_passes.size()); 5107 ASSERT_EQ(1u, frame.render_passes.size());
5102 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5108 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5103 ASSERT_EQ(DrawQuad::RENDER_PASS, 5109 ASSERT_EQ(DrawQuad::RENDER_PASS,
5104 frame.render_passes[0]->quad_list[0]->material); 5110 frame.render_passes[0]->quad_list.front()->material);
5105 const RenderPassDrawQuad* render_pass_quad = 5111 const RenderPassDrawQuad* render_pass_quad =
5106 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5112 RenderPassDrawQuad::MaterialCast(
5113 frame.render_passes[0]->quad_list.front());
5107 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 5114 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
5108 render_pass_quad->rect.ToString()); 5115 render_pass_quad->rect.ToString());
5109 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5116 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5110 render_pass_quad->mask_uv_rect.ToString()); 5117 render_pass_quad->mask_uv_rect.ToString());
5111 5118
5112 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5119 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5113 host_impl_->DidDrawAllLayers(frame); 5120 host_impl_->DidDrawAllLayers(frame);
5114 } 5121 }
5115 5122
5116 // Applying a DSF should change the render surface size, but won't affect 5123 // Applying a DSF should change the render surface size, but won't affect
5117 // which part of the mask is used. 5124 // which part of the mask is used.
5118 device_scale_factor = 2.f; 5125 device_scale_factor = 2.f;
5119 gfx::Size device_viewport = 5126 gfx::Size device_viewport =
5120 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 5127 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
5121 host_impl_->SetViewportSize(device_viewport); 5128 host_impl_->SetViewportSize(device_viewport);
5122 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5129 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5123 host_impl_->active_tree()->set_needs_update_draw_properties(); 5130 host_impl_->active_tree()->set_needs_update_draw_properties();
5124 { 5131 {
5125 LayerTreeHostImpl::FrameData frame; 5132 LayerTreeHostImpl::FrameData frame;
5126 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5133 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5127 5134
5128 ASSERT_EQ(1u, frame.render_passes.size()); 5135 ASSERT_EQ(1u, frame.render_passes.size());
5129 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5136 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5130 ASSERT_EQ(DrawQuad::RENDER_PASS, 5137 ASSERT_EQ(DrawQuad::RENDER_PASS,
5131 frame.render_passes[0]->quad_list[0]->material); 5138 frame.render_passes[0]->quad_list.front()->material);
5132 const RenderPassDrawQuad* render_pass_quad = 5139 const RenderPassDrawQuad* render_pass_quad =
5133 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5140 RenderPassDrawQuad::MaterialCast(
5141 frame.render_passes[0]->quad_list.front());
5134 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5142 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5135 render_pass_quad->rect.ToString()); 5143 render_pass_quad->rect.ToString());
5136 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5144 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5137 render_pass_quad->mask_uv_rect.ToString()); 5145 render_pass_quad->mask_uv_rect.ToString());
5138 5146
5139 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5147 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5140 host_impl_->DidDrawAllLayers(frame); 5148 host_impl_->DidDrawAllLayers(frame);
5141 } 5149 }
5142 5150
5143 // Applying an equivalent content scale on the content layer and the mask 5151 // Applying an equivalent content scale on the content layer and the mask
5144 // should still result in the same part of the mask being used. 5152 // should still result in the same part of the mask being used.
5145 gfx::Size layer_size_large = 5153 gfx::Size layer_size_large =
5146 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 5154 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
5147 content_layer->SetContentBounds(layer_size_large); 5155 content_layer->SetContentBounds(layer_size_large);
5148 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5156 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5149 gfx::Size mask_size_large = 5157 gfx::Size mask_size_large =
5150 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 5158 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
5151 mask_layer->SetContentBounds(mask_size_large); 5159 mask_layer->SetContentBounds(mask_size_large);
5152 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5160 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5153 host_impl_->active_tree()->set_needs_update_draw_properties(); 5161 host_impl_->active_tree()->set_needs_update_draw_properties();
5154 { 5162 {
5155 LayerTreeHostImpl::FrameData frame; 5163 LayerTreeHostImpl::FrameData frame;
5156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5164 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5157 5165
5158 ASSERT_EQ(1u, frame.render_passes.size()); 5166 ASSERT_EQ(1u, frame.render_passes.size());
5159 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5167 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5160 ASSERT_EQ(DrawQuad::RENDER_PASS, 5168 ASSERT_EQ(DrawQuad::RENDER_PASS,
5161 frame.render_passes[0]->quad_list[0]->material); 5169 frame.render_passes[0]->quad_list.front()->material);
5162 const RenderPassDrawQuad* render_pass_quad = 5170 const RenderPassDrawQuad* render_pass_quad =
5163 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5171 RenderPassDrawQuad::MaterialCast(
5172 frame.render_passes[0]->quad_list.front());
5164 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5173 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5165 render_pass_quad->rect.ToString()); 5174 render_pass_quad->rect.ToString());
5166 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5175 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5167 render_pass_quad->mask_uv_rect.ToString()); 5176 render_pass_quad->mask_uv_rect.ToString());
5168 5177
5169 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5178 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5170 host_impl_->DidDrawAllLayers(frame); 5179 host_impl_->DidDrawAllLayers(frame);
5171 } 5180 }
5172 5181
5173 // Applying a different contents scale to the mask layer means it will have 5182 // Applying a different contents scale to the mask layer means it will have
5174 // a larger texture, but it should use the same tex coords to cover the 5183 // a larger texture, but it should use the same tex coords to cover the
5175 // layer it masks. 5184 // layer it masks.
5176 mask_layer->SetContentBounds(mask_size); 5185 mask_layer->SetContentBounds(mask_size);
5177 mask_layer->SetContentsScale(1.f, 1.f); 5186 mask_layer->SetContentsScale(1.f, 1.f);
5178 host_impl_->active_tree()->set_needs_update_draw_properties(); 5187 host_impl_->active_tree()->set_needs_update_draw_properties();
5179 { 5188 {
5180 LayerTreeHostImpl::FrameData frame; 5189 LayerTreeHostImpl::FrameData frame;
5181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5190 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5182 5191
5183 ASSERT_EQ(1u, frame.render_passes.size()); 5192 ASSERT_EQ(1u, frame.render_passes.size());
5184 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5193 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5185 ASSERT_EQ(DrawQuad::RENDER_PASS, 5194 ASSERT_EQ(DrawQuad::RENDER_PASS,
5186 frame.render_passes[0]->quad_list[0]->material); 5195 frame.render_passes[0]->quad_list.front()->material);
5187 const RenderPassDrawQuad* render_pass_quad = 5196 const RenderPassDrawQuad* render_pass_quad =
5188 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5197 RenderPassDrawQuad::MaterialCast(
5198 frame.render_passes[0]->quad_list.front());
5189 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5199 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5190 render_pass_quad->rect.ToString()); 5200 render_pass_quad->rect.ToString());
5191 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5201 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5192 render_pass_quad->mask_uv_rect.ToString()); 5202 render_pass_quad->mask_uv_rect.ToString());
5193 5203
5194 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5195 host_impl_->DidDrawAllLayers(frame); 5205 host_impl_->DidDrawAllLayers(frame);
5196 } 5206 }
5197 } 5207 }
5198 5208
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
5241 float device_scale_factor = 1.f; 5251 float device_scale_factor = 1.f;
5242 host_impl_->SetViewportSize(root_size); 5252 host_impl_->SetViewportSize(root_size);
5243 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5253 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5244 { 5254 {
5245 LayerTreeHostImpl::FrameData frame; 5255 LayerTreeHostImpl::FrameData frame;
5246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5256 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5247 5257
5248 ASSERT_EQ(1u, frame.render_passes.size()); 5258 ASSERT_EQ(1u, frame.render_passes.size());
5249 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5259 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5250 ASSERT_EQ(DrawQuad::RENDER_PASS, 5260 ASSERT_EQ(DrawQuad::RENDER_PASS,
5251 frame.render_passes[0]->quad_list[1]->material); 5261 frame.render_passes[0]->quad_list.at(1)->material);
5252 const RenderPassDrawQuad* replica_quad = 5262 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5253 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5263 frame.render_passes[0]->quad_list.at(1));
5254 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 5264 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
5255 replica_quad->rect.ToString()); 5265 replica_quad->rect.ToString());
5256 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5266 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5257 replica_quad->mask_uv_rect.ToString()); 5267 replica_quad->mask_uv_rect.ToString());
5258 5268
5259 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5269 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5260 host_impl_->DidDrawAllLayers(frame); 5270 host_impl_->DidDrawAllLayers(frame);
5261 } 5271 }
5262 5272
5263 // Applying a DSF should change the render surface size, but won't affect 5273 // Applying a DSF should change the render surface size, but won't affect
5264 // which part of the mask is used. 5274 // which part of the mask is used.
5265 device_scale_factor = 2.f; 5275 device_scale_factor = 2.f;
5266 gfx::Size device_viewport = 5276 gfx::Size device_viewport =
5267 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 5277 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
5268 host_impl_->SetViewportSize(device_viewport); 5278 host_impl_->SetViewportSize(device_viewport);
5269 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5279 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5270 host_impl_->active_tree()->set_needs_update_draw_properties(); 5280 host_impl_->active_tree()->set_needs_update_draw_properties();
5271 { 5281 {
5272 LayerTreeHostImpl::FrameData frame; 5282 LayerTreeHostImpl::FrameData frame;
5273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5283 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5274 5284
5275 ASSERT_EQ(1u, frame.render_passes.size()); 5285 ASSERT_EQ(1u, frame.render_passes.size());
5276 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5286 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5277 ASSERT_EQ(DrawQuad::RENDER_PASS, 5287 ASSERT_EQ(DrawQuad::RENDER_PASS,
5278 frame.render_passes[0]->quad_list[1]->material); 5288 frame.render_passes[0]->quad_list.at(1)->material);
5279 const RenderPassDrawQuad* replica_quad = 5289 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5280 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5290 frame.render_passes[0]->quad_list.at(1));
5281 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5291 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5282 replica_quad->rect.ToString()); 5292 replica_quad->rect.ToString());
5283 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5293 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5284 replica_quad->mask_uv_rect.ToString()); 5294 replica_quad->mask_uv_rect.ToString());
5285 5295
5286 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5296 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5287 host_impl_->DidDrawAllLayers(frame); 5297 host_impl_->DidDrawAllLayers(frame);
5288 } 5298 }
5289 5299
5290 // Applying an equivalent content scale on the content layer and the mask 5300 // Applying an equivalent content scale on the content layer and the mask
5291 // should still result in the same part of the mask being used. 5301 // should still result in the same part of the mask being used.
5292 gfx::Size layer_size_large = 5302 gfx::Size layer_size_large =
5293 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 5303 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
5294 content_layer->SetContentBounds(layer_size_large); 5304 content_layer->SetContentBounds(layer_size_large);
5295 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5305 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5296 gfx::Size mask_size_large = 5306 gfx::Size mask_size_large =
5297 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 5307 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
5298 mask_layer->SetContentBounds(mask_size_large); 5308 mask_layer->SetContentBounds(mask_size_large);
5299 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5309 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5300 host_impl_->active_tree()->set_needs_update_draw_properties(); 5310 host_impl_->active_tree()->set_needs_update_draw_properties();
5301 { 5311 {
5302 LayerTreeHostImpl::FrameData frame; 5312 LayerTreeHostImpl::FrameData frame;
5303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5313 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5304 5314
5305 ASSERT_EQ(1u, frame.render_passes.size()); 5315 ASSERT_EQ(1u, frame.render_passes.size());
5306 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5316 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5307 ASSERT_EQ(DrawQuad::RENDER_PASS, 5317 ASSERT_EQ(DrawQuad::RENDER_PASS,
5308 frame.render_passes[0]->quad_list[1]->material); 5318 frame.render_passes[0]->quad_list.at(1)->material);
5309 const RenderPassDrawQuad* replica_quad = 5319 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5310 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5320 frame.render_passes[0]->quad_list.at(1));
5311 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5321 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5312 replica_quad->rect.ToString()); 5322 replica_quad->rect.ToString());
5313 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5323 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5314 replica_quad->mask_uv_rect.ToString()); 5324 replica_quad->mask_uv_rect.ToString());
5315 5325
5316 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5317 host_impl_->DidDrawAllLayers(frame); 5327 host_impl_->DidDrawAllLayers(frame);
5318 } 5328 }
5319 5329
5320 // Applying a different contents scale to the mask layer means it will have 5330 // Applying a different contents scale to the mask layer means it will have
5321 // a larger texture, but it should use the same tex coords to cover the 5331 // a larger texture, but it should use the same tex coords to cover the
5322 // layer it masks. 5332 // layer it masks.
5323 mask_layer->SetContentBounds(mask_size); 5333 mask_layer->SetContentBounds(mask_size);
5324 mask_layer->SetContentsScale(1.f, 1.f); 5334 mask_layer->SetContentsScale(1.f, 1.f);
5325 host_impl_->active_tree()->set_needs_update_draw_properties(); 5335 host_impl_->active_tree()->set_needs_update_draw_properties();
5326 { 5336 {
5327 LayerTreeHostImpl::FrameData frame; 5337 LayerTreeHostImpl::FrameData frame;
5328 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5338 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5329 5339
5330 ASSERT_EQ(1u, frame.render_passes.size()); 5340 ASSERT_EQ(1u, frame.render_passes.size());
5331 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5341 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5332 ASSERT_EQ(DrawQuad::RENDER_PASS, 5342 ASSERT_EQ(DrawQuad::RENDER_PASS,
5333 frame.render_passes[0]->quad_list[1]->material); 5343 frame.render_passes[0]->quad_list.at(1)->material);
5334 const RenderPassDrawQuad* replica_quad = 5344 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5335 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5345 frame.render_passes[0]->quad_list.at(1));
5336 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5346 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5337 replica_quad->rect.ToString()); 5347 replica_quad->rect.ToString());
5338 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5348 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5339 replica_quad->mask_uv_rect.ToString()); 5349 replica_quad->mask_uv_rect.ToString());
5340 5350
5341 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5351 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5342 host_impl_->DidDrawAllLayers(frame); 5352 host_impl_->DidDrawAllLayers(frame);
5343 } 5353 }
5344 } 5354 }
5345 5355
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
5400 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5410 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5401 { 5411 {
5402 LayerTreeHostImpl::FrameData frame; 5412 LayerTreeHostImpl::FrameData frame;
5403 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5413 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5404 5414
5405 ASSERT_EQ(1u, frame.render_passes.size()); 5415 ASSERT_EQ(1u, frame.render_passes.size());
5406 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5416 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5407 5417
5408 // The surface is 100x50. 5418 // The surface is 100x50.
5409 ASSERT_EQ(DrawQuad::RENDER_PASS, 5419 ASSERT_EQ(DrawQuad::RENDER_PASS,
5410 frame.render_passes[0]->quad_list[0]->material); 5420 frame.render_passes[0]->quad_list.front()->material);
5411 const RenderPassDrawQuad* render_pass_quad = 5421 const RenderPassDrawQuad* render_pass_quad =
5412 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5422 RenderPassDrawQuad::MaterialCast(
5423 frame.render_passes[0]->quad_list.front());
5413 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), 5424 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(),
5414 render_pass_quad->rect.ToString()); 5425 render_pass_quad->rect.ToString());
5415 5426
5416 // The mask covers the owning layer only. 5427 // The mask covers the owning layer only.
5417 ASSERT_EQ(DrawQuad::RENDER_PASS, 5428 ASSERT_EQ(DrawQuad::RENDER_PASS,
5418 frame.render_passes[0]->quad_list[1]->material); 5429 frame.render_passes[0]->quad_list.at(1)->material);
5419 const RenderPassDrawQuad* replica_quad = 5430 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5420 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5431 frame.render_passes[0]->quad_list.at(1));
5421 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), 5432 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(),
5422 replica_quad->rect.ToString()); 5433 replica_quad->rect.ToString());
5423 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(), 5434 EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(),
5424 replica_quad->mask_uv_rect.ToString()); 5435 replica_quad->mask_uv_rect.ToString());
5425 5436
5426 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5437 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5427 host_impl_->DidDrawAllLayers(frame); 5438 host_impl_->DidDrawAllLayers(frame);
5428 } 5439 }
5429 5440
5430 // Move the child to (-50, 0) instead. Now the mask should be moved to still 5441 // Move the child to (-50, 0) instead. Now the mask should be moved to still
5431 // cover the layer being replicated. 5442 // cover the layer being replicated.
5432 content_child_layer->SetPosition(gfx::Point(-50, 0)); 5443 content_child_layer->SetPosition(gfx::Point(-50, 0));
5433 { 5444 {
5434 LayerTreeHostImpl::FrameData frame; 5445 LayerTreeHostImpl::FrameData frame;
5435 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5446 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5436 5447
5437 ASSERT_EQ(1u, frame.render_passes.size()); 5448 ASSERT_EQ(1u, frame.render_passes.size());
5438 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 5449 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
5439 5450
5440 // The surface is 100x50 with its origin at (-50, 0). 5451 // The surface is 100x50 with its origin at (-50, 0).
5441 ASSERT_EQ(DrawQuad::RENDER_PASS, 5452 ASSERT_EQ(DrawQuad::RENDER_PASS,
5442 frame.render_passes[0]->quad_list[0]->material); 5453 frame.render_passes[0]->quad_list.front()->material);
5443 const RenderPassDrawQuad* render_pass_quad = 5454 const RenderPassDrawQuad* render_pass_quad =
5444 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5455 RenderPassDrawQuad::MaterialCast(
5456 frame.render_passes[0]->quad_list.front());
5445 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), 5457 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(),
5446 render_pass_quad->rect.ToString()); 5458 render_pass_quad->rect.ToString());
5447 5459
5448 // The mask covers the owning layer only. 5460 // The mask covers the owning layer only.
5449 ASSERT_EQ(DrawQuad::RENDER_PASS, 5461 ASSERT_EQ(DrawQuad::RENDER_PASS,
5450 frame.render_passes[0]->quad_list[1]->material); 5462 frame.render_passes[0]->quad_list.at(1)->material);
5451 const RenderPassDrawQuad* replica_quad = 5463 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
5452 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[1]); 5464 frame.render_passes[0]->quad_list.at(1));
5453 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(), 5465 EXPECT_EQ(gfx::Rect(-50, 0, 100, 50).ToString(),
5454 replica_quad->rect.ToString()); 5466 replica_quad->rect.ToString());
5455 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(), 5467 EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(),
5456 replica_quad->mask_uv_rect.ToString()); 5468 replica_quad->mask_uv_rect.ToString());
5457 5469
5458 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5470 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5459 host_impl_->DidDrawAllLayers(frame); 5471 host_impl_->DidDrawAllLayers(frame);
5460 } 5472 }
5461 } 5473 }
5462 5474
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
5524 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5536 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5525 { 5537 {
5526 LayerTreeHostImpl::FrameData frame; 5538 LayerTreeHostImpl::FrameData frame;
5527 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5539 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5528 5540
5529 ASSERT_EQ(1u, frame.render_passes.size()); 5541 ASSERT_EQ(1u, frame.render_passes.size());
5530 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5542 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5531 5543
5532 // The surface is clipped to 10x20. 5544 // The surface is clipped to 10x20.
5533 ASSERT_EQ(DrawQuad::RENDER_PASS, 5545 ASSERT_EQ(DrawQuad::RENDER_PASS,
5534 frame.render_passes[0]->quad_list[0]->material); 5546 frame.render_passes[0]->quad_list.front()->material);
5535 const RenderPassDrawQuad* render_pass_quad = 5547 const RenderPassDrawQuad* render_pass_quad =
5536 RenderPassDrawQuad::MaterialCast(frame.render_passes[0]->quad_list[0]); 5548 RenderPassDrawQuad::MaterialCast(
5549 frame.render_passes[0]->quad_list.front());
5537 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(), 5550 EXPECT_EQ(gfx::Rect(20, 10, 10, 20).ToString(),
5538 render_pass_quad->rect.ToString()); 5551 render_pass_quad->rect.ToString());
5539 5552
5540 // The masked layer is 50x50, but the surface size is 10x20. So the texture 5553 // The masked layer is 50x50, but the surface size is 10x20. So the texture
5541 // coords in the mask are scaled by 10/50 and 20/50. 5554 // coords in the mask are scaled by 10/50 and 20/50.
5542 // The surface is clipped to (20,10) so the mask texture coords are offset 5555 // The surface is clipped to (20,10) so the mask texture coords are offset
5543 // by 20/50 and 10/50 5556 // by 20/50 and 10/50
5544 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), 5557 EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f),
5545 1.f / 50.f).ToString(), 5558 1.f / 50.f).ToString(),
5546 render_pass_quad->mask_uv_rect.ToString()); 5559 render_pass_quad->mask_uv_rect.ToString());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
5601 host_impl_->ActivateSyncTree(); 5614 host_impl_->ActivateSyncTree();
5602 5615
5603 host_impl_->active_tree()->UpdateDrawProperties(); 5616 host_impl_->active_tree()->UpdateDrawProperties();
5604 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); 5617 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size());
5605 5618
5606 LayerTreeHostImpl::FrameData frame; 5619 LayerTreeHostImpl::FrameData frame;
5607 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5620 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5608 5621
5609 ASSERT_EQ(1u, frame.render_passes.size()); 5622 ASSERT_EQ(1u, frame.render_passes.size());
5610 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); 5623 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
5611 const DrawQuad* quad = frame.render_passes[0]->quad_list[0]; 5624 const DrawQuad* quad = frame.render_passes[0]->quad_list.front();
5612 5625
5613 float edge[24]; 5626 float edge[24];
5614 gfx::QuadF device_layer_quad; 5627 gfx::QuadF device_layer_quad;
5615 bool antialiased = 5628 bool antialiased =
5616 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing( 5629 GLRendererWithSetupQuadForAntialiasing::SetupQuadForAntialiasing(
5617 quad->quadTransform(), quad, &device_layer_quad, edge); 5630 quad->quadTransform(), quad, &device_layer_quad, edge);
5618 EXPECT_FALSE(antialiased); 5631 EXPECT_FALSE(antialiased);
5619 5632
5620 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5633 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5621 host_impl_->DidDrawAllLayers(frame); 5634 host_impl_->DidDrawAllLayers(frame);
(...skipping 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after
7118 // surface. 7131 // surface.
7119 EXPECT_EQ(0, num_lost_surfaces_); 7132 EXPECT_EQ(0, num_lost_surfaces_);
7120 host_impl_->DidLoseOutputSurface(); 7133 host_impl_->DidLoseOutputSurface();
7121 EXPECT_EQ(1, num_lost_surfaces_); 7134 EXPECT_EQ(1, num_lost_surfaces_);
7122 host_impl_->DidLoseOutputSurface(); 7135 host_impl_->DidLoseOutputSurface();
7123 EXPECT_LE(1, num_lost_surfaces_); 7136 EXPECT_LE(1, num_lost_surfaces_);
7124 } 7137 }
7125 7138
7126 } // namespace 7139 } // namespace
7127 } // namespace cc 7140 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698