| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer | 245 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer |
| 246 : public LayerTreeHostDelegatedTest, | 246 : public LayerTreeHostDelegatedTest, |
| 247 public DelegatedFrameResourceCollectionClient { | 247 public DelegatedFrameResourceCollectionClient { |
| 248 public: | 248 public: |
| 249 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() | 249 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() |
| 250 : resource_collection_(new DelegatedFrameResourceCollection), | 250 : resource_collection_(new DelegatedFrameResourceCollection), |
| 251 available_(false) { | 251 available_(false) { |
| 252 resource_collection_->SetClient(this); | 252 resource_collection_->SetClient(this); |
| 253 } | 253 } |
| 254 | 254 |
| 255 virtual void SetupTree() override { | 255 void SetupTree() override { |
| 256 root_ = Layer::Create(); | 256 root_ = Layer::Create(); |
| 257 root_->SetBounds(gfx::Size(15, 15)); | 257 root_->SetBounds(gfx::Size(15, 15)); |
| 258 | 258 |
| 259 layer_tree_host()->SetRootLayer(root_); | 259 layer_tree_host()->SetRootLayer(root_); |
| 260 LayerTreeHostDelegatedTest::SetupTree(); | 260 LayerTreeHostDelegatedTest::SetupTree(); |
| 261 } | 261 } |
| 262 | 262 |
| 263 virtual void BeginTest() override { | 263 void BeginTest() override { |
| 264 resource_collection_->SetClient(this); | 264 resource_collection_->SetClient(this); |
| 265 PostSetNeedsCommitToMainThread(); | 265 PostSetNeedsCommitToMainThread(); |
| 266 } | 266 } |
| 267 | 267 |
| 268 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data) { | 268 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data) { |
| 269 RenderPass* root_pass = frame_data->render_pass_list.back(); | 269 RenderPass* root_pass = frame_data->render_pass_list.back(); |
| 270 gfx::Size frame_size = root_pass->output_rect.size(); | 270 gfx::Size frame_size = root_pass->output_rect.size(); |
| 271 | 271 |
| 272 if (frame_provider_.get() && frame_size == frame_provider_->frame_size()) { | 272 if (frame_provider_.get() && frame_size == frame_provider_->frame_size()) { |
| 273 frame_provider_->SetFrameData(frame_data.Pass()); | 273 frame_provider_->SetFrameData(frame_data.Pass()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 290 DelegatedFrameProvider* frame_provider) { | 290 DelegatedFrameProvider* frame_provider) { |
| 291 scoped_refptr<DelegatedRendererLayer> delegated = | 291 scoped_refptr<DelegatedRendererLayer> delegated = |
| 292 FakeDelegatedRendererLayer::Create(frame_provider); | 292 FakeDelegatedRendererLayer::Create(frame_provider); |
| 293 delegated->SetBounds(gfx::Size(10, 10)); | 293 delegated->SetBounds(gfx::Size(10, 10)); |
| 294 delegated->SetIsDrawable(true); | 294 delegated->SetIsDrawable(true); |
| 295 | 295 |
| 296 root_->AddChild(delegated); | 296 root_->AddChild(delegated); |
| 297 return delegated; | 297 return delegated; |
| 298 } | 298 } |
| 299 | 299 |
| 300 virtual void AfterTest() override { resource_collection_->SetClient(NULL); } | 300 void AfterTest() override { resource_collection_->SetClient(NULL); } |
| 301 | 301 |
| 302 // DelegatedFrameProviderClient implementation. | 302 // DelegatedFrameProviderClient implementation. |
| 303 virtual void UnusedResourcesAreAvailable() override { available_ = true; } | 303 void UnusedResourcesAreAvailable() override { available_ = true; } |
| 304 | 304 |
| 305 bool TestAndResetAvailable() { | 305 bool TestAndResetAvailable() { |
| 306 bool available = available_; | 306 bool available = available_; |
| 307 available_ = false; | 307 available_ = false; |
| 308 return available; | 308 return available; |
| 309 } | 309 } |
| 310 | 310 |
| 311 protected: | 311 protected: |
| 312 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; | 312 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; |
| 313 scoped_refptr<DelegatedFrameProvider> frame_provider_; | 313 scoped_refptr<DelegatedFrameProvider> frame_provider_; |
| 314 scoped_refptr<Layer> root_; | 314 scoped_refptr<Layer> root_; |
| 315 scoped_refptr<DelegatedRendererLayer> delegated_; | 315 scoped_refptr<DelegatedRendererLayer> delegated_; |
| 316 bool available_; | 316 bool available_; |
| 317 }; | 317 }; |
| 318 | 318 |
| 319 class LayerTreeHostDelegatedTestCreateChildId | 319 class LayerTreeHostDelegatedTestCreateChildId |
| 320 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 320 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 321 public: | 321 public: |
| 322 LayerTreeHostDelegatedTestCreateChildId() | 322 LayerTreeHostDelegatedTestCreateChildId() |
| 323 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 323 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
| 324 num_activates_(0), | 324 num_activates_(0), |
| 325 did_reset_child_id_(false) {} | 325 did_reset_child_id_(false) {} |
| 326 | 326 |
| 327 virtual void DidCommit() override { | 327 void DidCommit() override { |
| 328 if (TestEnded()) | 328 if (TestEnded()) |
| 329 return; | 329 return; |
| 330 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 330 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 331 } | 331 } |
| 332 | 332 |
| 333 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 333 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 334 if (host_impl->active_tree()->source_frame_number() < 1) | 334 if (host_impl->active_tree()->source_frame_number() < 1) |
| 335 return; | 335 return; |
| 336 | 336 |
| 337 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 337 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 338 FakeDelegatedRendererLayerImpl* delegated_impl = | 338 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 339 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 339 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 340 | 340 |
| 341 TestContextProvider* context_provider = static_cast<TestContextProvider*>( | 341 TestContextProvider* context_provider = static_cast<TestContextProvider*>( |
| 342 host_impl->output_surface()->context_provider()); | 342 host_impl->output_surface()->context_provider()); |
| 343 | 343 |
| 344 ++num_activates_; | 344 ++num_activates_; |
| 345 switch (num_activates_) { | 345 switch (num_activates_) { |
| 346 case 2: | 346 case 2: |
| 347 EXPECT_TRUE(delegated_impl->ChildId()); | 347 EXPECT_TRUE(delegated_impl->ChildId()); |
| 348 EXPECT_FALSE(did_reset_child_id_); | 348 EXPECT_FALSE(did_reset_child_id_); |
| 349 | 349 |
| 350 context_provider->ContextGL()->LoseContextCHROMIUM( | 350 context_provider->ContextGL()->LoseContextCHROMIUM( |
| 351 GL_GUILTY_CONTEXT_RESET_ARB, | 351 GL_GUILTY_CONTEXT_RESET_ARB, |
| 352 GL_INNOCENT_CONTEXT_RESET_ARB); | 352 GL_INNOCENT_CONTEXT_RESET_ARB); |
| 353 context_provider->ContextGL()->Flush(); | 353 context_provider->ContextGL()->Flush(); |
| 354 break; | 354 break; |
| 355 case 3: | 355 case 3: |
| 356 EXPECT_TRUE(delegated_impl->ChildId()); | 356 EXPECT_TRUE(delegated_impl->ChildId()); |
| 357 EXPECT_TRUE(did_reset_child_id_); | 357 EXPECT_TRUE(did_reset_child_id_); |
| 358 EndTest(); | 358 EndTest(); |
| 359 break; | 359 break; |
| 360 } | 360 } |
| 361 } | 361 } |
| 362 | 362 |
| 363 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, | 363 void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, |
| 364 bool success) override { | 364 bool success) override { |
| 365 EXPECT_TRUE(success); | 365 EXPECT_TRUE(success); |
| 366 | 366 |
| 367 if (num_activates_ < 2) | 367 if (num_activates_ < 2) |
| 368 return; | 368 return; |
| 369 | 369 |
| 370 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 370 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 371 FakeDelegatedRendererLayerImpl* delegated_impl = | 371 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 372 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 372 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 373 | 373 |
| 374 EXPECT_EQ(2, num_activates_); | 374 EXPECT_EQ(2, num_activates_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 385 | 385 |
| 386 // Test that we can gracefully handle invalid frames after the context was lost. | 386 // Test that we can gracefully handle invalid frames after the context was lost. |
| 387 // For example, we might be trying to use the previous frame in that case and | 387 // For example, we might be trying to use the previous frame in that case and |
| 388 // have to make sure we don't crash because our resource accounting goes wrong. | 388 // have to make sure we don't crash because our resource accounting goes wrong. |
| 389 class LayerTreeHostDelegatedTestInvalidFrameAfterContextLost | 389 class LayerTreeHostDelegatedTestInvalidFrameAfterContextLost |
| 390 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 390 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 391 public: | 391 public: |
| 392 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost() | 392 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost() |
| 393 : num_activates_(0), num_output_surfaces_initialized_(0) {} | 393 : num_activates_(0), num_output_surfaces_initialized_(0) {} |
| 394 | 394 |
| 395 virtual void DidCommit() override { | 395 void DidCommit() override { |
| 396 if (TestEnded()) | 396 if (TestEnded()) |
| 397 return; | 397 return; |
| 398 scoped_ptr<DelegatedFrameData> frame1 = | 398 scoped_ptr<DelegatedFrameData> frame1 = |
| 399 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 399 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 400 AddTextureQuad(frame1.get(), 999); | 400 AddTextureQuad(frame1.get(), 999); |
| 401 AddTransferableResource(frame1.get(), 999); | 401 AddTransferableResource(frame1.get(), 999); |
| 402 SetFrameData(frame1.Pass()); | 402 SetFrameData(frame1.Pass()); |
| 403 } | 403 } |
| 404 | 404 |
| 405 virtual void DidInitializeOutputSurface() override { | 405 void DidInitializeOutputSurface() override { |
| 406 if (!num_output_surfaces_initialized_++) | 406 if (!num_output_surfaces_initialized_++) |
| 407 return; | 407 return; |
| 408 | 408 |
| 409 scoped_refptr<DelegatedRendererLayer> old_delegated = delegated_; | 409 scoped_refptr<DelegatedRendererLayer> old_delegated = delegated_; |
| 410 SetFrameData( | 410 SetFrameData( |
| 411 CreateInvalidFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 411 CreateInvalidFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 412 // Make sure we end up using the same layer, or we won't test the right | 412 // Make sure we end up using the same layer, or we won't test the right |
| 413 // thing, which is to make sure we can handle an invalid frame when using | 413 // thing, which is to make sure we can handle an invalid frame when using |
| 414 // a stale layer from before the context was lost. | 414 // a stale layer from before the context was lost. |
| 415 DCHECK(delegated_.get() == old_delegated.get()); | 415 DCHECK(delegated_.get() == old_delegated.get()); |
| 416 } | 416 } |
| 417 | 417 |
| 418 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 418 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 419 if (host_impl->active_tree()->source_frame_number() < 1) | 419 if (host_impl->active_tree()->source_frame_number() < 1) |
| 420 return; | 420 return; |
| 421 | 421 |
| 422 TestContextProvider* context_provider = static_cast<TestContextProvider*>( | 422 TestContextProvider* context_provider = static_cast<TestContextProvider*>( |
| 423 host_impl->output_surface()->context_provider()); | 423 host_impl->output_surface()->context_provider()); |
| 424 | 424 |
| 425 ++num_activates_; | 425 ++num_activates_; |
| 426 switch (num_activates_) { | 426 switch (num_activates_) { |
| 427 case 2: | 427 case 2: |
| 428 context_provider->ContextGL()->LoseContextCHROMIUM( | 428 context_provider->ContextGL()->LoseContextCHROMIUM( |
| 429 GL_GUILTY_CONTEXT_RESET_ARB, | 429 GL_GUILTY_CONTEXT_RESET_ARB, |
| 430 GL_INNOCENT_CONTEXT_RESET_ARB); | 430 GL_INNOCENT_CONTEXT_RESET_ARB); |
| 431 break; | 431 break; |
| 432 case 3: | 432 case 3: |
| 433 EndTest(); | 433 EndTest(); |
| 434 break; | 434 break; |
| 435 } | 435 } |
| 436 } | 436 } |
| 437 | 437 |
| 438 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, | 438 void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, |
| 439 bool success) override { | 439 bool success) override { |
| 440 EXPECT_TRUE(success); | 440 EXPECT_TRUE(success); |
| 441 | 441 |
| 442 if (num_activates_ < 2) | 442 if (num_activates_ < 2) |
| 443 return; | 443 return; |
| 444 | 444 |
| 445 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 445 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 446 FakeDelegatedRendererLayerImpl* delegated_impl = | 446 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 447 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 447 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 448 | 448 |
| 449 EXPECT_EQ(2, num_activates_); | 449 EXPECT_EQ(2, num_activates_); |
| 450 // Resources should have gotten cleared after the context was lost. | 450 // Resources should have gotten cleared after the context was lost. |
| 451 EXPECT_EQ(0U, delegated_impl->Resources().size()); | 451 EXPECT_EQ(0U, delegated_impl->Resources().size()); |
| 452 } | 452 } |
| 453 | 453 |
| 454 virtual void AfterTest() override { | 454 void AfterTest() override { |
| 455 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer::AfterTest(); | 455 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer::AfterTest(); |
| 456 EXPECT_EQ(2, num_output_surfaces_initialized_); | 456 EXPECT_EQ(2, num_output_surfaces_initialized_); |
| 457 } | 457 } |
| 458 | 458 |
| 459 protected: | 459 protected: |
| 460 int num_activates_; | 460 int num_activates_; |
| 461 int num_output_surfaces_initialized_; | 461 int num_output_surfaces_initialized_; |
| 462 }; | 462 }; |
| 463 | 463 |
| 464 SINGLE_AND_MULTI_THREAD_TEST_F( | 464 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 465 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost); | 465 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost); |
| 466 | 466 |
| 467 class LayerTreeHostDelegatedTestLayerUsesFrameDamage | 467 class LayerTreeHostDelegatedTestLayerUsesFrameDamage |
| 468 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 468 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 469 public: | 469 public: |
| 470 LayerTreeHostDelegatedTestLayerUsesFrameDamage() | 470 LayerTreeHostDelegatedTestLayerUsesFrameDamage() |
| 471 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 471 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
| 472 first_draw_for_source_frame_(true) {} | 472 first_draw_for_source_frame_(true) {} |
| 473 | 473 |
| 474 virtual void DidCommit() override { | 474 void DidCommit() override { |
| 475 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 475 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 476 switch (next_source_frame_number) { | 476 switch (next_source_frame_number) { |
| 477 case 1: | 477 case 1: |
| 478 // The first time the layer gets a frame the whole layer should be | 478 // The first time the layer gets a frame the whole layer should be |
| 479 // damaged. | 479 // damaged. |
| 480 SetFrameData( | 480 SetFrameData( |
| 481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
| 482 break; | 482 break; |
| 483 case 2: | 483 case 2: |
| 484 // A different frame size will damage the whole layer. | 484 // A different frame size will damage the whole layer. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 case 18: | 574 case 18: |
| 575 // Set another new frame, both layers should be damaged in the same | 575 // Set another new frame, both layers should be damaged in the same |
| 576 // ways. | 576 // ways. |
| 577 SetFrameData( | 577 SetFrameData( |
| 578 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1))); | 578 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1))); |
| 579 break; | 579 break; |
| 580 } | 580 } |
| 581 first_draw_for_source_frame_ = true; | 581 first_draw_for_source_frame_ = true; |
| 582 } | 582 } |
| 583 | 583 |
| 584 virtual DrawResult PrepareToDrawOnThread( | 584 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 585 LayerTreeHostImpl* host_impl, | 585 LayerTreeHostImpl::FrameData* frame, |
| 586 LayerTreeHostImpl::FrameData* frame, | 586 DrawResult draw_result) override { |
| 587 DrawResult draw_result) override { | |
| 588 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 587 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 589 | 588 |
| 590 if (!first_draw_for_source_frame_) | 589 if (!first_draw_for_source_frame_) |
| 591 return draw_result; | 590 return draw_result; |
| 592 | 591 |
| 593 gfx::Rect damage_rect; | 592 gfx::Rect damage_rect; |
| 594 if (!frame->has_no_damage) { | 593 if (!frame->has_no_damage) { |
| 595 damage_rect = frame->render_passes.back()->damage_rect; | 594 damage_rect = frame->render_passes.back()->damage_rect; |
| 596 } else { | 595 } else { |
| 597 // If there is no damage, then we have no render passes to send. | 596 // If there is no damage, then we have no render passes to send. |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 protected: | 667 protected: |
| 669 scoped_refptr<DelegatedRendererLayer> delegated_copy_; | 668 scoped_refptr<DelegatedRendererLayer> delegated_copy_; |
| 670 bool first_draw_for_source_frame_; | 669 bool first_draw_for_source_frame_; |
| 671 }; | 670 }; |
| 672 | 671 |
| 673 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); | 672 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); |
| 674 | 673 |
| 675 class LayerTreeHostDelegatedTestMergeResources | 674 class LayerTreeHostDelegatedTestMergeResources |
| 676 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 675 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 677 public: | 676 public: |
| 678 virtual void BeginTest() override { | 677 void BeginTest() override { |
| 679 // Push two frames to the delegated renderer layer with no commit between. | 678 // Push two frames to the delegated renderer layer with no commit between. |
| 680 | 679 |
| 681 // The first frame has resource 999. | 680 // The first frame has resource 999. |
| 682 scoped_ptr<DelegatedFrameData> frame1 = | 681 scoped_ptr<DelegatedFrameData> frame1 = |
| 683 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 682 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 684 AddTextureQuad(frame1.get(), 999); | 683 AddTextureQuad(frame1.get(), 999); |
| 685 AddTransferableResource(frame1.get(), 999); | 684 AddTransferableResource(frame1.get(), 999); |
| 686 SetFrameData(frame1.Pass()); | 685 SetFrameData(frame1.Pass()); |
| 687 | 686 |
| 688 // The second frame uses resource 999 still, but also adds 555. | 687 // The second frame uses resource 999 still, but also adds 555. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 701 &returned_resources); | 700 &returned_resources); |
| 702 { | 701 { |
| 703 unsigned expected[] = {999}; | 702 unsigned expected[] = {999}; |
| 704 EXPECT_RESOURCES(expected, returned_resources); | 703 EXPECT_RESOURCES(expected, returned_resources); |
| 705 EXPECT_TRUE(TestAndResetAvailable()); | 704 EXPECT_TRUE(TestAndResetAvailable()); |
| 706 } | 705 } |
| 707 | 706 |
| 708 PostSetNeedsCommitToMainThread(); | 707 PostSetNeedsCommitToMainThread(); |
| 709 } | 708 } |
| 710 | 709 |
| 711 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 710 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 712 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 711 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 713 FakeDelegatedRendererLayerImpl* delegated_impl = | 712 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 714 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 713 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 715 | 714 |
| 716 const ResourceProvider::ResourceIdMap& map = | 715 const ResourceProvider::ResourceIdMap& map = |
| 717 host_impl->resource_provider()->GetChildToParentMap( | 716 host_impl->resource_provider()->GetChildToParentMap( |
| 718 delegated_impl->ChildId()); | 717 delegated_impl->ChildId()); |
| 719 | 718 |
| 720 // Both frames' resources should be in the parent's resource provider. | 719 // Both frames' resources should be in the parent's resource provider. |
| 721 EXPECT_EQ(2u, map.size()); | 720 EXPECT_EQ(2u, map.size()); |
| 722 EXPECT_EQ(1u, map.count(999)); | 721 EXPECT_EQ(1u, map.count(999)); |
| 723 EXPECT_EQ(1u, map.count(555)); | 722 EXPECT_EQ(1u, map.count(555)); |
| 724 | 723 |
| 725 EXPECT_EQ(2u, delegated_impl->Resources().size()); | 724 EXPECT_EQ(2u, delegated_impl->Resources().size()); |
| 726 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); | 725 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); |
| 727 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 726 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
| 728 | 727 |
| 729 EndTest(); | 728 EndTest(); |
| 730 } | 729 } |
| 731 }; | 730 }; |
| 732 | 731 |
| 733 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestMergeResources); | 732 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestMergeResources); |
| 734 | 733 |
| 735 class LayerTreeHostDelegatedTestRemapResourcesInQuads | 734 class LayerTreeHostDelegatedTestRemapResourcesInQuads |
| 736 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 735 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 737 public: | 736 public: |
| 738 virtual void BeginTest() override { | 737 void BeginTest() override { |
| 739 // Generate a frame with two resources in it. | 738 // Generate a frame with two resources in it. |
| 740 scoped_ptr<DelegatedFrameData> frame = | 739 scoped_ptr<DelegatedFrameData> frame = |
| 741 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 740 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 742 AddTextureQuad(frame.get(), 999); | 741 AddTextureQuad(frame.get(), 999); |
| 743 AddTransferableResource(frame.get(), 999); | 742 AddTransferableResource(frame.get(), 999); |
| 744 AddTextureQuad(frame.get(), 555); | 743 AddTextureQuad(frame.get(), 555); |
| 745 AddTransferableResource(frame.get(), 555); | 744 AddTransferableResource(frame.get(), 555); |
| 746 SetFrameData(frame.Pass()); | 745 SetFrameData(frame.Pass()); |
| 747 | 746 |
| 748 PostSetNeedsCommitToMainThread(); | 747 PostSetNeedsCommitToMainThread(); |
| 749 } | 748 } |
| 750 | 749 |
| 751 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 750 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 752 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 751 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 753 FakeDelegatedRendererLayerImpl* delegated_impl = | 752 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 754 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 753 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 755 | 754 |
| 756 const ResourceProvider::ResourceIdMap& map = | 755 const ResourceProvider::ResourceIdMap& map = |
| 757 host_impl->resource_provider()->GetChildToParentMap( | 756 host_impl->resource_provider()->GetChildToParentMap( |
| 758 delegated_impl->ChildId()); | 757 delegated_impl->ChildId()); |
| 759 | 758 |
| 760 // The frame's resource should be in the parent's resource provider. | 759 // The frame's resource should be in the parent's resource provider. |
| 761 EXPECT_EQ(2u, map.size()); | 760 EXPECT_EQ(2u, map.size()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 777 | 776 |
| 778 EndTest(); | 777 EndTest(); |
| 779 } | 778 } |
| 780 }; | 779 }; |
| 781 | 780 |
| 782 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemapResourcesInQuads); | 781 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemapResourcesInQuads); |
| 783 | 782 |
| 784 class LayerTreeHostDelegatedTestReturnUnusedResources | 783 class LayerTreeHostDelegatedTestReturnUnusedResources |
| 785 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 784 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 786 public: | 785 public: |
| 787 virtual void BeginTest() override { | 786 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 788 PostSetNeedsCommitToMainThread(); | |
| 789 } | |
| 790 | 787 |
| 791 virtual void DidCommitAndDrawFrame() override { | 788 void DidCommitAndDrawFrame() override { |
| 792 scoped_ptr<DelegatedFrameData> frame; | 789 scoped_ptr<DelegatedFrameData> frame; |
| 793 ReturnedResourceArray resources; | 790 ReturnedResourceArray resources; |
| 794 | 791 |
| 795 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 792 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 796 switch (next_source_frame_number) { | 793 switch (next_source_frame_number) { |
| 797 case 1: | 794 case 1: |
| 798 // Generate a frame with two resources in it. | 795 // Generate a frame with two resources in it. |
| 799 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 796 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 800 AddTextureQuad(frame.get(), 999); | 797 AddTextureQuad(frame.get(), 999); |
| 801 AddTransferableResource(frame.get(), 999); | 798 AddTransferableResource(frame.get(), 999); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 } | 846 } |
| 850 | 847 |
| 851 // Resources are never immediately released. | 848 // Resources are never immediately released. |
| 852 ReturnedResourceArray empty_resources; | 849 ReturnedResourceArray empty_resources; |
| 853 resource_collection_->TakeUnusedResourcesForChildCompositor( | 850 resource_collection_->TakeUnusedResourcesForChildCompositor( |
| 854 &empty_resources); | 851 &empty_resources); |
| 855 EXPECT_EQ(0u, empty_resources.size()); | 852 EXPECT_EQ(0u, empty_resources.size()); |
| 856 EXPECT_FALSE(TestAndResetAvailable()); | 853 EXPECT_FALSE(TestAndResetAvailable()); |
| 857 } | 854 } |
| 858 | 855 |
| 859 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 856 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 860 bool result) override { | |
| 861 ReturnUnusedResourcesFromParent(host_impl); | 857 ReturnUnusedResourcesFromParent(host_impl); |
| 862 } | 858 } |
| 863 }; | 859 }; |
| 864 | 860 |
| 865 SINGLE_AND_MULTI_THREAD_TEST_F( | 861 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 866 LayerTreeHostDelegatedTestReturnUnusedResources); | 862 LayerTreeHostDelegatedTestReturnUnusedResources); |
| 867 | 863 |
| 868 class LayerTreeHostDelegatedTestReusedResources | 864 class LayerTreeHostDelegatedTestReusedResources |
| 869 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 865 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 870 public: | 866 public: |
| 871 virtual void BeginTest() override { | 867 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 872 PostSetNeedsCommitToMainThread(); | |
| 873 } | |
| 874 | 868 |
| 875 virtual void DidCommitAndDrawFrame() override { | 869 void DidCommitAndDrawFrame() override { |
| 876 scoped_ptr<DelegatedFrameData> frame; | 870 scoped_ptr<DelegatedFrameData> frame; |
| 877 ReturnedResourceArray resources; | 871 ReturnedResourceArray resources; |
| 878 | 872 |
| 879 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 873 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 880 switch (next_source_frame_number) { | 874 switch (next_source_frame_number) { |
| 881 case 1: | 875 case 1: |
| 882 // Generate a frame with some resources in it. | 876 // Generate a frame with some resources in it. |
| 883 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 877 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 884 AddTextureQuad(frame.get(), 999); | 878 AddTextureQuad(frame.get(), 999); |
| 885 AddTransferableResource(frame.get(), 999); | 879 AddTransferableResource(frame.get(), 999); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 { | 915 { |
| 922 unsigned expected[] = {999, 999}; | 916 unsigned expected[] = {999, 999}; |
| 923 EXPECT_RESOURCES(expected, resources); | 917 EXPECT_RESOURCES(expected, resources); |
| 924 EXPECT_TRUE(TestAndResetAvailable()); | 918 EXPECT_TRUE(TestAndResetAvailable()); |
| 925 } | 919 } |
| 926 EndTest(); | 920 EndTest(); |
| 927 break; | 921 break; |
| 928 } | 922 } |
| 929 } | 923 } |
| 930 | 924 |
| 931 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 925 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 932 bool result) override { | |
| 933 ReturnUnusedResourcesFromParent(host_impl); | 926 ReturnUnusedResourcesFromParent(host_impl); |
| 934 } | 927 } |
| 935 }; | 928 }; |
| 936 | 929 |
| 937 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); | 930 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); |
| 938 | 931 |
| 939 class LayerTreeHostDelegatedTestFrameBeforeAck | 932 class LayerTreeHostDelegatedTestFrameBeforeAck |
| 940 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 933 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 941 public: | 934 public: |
| 942 virtual void BeginTest() override { | 935 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 943 PostSetNeedsCommitToMainThread(); | |
| 944 } | |
| 945 | 936 |
| 946 virtual void DidCommitAndDrawFrame() override { | 937 void DidCommitAndDrawFrame() override { |
| 947 scoped_ptr<DelegatedFrameData> frame; | 938 scoped_ptr<DelegatedFrameData> frame; |
| 948 ReturnedResourceArray resources; | 939 ReturnedResourceArray resources; |
| 949 | 940 |
| 950 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 941 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 951 switch (next_source_frame_number) { | 942 switch (next_source_frame_number) { |
| 952 case 1: | 943 case 1: |
| 953 // Generate a frame with some resources in it. | 944 // Generate a frame with some resources in it. |
| 954 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 945 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 955 AddTextureQuad(frame.get(), 999); | 946 AddTextureQuad(frame.get(), 999); |
| 956 AddTransferableResource(frame.get(), 999); | 947 AddTransferableResource(frame.get(), 999); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 // frame. | 982 // frame. |
| 992 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 983 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 993 AddTextureQuad(frame.get(), 999); | 984 AddTextureQuad(frame.get(), 999); |
| 994 AddTextureQuad(frame.get(), 555); | 985 AddTextureQuad(frame.get(), 555); |
| 995 AddTextureQuad(frame.get(), 444); | 986 AddTextureQuad(frame.get(), 444); |
| 996 SetFrameData(frame.Pass()); | 987 SetFrameData(frame.Pass()); |
| 997 break; | 988 break; |
| 998 } | 989 } |
| 999 } | 990 } |
| 1000 | 991 |
| 1001 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 992 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1002 if (host_impl->active_tree()->source_frame_number() != 3) | 993 if (host_impl->active_tree()->source_frame_number() != 3) |
| 1003 return; | 994 return; |
| 1004 | 995 |
| 1005 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 996 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1006 FakeDelegatedRendererLayerImpl* delegated_impl = | 997 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1007 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 998 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1008 | 999 |
| 1009 const ResourceProvider::ResourceIdMap& map = | 1000 const ResourceProvider::ResourceIdMap& map = |
| 1010 host_impl->resource_provider()->GetChildToParentMap( | 1001 host_impl->resource_provider()->GetChildToParentMap( |
| 1011 delegated_impl->ChildId()); | 1002 delegated_impl->ChildId()); |
| 1012 | 1003 |
| 1013 // The bad frame should be dropped. So we should only have one quad (the | 1004 // The bad frame should be dropped. So we should only have one quad (the |
| 1014 // one with resource 999) on the impl tree. And only 999 will be present | 1005 // one with resource 999) on the impl tree. And only 999 will be present |
| 1015 // in the parent's resource provider. | 1006 // in the parent's resource provider. |
| 1016 EXPECT_EQ(1u, map.size()); | 1007 EXPECT_EQ(1u, map.size()); |
| 1017 EXPECT_EQ(1u, map.count(999)); | 1008 EXPECT_EQ(1u, map.count(999)); |
| 1018 | 1009 |
| 1019 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1010 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
| 1020 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); | 1011 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); |
| 1021 | 1012 |
| 1022 const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0]; | 1013 const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0]; |
| 1023 EXPECT_EQ(1u, pass->quad_list.size()); | 1014 EXPECT_EQ(1u, pass->quad_list.size()); |
| 1024 const TextureDrawQuad* quad = | 1015 const TextureDrawQuad* quad = |
| 1025 TextureDrawQuad::MaterialCast(pass->quad_list.front()); | 1016 TextureDrawQuad::MaterialCast(pass->quad_list.front()); |
| 1026 EXPECT_EQ(map.find(999)->second, quad->resource_id); | 1017 EXPECT_EQ(map.find(999)->second, quad->resource_id); |
| 1027 | 1018 |
| 1028 EndTest(); | 1019 EndTest(); |
| 1029 } | 1020 } |
| 1030 | 1021 |
| 1031 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1022 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1032 bool result) override { | |
| 1033 ReturnUnusedResourcesFromParent(host_impl); | 1023 ReturnUnusedResourcesFromParent(host_impl); |
| 1034 } | 1024 } |
| 1035 }; | 1025 }; |
| 1036 | 1026 |
| 1037 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestFrameBeforeAck); | 1027 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestFrameBeforeAck); |
| 1038 | 1028 |
| 1039 class LayerTreeHostDelegatedTestFrameBeforeTakeResources | 1029 class LayerTreeHostDelegatedTestFrameBeforeTakeResources |
| 1040 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1030 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1041 public: | 1031 public: |
| 1042 virtual void BeginTest() override { | 1032 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1043 PostSetNeedsCommitToMainThread(); | |
| 1044 } | |
| 1045 | 1033 |
| 1046 virtual void DidCommitAndDrawFrame() override { | 1034 void DidCommitAndDrawFrame() override { |
| 1047 scoped_ptr<DelegatedFrameData> frame; | 1035 scoped_ptr<DelegatedFrameData> frame; |
| 1048 ReturnedResourceArray resources; | 1036 ReturnedResourceArray resources; |
| 1049 | 1037 |
| 1050 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1038 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1051 switch (next_source_frame_number) { | 1039 switch (next_source_frame_number) { |
| 1052 case 1: | 1040 case 1: |
| 1053 // Generate a frame with some resources in it. | 1041 // Generate a frame with some resources in it. |
| 1054 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1042 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1055 AddTextureQuad(frame.get(), 999); | 1043 AddTextureQuad(frame.get(), 999); |
| 1056 AddTransferableResource(frame.get(), 999); | 1044 AddTransferableResource(frame.get(), 999); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1103 break; | 1091 break; |
| 1104 case 4: | 1092 case 4: |
| 1105 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1093 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1106 EXPECT_EQ(0u, resources.size()); | 1094 EXPECT_EQ(0u, resources.size()); |
| 1107 EXPECT_FALSE(TestAndResetAvailable()); | 1095 EXPECT_FALSE(TestAndResetAvailable()); |
| 1108 EndTest(); | 1096 EndTest(); |
| 1109 break; | 1097 break; |
| 1110 } | 1098 } |
| 1111 } | 1099 } |
| 1112 | 1100 |
| 1113 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1101 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1114 if (host_impl->active_tree()->source_frame_number() != 3) | 1102 if (host_impl->active_tree()->source_frame_number() != 3) |
| 1115 return; | 1103 return; |
| 1116 | 1104 |
| 1117 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1105 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1118 FakeDelegatedRendererLayerImpl* delegated_impl = | 1106 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1119 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1107 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1120 | 1108 |
| 1121 const ResourceProvider::ResourceIdMap& map = | 1109 const ResourceProvider::ResourceIdMap& map = |
| 1122 host_impl->resource_provider()->GetChildToParentMap( | 1110 host_impl->resource_provider()->GetChildToParentMap( |
| 1123 delegated_impl->ChildId()); | 1111 delegated_impl->ChildId()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1140 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(0)); | 1128 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(0)); |
| 1141 EXPECT_EQ(map.find(999)->second, quad1->resource_id); | 1129 EXPECT_EQ(map.find(999)->second, quad1->resource_id); |
| 1142 const TextureDrawQuad* quad2 = | 1130 const TextureDrawQuad* quad2 = |
| 1143 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(1)); | 1131 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(1)); |
| 1144 EXPECT_EQ(map.find(555)->second, quad2->resource_id); | 1132 EXPECT_EQ(map.find(555)->second, quad2->resource_id); |
| 1145 const TextureDrawQuad* quad3 = | 1133 const TextureDrawQuad* quad3 = |
| 1146 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(2)); | 1134 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(2)); |
| 1147 EXPECT_EQ(map.find(444)->second, quad3->resource_id); | 1135 EXPECT_EQ(map.find(444)->second, quad3->resource_id); |
| 1148 } | 1136 } |
| 1149 | 1137 |
| 1150 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1138 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1151 bool result) override { | |
| 1152 ReturnUnusedResourcesFromParent(host_impl); | 1139 ReturnUnusedResourcesFromParent(host_impl); |
| 1153 } | 1140 } |
| 1154 }; | 1141 }; |
| 1155 | 1142 |
| 1156 SINGLE_AND_MULTI_THREAD_TEST_F( | 1143 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 1157 LayerTreeHostDelegatedTestFrameBeforeTakeResources); | 1144 LayerTreeHostDelegatedTestFrameBeforeTakeResources); |
| 1158 | 1145 |
| 1159 class LayerTreeHostDelegatedTestBadFrame | 1146 class LayerTreeHostDelegatedTestBadFrame |
| 1160 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1147 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1161 public: | 1148 public: |
| 1162 virtual void BeginTest() override { | 1149 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1163 PostSetNeedsCommitToMainThread(); | |
| 1164 } | |
| 1165 | 1150 |
| 1166 virtual void DidCommitAndDrawFrame() override { | 1151 void DidCommitAndDrawFrame() override { |
| 1167 scoped_ptr<DelegatedFrameData> frame; | 1152 scoped_ptr<DelegatedFrameData> frame; |
| 1168 ReturnedResourceArray resources; | 1153 ReturnedResourceArray resources; |
| 1169 | 1154 |
| 1170 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1155 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1171 switch (next_source_frame_number) { | 1156 switch (next_source_frame_number) { |
| 1172 case 1: | 1157 case 1: |
| 1173 // Generate a frame with some resources in it. | 1158 // Generate a frame with some resources in it. |
| 1174 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1159 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1175 AddTextureQuad(frame.get(), 999); | 1160 AddTextureQuad(frame.get(), 999); |
| 1176 AddTransferableResource(frame.get(), 999); | 1161 AddTransferableResource(frame.get(), 999); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 unsigned expected[] = {555}; | 1208 unsigned expected[] = {555}; |
| 1224 EXPECT_RESOURCES(expected, resources); | 1209 EXPECT_RESOURCES(expected, resources); |
| 1225 EXPECT_TRUE(TestAndResetAvailable()); | 1210 EXPECT_TRUE(TestAndResetAvailable()); |
| 1226 } | 1211 } |
| 1227 | 1212 |
| 1228 EndTest(); | 1213 EndTest(); |
| 1229 break; | 1214 break; |
| 1230 } | 1215 } |
| 1231 } | 1216 } |
| 1232 | 1217 |
| 1233 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1218 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1234 bool result) override { | |
| 1235 if (host_impl->active_tree()->source_frame_number() < 1) | 1219 if (host_impl->active_tree()->source_frame_number() < 1) |
| 1236 return; | 1220 return; |
| 1237 | 1221 |
| 1238 ReturnUnusedResourcesFromParent(host_impl); | 1222 ReturnUnusedResourcesFromParent(host_impl); |
| 1239 | 1223 |
| 1240 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1224 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1241 FakeDelegatedRendererLayerImpl* delegated_impl = | 1225 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1242 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1226 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1243 | 1227 |
| 1244 const ResourceProvider::ResourceIdMap& map = | 1228 const ResourceProvider::ResourceIdMap& map = |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1306 } | 1290 } |
| 1307 } | 1291 } |
| 1308 } | 1292 } |
| 1309 }; | 1293 }; |
| 1310 | 1294 |
| 1311 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestBadFrame); | 1295 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestBadFrame); |
| 1312 | 1296 |
| 1313 class LayerTreeHostDelegatedTestUnnamedResource | 1297 class LayerTreeHostDelegatedTestUnnamedResource |
| 1314 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1298 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1315 public: | 1299 public: |
| 1316 virtual void BeginTest() override { | 1300 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1317 PostSetNeedsCommitToMainThread(); | |
| 1318 } | |
| 1319 | 1301 |
| 1320 virtual void DidCommit() override { | 1302 void DidCommit() override { |
| 1321 scoped_ptr<DelegatedFrameData> frame; | 1303 scoped_ptr<DelegatedFrameData> frame; |
| 1322 ReturnedResourceArray resources; | 1304 ReturnedResourceArray resources; |
| 1323 | 1305 |
| 1324 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1306 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1325 switch (next_source_frame_number) { | 1307 switch (next_source_frame_number) { |
| 1326 case 1: | 1308 case 1: |
| 1327 // This frame includes two resources in it, but only uses one. | 1309 // This frame includes two resources in it, but only uses one. |
| 1328 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1310 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1329 AddTransferableResource(frame.get(), 999); | 1311 AddTransferableResource(frame.get(), 999); |
| 1330 AddTextureQuad(frame.get(), 555); | 1312 AddTextureQuad(frame.get(), 555); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1346 unsigned expected[] = {999}; | 1328 unsigned expected[] = {999}; |
| 1347 EXPECT_RESOURCES(expected, resources); | 1329 EXPECT_RESOURCES(expected, resources); |
| 1348 EXPECT_TRUE(TestAndResetAvailable()); | 1330 EXPECT_TRUE(TestAndResetAvailable()); |
| 1349 } | 1331 } |
| 1350 | 1332 |
| 1351 EndTest(); | 1333 EndTest(); |
| 1352 break; | 1334 break; |
| 1353 } | 1335 } |
| 1354 } | 1336 } |
| 1355 | 1337 |
| 1356 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1338 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1357 if (host_impl->active_tree()->source_frame_number() != 1) | 1339 if (host_impl->active_tree()->source_frame_number() != 1) |
| 1358 return; | 1340 return; |
| 1359 | 1341 |
| 1360 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1342 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1361 FakeDelegatedRendererLayerImpl* delegated_impl = | 1343 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1362 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1344 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1363 | 1345 |
| 1364 const ResourceProvider::ResourceIdMap& map = | 1346 const ResourceProvider::ResourceIdMap& map = |
| 1365 host_impl->resource_provider()->GetChildToParentMap( | 1347 host_impl->resource_provider()->GetChildToParentMap( |
| 1366 delegated_impl->ChildId()); | 1348 delegated_impl->ChildId()); |
| 1367 | 1349 |
| 1368 // The layer only held on to the resource that was used. | 1350 // The layer only held on to the resource that was used. |
| 1369 EXPECT_EQ(1u, map.size()); | 1351 EXPECT_EQ(1u, map.size()); |
| 1370 EXPECT_EQ(1u, map.count(555)); | 1352 EXPECT_EQ(1u, map.count(555)); |
| 1371 | 1353 |
| 1372 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1354 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
| 1373 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 1355 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
| 1374 } | 1356 } |
| 1375 }; | 1357 }; |
| 1376 | 1358 |
| 1377 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestUnnamedResource); | 1359 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestUnnamedResource); |
| 1378 | 1360 |
| 1379 class LayerTreeHostDelegatedTestDontLeakResource | 1361 class LayerTreeHostDelegatedTestDontLeakResource |
| 1380 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1362 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1381 public: | 1363 public: |
| 1382 virtual void BeginTest() override { | 1364 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1383 PostSetNeedsCommitToMainThread(); | |
| 1384 } | |
| 1385 | 1365 |
| 1386 virtual void DidCommitAndDrawFrame() override { | 1366 void DidCommitAndDrawFrame() override { |
| 1387 scoped_ptr<DelegatedFrameData> frame; | 1367 scoped_ptr<DelegatedFrameData> frame; |
| 1388 ReturnedResourceArray resources; | 1368 ReturnedResourceArray resources; |
| 1389 | 1369 |
| 1390 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1370 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1391 switch (next_source_frame_number) { | 1371 switch (next_source_frame_number) { |
| 1392 case 1: | 1372 case 1: |
| 1393 // This frame includes two resources in it. | 1373 // This frame includes two resources in it. |
| 1394 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1374 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1395 AddTextureQuad(frame.get(), 999); | 1375 AddTextureQuad(frame.get(), 999); |
| 1396 AddTransferableResource(frame.get(), 999); | 1376 AddTransferableResource(frame.get(), 999); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1424 { | 1404 { |
| 1425 unsigned expected[] = {555}; | 1405 unsigned expected[] = {555}; |
| 1426 EXPECT_RESOURCES(expected, resources); | 1406 EXPECT_RESOURCES(expected, resources); |
| 1427 EXPECT_TRUE(TestAndResetAvailable()); | 1407 EXPECT_TRUE(TestAndResetAvailable()); |
| 1428 } | 1408 } |
| 1429 EndTest(); | 1409 EndTest(); |
| 1430 break; | 1410 break; |
| 1431 } | 1411 } |
| 1432 } | 1412 } |
| 1433 | 1413 |
| 1434 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1414 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1435 if (host_impl->active_tree()->source_frame_number() != 1) | 1415 if (host_impl->active_tree()->source_frame_number() != 1) |
| 1436 return; | 1416 return; |
| 1437 | 1417 |
| 1438 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1418 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1439 FakeDelegatedRendererLayerImpl* delegated_impl = | 1419 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1440 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1420 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1441 | 1421 |
| 1442 const ResourceProvider::ResourceIdMap& map = | 1422 const ResourceProvider::ResourceIdMap& map = |
| 1443 host_impl->resource_provider()->GetChildToParentMap( | 1423 host_impl->resource_provider()->GetChildToParentMap( |
| 1444 delegated_impl->ChildId()); | 1424 delegated_impl->ChildId()); |
| 1445 | 1425 |
| 1446 // The layer only held on to the resource that was used. | 1426 // The layer only held on to the resource that was used. |
| 1447 EXPECT_EQ(1u, map.size()); | 1427 EXPECT_EQ(1u, map.size()); |
| 1448 EXPECT_EQ(1u, map.count(555)); | 1428 EXPECT_EQ(1u, map.count(555)); |
| 1449 | 1429 |
| 1450 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1430 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
| 1451 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 1431 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
| 1452 } | 1432 } |
| 1453 | 1433 |
| 1454 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1434 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1455 bool result) override { | |
| 1456 ReturnUnusedResourcesFromParent(host_impl); | 1435 ReturnUnusedResourcesFromParent(host_impl); |
| 1457 } | 1436 } |
| 1458 }; | 1437 }; |
| 1459 | 1438 |
| 1460 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestDontLeakResource); | 1439 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestDontLeakResource); |
| 1461 | 1440 |
| 1462 class LayerTreeHostDelegatedTestResourceSentToParent | 1441 class LayerTreeHostDelegatedTestResourceSentToParent |
| 1463 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1442 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1464 public: | 1443 public: |
| 1465 virtual void DidCommitAndDrawFrame() override { | 1444 void DidCommitAndDrawFrame() override { |
| 1466 scoped_ptr<DelegatedFrameData> frame; | 1445 scoped_ptr<DelegatedFrameData> frame; |
| 1467 ReturnedResourceArray resources; | 1446 ReturnedResourceArray resources; |
| 1468 | 1447 |
| 1469 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1448 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1470 switch (next_source_frame_number) { | 1449 switch (next_source_frame_number) { |
| 1471 case 1: | 1450 case 1: |
| 1472 // This frame includes two resources in it. | 1451 // This frame includes two resources in it. |
| 1473 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1452 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1474 AddTextureQuad(frame.get(), 999); | 1453 AddTextureQuad(frame.get(), 999); |
| 1475 AddTransferableResource(frame.get(), 999); | 1454 AddTransferableResource(frame.get(), 999); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1510 const ResourceProvider::ResourceIdMap& map = | 1489 const ResourceProvider::ResourceIdMap& map = |
| 1511 host_impl->resource_provider()->GetChildToParentMap( | 1490 host_impl->resource_provider()->GetChildToParentMap( |
| 1512 delegated_impl->ChildId()); | 1491 delegated_impl->ChildId()); |
| 1513 | 1492 |
| 1514 // Receive 999 back from the grandparent. | 1493 // Receive 999 back from the grandparent. |
| 1515 CompositorFrameAck ack; | 1494 CompositorFrameAck ack; |
| 1516 output_surface()->ReturnResource(map.find(999)->second, &ack); | 1495 output_surface()->ReturnResource(map.find(999)->second, &ack); |
| 1517 host_impl->ReclaimResources(&ack); | 1496 host_impl->ReclaimResources(&ack); |
| 1518 } | 1497 } |
| 1519 | 1498 |
| 1520 virtual void UnusedResourcesAreAvailable() override { | 1499 void UnusedResourcesAreAvailable() override { |
| 1521 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); | 1500 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); |
| 1522 | 1501 |
| 1523 ReturnedResourceArray resources; | 1502 ReturnedResourceArray resources; |
| 1524 | 1503 |
| 1525 // 999 was returned from the grandparent and could be released. | 1504 // 999 was returned from the grandparent and could be released. |
| 1526 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1505 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1527 { | 1506 { |
| 1528 unsigned expected[] = {999}; | 1507 unsigned expected[] = {999}; |
| 1529 EXPECT_RESOURCES(expected, resources); | 1508 EXPECT_RESOURCES(expected, resources); |
| 1530 } | 1509 } |
| 1531 | 1510 |
| 1532 EndTest(); | 1511 EndTest(); |
| 1533 } | 1512 } |
| 1534 | 1513 |
| 1535 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1514 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1536 if (host_impl->active_tree()->source_frame_number() < 1) | 1515 if (host_impl->active_tree()->source_frame_number() < 1) |
| 1537 return; | 1516 return; |
| 1538 | 1517 |
| 1539 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1518 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1540 FakeDelegatedRendererLayerImpl* delegated_impl = | 1519 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1541 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1520 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1542 | 1521 |
| 1543 const ResourceProvider::ResourceIdMap& map = | 1522 const ResourceProvider::ResourceIdMap& map = |
| 1544 host_impl->resource_provider()->GetChildToParentMap( | 1523 host_impl->resource_provider()->GetChildToParentMap( |
| 1545 delegated_impl->ChildId()); | 1524 delegated_impl->ChildId()); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1586 | 1565 |
| 1587 base::Closure receive_resource_on_thread_; | 1566 base::Closure receive_resource_on_thread_; |
| 1588 }; | 1567 }; |
| 1589 | 1568 |
| 1590 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F( | 1569 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F( |
| 1591 LayerTreeHostDelegatedTestResourceSentToParent); | 1570 LayerTreeHostDelegatedTestResourceSentToParent); |
| 1592 | 1571 |
| 1593 class LayerTreeHostDelegatedTestCommitWithoutTake | 1572 class LayerTreeHostDelegatedTestCommitWithoutTake |
| 1594 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1573 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1595 public: | 1574 public: |
| 1596 virtual void BeginTest() override { | 1575 void BeginTest() override { |
| 1597 // Prevent drawing with resources that are sent to the grandparent. | 1576 // Prevent drawing with resources that are sent to the grandparent. |
| 1598 layer_tree_host()->SetViewportSize(gfx::Size()); | 1577 layer_tree_host()->SetViewportSize(gfx::Size()); |
| 1599 PostSetNeedsCommitToMainThread(); | 1578 PostSetNeedsCommitToMainThread(); |
| 1600 } | 1579 } |
| 1601 | 1580 |
| 1602 virtual void DidCommit() override { | 1581 void DidCommit() override { |
| 1603 scoped_ptr<DelegatedFrameData> frame; | 1582 scoped_ptr<DelegatedFrameData> frame; |
| 1604 ReturnedResourceArray resources; | 1583 ReturnedResourceArray resources; |
| 1605 | 1584 |
| 1606 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1585 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1607 switch (next_source_frame_number) { | 1586 switch (next_source_frame_number) { |
| 1608 case 1: | 1587 case 1: |
| 1609 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1588 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1610 AddTextureQuad(frame.get(), 999); | 1589 AddTextureQuad(frame.get(), 999); |
| 1611 AddTransferableResource(frame.get(), 999); | 1590 AddTransferableResource(frame.get(), 999); |
| 1612 AddTextureQuad(frame.get(), 555); | 1591 AddTextureQuad(frame.get(), 555); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1658 unsigned expected[] = {555, 555, 555, 999}; | 1637 unsigned expected[] = {555, 555, 555, 999}; |
| 1659 EXPECT_RESOURCES(expected, resources); | 1638 EXPECT_RESOURCES(expected, resources); |
| 1660 EXPECT_TRUE(TestAndResetAvailable()); | 1639 EXPECT_TRUE(TestAndResetAvailable()); |
| 1661 } | 1640 } |
| 1662 | 1641 |
| 1663 EndTest(); | 1642 EndTest(); |
| 1664 break; | 1643 break; |
| 1665 } | 1644 } |
| 1666 } | 1645 } |
| 1667 | 1646 |
| 1668 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1647 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1669 if (host_impl->active_tree()->source_frame_number() < 1) | 1648 if (host_impl->active_tree()->source_frame_number() < 1) |
| 1670 return; | 1649 return; |
| 1671 | 1650 |
| 1672 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1651 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
| 1673 FakeDelegatedRendererLayerImpl* delegated_impl = | 1652 FakeDelegatedRendererLayerImpl* delegated_impl = |
| 1674 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1653 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
| 1675 | 1654 |
| 1676 const ResourceProvider::ResourceIdMap& map = | 1655 const ResourceProvider::ResourceIdMap& map = |
| 1677 host_impl->resource_provider()->GetChildToParentMap( | 1656 host_impl->resource_provider()->GetChildToParentMap( |
| 1678 delegated_impl->ChildId()); | 1657 delegated_impl->ChildId()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1708 } | 1687 } |
| 1709 }; | 1688 }; |
| 1710 | 1689 |
| 1711 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); | 1690 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); |
| 1712 | 1691 |
| 1713 class DelegatedFrameIsActivatedDuringCommit | 1692 class DelegatedFrameIsActivatedDuringCommit |
| 1714 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1693 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1715 protected: | 1694 protected: |
| 1716 DelegatedFrameIsActivatedDuringCommit() : returned_resource_count_(0) {} | 1695 DelegatedFrameIsActivatedDuringCommit() : returned_resource_count_(0) {} |
| 1717 | 1696 |
| 1718 virtual void BeginTest() override { | 1697 void BeginTest() override { |
| 1719 activate_count_ = 0; | 1698 activate_count_ = 0; |
| 1720 | 1699 |
| 1721 scoped_ptr<DelegatedFrameData> frame = | 1700 scoped_ptr<DelegatedFrameData> frame = |
| 1722 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1701 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1723 AddTextureQuad(frame.get(), 999); | 1702 AddTextureQuad(frame.get(), 999); |
| 1724 AddTransferableResource(frame.get(), 999); | 1703 AddTransferableResource(frame.get(), 999); |
| 1725 SetFrameData(frame.Pass()); | 1704 SetFrameData(frame.Pass()); |
| 1726 | 1705 |
| 1727 PostSetNeedsCommitToMainThread(); | 1706 PostSetNeedsCommitToMainThread(); |
| 1728 } | 1707 } |
| 1729 | 1708 |
| 1730 virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override { | 1709 void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override { |
| 1731 ++activate_count_; | 1710 ++activate_count_; |
| 1732 } | 1711 } |
| 1733 | 1712 |
| 1734 virtual void DidCommit() override { | 1713 void DidCommit() override { |
| 1735 switch (layer_tree_host()->source_frame_number()) { | 1714 switch (layer_tree_host()->source_frame_number()) { |
| 1736 case 1: { | 1715 case 1: { |
| 1737 // The first frame has been activated. Set a new frame, and | 1716 // The first frame has been activated. Set a new frame, and |
| 1738 // expect the next commit to finish *after* it is activated. | 1717 // expect the next commit to finish *after* it is activated. |
| 1739 scoped_ptr<DelegatedFrameData> frame = | 1718 scoped_ptr<DelegatedFrameData> frame = |
| 1740 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1719 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1741 AddTextureQuad(frame.get(), 555); | 1720 AddTextureQuad(frame.get(), 555); |
| 1742 AddTransferableResource(frame.get(), 555); | 1721 AddTransferableResource(frame.get(), 555); |
| 1743 SetFrameData(frame.Pass()); | 1722 SetFrameData(frame.Pass()); |
| 1744 break; | 1723 break; |
| 1745 } | 1724 } |
| 1746 case 2: | 1725 case 2: |
| 1747 // The second frame has been activated. Remove the layer from | 1726 // The second frame has been activated. Remove the layer from |
| 1748 // the tree to cause another commit/activation. The commit should | 1727 // the tree to cause another commit/activation. The commit should |
| 1749 // finish *after* the layer is removed from the active tree. | 1728 // finish *after* the layer is removed from the active tree. |
| 1750 delegated_->RemoveFromParent(); | 1729 delegated_->RemoveFromParent(); |
| 1751 break; | 1730 break; |
| 1752 case 3: | 1731 case 3: |
| 1753 // Finish the test by releasing resources on the next frame. | 1732 // Finish the test by releasing resources on the next frame. |
| 1754 scoped_ptr<DelegatedFrameData> frame = | 1733 scoped_ptr<DelegatedFrameData> frame = |
| 1755 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1734 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1756 SetFrameData(frame.Pass()); | 1735 SetFrameData(frame.Pass()); |
| 1757 break; | 1736 break; |
| 1758 } | 1737 } |
| 1759 } | 1738 } |
| 1760 | 1739 |
| 1761 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 1740 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
| 1762 switch (host_impl->active_tree()->source_frame_number()) { | 1741 switch (host_impl->active_tree()->source_frame_number()) { |
| 1763 case 0: { | 1742 case 0: { |
| 1764 // The activate for the 1st frame should have happened before now. | 1743 // The activate for the 1st frame should have happened before now. |
| 1765 EXPECT_EQ(1, activate_count_); | 1744 EXPECT_EQ(1, activate_count_); |
| 1766 break; | 1745 break; |
| 1767 } | 1746 } |
| 1768 case 1: { | 1747 case 1: { |
| 1769 // The activate for the 2nd frame should have happened before now. | 1748 // The activate for the 2nd frame should have happened before now. |
| 1770 EXPECT_EQ(2, activate_count_); | 1749 EXPECT_EQ(2, activate_count_); |
| 1771 break; | 1750 break; |
| 1772 } | 1751 } |
| 1773 case 2: { | 1752 case 2: { |
| 1774 // The activate to remove the layer should have happened before now. | 1753 // The activate to remove the layer should have happened before now. |
| 1775 EXPECT_EQ(3, activate_count_); | 1754 EXPECT_EQ(3, activate_count_); |
| 1776 break; | 1755 break; |
| 1777 } | 1756 } |
| 1778 case 3: { | 1757 case 3: { |
| 1779 NOTREACHED(); | 1758 NOTREACHED(); |
| 1780 break; | 1759 break; |
| 1781 } | 1760 } |
| 1782 } | 1761 } |
| 1783 } | 1762 } |
| 1784 | 1763 |
| 1785 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1764 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1786 bool result) override { | |
| 1787 ReturnUnusedResourcesFromParent(host_impl); | 1765 ReturnUnusedResourcesFromParent(host_impl); |
| 1788 } | 1766 } |
| 1789 | 1767 |
| 1790 virtual void UnusedResourcesAreAvailable() override { | 1768 void UnusedResourcesAreAvailable() override { |
| 1791 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer:: | 1769 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer:: |
| 1792 UnusedResourcesAreAvailable(); | 1770 UnusedResourcesAreAvailable(); |
| 1793 ReturnedResourceArray resources; | 1771 ReturnedResourceArray resources; |
| 1794 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1772 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
| 1795 EXPECT_TRUE(TestAndResetAvailable()); | 1773 EXPECT_TRUE(TestAndResetAvailable()); |
| 1796 returned_resource_count_ += resources.size(); | 1774 returned_resource_count_ += resources.size(); |
| 1797 if (returned_resource_count_ == 2) | 1775 if (returned_resource_count_ == 2) |
| 1798 EndTest(); | 1776 EndTest(); |
| 1799 } | 1777 } |
| 1800 | 1778 |
| 1801 int activate_count_; | 1779 int activate_count_; |
| 1802 size_t returned_resource_count_; | 1780 size_t returned_resource_count_; |
| 1803 }; | 1781 }; |
| 1804 | 1782 |
| 1805 SINGLE_AND_MULTI_THREAD_TEST_F( | 1783 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 1806 DelegatedFrameIsActivatedDuringCommit); | 1784 DelegatedFrameIsActivatedDuringCommit); |
| 1807 | 1785 |
| 1808 class LayerTreeHostDelegatedTestTwoImplLayers | 1786 class LayerTreeHostDelegatedTestTwoImplLayers |
| 1809 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1787 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1810 public: | 1788 public: |
| 1811 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1789 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1812 | 1790 |
| 1813 virtual void DidCommitAndDrawFrame() override { | 1791 void DidCommitAndDrawFrame() override { |
| 1814 scoped_ptr<DelegatedFrameData> frame; | 1792 scoped_ptr<DelegatedFrameData> frame; |
| 1815 ReturnedResourceArray resources; | 1793 ReturnedResourceArray resources; |
| 1816 | 1794 |
| 1817 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1795 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1818 switch (next_source_frame_number) { | 1796 switch (next_source_frame_number) { |
| 1819 case 1: | 1797 case 1: |
| 1820 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1798 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1821 AddTextureQuad(frame.get(), 999); | 1799 AddTextureQuad(frame.get(), 999); |
| 1822 AddTransferableResource(frame.get(), 999); | 1800 AddTransferableResource(frame.get(), 999); |
| 1823 AddTextureQuad(frame.get(), 555); | 1801 AddTextureQuad(frame.get(), 555); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1850 { | 1828 { |
| 1851 unsigned expected[] = {555, 999}; | 1829 unsigned expected[] = {555, 999}; |
| 1852 EXPECT_RESOURCES(expected, resources); | 1830 EXPECT_RESOURCES(expected, resources); |
| 1853 EXPECT_TRUE(TestAndResetAvailable()); | 1831 EXPECT_TRUE(TestAndResetAvailable()); |
| 1854 } | 1832 } |
| 1855 EndTest(); | 1833 EndTest(); |
| 1856 break; | 1834 break; |
| 1857 } | 1835 } |
| 1858 } | 1836 } |
| 1859 | 1837 |
| 1860 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1838 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1861 bool result) override { | |
| 1862 ReturnUnusedResourcesFromParent(host_impl); | 1839 ReturnUnusedResourcesFromParent(host_impl); |
| 1863 } | 1840 } |
| 1864 }; | 1841 }; |
| 1865 | 1842 |
| 1866 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoImplLayers); | 1843 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoImplLayers); |
| 1867 | 1844 |
| 1868 class LayerTreeHostDelegatedTestTwoImplLayersTwoFrames | 1845 class LayerTreeHostDelegatedTestTwoImplLayersTwoFrames |
| 1869 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1846 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1870 public: | 1847 public: |
| 1871 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1848 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1872 | 1849 |
| 1873 virtual void DidCommitAndDrawFrame() override { | 1850 void DidCommitAndDrawFrame() override { |
| 1874 scoped_ptr<DelegatedFrameData> frame; | 1851 scoped_ptr<DelegatedFrameData> frame; |
| 1875 ReturnedResourceArray resources; | 1852 ReturnedResourceArray resources; |
| 1876 | 1853 |
| 1877 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1854 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1878 switch (next_source_frame_number) { | 1855 switch (next_source_frame_number) { |
| 1879 case 1: | 1856 case 1: |
| 1880 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1857 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1881 AddTextureQuad(frame.get(), 999); | 1858 AddTextureQuad(frame.get(), 999); |
| 1882 AddTransferableResource(frame.get(), 999); | 1859 AddTransferableResource(frame.get(), 999); |
| 1883 AddTextureQuad(frame.get(), 555); | 1860 AddTextureQuad(frame.get(), 555); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1919 { | 1896 { |
| 1920 unsigned expected[] = {555, 555, 999, 999}; | 1897 unsigned expected[] = {555, 555, 999, 999}; |
| 1921 EXPECT_RESOURCES(expected, resources); | 1898 EXPECT_RESOURCES(expected, resources); |
| 1922 EXPECT_TRUE(TestAndResetAvailable()); | 1899 EXPECT_TRUE(TestAndResetAvailable()); |
| 1923 } | 1900 } |
| 1924 EndTest(); | 1901 EndTest(); |
| 1925 break; | 1902 break; |
| 1926 } | 1903 } |
| 1927 } | 1904 } |
| 1928 | 1905 |
| 1929 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1906 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 1930 bool result) override { | |
| 1931 ReturnUnusedResourcesFromParent(host_impl); | 1907 ReturnUnusedResourcesFromParent(host_impl); |
| 1932 } | 1908 } |
| 1933 }; | 1909 }; |
| 1934 | 1910 |
| 1935 SINGLE_AND_MULTI_THREAD_TEST_F( | 1911 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 1936 LayerTreeHostDelegatedTestTwoImplLayersTwoFrames); | 1912 LayerTreeHostDelegatedTestTwoImplLayersTwoFrames); |
| 1937 | 1913 |
| 1938 class LayerTreeHostDelegatedTestTwoLayers | 1914 class LayerTreeHostDelegatedTestTwoLayers |
| 1939 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1915 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 1940 public: | 1916 public: |
| 1941 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1917 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1942 | 1918 |
| 1943 virtual void DidCommitAndDrawFrame() override { | 1919 void DidCommitAndDrawFrame() override { |
| 1944 scoped_ptr<DelegatedFrameData> frame; | 1920 scoped_ptr<DelegatedFrameData> frame; |
| 1945 ReturnedResourceArray resources; | 1921 ReturnedResourceArray resources; |
| 1946 | 1922 |
| 1947 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1923 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 1948 switch (next_source_frame_number) { | 1924 switch (next_source_frame_number) { |
| 1949 case 1: | 1925 case 1: |
| 1950 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1926 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 1951 AddTextureQuad(frame.get(), 999); | 1927 AddTextureQuad(frame.get(), 999); |
| 1952 AddTransferableResource(frame.get(), 999); | 1928 AddTransferableResource(frame.get(), 999); |
| 1953 AddTextureQuad(frame.get(), 555); | 1929 AddTextureQuad(frame.get(), 555); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2006 { | 1982 { |
| 2007 unsigned expected[] = {555, 999}; | 1983 unsigned expected[] = {555, 999}; |
| 2008 EXPECT_RESOURCES(expected, resources); | 1984 EXPECT_RESOURCES(expected, resources); |
| 2009 EXPECT_TRUE(TestAndResetAvailable()); | 1985 EXPECT_TRUE(TestAndResetAvailable()); |
| 2010 } | 1986 } |
| 2011 EndTest(); | 1987 EndTest(); |
| 2012 break; | 1988 break; |
| 2013 } | 1989 } |
| 2014 } | 1990 } |
| 2015 | 1991 |
| 2016 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1992 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 2017 bool result) override { | |
| 2018 ReturnUnusedResourcesFromParent(host_impl); | 1993 ReturnUnusedResourcesFromParent(host_impl); |
| 2019 } | 1994 } |
| 2020 | 1995 |
| 2021 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 1996 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
| 2022 }; | 1997 }; |
| 2023 | 1998 |
| 2024 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayers); | 1999 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayers); |
| 2025 | 2000 |
| 2026 class LayerTreeHostDelegatedTestRemoveAndAddToTree | 2001 class LayerTreeHostDelegatedTestRemoveAndAddToTree |
| 2027 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 2002 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 2028 public: | 2003 public: |
| 2029 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 2004 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 2030 | 2005 |
| 2031 virtual void DidCommitAndDrawFrame() override { | 2006 void DidCommitAndDrawFrame() override { |
| 2032 scoped_ptr<DelegatedFrameData> frame; | 2007 scoped_ptr<DelegatedFrameData> frame; |
| 2033 ReturnedResourceArray resources; | 2008 ReturnedResourceArray resources; |
| 2034 | 2009 |
| 2035 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 2010 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 2036 switch (next_source_frame_number) { | 2011 switch (next_source_frame_number) { |
| 2037 case 1: | 2012 case 1: |
| 2038 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 2013 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 2039 AddTextureQuad(frame.get(), 999); | 2014 AddTextureQuad(frame.get(), 999); |
| 2040 AddTransferableResource(frame.get(), 999); | 2015 AddTransferableResource(frame.get(), 999); |
| 2041 AddTextureQuad(frame.get(), 555); | 2016 AddTextureQuad(frame.get(), 555); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2098 { | 2073 { |
| 2099 unsigned expected[] = {777, 888}; | 2074 unsigned expected[] = {777, 888}; |
| 2100 EXPECT_RESOURCES(expected, resources); | 2075 EXPECT_RESOURCES(expected, resources); |
| 2101 EXPECT_TRUE(TestAndResetAvailable()); | 2076 EXPECT_TRUE(TestAndResetAvailable()); |
| 2102 } | 2077 } |
| 2103 EndTest(); | 2078 EndTest(); |
| 2104 break; | 2079 break; |
| 2105 } | 2080 } |
| 2106 } | 2081 } |
| 2107 | 2082 |
| 2108 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 2083 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 2109 bool result) override { | |
| 2110 ReturnUnusedResourcesFromParent(host_impl); | 2084 ReturnUnusedResourcesFromParent(host_impl); |
| 2111 } | 2085 } |
| 2112 | 2086 |
| 2113 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 2087 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
| 2114 }; | 2088 }; |
| 2115 | 2089 |
| 2116 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemoveAndAddToTree); | 2090 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemoveAndAddToTree); |
| 2117 | 2091 |
| 2118 class LayerTreeHostDelegatedTestRemoveAndChangeResources | 2092 class LayerTreeHostDelegatedTestRemoveAndChangeResources |
| 2119 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 2093 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
| 2120 public: | 2094 public: |
| 2121 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 2095 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 2122 | 2096 |
| 2123 virtual void DidCommitAndDrawFrame() override { | 2097 void DidCommitAndDrawFrame() override { |
| 2124 scoped_ptr<DelegatedFrameData> frame; | 2098 scoped_ptr<DelegatedFrameData> frame; |
| 2125 ReturnedResourceArray resources; | 2099 ReturnedResourceArray resources; |
| 2126 | 2100 |
| 2127 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 2101 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
| 2128 switch (next_source_frame_number) { | 2102 switch (next_source_frame_number) { |
| 2129 case 1: | 2103 case 1: |
| 2130 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 2104 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
| 2131 AddTextureQuad(frame.get(), 999); | 2105 AddTextureQuad(frame.get(), 999); |
| 2132 AddTransferableResource(frame.get(), 999); | 2106 AddTransferableResource(frame.get(), 999); |
| 2133 AddTextureQuad(frame.get(), 555); | 2107 AddTextureQuad(frame.get(), 555); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2180 { | 2154 { |
| 2181 unsigned expected[] = {777, 888}; | 2155 unsigned expected[] = {777, 888}; |
| 2182 EXPECT_RESOURCES(expected, resources); | 2156 EXPECT_RESOURCES(expected, resources); |
| 2183 EXPECT_TRUE(TestAndResetAvailable()); | 2157 EXPECT_TRUE(TestAndResetAvailable()); |
| 2184 } | 2158 } |
| 2185 EndTest(); | 2159 EndTest(); |
| 2186 break; | 2160 break; |
| 2187 } | 2161 } |
| 2188 } | 2162 } |
| 2189 | 2163 |
| 2190 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 2164 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
| 2191 bool result) override { | |
| 2192 ReturnUnusedResourcesFromParent(host_impl); | 2165 ReturnUnusedResourcesFromParent(host_impl); |
| 2193 } | 2166 } |
| 2194 | 2167 |
| 2195 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 2168 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
| 2196 }; | 2169 }; |
| 2197 | 2170 |
| 2198 SINGLE_AND_MULTI_THREAD_TEST_F( | 2171 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 2199 LayerTreeHostDelegatedTestRemoveAndChangeResources); | 2172 LayerTreeHostDelegatedTestRemoveAndChangeResources); |
| 2200 | 2173 |
| 2201 } // namespace | 2174 } // namespace |
| 2202 } // namespace cc | 2175 } // namespace cc |
| OLD | NEW |