| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
| 10 #include "cc/debug/test_web_graphics_context_3d.h" | 10 #include "cc/debug/test_web_graphics_context_3d.h" |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 LayerTreeSettings settings_; | 378 LayerTreeSettings settings_; |
| 379 FakeOutputSurfaceClient output_surface_client_; | 379 FakeOutputSurfaceClient output_surface_client_; |
| 380 scoped_ptr<FakeOutputSurface> output_surface_; | 380 scoped_ptr<FakeOutputSurface> output_surface_; |
| 381 FakeRendererClient renderer_client_; | 381 FakeRendererClient renderer_client_; |
| 382 scoped_ptr<ResourceProvider> resource_provider_; | 382 scoped_ptr<ResourceProvider> resource_provider_; |
| 383 scoped_ptr<FakeRendererGL> renderer_; | 383 scoped_ptr<FakeRendererGL> renderer_; |
| 384 }; | 384 }; |
| 385 | 385 |
| 386 namespace { | 386 namespace { |
| 387 | 387 |
| 388 // Test GLRenderer discardBackbuffer functionality: | |
| 389 // Suggest recreating framebuffer when one already exists. | |
| 390 // Expected: it does nothing. | |
| 391 TEST_F(GLRendererTest, SuggestBackbufferYesWhenItAlreadyExistsShouldDoNothing) { | |
| 392 renderer_->SetDiscardBackBufferWhenNotVisible(false); | |
| 393 EXPECT_EQ(0, renderer_client_.set_full_root_layer_damage_count()); | |
| 394 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | |
| 395 | |
| 396 SwapBuffers(); | |
| 397 EXPECT_EQ(1, context3d_->frame_count()); | |
| 398 } | |
| 399 | |
| 400 // Test GLRenderer DiscardBackbuffer functionality: | 388 // Test GLRenderer DiscardBackbuffer functionality: |
| 401 // Suggest discarding framebuffer when one exists and the renderer is not | 389 // Suggest discarding framebuffer when one exists and the renderer is not |
| 402 // visible. | 390 // visible. |
| 403 // Expected: it is discarded and damage tracker is reset. | 391 // Expected: it is discarded and damage tracker is reset. |
| 404 TEST_F( | 392 TEST_F( |
| 405 GLRendererTest, | 393 GLRendererTest, |
| 406 SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayerIfNotVisible) { | 394 SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayerIfNotVisible) { |
| 407 renderer_->SetVisible(false); | 395 renderer_->SetVisible(false); |
| 408 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 409 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 396 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
| 410 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 397 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| 411 } | 398 } |
| 412 | 399 |
| 413 // Test GLRenderer DiscardBackbuffer functionality: | 400 // Test GLRenderer DiscardBackbuffer functionality: |
| 414 // Suggest discarding framebuffer when one exists and the renderer is visible. | 401 // Suggest discarding framebuffer when one exists and the renderer is visible. |
| 415 // Expected: the allocation is ignored. | 402 // Expected: the allocation is ignored. |
| 416 TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible) { | 403 TEST_F(GLRendererTest, SuggestBackbufferNoDoNothingWhenVisible) { |
| 417 renderer_->SetVisible(true); | 404 renderer_->SetVisible(true); |
| 418 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 419 EXPECT_EQ(0, renderer_client_.set_full_root_layer_damage_count()); | 405 EXPECT_EQ(0, renderer_client_.set_full_root_layer_damage_count()); |
| 420 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | 406 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); |
| 421 } | 407 } |
| 422 | 408 |
| 423 // Test GLRenderer DiscardBackbuffer functionality: | 409 // Test GLRenderer DiscardBackbuffer functionality: |
| 424 // Suggest discarding framebuffer when one does not exist. | 410 // Suggest discarding framebuffer when one does not exist. |
| 425 // Expected: it does nothing. | 411 // Expected: it does nothing. |
| 426 TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) { | 412 TEST_F(GLRendererTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) { |
| 427 renderer_->SetVisible(false); | 413 renderer_->SetVisible(false); |
| 428 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 429 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 414 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
| 430 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 415 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| 431 | 416 |
| 432 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 433 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 417 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
| 434 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 418 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| 435 } | 419 } |
| 436 | 420 |
| 437 // Test GLRenderer DiscardBackbuffer functionality: | 421 // Test GLRenderer DiscardBackbuffer functionality: |
| 438 // Begin drawing a frame while a framebuffer is discarded. | 422 // Begin drawing a frame while a framebuffer is discarded. |
| 439 // Expected: will recreate framebuffer. | 423 // Expected: will recreate framebuffer. |
| 440 TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration) { | 424 TEST_F(GLRendererTest, DiscardedBackbufferIsRecreatedForScopeDuration) { |
| 441 renderer_->SetVisible(false); | 425 renderer_->SetVisible(false); |
| 442 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 443 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 426 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| 444 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 427 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
| 445 | 428 |
| 446 renderer_->SetVisible(true); | 429 renderer_->SetVisible(true); |
| 447 renderer_->DrawFrame( | 430 renderer_->DrawFrame( |
| 448 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 431 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
| 449 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | 432 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); |
| 450 | 433 |
| 451 SwapBuffers(); | 434 SwapBuffers(); |
| 452 EXPECT_EQ(1, context3d_->frame_count()); | 435 EXPECT_EQ(1, context3d_->frame_count()); |
| 453 } | 436 } |
| 454 | 437 |
| 455 TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible) { | 438 TEST_F(GLRendererTest, FramebufferDiscardedAfterReadbackWhenNotVisible) { |
| 456 renderer_->SetVisible(false); | 439 renderer_->SetVisible(false); |
| 457 renderer_->SetDiscardBackBufferWhenNotVisible(true); | |
| 458 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 440 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| 459 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 441 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
| 460 | 442 |
| 461 char pixels[4]; | 443 char pixels[4]; |
| 462 renderer_->DrawFrame( | 444 renderer_->DrawFrame( |
| 463 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 445 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
| 464 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | 446 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); |
| 465 | 447 |
| 466 renderer_->GetFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); | 448 renderer_->GetFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); |
| 467 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 449 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
| (...skipping 1395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1863 base::MessageLoop::current()->Run(); | 1845 base::MessageLoop::current()->Run(); |
| 1864 | 1846 |
| 1865 // The sync point should have happened. | 1847 // The sync point should have happened. |
| 1866 EXPECT_EQ(1, sync_point_callback_count); | 1848 EXPECT_EQ(1, sync_point_callback_count); |
| 1867 EXPECT_EQ(1, other_callback_count); | 1849 EXPECT_EQ(1, other_callback_count); |
| 1868 } | 1850 } |
| 1869 #endif // OS_ANDROID | 1851 #endif // OS_ANDROID |
| 1870 | 1852 |
| 1871 } // namespace | 1853 } // namespace |
| 1872 } // namespace cc | 1854 } // namespace cc |
| OLD | NEW |