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

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

Issue 924973003: CC: Force push properties for all layers when tracing is started (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 5 years, 9 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 <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 LayerImpl::Create(host_impl_->active_tree(), id); 292 LayerImpl::Create(host_impl_->active_tree(), id);
293 layer->SetScrollClipLayer(clip_layer->id()); 293 layer->SetScrollClipLayer(clip_layer->id());
294 layer->SetDrawsContent(true); 294 layer->SetDrawsContent(true);
295 layer->SetBounds(size); 295 layer->SetBounds(size);
296 layer->SetContentBounds(size); 296 layer->SetContentBounds(size);
297 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2)); 297 clip_layer->SetBounds(gfx::Size(size.width() / 2, size.height() / 2));
298 return layer.Pass(); 298 return layer.Pass();
299 } 299 }
300 300
301 void DrawFrame() { 301 void DrawFrame() {
302 LayerTreeHostImpl::FrameData frame; 302 FrameData frame;
303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
304 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 304 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
305 host_impl_->DidDrawAllLayers(frame); 305 host_impl_->DidDrawAllLayers(frame);
306 } 306 }
307 307
308 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); 308 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor);
309 void pinch_zoom_pan_viewport_test(float device_scale_factor); 309 void pinch_zoom_pan_viewport_test(float device_scale_factor);
310 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); 310 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor);
311 void pinch_zoom_pan_viewport_and_scroll_boundary_test( 311 void pinch_zoom_pan_viewport_and_scroll_boundary_test(
312 float device_scale_factor); 312 float device_scale_factor);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 } 378 }
379 379
380 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); 380 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor);
381 381
382 protected: 382 protected:
383 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { 383 virtual scoped_ptr<OutputSurface> CreateOutputSurface() {
384 return FakeOutputSurface::Create3d(); 384 return FakeOutputSurface::Create3d();
385 } 385 }
386 386
387 void DrawOneFrame() { 387 void DrawOneFrame() {
388 LayerTreeHostImpl::FrameData frame_data; 388 FrameData frame_data;
389 host_impl_->PrepareToDraw(&frame_data); 389 host_impl_->PrepareToDraw(&frame_data);
390 host_impl_->DidDrawAllLayers(frame_data); 390 host_impl_->DidDrawAllLayers(frame_data);
391 } 391 }
392 392
393 FakeProxy proxy_; 393 FakeProxy proxy_;
394 DebugScopedSetImplThread always_impl_thread_; 394 DebugScopedSetImplThread always_impl_thread_;
395 DebugScopedSetMainThreadBlocked always_main_thread_blocked_; 395 DebugScopedSetMainThreadBlocked always_main_thread_blocked_;
396 396
397 scoped_ptr<TestSharedBitmapManager> shared_bitmap_manager_; 397 scoped_ptr<TestSharedBitmapManager> shared_bitmap_manager_;
398 scoped_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; 398 scoped_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_;
(...skipping 1571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1970 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 1970 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
1971 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( 1971 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(
1972 host_impl_->active_tree()->root_layer()); 1972 host_impl_->active_tree()->root_layer());
1973 1973
1974 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 1974 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
1975 root->SetHasRenderSurface(true); 1975 root->SetHasRenderSurface(true);
1976 DidDrawCheckLayer* layer = 1976 DidDrawCheckLayer* layer =
1977 static_cast<DidDrawCheckLayer*>(root->children()[0]); 1977 static_cast<DidDrawCheckLayer*>(root->children()[0]);
1978 1978
1979 { 1979 {
1980 LayerTreeHostImpl::FrameData frame; 1980 FrameData frame;
1981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1981 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1982 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1982 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1983 host_impl_->DidDrawAllLayers(frame); 1983 host_impl_->DidDrawAllLayers(frame);
1984 1984
1985 EXPECT_TRUE(layer->will_draw_called()); 1985 EXPECT_TRUE(layer->will_draw_called());
1986 EXPECT_TRUE(layer->append_quads_called()); 1986 EXPECT_TRUE(layer->append_quads_called());
1987 EXPECT_TRUE(layer->did_draw_called()); 1987 EXPECT_TRUE(layer->did_draw_called());
1988 } 1988 }
1989 1989
1990 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); 1990 host_impl_->SetViewportDamage(gfx::Rect(10, 10));
1991 1991
1992 { 1992 {
1993 LayerTreeHostImpl::FrameData frame; 1993 FrameData frame;
1994 1994
1995 layer->set_will_draw_returns_false(); 1995 layer->set_will_draw_returns_false();
1996 layer->ClearDidDrawCheck(); 1996 layer->ClearDidDrawCheck();
1997 1997
1998 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1998 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1999 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1999 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2000 host_impl_->DidDrawAllLayers(frame); 2000 host_impl_->DidDrawAllLayers(frame);
2001 2001
2002 EXPECT_TRUE(layer->will_draw_called()); 2002 EXPECT_TRUE(layer->will_draw_called());
2003 EXPECT_FALSE(layer->append_quads_called()); 2003 EXPECT_FALSE(layer->append_quads_called());
(...skipping 11 matching lines...) Expand all
2015 root->SetMasksToBounds(true); 2015 root->SetMasksToBounds(true);
2016 root->SetHasRenderSurface(true); 2016 root->SetHasRenderSurface(true);
2017 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); 2017 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2));
2018 DidDrawCheckLayer* layer = 2018 DidDrawCheckLayer* layer =
2019 static_cast<DidDrawCheckLayer*>(root->children()[0]); 2019 static_cast<DidDrawCheckLayer*>(root->children()[0]);
2020 // Ensure visible_content_rect for layer is empty. 2020 // Ensure visible_content_rect for layer is empty.
2021 layer->SetPosition(gfx::PointF(100.f, 100.f)); 2021 layer->SetPosition(gfx::PointF(100.f, 100.f));
2022 layer->SetBounds(gfx::Size(10, 10)); 2022 layer->SetBounds(gfx::Size(10, 10));
2023 layer->SetContentBounds(gfx::Size(10, 10)); 2023 layer->SetContentBounds(gfx::Size(10, 10));
2024 2024
2025 LayerTreeHostImpl::FrameData frame; 2025 FrameData frame;
2026 2026
2027 EXPECT_FALSE(layer->will_draw_called()); 2027 EXPECT_FALSE(layer->will_draw_called());
2028 EXPECT_FALSE(layer->did_draw_called()); 2028 EXPECT_FALSE(layer->did_draw_called());
2029 2029
2030 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2030 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2031 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2031 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2032 host_impl_->DidDrawAllLayers(frame); 2032 host_impl_->DidDrawAllLayers(frame);
2033 2033
2034 EXPECT_FALSE(layer->will_draw_called()); 2034 EXPECT_FALSE(layer->will_draw_called());
2035 EXPECT_FALSE(layer->did_draw_called()); 2035 EXPECT_FALSE(layer->did_draw_called());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2068 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); 2068 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 3));
2069 root->SetHasRenderSurface(true); 2069 root->SetHasRenderSurface(true);
2070 DidDrawCheckLayer* top_layer = 2070 DidDrawCheckLayer* top_layer =
2071 static_cast<DidDrawCheckLayer*>(root->children()[1]); 2071 static_cast<DidDrawCheckLayer*>(root->children()[1]);
2072 // This layer covers the occluded_layer above. Make this layer large so it can 2072 // This layer covers the occluded_layer above. Make this layer large so it can
2073 // occlude. 2073 // occlude.
2074 top_layer->SetBounds(big_size); 2074 top_layer->SetBounds(big_size);
2075 top_layer->SetContentBounds(big_size); 2075 top_layer->SetContentBounds(big_size);
2076 top_layer->SetContentsOpaque(true); 2076 top_layer->SetContentsOpaque(true);
2077 2077
2078 LayerTreeHostImpl::FrameData frame; 2078 FrameData frame;
2079 2079
2080 EXPECT_FALSE(occluded_layer->will_draw_called()); 2080 EXPECT_FALSE(occluded_layer->will_draw_called());
2081 EXPECT_FALSE(occluded_layer->did_draw_called()); 2081 EXPECT_FALSE(occluded_layer->did_draw_called());
2082 EXPECT_FALSE(top_layer->will_draw_called()); 2082 EXPECT_FALSE(top_layer->will_draw_called());
2083 EXPECT_FALSE(top_layer->did_draw_called()); 2083 EXPECT_FALSE(top_layer->did_draw_called());
2084 2084
2085 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2085 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2086 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2086 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2087 host_impl_->DidDrawAllLayers(frame); 2087 host_impl_->DidDrawAllLayers(frame);
2088 2088
(...skipping 18 matching lines...) Expand all
2107 DidDrawCheckLayer* layer2 = 2107 DidDrawCheckLayer* layer2 =
2108 static_cast<DidDrawCheckLayer*>(layer1->children()[0]); 2108 static_cast<DidDrawCheckLayer*>(layer1->children()[0]);
2109 2109
2110 layer1->SetHasRenderSurface(true); 2110 layer1->SetHasRenderSurface(true);
2111 layer1->SetShouldFlattenTransform(true); 2111 layer1->SetShouldFlattenTransform(true);
2112 2112
2113 EXPECT_FALSE(root->did_draw_called()); 2113 EXPECT_FALSE(root->did_draw_called());
2114 EXPECT_FALSE(layer1->did_draw_called()); 2114 EXPECT_FALSE(layer1->did_draw_called());
2115 EXPECT_FALSE(layer2->did_draw_called()); 2115 EXPECT_FALSE(layer2->did_draw_called());
2116 2116
2117 LayerTreeHostImpl::FrameData frame; 2117 FrameData frame;
2118 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( 2118 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(
2119 host_impl_->active_tree()->root_layer()); 2119 host_impl_->active_tree()->root_layer());
2120 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2120 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2121 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2121 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2122 host_impl_->DidDrawAllLayers(frame); 2122 host_impl_->DidDrawAllLayers(frame);
2123 2123
2124 EXPECT_TRUE(root->did_draw_called()); 2124 EXPECT_TRUE(root->did_draw_called());
2125 EXPECT_TRUE(layer1->did_draw_called()); 2125 EXPECT_TRUE(layer1->did_draw_called());
2126 EXPECT_TRUE(layer2->did_draw_called()); 2126 EXPECT_TRUE(layer2->did_draw_called());
2127 2127
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2292 cases.back().high_res_required = true; 2292 cases.back().high_res_required = true;
2293 cases.back().layer_between.has_missing_tile = true; 2293 cases.back().layer_between.has_missing_tile = true;
2294 cases.back().layer_between.has_copy_request = true; 2294 cases.back().layer_between.has_copy_request = true;
2295 2295
2296 host_impl_->active_tree()->SetRootLayer( 2296 host_impl_->active_tree()->SetRootLayer(
2297 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 2297 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
2298 DidDrawCheckLayer* root = 2298 DidDrawCheckLayer* root =
2299 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2299 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2300 root->SetHasRenderSurface(true); 2300 root->SetHasRenderSurface(true);
2301 2301
2302 LayerTreeHostImpl::FrameData frame; 2302 FrameData frame;
2303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2304 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2304 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2305 host_impl_->DidDrawAllLayers(frame); 2305 host_impl_->DidDrawAllLayers(frame);
2306 host_impl_->SwapBuffers(frame); 2306 host_impl_->SwapBuffers(frame);
2307 2307
2308 for (size_t i = 0; i < cases.size(); ++i) { 2308 for (size_t i = 0; i < cases.size(); ++i) {
2309 const auto& testcase = cases[i]; 2309 const auto& testcase = cases[i];
2310 std::vector<LayerImpl*> to_remove; 2310 std::vector<LayerImpl*> to_remove;
2311 for (auto* child : root->children()) 2311 for (auto* child : root->children())
2312 to_remove.push_back(child); 2312 to_remove.push_back(child);
(...skipping 27 matching lines...) Expand all
2340 testcase.layer_after.has_incomplete_tile, 2340 testcase.layer_after.has_incomplete_tile,
2341 testcase.layer_after.is_animating, host_impl_->resource_provider())); 2341 testcase.layer_after.is_animating, host_impl_->resource_provider()));
2342 DidDrawCheckLayer* after = 2342 DidDrawCheckLayer* after =
2343 static_cast<DidDrawCheckLayer*>(root->children().back()); 2343 static_cast<DidDrawCheckLayer*>(root->children().back());
2344 if (testcase.layer_after.has_copy_request) 2344 if (testcase.layer_after.has_copy_request)
2345 after->AddCopyRequest(); 2345 after->AddCopyRequest();
2346 2346
2347 if (testcase.high_res_required) 2347 if (testcase.high_res_required)
2348 host_impl_->SetRequiresHighResToDraw(); 2348 host_impl_->SetRequiresHighResToDraw();
2349 2349
2350 LayerTreeHostImpl::FrameData frame; 2350 FrameData frame;
2351 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); 2351 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame));
2352 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2352 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2353 host_impl_->DidDrawAllLayers(frame); 2353 host_impl_->DidDrawAllLayers(frame);
2354 host_impl_->SwapBuffers(frame); 2354 host_impl_->SwapBuffers(frame);
2355 } 2355 }
2356 } 2356 }
2357 2357
2358 TEST_F(LayerTreeHostImplTest, 2358 TEST_F(LayerTreeHostImplTest,
2359 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) { 2359 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) {
2360 CreateHostImpl(DefaultSettings(), 2360 CreateHostImpl(DefaultSettings(),
(...skipping 18 matching lines...) Expand all
2379 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS)); 2379 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS));
2380 cases.back().high_res_required = true; 2380 cases.back().high_res_required = true;
2381 cases.back().layer_between.has_missing_tile = true; 2381 cases.back().layer_between.has_missing_tile = true;
2382 2382
2383 host_impl_->active_tree()->SetRootLayer( 2383 host_impl_->active_tree()->SetRootLayer(
2384 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 2384 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
2385 DidDrawCheckLayer* root = 2385 DidDrawCheckLayer* root =
2386 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 2386 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
2387 root->SetHasRenderSurface(true); 2387 root->SetHasRenderSurface(true);
2388 2388
2389 LayerTreeHostImpl::FrameData frame; 2389 FrameData frame;
2390 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 2390 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
2391 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2391 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2392 host_impl_->DidDrawAllLayers(frame); 2392 host_impl_->DidDrawAllLayers(frame);
2393 host_impl_->SwapBuffers(frame); 2393 host_impl_->SwapBuffers(frame);
2394 2394
2395 for (size_t i = 0; i < cases.size(); ++i) { 2395 for (size_t i = 0; i < cases.size(); ++i) {
2396 const auto& testcase = cases[i]; 2396 const auto& testcase = cases[i];
2397 std::vector<LayerImpl*> to_remove; 2397 std::vector<LayerImpl*> to_remove;
2398 for (auto* child : root->children()) 2398 for (auto* child : root->children())
2399 to_remove.push_back(child); 2399 to_remove.push_back(child);
(...skipping 27 matching lines...) Expand all
2427 testcase.layer_after.has_incomplete_tile, 2427 testcase.layer_after.has_incomplete_tile,
2428 testcase.layer_after.is_animating, host_impl_->resource_provider())); 2428 testcase.layer_after.is_animating, host_impl_->resource_provider()));
2429 DidDrawCheckLayer* after = 2429 DidDrawCheckLayer* after =
2430 static_cast<DidDrawCheckLayer*>(root->children().back()); 2430 static_cast<DidDrawCheckLayer*>(root->children().back());
2431 if (testcase.layer_after.has_copy_request) 2431 if (testcase.layer_after.has_copy_request)
2432 after->AddCopyRequest(); 2432 after->AddCopyRequest();
2433 2433
2434 if (testcase.high_res_required) 2434 if (testcase.high_res_required)
2435 host_impl_->SetRequiresHighResToDraw(); 2435 host_impl_->SetRequiresHighResToDraw();
2436 2436
2437 LayerTreeHostImpl::FrameData frame; 2437 FrameData frame;
2438 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); 2438 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame));
2439 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 2439 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
2440 host_impl_->DidDrawAllLayers(frame); 2440 host_impl_->DidDrawAllLayers(frame);
2441 host_impl_->SwapBuffers(frame); 2441 host_impl_->SwapBuffers(frame);
2442 } 2442 }
2443 } 2443 }
2444 2444
2445 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 2445 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
2446 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 2446 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
2447 root->SetScrollClipLayer(Layer::INVALID_ID); 2447 root->SetScrollClipLayer(Layer::INVALID_ID);
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
3388 EXPECT_EQ(1.f, root->contents_scale_y()); 3388 EXPECT_EQ(1.f, root->contents_scale_y());
3389 EXPECT_EQ(1.f, scroll->contents_scale_x()); 3389 EXPECT_EQ(1.f, scroll->contents_scale_x());
3390 EXPECT_EQ(1.f, scroll->contents_scale_y()); 3390 EXPECT_EQ(1.f, scroll->contents_scale_y());
3391 EXPECT_EQ(1.f, child->contents_scale_x()); 3391 EXPECT_EQ(1.f, child->contents_scale_x());
3392 EXPECT_EQ(1.f, child->contents_scale_y()); 3392 EXPECT_EQ(1.f, child->contents_scale_y());
3393 EXPECT_EQ(1.f, grand_child->contents_scale_x()); 3393 EXPECT_EQ(1.f, grand_child->contents_scale_x());
3394 EXPECT_EQ(1.f, grand_child->contents_scale_y()); 3394 EXPECT_EQ(1.f, grand_child->contents_scale_y());
3395 3395
3396 // Make sure all the layers are drawn with the page scale delta applied, i.e., 3396 // Make sure all the layers are drawn with the page scale delta applied, i.e.,
3397 // the page scale delta on the root layer is applied hierarchically. 3397 // the page scale delta on the root layer is applied hierarchically.
3398 LayerTreeHostImpl::FrameData frame; 3398 FrameData frame;
3399 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 3399 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
3400 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 3400 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
3401 host_impl_->DidDrawAllLayers(frame); 3401 host_impl_->DidDrawAllLayers(frame);
3402 3402
3403 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); 3403 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0));
3404 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); 3404 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1));
3405 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); 3405 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0));
3406 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); 3406 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1));
3407 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); 3407 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0));
3408 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); 3408 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1));
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
4058 DrawFrame(); 4058 DrawFrame();
4059 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f)); 4059 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f));
4060 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); 4060 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties());
4061 4061
4062 // Set external scroll delta on delegate and notify LayerTreeHost. 4062 // Set external scroll delta on delegate and notify LayerTreeHost.
4063 gfx::ScrollOffset scroll_offset(10.f, 10.f); 4063 gfx::ScrollOffset scroll_offset(10.f, 10.f);
4064 scroll_delegate.set_getter_return_value(scroll_offset); 4064 scroll_delegate.set_getter_return_value(scroll_offset);
4065 host_impl_->OnRootLayerDelegatedScrollOffsetChanged(); 4065 host_impl_->OnRootLayerDelegatedScrollOffsetChanged();
4066 4066
4067 // Check scroll delta reflected in layer. 4067 // Check scroll delta reflected in layer.
4068 LayerTreeHostImpl::FrameData frame; 4068 FrameData frame;
4069 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4069 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4070 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4070 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4071 host_impl_->DidDrawAllLayers(frame); 4071 host_impl_->DidDrawAllLayers(frame);
4072 EXPECT_FALSE(frame.has_no_damage); 4072 EXPECT_FALSE(frame.has_no_damage);
4073 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset)); 4073 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset));
4074 4074
4075 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); 4075 host_impl_->SetRootLayerScrollOffsetDelegate(NULL);
4076 } 4076 }
4077 4077
4078 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { 4078 TEST_F(LayerTreeHostImplTest, OverscrollRoot) {
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
4512 LayerImpl* root = host_impl_->active_tree()->root_layer(); 4512 LayerImpl* root = host_impl_->active_tree()->root_layer();
4513 4513
4514 root->AddChild( 4514 root->AddChild(
4515 BlendStateCheckLayer::Create(host_impl_->active_tree(), 4515 BlendStateCheckLayer::Create(host_impl_->active_tree(),
4516 2, 4516 2,
4517 host_impl_->resource_provider())); 4517 host_impl_->resource_provider()));
4518 BlendStateCheckLayer* layer1 = 4518 BlendStateCheckLayer* layer1 =
4519 static_cast<BlendStateCheckLayer*>(root->children()[0]); 4519 static_cast<BlendStateCheckLayer*>(root->children()[0]);
4520 layer1->SetPosition(gfx::PointF(2.f, 2.f)); 4520 layer1->SetPosition(gfx::PointF(2.f, 2.f));
4521 4521
4522 LayerTreeHostImpl::FrameData frame; 4522 FrameData frame;
4523 4523
4524 // Opaque layer, drawn without blending. 4524 // Opaque layer, drawn without blending.
4525 layer1->SetContentsOpaque(true); 4525 layer1->SetContentsOpaque(true);
4526 layer1->SetExpectation(false, false); 4526 layer1->SetExpectation(false, false);
4527 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds())); 4527 layer1->SetUpdateRect(gfx::Rect(layer1->content_bounds()));
4528 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4528 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4529 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 4529 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
4530 EXPECT_TRUE(layer1->quads_appended()); 4530 EXPECT_TRUE(layer1->quads_appended());
4531 host_impl_->DidDrawAllLayers(frame); 4531 host_impl_->DidDrawAllLayers(frame);
4532 4532
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
4758 4758
4759 // Expect no gutter rects. 4759 // Expect no gutter rects.
4760 void TestLayerCoversFullViewport() { 4760 void TestLayerCoversFullViewport() {
4761 gfx::Rect layer_rect(viewport_size_); 4761 gfx::Rect layer_rect(viewport_size_);
4762 child_->SetPosition(layer_rect.origin()); 4762 child_->SetPosition(layer_rect.origin());
4763 child_->SetBounds(layer_rect.size()); 4763 child_->SetBounds(layer_rect.size());
4764 child_->SetContentBounds(layer_rect.size()); 4764 child_->SetContentBounds(layer_rect.size());
4765 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 4765 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
4766 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 4766 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
4767 4767
4768 LayerTreeHostImpl::FrameData frame; 4768 FrameData frame;
4769 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4769 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4770 ASSERT_EQ(1u, frame.render_passes.size()); 4770 ASSERT_EQ(1u, frame.render_passes.size());
4771 4771
4772 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); 4772 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list));
4773 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4773 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
4774 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 4774 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
4775 4775
4776 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 4776 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
4777 host_impl_->DidDrawAllLayers(frame); 4777 host_impl_->DidDrawAllLayers(frame);
4778 } 4778 }
4779 4779
4780 // Expect fullscreen gutter rect. 4780 // Expect fullscreen gutter rect.
4781 void TestEmptyLayer() { 4781 void TestEmptyLayer() {
4782 gfx::Rect layer_rect(0, 0, 0, 0); 4782 gfx::Rect layer_rect(0, 0, 0, 0);
4783 child_->SetPosition(layer_rect.origin()); 4783 child_->SetPosition(layer_rect.origin());
4784 child_->SetBounds(layer_rect.size()); 4784 child_->SetBounds(layer_rect.size());
4785 child_->SetContentBounds(layer_rect.size()); 4785 child_->SetContentBounds(layer_rect.size());
4786 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 4786 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
4787 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 4787 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
4788 4788
4789 LayerTreeHostImpl::FrameData frame; 4789 FrameData frame;
4790 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4790 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4791 ASSERT_EQ(1u, frame.render_passes.size()); 4791 ASSERT_EQ(1u, frame.render_passes.size());
4792 4792
4793 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list)); 4793 EXPECT_EQ(1u, CountGutterQuads(frame.render_passes[0]->quad_list));
4794 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4794 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
4795 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 4795 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
4796 4796
4797 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 4797 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
4798 host_impl_->DidDrawAllLayers(frame); 4798 host_impl_->DidDrawAllLayers(frame);
4799 } 4799 }
4800 4800
4801 // Expect four surrounding gutter rects. 4801 // Expect four surrounding gutter rects.
4802 void TestLayerInMiddleOfViewport() { 4802 void TestLayerInMiddleOfViewport() {
4803 gfx::Rect layer_rect(500, 500, 200, 200); 4803 gfx::Rect layer_rect(500, 500, 200, 200);
4804 child_->SetPosition(layer_rect.origin()); 4804 child_->SetPosition(layer_rect.origin());
4805 child_->SetBounds(layer_rect.size()); 4805 child_->SetBounds(layer_rect.size());
4806 child_->SetContentBounds(layer_rect.size()); 4806 child_->SetContentBounds(layer_rect.size());
4807 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 4807 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
4808 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 4808 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
4809 4809
4810 LayerTreeHostImpl::FrameData frame; 4810 FrameData frame;
4811 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4811 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4812 ASSERT_EQ(1u, frame.render_passes.size()); 4812 ASSERT_EQ(1u, frame.render_passes.size());
4813 4813
4814 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list)); 4814 EXPECT_EQ(4u, CountGutterQuads(frame.render_passes[0]->quad_list));
4815 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size()); 4815 EXPECT_EQ(5u, frame.render_passes[0]->quad_list.size());
4816 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 4816 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
4817 4817
4818 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); 4818 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list);
4819 host_impl_->DidDrawAllLayers(frame); 4819 host_impl_->DidDrawAllLayers(frame);
4820 } 4820 }
4821 4821
4822 // Expect no gutter rects. 4822 // Expect no gutter rects.
4823 void TestLayerIsLargerThanViewport() { 4823 void TestLayerIsLargerThanViewport() {
4824 gfx::Rect layer_rect(viewport_size_.width() + 10, 4824 gfx::Rect layer_rect(viewport_size_.width() + 10,
4825 viewport_size_.height() + 10); 4825 viewport_size_.height() + 10);
4826 child_->SetPosition(layer_rect.origin()); 4826 child_->SetPosition(layer_rect.origin());
4827 child_->SetBounds(layer_rect.size()); 4827 child_->SetBounds(layer_rect.size());
4828 child_->SetContentBounds(layer_rect.size()); 4828 child_->SetContentBounds(layer_rect.size());
4829 child_->SetQuadRect(gfx::Rect(layer_rect.size())); 4829 child_->SetQuadRect(gfx::Rect(layer_rect.size()));
4830 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); 4830 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size()));
4831 4831
4832 LayerTreeHostImpl::FrameData frame; 4832 FrameData frame;
4833 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 4833 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
4834 ASSERT_EQ(1u, frame.render_passes.size()); 4834 ASSERT_EQ(1u, frame.render_passes.size());
4835 4835
4836 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); 4836 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list));
4837 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); 4837 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size());
4838 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); 4838 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list);
4839 4839
4840 host_impl_->DidDrawAllLayers(frame); 4840 host_impl_->DidDrawAllLayers(frame);
4841 } 4841 }
4842 4842
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
4991 scoped_ptr<LayerImpl> root = 4991 scoped_ptr<LayerImpl> root =
4992 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); 4992 FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1);
4993 root->SetBounds(gfx::Size(10, 10)); 4993 root->SetBounds(gfx::Size(10, 10));
4994 root->SetContentBounds(gfx::Size(10, 10)); 4994 root->SetContentBounds(gfx::Size(10, 10));
4995 root->SetDrawsContent(true); 4995 root->SetDrawsContent(true);
4996 root->SetHasRenderSurface(true); 4996 root->SetHasRenderSurface(true);
4997 host_impl_->active_tree()->SetRootLayer(root.Pass()); 4997 host_impl_->active_tree()->SetRootLayer(root.Pass());
4998 EXPECT_FALSE(provider->TestContext3d()->reshape_called()); 4998 EXPECT_FALSE(provider->TestContext3d()->reshape_called());
4999 provider->TestContext3d()->clear_reshape_called(); 4999 provider->TestContext3d()->clear_reshape_called();
5000 5000
5001 LayerTreeHostImpl::FrameData frame; 5001 FrameData frame;
5002 host_impl_->SetViewportSize(gfx::Size(10, 10)); 5002 host_impl_->SetViewportSize(gfx::Size(10, 10));
5003 host_impl_->SetDeviceScaleFactor(1.f); 5003 host_impl_->SetDeviceScaleFactor(1.f);
5004 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5004 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5005 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5005 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5006 EXPECT_TRUE(provider->TestContext3d()->reshape_called()); 5006 EXPECT_TRUE(provider->TestContext3d()->reshape_called());
5007 EXPECT_EQ(provider->TestContext3d()->width(), 10); 5007 EXPECT_EQ(provider->TestContext3d()->width(), 10);
5008 EXPECT_EQ(provider->TestContext3d()->height(), 10); 5008 EXPECT_EQ(provider->TestContext3d()->height(), 10);
5009 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f); 5009 EXPECT_EQ(provider->TestContext3d()->scale_factor(), 1.f);
5010 host_impl_->DidDrawAllLayers(frame); 5010 host_impl_->DidDrawAllLayers(frame);
5011 provider->TestContext3d()->clear_reshape_called(); 5011 provider->TestContext3d()->clear_reshape_called();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
5068 child->SetPosition(gfx::PointF(12.f, 13.f)); 5068 child->SetPosition(gfx::PointF(12.f, 13.f));
5069 child->SetBounds(gfx::Size(14, 15)); 5069 child->SetBounds(gfx::Size(14, 15));
5070 child->SetContentBounds(gfx::Size(14, 15)); 5070 child->SetContentBounds(gfx::Size(14, 15));
5071 child->SetDrawsContent(true); 5071 child->SetDrawsContent(true);
5072 root->SetBounds(gfx::Size(500, 500)); 5072 root->SetBounds(gfx::Size(500, 500));
5073 root->SetContentBounds(gfx::Size(500, 500)); 5073 root->SetContentBounds(gfx::Size(500, 500));
5074 root->SetDrawsContent(true); 5074 root->SetDrawsContent(true);
5075 root->AddChild(child.Pass()); 5075 root->AddChild(child.Pass());
5076 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass()); 5076 layer_tree_host_impl->active_tree()->SetRootLayer(root.Pass());
5077 5077
5078 LayerTreeHostImpl::FrameData frame; 5078 FrameData frame;
5079 5079
5080 // First frame, the entire screen should get swapped. 5080 // First frame, the entire screen should get swapped.
5081 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); 5081 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame));
5082 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5082 layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
5083 layer_tree_host_impl->DidDrawAllLayers(frame); 5083 layer_tree_host_impl->DidDrawAllLayers(frame);
5084 layer_tree_host_impl->SwapBuffers(frame); 5084 layer_tree_host_impl->SwapBuffers(frame);
5085 gfx::Rect expected_swap_rect(0, 0, 500, 500); 5085 gfx::Rect expected_swap_rect(0, 0, 500, 500);
5086 EXPECT_EQ(expected_swap_rect.ToString(), 5086 EXPECT_EQ(expected_swap_rect.ToString(),
5087 fake_output_surface->last_swap_rect().ToString()); 5087 fake_output_surface->last_swap_rect().ToString());
5088 5088
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
5127 child->SetContentBounds(gfx::Size(10, 10)); 5127 child->SetContentBounds(gfx::Size(10, 10));
5128 child->SetDrawsContent(true); 5128 child->SetDrawsContent(true);
5129 root->SetBounds(gfx::Size(10, 10)); 5129 root->SetBounds(gfx::Size(10, 10));
5130 root->SetContentBounds(gfx::Size(10, 10)); 5130 root->SetContentBounds(gfx::Size(10, 10));
5131 root->SetDrawsContent(true); 5131 root->SetDrawsContent(true);
5132 root->SetHasRenderSurface(true); 5132 root->SetHasRenderSurface(true);
5133 root->AddChild(child.Pass()); 5133 root->AddChild(child.Pass());
5134 5134
5135 host_impl_->active_tree()->SetRootLayer(root.Pass()); 5135 host_impl_->active_tree()->SetRootLayer(root.Pass());
5136 5136
5137 LayerTreeHostImpl::FrameData frame; 5137 FrameData frame;
5138 5138
5139 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5139 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5140 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); 5140 EXPECT_EQ(1u, frame.render_surface_layer_list->size());
5141 EXPECT_EQ(1u, frame.render_passes.size()); 5141 EXPECT_EQ(1u, frame.render_passes.size());
5142 host_impl_->DidDrawAllLayers(frame); 5142 host_impl_->DidDrawAllLayers(frame);
5143 } 5143 }
5144 5144
5145 class FakeLayerWithQuads : public LayerImpl { 5145 class FakeLayerWithQuads : public LayerImpl {
5146 public: 5146 public:
5147 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { 5147 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
5264 LayerTreeSettings settings = DefaultSettings(); 5264 LayerTreeSettings settings = DefaultSettings();
5265 settings.renderer_settings.partial_swap_enabled = false; 5265 settings.renderer_settings.partial_swap_enabled = false;
5266 CreateHostImpl(settings, 5266 CreateHostImpl(settings,
5267 FakeOutputSurface::Create3d(mock_context_owned.Pass())); 5267 FakeOutputSurface::Create3d(mock_context_owned.Pass()));
5268 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 5268 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
5269 5269
5270 // Without partial swap, and no clipping, no scissor is set. 5270 // Without partial swap, and no clipping, no scissor is set.
5271 harness.MustDrawSolidQuad(); 5271 harness.MustDrawSolidQuad();
5272 harness.MustSetNoScissor(); 5272 harness.MustSetNoScissor();
5273 { 5273 {
5274 LayerTreeHostImpl::FrameData frame; 5274 FrameData frame;
5275 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5275 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5276 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5276 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5277 host_impl_->DidDrawAllLayers(frame); 5277 host_impl_->DidDrawAllLayers(frame);
5278 } 5278 }
5279 Mock::VerifyAndClearExpectations(&mock_context); 5279 Mock::VerifyAndClearExpectations(&mock_context);
5280 5280
5281 // Without partial swap, but a layer does clip its subtree, one scissor is 5281 // Without partial swap, but a layer does clip its subtree, one scissor is
5282 // set. 5282 // set.
5283 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true); 5283 host_impl_->active_tree()->root_layer()->SetMasksToBounds(true);
5284 harness.MustDrawSolidQuad(); 5284 harness.MustDrawSolidQuad();
5285 harness.MustSetScissor(0, 0, 10, 10); 5285 harness.MustSetScissor(0, 0, 10, 10);
5286 { 5286 {
5287 LayerTreeHostImpl::FrameData frame; 5287 FrameData frame;
5288 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5288 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5289 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5289 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5290 host_impl_->DidDrawAllLayers(frame); 5290 host_impl_->DidDrawAllLayers(frame);
5291 } 5291 }
5292 Mock::VerifyAndClearExpectations(&mock_context); 5292 Mock::VerifyAndClearExpectations(&mock_context);
5293 } 5293 }
5294 5294
5295 TEST_F(LayerTreeHostImplTest, PartialSwap) { 5295 TEST_F(LayerTreeHostImplTest, PartialSwap) {
5296 scoped_ptr<MockContext> context_owned(new MockContext); 5296 scoped_ptr<MockContext> context_owned(new MockContext);
5297 MockContext* mock_context = context_owned.get(); 5297 MockContext* mock_context = context_owned.get();
5298 MockContextHarness harness(mock_context); 5298 MockContextHarness harness(mock_context);
5299 5299
5300 LayerTreeSettings settings = DefaultSettings(); 5300 LayerTreeSettings settings = DefaultSettings();
5301 settings.renderer_settings.partial_swap_enabled = true; 5301 settings.renderer_settings.partial_swap_enabled = true;
5302 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass())); 5302 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass()));
5303 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 5303 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
5304 5304
5305 // The first frame is not a partially-swapped one. 5305 // The first frame is not a partially-swapped one.
5306 harness.MustSetScissor(0, 0, 10, 10); 5306 harness.MustSetScissor(0, 0, 10, 10);
5307 harness.MustDrawSolidQuad(); 5307 harness.MustDrawSolidQuad();
5308 { 5308 {
5309 LayerTreeHostImpl::FrameData frame; 5309 FrameData frame;
5310 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5310 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5311 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5311 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5312 host_impl_->DidDrawAllLayers(frame); 5312 host_impl_->DidDrawAllLayers(frame);
5313 } 5313 }
5314 Mock::VerifyAndClearExpectations(&mock_context); 5314 Mock::VerifyAndClearExpectations(&mock_context);
5315 5315
5316 // Damage a portion of the frame. 5316 // Damage a portion of the frame.
5317 host_impl_->active_tree()->root_layer()->SetUpdateRect( 5317 host_impl_->active_tree()->root_layer()->SetUpdateRect(
5318 gfx::Rect(0, 0, 2, 3)); 5318 gfx::Rect(0, 0, 2, 3));
5319 5319
5320 // The second frame will be partially-swapped (the y coordinates are flipped). 5320 // The second frame will be partially-swapped (the y coordinates are flipped).
5321 harness.MustSetScissor(0, 7, 2, 3); 5321 harness.MustSetScissor(0, 7, 2, 3);
5322 harness.MustDrawSolidQuad(); 5322 harness.MustDrawSolidQuad();
5323 { 5323 {
5324 LayerTreeHostImpl::FrameData frame; 5324 FrameData frame;
5325 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5325 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5327 host_impl_->DidDrawAllLayers(frame); 5327 host_impl_->DidDrawAllLayers(frame);
5328 } 5328 }
5329 Mock::VerifyAndClearExpectations(&mock_context); 5329 Mock::VerifyAndClearExpectations(&mock_context);
5330 } 5330 }
5331 5331
5332 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity( 5332 static scoped_ptr<LayerTreeHostImpl> SetupLayersForOpacity(
5333 bool partial_swap, 5333 bool partial_swap,
5334 LayerTreeHostImplClient* client, 5334 LayerTreeHostImplClient* client,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
5409 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) { 5409 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) {
5410 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 5410 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
5411 new TestSharedBitmapManager()); 5411 new TestSharedBitmapManager());
5412 scoped_ptr<LayerTreeHostImpl> my_host_impl = 5412 scoped_ptr<LayerTreeHostImpl> my_host_impl =
5413 SetupLayersForOpacity(true, 5413 SetupLayersForOpacity(true,
5414 this, 5414 this,
5415 &proxy_, 5415 &proxy_,
5416 shared_bitmap_manager.get(), 5416 shared_bitmap_manager.get(),
5417 &stats_instrumentation_); 5417 &stats_instrumentation_);
5418 { 5418 {
5419 LayerTreeHostImpl::FrameData frame; 5419 FrameData frame;
5420 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); 5420 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame));
5421 5421
5422 // Verify all quads have been computed 5422 // Verify all quads have been computed
5423 ASSERT_EQ(2U, frame.render_passes.size()); 5423 ASSERT_EQ(2U, frame.render_passes.size());
5424 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 5424 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
5425 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 5425 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
5426 EXPECT_EQ(DrawQuad::SOLID_COLOR, 5426 EXPECT_EQ(DrawQuad::SOLID_COLOR,
5427 frame.render_passes[0]->quad_list.front()->material); 5427 frame.render_passes[0]->quad_list.front()->material);
5428 EXPECT_EQ(DrawQuad::RENDER_PASS, 5428 EXPECT_EQ(DrawQuad::RENDER_PASS,
5429 frame.render_passes[1]->quad_list.front()->material); 5429 frame.render_passes[1]->quad_list.front()->material);
5430 5430
5431 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now()); 5431 my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
5432 my_host_impl->DidDrawAllLayers(frame); 5432 my_host_impl->DidDrawAllLayers(frame);
5433 } 5433 }
5434 } 5434 }
5435 5435
5436 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { 5436 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
5437 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 5437 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
5438 new TestSharedBitmapManager()); 5438 new TestSharedBitmapManager());
5439 scoped_ptr<LayerTreeHostImpl> my_host_impl = 5439 scoped_ptr<LayerTreeHostImpl> my_host_impl =
5440 SetupLayersForOpacity(false, 5440 SetupLayersForOpacity(false,
5441 this, 5441 this,
5442 &proxy_, 5442 &proxy_,
5443 shared_bitmap_manager.get(), 5443 shared_bitmap_manager.get(),
5444 &stats_instrumentation_); 5444 &stats_instrumentation_);
5445 { 5445 {
5446 LayerTreeHostImpl::FrameData frame; 5446 FrameData frame;
5447 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); 5447 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame));
5448 5448
5449 // Verify all quads have been computed 5449 // Verify all quads have been computed
5450 ASSERT_EQ(2U, frame.render_passes.size()); 5450 ASSERT_EQ(2U, frame.render_passes.size());
5451 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); 5451 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size());
5452 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); 5452 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size());
5453 EXPECT_EQ(DrawQuad::SOLID_COLOR, 5453 EXPECT_EQ(DrawQuad::SOLID_COLOR,
5454 frame.render_passes[0]->quad_list.front()->material); 5454 frame.render_passes[0]->quad_list.front()->material);
5455 EXPECT_EQ(DrawQuad::RENDER_PASS, 5455 EXPECT_EQ(DrawQuad::RENDER_PASS,
5456 frame.render_passes[1]->quad_list.front()->material); 5456 frame.render_passes[1]->quad_list.front()->material);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
5490 io_surface_layer->SetBounds(gfx::Size(10, 10)); 5490 io_surface_layer->SetBounds(gfx::Size(10, 10));
5491 io_surface_layer->SetContentBounds(gfx::Size(10, 10)); 5491 io_surface_layer->SetContentBounds(gfx::Size(10, 10));
5492 io_surface_layer->SetDrawsContent(true); 5492 io_surface_layer->SetDrawsContent(true);
5493 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); 5493 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10));
5494 root_layer->AddChild(io_surface_layer.Pass()); 5494 root_layer->AddChild(io_surface_layer.Pass());
5495 5495
5496 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 5496 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
5497 5497
5498 EXPECT_EQ(0u, context3d->NumTextures()); 5498 EXPECT_EQ(0u, context3d->NumTextures());
5499 5499
5500 LayerTreeHostImpl::FrameData frame; 5500 FrameData frame;
5501 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5501 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5502 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5502 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5503 host_impl_->DidDrawAllLayers(frame); 5503 host_impl_->DidDrawAllLayers(frame);
5504 host_impl_->SwapBuffers(frame); 5504 host_impl_->SwapBuffers(frame);
5505 5505
5506 EXPECT_GT(context3d->NumTextures(), 0u); 5506 EXPECT_GT(context3d->NumTextures(), 0u);
5507 5507
5508 // Kill the layer tree. 5508 // Kill the layer tree.
5509 host_impl_->active_tree()->SetRootLayer( 5509 host_impl_->active_tree()->SetRootLayer(
5510 LayerImpl::Create(host_impl_->active_tree(), 100)); 5510 LayerImpl::Create(host_impl_->active_tree(), 100));
(...skipping 22 matching lines...) Expand all
5533 FakeOutputSurface::Create3d(mock_context_owned.Pass())); 5533 FakeOutputSurface::Create3d(mock_context_owned.Pass()));
5534 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 5534 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
5535 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); 5535 host_impl_->active_tree()->set_background_color(SK_ColorWHITE);
5536 5536
5537 // Verify one quad is drawn when transparent background set is not set. 5537 // Verify one quad is drawn when transparent background set is not set.
5538 host_impl_->active_tree()->set_has_transparent_background(false); 5538 host_impl_->active_tree()->set_has_transparent_background(false);
5539 EXPECT_CALL(*mock_context, useProgram(_)) 5539 EXPECT_CALL(*mock_context, useProgram(_))
5540 .Times(1); 5540 .Times(1);
5541 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) 5541 EXPECT_CALL(*mock_context, drawElements(_, _, _, _))
5542 .Times(1); 5542 .Times(1);
5543 LayerTreeHostImpl::FrameData frame; 5543 FrameData frame;
5544 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5544 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5545 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5545 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5546 host_impl_->DidDrawAllLayers(frame); 5546 host_impl_->DidDrawAllLayers(frame);
5547 Mock::VerifyAndClearExpectations(&mock_context); 5547 Mock::VerifyAndClearExpectations(&mock_context);
5548 5548
5549 // Verify no quads are drawn when transparent background is set. 5549 // Verify no quads are drawn when transparent background is set.
5550 host_impl_->active_tree()->set_has_transparent_background(true); 5550 host_impl_->active_tree()->set_has_transparent_background(true);
5551 host_impl_->SetFullRootLayerDamage(); 5551 host_impl_->SetFullRootLayerDamage();
5552 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5552 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5553 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5553 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
5598 class LayerTreeHostImplTestWithDelegatingRenderer 5598 class LayerTreeHostImplTestWithDelegatingRenderer
5599 : public LayerTreeHostImplTest { 5599 : public LayerTreeHostImplTest {
5600 protected: 5600 protected:
5601 scoped_ptr<OutputSurface> CreateOutputSurface() override { 5601 scoped_ptr<OutputSurface> CreateOutputSurface() override {
5602 return FakeOutputSurface::CreateDelegating3d(); 5602 return FakeOutputSurface::CreateDelegating3d();
5603 } 5603 }
5604 5604
5605 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { 5605 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) {
5606 bool expect_to_draw = !expected_damage.IsEmpty(); 5606 bool expect_to_draw = !expected_damage.IsEmpty();
5607 5607
5608 LayerTreeHostImpl::FrameData frame; 5608 FrameData frame;
5609 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5609 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5610 5610
5611 if (!expect_to_draw) { 5611 if (!expect_to_draw) {
5612 // With no damage, we don't draw, and no quads are created. 5612 // With no damage, we don't draw, and no quads are created.
5613 ASSERT_EQ(0u, frame.render_passes.size()); 5613 ASSERT_EQ(0u, frame.render_passes.size());
5614 } else { 5614 } else {
5615 ASSERT_EQ(1u, frame.render_passes.size()); 5615 ASSERT_EQ(1u, frame.render_passes.size());
5616 5616
5617 // Verify the damage rect for the root render pass. 5617 // Verify the damage rect for the root render pass.
5618 const RenderPass* root_render_pass = frame.render_passes.back(); 5618 const RenderPass* root_render_pass = frame.render_passes.back();
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
5755 mask_layer->SetPosition(gfx::PointF()); 5755 mask_layer->SetPosition(gfx::PointF());
5756 mask_layer->SetDrawsContent(true); 5756 mask_layer->SetDrawsContent(true);
5757 5757
5758 5758
5759 // Check that the tree scaling is correctly taken into account for the mask, 5759 // Check that the tree scaling is correctly taken into account for the mask,
5760 // that should fully map onto the quad. 5760 // that should fully map onto the quad.
5761 float device_scale_factor = 1.f; 5761 float device_scale_factor = 1.f;
5762 host_impl_->SetViewportSize(root_size); 5762 host_impl_->SetViewportSize(root_size);
5763 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5763 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5764 { 5764 {
5765 LayerTreeHostImpl::FrameData frame; 5765 FrameData frame;
5766 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5766 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5767 5767
5768 ASSERT_EQ(1u, frame.render_passes.size()); 5768 ASSERT_EQ(1u, frame.render_passes.size());
5769 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5769 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5770 ASSERT_EQ(DrawQuad::RENDER_PASS, 5770 ASSERT_EQ(DrawQuad::RENDER_PASS,
5771 frame.render_passes[0]->quad_list.front()->material); 5771 frame.render_passes[0]->quad_list.front()->material);
5772 const RenderPassDrawQuad* render_pass_quad = 5772 const RenderPassDrawQuad* render_pass_quad =
5773 RenderPassDrawQuad::MaterialCast( 5773 RenderPassDrawQuad::MaterialCast(
5774 frame.render_passes[0]->quad_list.front()); 5774 frame.render_passes[0]->quad_list.front());
5775 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5775 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
(...skipping 10 matching lines...) Expand all
5786 5786
5787 // Applying a DSF should change the render surface size, but won't affect 5787 // Applying a DSF should change the render surface size, but won't affect
5788 // which part of the mask is used. 5788 // which part of the mask is used.
5789 device_scale_factor = 2.f; 5789 device_scale_factor = 2.f;
5790 gfx::Size device_viewport = 5790 gfx::Size device_viewport =
5791 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 5791 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
5792 host_impl_->SetViewportSize(device_viewport); 5792 host_impl_->SetViewportSize(device_viewport);
5793 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5793 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5794 host_impl_->active_tree()->set_needs_update_draw_properties(); 5794 host_impl_->active_tree()->set_needs_update_draw_properties();
5795 { 5795 {
5796 LayerTreeHostImpl::FrameData frame; 5796 FrameData frame;
5797 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5797 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5798 5798
5799 ASSERT_EQ(1u, frame.render_passes.size()); 5799 ASSERT_EQ(1u, frame.render_passes.size());
5800 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5800 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5801 ASSERT_EQ(DrawQuad::RENDER_PASS, 5801 ASSERT_EQ(DrawQuad::RENDER_PASS,
5802 frame.render_passes[0]->quad_list.front()->material); 5802 frame.render_passes[0]->quad_list.front()->material);
5803 const RenderPassDrawQuad* render_pass_quad = 5803 const RenderPassDrawQuad* render_pass_quad =
5804 RenderPassDrawQuad::MaterialCast( 5804 RenderPassDrawQuad::MaterialCast(
5805 frame.render_passes[0]->quad_list.front()); 5805 frame.render_passes[0]->quad_list.front());
5806 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 5806 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
(...skipping 12 matching lines...) Expand all
5819 // should still result in the same part of the mask being used. 5819 // should still result in the same part of the mask being used.
5820 gfx::Size content_bounds = 5820 gfx::Size content_bounds =
5821 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size, 5821 gfx::ToRoundedSize(gfx::ScaleSize(scaling_layer_size,
5822 device_scale_factor)); 5822 device_scale_factor));
5823 content_layer->SetContentBounds(content_bounds); 5823 content_layer->SetContentBounds(content_bounds);
5824 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5824 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5825 mask_layer->SetContentBounds(content_bounds); 5825 mask_layer->SetContentBounds(content_bounds);
5826 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5826 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5827 host_impl_->active_tree()->set_needs_update_draw_properties(); 5827 host_impl_->active_tree()->set_needs_update_draw_properties();
5828 { 5828 {
5829 LayerTreeHostImpl::FrameData frame; 5829 FrameData frame;
5830 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5830 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5831 5831
5832 ASSERT_EQ(1u, frame.render_passes.size()); 5832 ASSERT_EQ(1u, frame.render_passes.size());
5833 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5833 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5834 ASSERT_EQ(DrawQuad::RENDER_PASS, 5834 ASSERT_EQ(DrawQuad::RENDER_PASS,
5835 frame.render_passes[0]->quad_list.front()->material); 5835 frame.render_passes[0]->quad_list.front()->material);
5836 const RenderPassDrawQuad* render_pass_quad = 5836 const RenderPassDrawQuad* render_pass_quad =
5837 RenderPassDrawQuad::MaterialCast( 5837 RenderPassDrawQuad::MaterialCast(
5838 frame.render_passes[0]->quad_list.front()); 5838 frame.render_passes[0]->quad_list.front());
5839 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), 5839 EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
5885 mask_layer->SetBounds(mask_size); 5885 mask_layer->SetBounds(mask_size);
5886 mask_layer->SetContentBounds(mask_size); 5886 mask_layer->SetContentBounds(mask_size);
5887 mask_layer->SetPosition(gfx::PointF()); 5887 mask_layer->SetPosition(gfx::PointF());
5888 mask_layer->SetDrawsContent(true); 5888 mask_layer->SetDrawsContent(true);
5889 5889
5890 // Check that the mask fills the surface. 5890 // Check that the mask fills the surface.
5891 float device_scale_factor = 1.f; 5891 float device_scale_factor = 1.f;
5892 host_impl_->SetViewportSize(root_size); 5892 host_impl_->SetViewportSize(root_size);
5893 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5893 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5894 { 5894 {
5895 LayerTreeHostImpl::FrameData frame; 5895 FrameData frame;
5896 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5896 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5897 5897
5898 ASSERT_EQ(1u, frame.render_passes.size()); 5898 ASSERT_EQ(1u, frame.render_passes.size());
5899 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5899 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5900 ASSERT_EQ(DrawQuad::RENDER_PASS, 5900 ASSERT_EQ(DrawQuad::RENDER_PASS,
5901 frame.render_passes[0]->quad_list.front()->material); 5901 frame.render_passes[0]->quad_list.front()->material);
5902 const RenderPassDrawQuad* render_pass_quad = 5902 const RenderPassDrawQuad* render_pass_quad =
5903 RenderPassDrawQuad::MaterialCast( 5903 RenderPassDrawQuad::MaterialCast(
5904 frame.render_passes[0]->quad_list.front()); 5904 frame.render_passes[0]->quad_list.front());
5905 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 5905 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
5906 render_pass_quad->rect.ToString()); 5906 render_pass_quad->rect.ToString());
5907 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5907 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5908 render_pass_quad->MaskUVRect().ToString()); 5908 render_pass_quad->MaskUVRect().ToString());
5909 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(), 5909 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(),
5910 render_pass_quad->mask_uv_scale.ToString()); 5910 render_pass_quad->mask_uv_scale.ToString());
5911 5911
5912 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5912 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5913 host_impl_->DidDrawAllLayers(frame); 5913 host_impl_->DidDrawAllLayers(frame);
5914 } 5914 }
5915 5915
5916 // Applying a DSF should change the render surface size, but won't affect 5916 // Applying a DSF should change the render surface size, but won't affect
5917 // which part of the mask is used. 5917 // which part of the mask is used.
5918 device_scale_factor = 2.f; 5918 device_scale_factor = 2.f;
5919 gfx::Size device_viewport = 5919 gfx::Size device_viewport =
5920 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 5920 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
5921 host_impl_->SetViewportSize(device_viewport); 5921 host_impl_->SetViewportSize(device_viewport);
5922 host_impl_->SetDeviceScaleFactor(device_scale_factor); 5922 host_impl_->SetDeviceScaleFactor(device_scale_factor);
5923 host_impl_->active_tree()->set_needs_update_draw_properties(); 5923 host_impl_->active_tree()->set_needs_update_draw_properties();
5924 { 5924 {
5925 LayerTreeHostImpl::FrameData frame; 5925 FrameData frame;
5926 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5926 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5927 5927
5928 ASSERT_EQ(1u, frame.render_passes.size()); 5928 ASSERT_EQ(1u, frame.render_passes.size());
5929 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5929 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5930 ASSERT_EQ(DrawQuad::RENDER_PASS, 5930 ASSERT_EQ(DrawQuad::RENDER_PASS,
5931 frame.render_passes[0]->quad_list.front()->material); 5931 frame.render_passes[0]->quad_list.front()->material);
5932 const RenderPassDrawQuad* render_pass_quad = 5932 const RenderPassDrawQuad* render_pass_quad =
5933 RenderPassDrawQuad::MaterialCast( 5933 RenderPassDrawQuad::MaterialCast(
5934 frame.render_passes[0]->quad_list.front()); 5934 frame.render_passes[0]->quad_list.front());
5935 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5935 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
(...skipping 12 matching lines...) Expand all
5948 gfx::Size layer_size_large = 5948 gfx::Size layer_size_large =
5949 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 5949 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
5950 content_layer->SetContentBounds(layer_size_large); 5950 content_layer->SetContentBounds(layer_size_large);
5951 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5951 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5952 gfx::Size mask_size_large = 5952 gfx::Size mask_size_large =
5953 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 5953 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
5954 mask_layer->SetContentBounds(mask_size_large); 5954 mask_layer->SetContentBounds(mask_size_large);
5955 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 5955 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
5956 host_impl_->active_tree()->set_needs_update_draw_properties(); 5956 host_impl_->active_tree()->set_needs_update_draw_properties();
5957 { 5957 {
5958 LayerTreeHostImpl::FrameData frame; 5958 FrameData frame;
5959 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5959 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5960 5960
5961 ASSERT_EQ(1u, frame.render_passes.size()); 5961 ASSERT_EQ(1u, frame.render_passes.size());
5962 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5962 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5963 ASSERT_EQ(DrawQuad::RENDER_PASS, 5963 ASSERT_EQ(DrawQuad::RENDER_PASS,
5964 frame.render_passes[0]->quad_list.front()->material); 5964 frame.render_passes[0]->quad_list.front()->material);
5965 const RenderPassDrawQuad* render_pass_quad = 5965 const RenderPassDrawQuad* render_pass_quad =
5966 RenderPassDrawQuad::MaterialCast( 5966 RenderPassDrawQuad::MaterialCast(
5967 frame.render_passes[0]->quad_list.front()); 5967 frame.render_passes[0]->quad_list.front());
5968 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5968 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
5969 render_pass_quad->rect.ToString()); 5969 render_pass_quad->rect.ToString());
5970 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 5970 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
5971 render_pass_quad->MaskUVRect().ToString()); 5971 render_pass_quad->MaskUVRect().ToString());
5972 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(), 5972 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(),
5973 render_pass_quad->mask_uv_scale.ToString()); 5973 render_pass_quad->mask_uv_scale.ToString());
5974 5974
5975 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 5975 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
5976 host_impl_->DidDrawAllLayers(frame); 5976 host_impl_->DidDrawAllLayers(frame);
5977 } 5977 }
5978 5978
5979 // Applying a different contents scale to the mask layer means it will have 5979 // Applying a different contents scale to the mask layer means it will have
5980 // a larger texture, but it should use the same tex coords to cover the 5980 // a larger texture, but it should use the same tex coords to cover the
5981 // layer it masks. 5981 // layer it masks.
5982 mask_layer->SetContentBounds(mask_size); 5982 mask_layer->SetContentBounds(mask_size);
5983 mask_layer->SetContentsScale(1.f, 1.f); 5983 mask_layer->SetContentsScale(1.f, 1.f);
5984 host_impl_->active_tree()->set_needs_update_draw_properties(); 5984 host_impl_->active_tree()->set_needs_update_draw_properties();
5985 { 5985 {
5986 LayerTreeHostImpl::FrameData frame; 5986 FrameData frame;
5987 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 5987 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
5988 5988
5989 ASSERT_EQ(1u, frame.render_passes.size()); 5989 ASSERT_EQ(1u, frame.render_passes.size());
5990 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 5990 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
5991 ASSERT_EQ(DrawQuad::RENDER_PASS, 5991 ASSERT_EQ(DrawQuad::RENDER_PASS,
5992 frame.render_passes[0]->quad_list.front()->material); 5992 frame.render_passes[0]->quad_list.front()->material);
5993 const RenderPassDrawQuad* render_pass_quad = 5993 const RenderPassDrawQuad* render_pass_quad =
5994 RenderPassDrawQuad::MaterialCast( 5994 RenderPassDrawQuad::MaterialCast(
5995 frame.render_passes[0]->quad_list.front()); 5995 frame.render_passes[0]->quad_list.front());
5996 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 5996 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
6048 mask_layer->SetBounds(mask_size); 6048 mask_layer->SetBounds(mask_size);
6049 mask_layer->SetContentBounds(mask_size); 6049 mask_layer->SetContentBounds(mask_size);
6050 mask_layer->SetPosition(gfx::PointF()); 6050 mask_layer->SetPosition(gfx::PointF());
6051 mask_layer->SetDrawsContent(true); 6051 mask_layer->SetDrawsContent(true);
6052 6052
6053 // Check that the mask fills the surface. 6053 // Check that the mask fills the surface.
6054 float device_scale_factor = 1.f; 6054 float device_scale_factor = 1.f;
6055 host_impl_->SetViewportSize(root_size); 6055 host_impl_->SetViewportSize(root_size);
6056 host_impl_->SetDeviceScaleFactor(device_scale_factor); 6056 host_impl_->SetDeviceScaleFactor(device_scale_factor);
6057 { 6057 {
6058 LayerTreeHostImpl::FrameData frame; 6058 FrameData frame;
6059 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6059 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6060 6060
6061 ASSERT_EQ(1u, frame.render_passes.size()); 6061 ASSERT_EQ(1u, frame.render_passes.size());
6062 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6062 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6063 ASSERT_EQ(DrawQuad::RENDER_PASS, 6063 ASSERT_EQ(DrawQuad::RENDER_PASS,
6064 frame.render_passes[0]->quad_list.ElementAt(1)->material); 6064 frame.render_passes[0]->quad_list.ElementAt(1)->material);
6065 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( 6065 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
6066 frame.render_passes[0]->quad_list.ElementAt(1)); 6066 frame.render_passes[0]->quad_list.ElementAt(1));
6067 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), 6067 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(),
6068 replica_quad->rect.ToString()); 6068 replica_quad->rect.ToString());
6069 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 6069 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
6070 replica_quad->MaskUVRect().ToString()); 6070 replica_quad->MaskUVRect().ToString());
6071 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(), 6071 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(),
6072 replica_quad->mask_uv_scale.ToString()); 6072 replica_quad->mask_uv_scale.ToString());
6073 6073
6074 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6074 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
6075 host_impl_->DidDrawAllLayers(frame); 6075 host_impl_->DidDrawAllLayers(frame);
6076 } 6076 }
6077 6077
6078 // Applying a DSF should change the render surface size, but won't affect 6078 // Applying a DSF should change the render surface size, but won't affect
6079 // which part of the mask is used. 6079 // which part of the mask is used.
6080 device_scale_factor = 2.f; 6080 device_scale_factor = 2.f;
6081 gfx::Size device_viewport = 6081 gfx::Size device_viewport =
6082 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor)); 6082 gfx::ToFlooredSize(gfx::ScaleSize(root_size, device_scale_factor));
6083 host_impl_->SetViewportSize(device_viewport); 6083 host_impl_->SetViewportSize(device_viewport);
6084 host_impl_->SetDeviceScaleFactor(device_scale_factor); 6084 host_impl_->SetDeviceScaleFactor(device_scale_factor);
6085 host_impl_->active_tree()->set_needs_update_draw_properties(); 6085 host_impl_->active_tree()->set_needs_update_draw_properties();
6086 { 6086 {
6087 LayerTreeHostImpl::FrameData frame; 6087 FrameData frame;
6088 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6088 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6089 6089
6090 ASSERT_EQ(1u, frame.render_passes.size()); 6090 ASSERT_EQ(1u, frame.render_passes.size());
6091 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6091 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6092 ASSERT_EQ(DrawQuad::RENDER_PASS, 6092 ASSERT_EQ(DrawQuad::RENDER_PASS,
6093 frame.render_passes[0]->quad_list.ElementAt(1)->material); 6093 frame.render_passes[0]->quad_list.ElementAt(1)->material);
6094 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( 6094 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
6095 frame.render_passes[0]->quad_list.ElementAt(1)); 6095 frame.render_passes[0]->quad_list.ElementAt(1));
6096 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 6096 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
6097 replica_quad->rect.ToString()); 6097 replica_quad->rect.ToString());
(...skipping 11 matching lines...) Expand all
6109 gfx::Size layer_size_large = 6109 gfx::Size layer_size_large =
6110 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor)); 6110 gfx::ToRoundedSize(gfx::ScaleSize(layer_size, device_scale_factor));
6111 content_layer->SetContentBounds(layer_size_large); 6111 content_layer->SetContentBounds(layer_size_large);
6112 content_layer->SetContentsScale(device_scale_factor, device_scale_factor); 6112 content_layer->SetContentsScale(device_scale_factor, device_scale_factor);
6113 gfx::Size mask_size_large = 6113 gfx::Size mask_size_large =
6114 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor)); 6114 gfx::ToRoundedSize(gfx::ScaleSize(mask_size, device_scale_factor));
6115 mask_layer->SetContentBounds(mask_size_large); 6115 mask_layer->SetContentBounds(mask_size_large);
6116 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); 6116 mask_layer->SetContentsScale(device_scale_factor, device_scale_factor);
6117 host_impl_->active_tree()->set_needs_update_draw_properties(); 6117 host_impl_->active_tree()->set_needs_update_draw_properties();
6118 { 6118 {
6119 LayerTreeHostImpl::FrameData frame; 6119 FrameData frame;
6120 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6120 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6121 6121
6122 ASSERT_EQ(1u, frame.render_passes.size()); 6122 ASSERT_EQ(1u, frame.render_passes.size());
6123 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6123 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6124 ASSERT_EQ(DrawQuad::RENDER_PASS, 6124 ASSERT_EQ(DrawQuad::RENDER_PASS,
6125 frame.render_passes[0]->quad_list.ElementAt(1)->material); 6125 frame.render_passes[0]->quad_list.ElementAt(1)->material);
6126 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( 6126 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
6127 frame.render_passes[0]->quad_list.ElementAt(1)); 6127 frame.render_passes[0]->quad_list.ElementAt(1));
6128 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 6128 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
6129 replica_quad->rect.ToString()); 6129 replica_quad->rect.ToString());
6130 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), 6130 EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
6131 replica_quad->MaskUVRect().ToString()); 6131 replica_quad->MaskUVRect().ToString());
6132 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(), 6132 EXPECT_EQ(gfx::Vector2dF(1.f, 1.f).ToString(),
6133 replica_quad->mask_uv_scale.ToString()); 6133 replica_quad->mask_uv_scale.ToString());
6134 6134
6135 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6135 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
6136 host_impl_->DidDrawAllLayers(frame); 6136 host_impl_->DidDrawAllLayers(frame);
6137 } 6137 }
6138 6138
6139 // Applying a different contents scale to the mask layer means it will have 6139 // Applying a different contents scale to the mask layer means it will have
6140 // a larger texture, but it should use the same tex coords to cover the 6140 // a larger texture, but it should use the same tex coords to cover the
6141 // layer it masks. 6141 // layer it masks.
6142 mask_layer->SetContentBounds(mask_size); 6142 mask_layer->SetContentBounds(mask_size);
6143 mask_layer->SetContentsScale(1.f, 1.f); 6143 mask_layer->SetContentsScale(1.f, 1.f);
6144 host_impl_->active_tree()->set_needs_update_draw_properties(); 6144 host_impl_->active_tree()->set_needs_update_draw_properties();
6145 { 6145 {
6146 LayerTreeHostImpl::FrameData frame; 6146 FrameData frame;
6147 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6147 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6148 6148
6149 ASSERT_EQ(1u, frame.render_passes.size()); 6149 ASSERT_EQ(1u, frame.render_passes.size());
6150 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6150 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6151 ASSERT_EQ(DrawQuad::RENDER_PASS, 6151 ASSERT_EQ(DrawQuad::RENDER_PASS,
6152 frame.render_passes[0]->quad_list.ElementAt(1)->material); 6152 frame.render_passes[0]->quad_list.ElementAt(1)->material);
6153 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast( 6153 const RenderPassDrawQuad* replica_quad = RenderPassDrawQuad::MaterialCast(
6154 frame.render_passes[0]->quad_list.ElementAt(1)); 6154 frame.render_passes[0]->quad_list.ElementAt(1));
6155 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), 6155 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(),
6156 replica_quad->rect.ToString()); 6156 replica_quad->rect.ToString());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
6216 gfx::Size mask_size(50, 50); 6216 gfx::Size mask_size(50, 50);
6217 mask_layer->SetBounds(mask_size); 6217 mask_layer->SetBounds(mask_size);
6218 mask_layer->SetContentBounds(mask_size); 6218 mask_layer->SetContentBounds(mask_size);
6219 mask_layer->SetPosition(gfx::PointF()); 6219 mask_layer->SetPosition(gfx::PointF());
6220 mask_layer->SetDrawsContent(true); 6220 mask_layer->SetDrawsContent(true);
6221 6221
6222 float device_scale_factor = 1.f; 6222 float device_scale_factor = 1.f;
6223 host_impl_->SetViewportSize(root_size); 6223 host_impl_->SetViewportSize(root_size);
6224 host_impl_->SetDeviceScaleFactor(device_scale_factor); 6224 host_impl_->SetDeviceScaleFactor(device_scale_factor);
6225 { 6225 {
6226 LayerTreeHostImpl::FrameData frame; 6226 FrameData frame;
6227 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6227 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6228 6228
6229 ASSERT_EQ(1u, frame.render_passes.size()); 6229 ASSERT_EQ(1u, frame.render_passes.size());
6230 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6230 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6231 6231
6232 // The surface is 100x50. 6232 // The surface is 100x50.
6233 ASSERT_EQ(DrawQuad::RENDER_PASS, 6233 ASSERT_EQ(DrawQuad::RENDER_PASS,
6234 frame.render_passes[0]->quad_list.front()->material); 6234 frame.render_passes[0]->quad_list.front()->material);
6235 const RenderPassDrawQuad* render_pass_quad = 6235 const RenderPassDrawQuad* render_pass_quad =
6236 RenderPassDrawQuad::MaterialCast( 6236 RenderPassDrawQuad::MaterialCast(
(...skipping 14 matching lines...) Expand all
6251 replica_quad->mask_uv_scale.ToString()); 6251 replica_quad->mask_uv_scale.ToString());
6252 6252
6253 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6253 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
6254 host_impl_->DidDrawAllLayers(frame); 6254 host_impl_->DidDrawAllLayers(frame);
6255 } 6255 }
6256 6256
6257 // Move the child to (-50, 0) instead. Now the mask should be moved to still 6257 // Move the child to (-50, 0) instead. Now the mask should be moved to still
6258 // cover the layer being replicated. 6258 // cover the layer being replicated.
6259 content_child_layer->SetPosition(gfx::Point(-50, 0)); 6259 content_child_layer->SetPosition(gfx::Point(-50, 0));
6260 { 6260 {
6261 LayerTreeHostImpl::FrameData frame; 6261 FrameData frame;
6262 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6262 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6263 6263
6264 ASSERT_EQ(1u, frame.render_passes.size()); 6264 ASSERT_EQ(1u, frame.render_passes.size());
6265 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size()); 6265 ASSERT_EQ(2u, frame.render_passes[0]->quad_list.size());
6266 6266
6267 // The surface is 100x50 with its origin at (-50, 0). 6267 // The surface is 100x50 with its origin at (-50, 0).
6268 ASSERT_EQ(DrawQuad::RENDER_PASS, 6268 ASSERT_EQ(DrawQuad::RENDER_PASS,
6269 frame.render_passes[0]->quad_list.front()->material); 6269 frame.render_passes[0]->quad_list.front()->material);
6270 const RenderPassDrawQuad* render_pass_quad = 6270 const RenderPassDrawQuad* render_pass_quad =
6271 RenderPassDrawQuad::MaterialCast( 6271 RenderPassDrawQuad::MaterialCast(
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
6349 gfx::Size mask_size(100, 100); 6349 gfx::Size mask_size(100, 100);
6350 mask_layer->SetBounds(mask_size); 6350 mask_layer->SetBounds(mask_size);
6351 mask_layer->SetContentBounds(mask_size); 6351 mask_layer->SetContentBounds(mask_size);
6352 mask_layer->SetPosition(gfx::PointF()); 6352 mask_layer->SetPosition(gfx::PointF());
6353 mask_layer->SetDrawsContent(true); 6353 mask_layer->SetDrawsContent(true);
6354 6354
6355 float device_scale_factor = 1.f; 6355 float device_scale_factor = 1.f;
6356 host_impl_->SetViewportSize(root_size); 6356 host_impl_->SetViewportSize(root_size);
6357 host_impl_->SetDeviceScaleFactor(device_scale_factor); 6357 host_impl_->SetDeviceScaleFactor(device_scale_factor);
6358 { 6358 {
6359 LayerTreeHostImpl::FrameData frame; 6359 FrameData frame;
6360 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6360 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6361 6361
6362 ASSERT_EQ(1u, frame.render_passes.size()); 6362 ASSERT_EQ(1u, frame.render_passes.size());
6363 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 6363 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
6364 6364
6365 // The surface is clipped to 10x20. 6365 // The surface is clipped to 10x20.
6366 ASSERT_EQ(DrawQuad::RENDER_PASS, 6366 ASSERT_EQ(DrawQuad::RENDER_PASS,
6367 frame.render_passes[0]->quad_list.front()->material); 6367 frame.render_passes[0]->quad_list.front()->material);
6368 const RenderPassDrawQuad* render_pass_quad = 6368 const RenderPassDrawQuad* render_pass_quad =
6369 RenderPassDrawQuad::MaterialCast( 6369 RenderPassDrawQuad::MaterialCast(
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
6434 gfx::ScrollOffset scroll_offset(100000, 0); 6434 gfx::ScrollOffset scroll_offset(100000, 0);
6435 scrolling_layer->SetScrollClipLayer(root->id()); 6435 scrolling_layer->SetScrollClipLayer(root->id());
6436 scrolling_layer->PushScrollOffsetFromMainThread(scroll_offset); 6436 scrolling_layer->PushScrollOffsetFromMainThread(scroll_offset);
6437 6437
6438 host_impl_->ActivateSyncTree(); 6438 host_impl_->ActivateSyncTree();
6439 6439
6440 bool update_lcd_text = false; 6440 bool update_lcd_text = false;
6441 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 6441 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
6442 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); 6442 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size());
6443 6443
6444 LayerTreeHostImpl::FrameData frame; 6444 FrameData frame;
6445 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6445 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6446 6446
6447 ASSERT_EQ(1u, frame.render_passes.size()); 6447 ASSERT_EQ(1u, frame.render_passes.size());
6448 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); 6448 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size());
6449 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); 6449 const DrawQuad* quad = frame.render_passes[0]->quad_list.front();
6450 6450
6451 bool antialiased = 6451 bool antialiased =
6452 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad( 6452 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad(
6453 quad->quadTransform(), quad, false); 6453 quad->quadTransform(), quad, false);
6454 EXPECT_FALSE(antialiased); 6454 EXPECT_FALSE(antialiased);
(...skipping 11 matching lines...) Expand all
6466 void DidSwapBuffersCompleteOnImplThread() override { 6466 void DidSwapBuffersCompleteOnImplThread() override {
6467 swap_buffers_complete_++; 6467 swap_buffers_complete_++;
6468 } 6468 }
6469 6469
6470 int swap_buffers_complete_; 6470 int swap_buffers_complete_;
6471 }; 6471 };
6472 6472
6473 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { 6473 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) {
6474 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); 6474 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1));
6475 { 6475 {
6476 LayerTreeHostImpl::FrameData frame; 6476 FrameData frame;
6477 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6477 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6478 host_impl_->DrawLayers(&frame, base::TimeTicks()); 6478 host_impl_->DrawLayers(&frame, base::TimeTicks());
6479 host_impl_->DidDrawAllLayers(frame); 6479 host_impl_->DidDrawAllLayers(frame);
6480 } 6480 }
6481 CompositorFrameAck ack; 6481 CompositorFrameAck ack;
6482 host_impl_->ReclaimResources(&ack); 6482 host_impl_->ReclaimResources(&ack);
6483 host_impl_->DidSwapBuffersComplete(); 6483 host_impl_->DidSwapBuffersComplete();
6484 EXPECT_EQ(swap_buffers_complete_, 1); 6484 EXPECT_EQ(swap_buffers_complete_, 1);
6485 } 6485 }
6486 6486
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
6569 // VideoLayerImpl will not be drawn. 6569 // VideoLayerImpl will not be drawn.
6570 FakeVideoFrameProvider provider; 6570 FakeVideoFrameProvider provider;
6571 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 6571 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
6572 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); 6572 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0);
6573 video_layer->SetBounds(gfx::Size(10, 10)); 6573 video_layer->SetBounds(gfx::Size(10, 10));
6574 video_layer->SetContentBounds(gfx::Size(10, 10)); 6574 video_layer->SetContentBounds(gfx::Size(10, 10));
6575 video_layer->SetDrawsContent(true); 6575 video_layer->SetDrawsContent(true);
6576 root_layer->AddChild(video_layer.Pass()); 6576 root_layer->AddChild(video_layer.Pass());
6577 SetupRootLayerImpl(root_layer.Pass()); 6577 SetupRootLayerImpl(root_layer.Pass());
6578 6578
6579 LayerTreeHostImpl::FrameData frame; 6579 FrameData frame;
6580 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6580 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6581 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6581 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
6582 host_impl_->DidDrawAllLayers(frame); 6582 host_impl_->DidDrawAllLayers(frame);
6583 6583
6584 EXPECT_EQ(1u, frame.will_draw_layers.size()); 6584 EXPECT_EQ(1u, frame.will_draw_layers.size());
6585 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); 6585 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]);
6586 } 6586 }
6587 6587
6588 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { 6588 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest {
6589 protected: 6589 protected:
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
6879 FakeOutputSurface::Create3d(context_provider)); 6879 FakeOutputSurface::Create3d(context_provider));
6880 6880
6881 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 6881 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
6882 6882
6883 ScopedPtrVector<CopyOutputRequest> requests; 6883 ScopedPtrVector<CopyOutputRequest> requests;
6884 requests.push_back(CopyOutputRequest::CreateRequest( 6884 requests.push_back(CopyOutputRequest::CreateRequest(
6885 base::Bind(&ShutdownReleasesContext_Callback))); 6885 base::Bind(&ShutdownReleasesContext_Callback)));
6886 6886
6887 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); 6887 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests);
6888 6888
6889 LayerTreeHostImpl::FrameData frame; 6889 FrameData frame;
6890 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 6890 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
6891 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 6891 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
6892 host_impl_->DidDrawAllLayers(frame); 6892 host_impl_->DidDrawAllLayers(frame);
6893 6893
6894 // The CopyOutputResult's callback has a ref on the ContextProvider and a 6894 // The CopyOutputResult's callback has a ref on the ContextProvider and a
6895 // texture in a texture mailbox. 6895 // texture in a texture mailbox.
6896 EXPECT_FALSE(context_provider->HasOneRef()); 6896 EXPECT_FALSE(context_provider->HasOneRef());
6897 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); 6897 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures());
6898 6898
6899 host_impl_ = nullptr; 6899 host_impl_ = nullptr;
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
7276 7276
7277 ui::LatencyInfo latency_info; 7277 ui::LatencyInfo latency_info;
7278 latency_info.AddLatencyNumber( 7278 latency_info.AddLatencyNumber(
7279 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0); 7279 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, 0);
7280 scoped_ptr<SwapPromise> swap_promise( 7280 scoped_ptr<SwapPromise> swap_promise(
7281 new LatencyInfoSwapPromise(latency_info)); 7281 new LatencyInfoSwapPromise(latency_info));
7282 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass()); 7282 host_impl_->active_tree()->QueueSwapPromise(swap_promise.Pass());
7283 host_impl_->SetNeedsRedraw(); 7283 host_impl_->SetNeedsRedraw();
7284 7284
7285 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 7285 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
7286 LayerTreeHostImpl::FrameData frame; 7286 FrameData frame;
7287 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 7287 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
7288 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 7288 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
7289 host_impl_->DidDrawAllLayers(frame); 7289 host_impl_->DidDrawAllLayers(frame);
7290 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); 7290 EXPECT_TRUE(host_impl_->SwapBuffers(frame));
7291 7291
7292 const std::vector<ui::LatencyInfo>& metadata_latency_after = 7292 const std::vector<ui::LatencyInfo>& metadata_latency_after =
7293 fake_output_surface->last_sent_frame().metadata.latency_info; 7293 fake_output_surface->last_sent_frame().metadata.latency_info;
7294 EXPECT_EQ(1u, metadata_latency_after.size()); 7294 EXPECT_EQ(1u, metadata_latency_after.size());
7295 EXPECT_TRUE(metadata_latency_after[0].FindLatency( 7295 EXPECT_TRUE(metadata_latency_after[0].FindLatency(
7296 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); 7296 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL));
(...skipping 29 matching lines...) Expand all
7326 start.layer_id = root_layer_id; 7326 start.layer_id = root_layer_id;
7327 start.edge_bottom = selection_bottom; 7327 start.edge_bottom = selection_bottom;
7328 start.edge_top = selection_top; 7328 start.edge_top = selection_top;
7329 end = start; 7329 end = start;
7330 host_impl_->active_tree()->RegisterSelection(start, end); 7330 host_impl_->active_tree()->RegisterSelection(start, end);
7331 7331
7332 // Trigger a draw-swap sequence. 7332 // Trigger a draw-swap sequence.
7333 host_impl_->SetNeedsRedraw(); 7333 host_impl_->SetNeedsRedraw();
7334 7334
7335 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); 7335 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize());
7336 LayerTreeHostImpl::FrameData frame; 7336 FrameData frame;
7337 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 7337 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
7338 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 7338 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
7339 host_impl_->DidDrawAllLayers(frame); 7339 host_impl_->DidDrawAllLayers(frame);
7340 EXPECT_TRUE(host_impl_->SwapBuffers(frame)); 7340 EXPECT_TRUE(host_impl_->SwapBuffers(frame));
7341 7341
7342 // Ensure the selection bounds have propagated to the frame metadata. 7342 // Ensure the selection bounds have propagated to the frame metadata.
7343 const ViewportSelectionBound& selection_start_after = 7343 const ViewportSelectionBound& selection_start_after =
7344 fake_output_surface->last_sent_frame().metadata.selection_start; 7344 fake_output_surface->last_sent_frame().metadata.selection_start;
7345 const ViewportSelectionBound& selection_end_after = 7345 const ViewportSelectionBound& selection_end_after =
7346 fake_output_surface->last_sent_frame().metadata.selection_end; 7346 fake_output_surface->last_sent_frame().metadata.selection_end;
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after
8499 // surface. 8499 // surface.
8500 EXPECT_EQ(0, num_lost_surfaces_); 8500 EXPECT_EQ(0, num_lost_surfaces_);
8501 host_impl_->DidLoseOutputSurface(); 8501 host_impl_->DidLoseOutputSurface();
8502 EXPECT_EQ(1, num_lost_surfaces_); 8502 EXPECT_EQ(1, num_lost_surfaces_);
8503 host_impl_->DidLoseOutputSurface(); 8503 host_impl_->DidLoseOutputSurface();
8504 EXPECT_LE(1, num_lost_surfaces_); 8504 EXPECT_LE(1, num_lost_surfaces_);
8505 } 8505 }
8506 8506
8507 } // namespace 8507 } // namespace
8508 } // namespace cc 8508 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698