OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 5550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5561 FakeOutputSurface* output_surface = | 5561 FakeOutputSurface* output_surface = |
5562 FakeOutputSurface::CreateDeferredGL( | 5562 FakeOutputSurface::CreateDeferredGL( |
5563 scoped_ptr<SoftwareOutputDevice>(software_device), | 5563 scoped_ptr<SoftwareOutputDevice>(software_device), |
5564 delegated_rendering).release(); | 5564 delegated_rendering).release(); |
5565 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), | 5565 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), |
5566 scoped_ptr<OutputSurface>(output_surface))); | 5566 scoped_ptr<OutputSurface>(output_surface))); |
5567 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 5567 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
5568 | 5568 |
5569 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 5569 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
5570 | 5570 |
5571 output_surface->set_forced_draw_to_software_device(true); | 5571 const gfx::Transform external_transform; |
5572 EXPECT_TRUE(output_surface->ForcedDrawToSoftwareDevice()); | 5572 const gfx::Rect external_viewport; |
| 5573 const gfx::Rect external_clip; |
| 5574 const bool resourceless_software_draw = true; |
| 5575 const bool valid_for_tile_management = true; |
| 5576 host_impl_->SetExternalDrawConstraints(external_transform, |
| 5577 external_viewport, |
| 5578 external_clip, |
| 5579 resourceless_software_draw, |
| 5580 valid_for_tile_management); |
5573 | 5581 |
5574 EXPECT_EQ(0, software_device->frames_began_); | 5582 EXPECT_EQ(0, software_device->frames_began_); |
5575 EXPECT_EQ(0, software_device->frames_ended_); | 5583 EXPECT_EQ(0, software_device->frames_ended_); |
5576 | 5584 |
5577 DrawFrame(); | 5585 DrawFrame(); |
5578 | 5586 |
5579 EXPECT_EQ(1, software_device->frames_began_); | 5587 EXPECT_EQ(1, software_device->frames_began_); |
5580 EXPECT_EQ(1, software_device->frames_ended_); | 5588 EXPECT_EQ(1, software_device->frames_ended_); |
5581 | 5589 |
5582 // Call other API methods that are likely to hit NULL pointer in this mode. | 5590 // Call other API methods that are likely to hit NULL pointer in this mode. |
5583 EXPECT_TRUE(host_impl_->AsValue()); | 5591 EXPECT_TRUE(host_impl_->AsValue()); |
5584 EXPECT_TRUE(host_impl_->ActivationStateAsValue()); | 5592 EXPECT_TRUE(host_impl_->ActivationStateAsValue()); |
5585 } | 5593 } |
5586 | 5594 |
5587 TEST_F(LayerTreeHostImplTest, | 5595 TEST_F(LayerTreeHostImplTest, |
5588 ForcedDrawToSoftwareDeviceSkipsUnsupportedLayers) { | 5596 ForcedDrawToSoftwareDeviceSkipsUnsupportedLayers) { |
5589 set_reduce_memory_result(false); | 5597 set_reduce_memory_result(false); |
5590 bool delegated_rendering = false; | 5598 bool delegated_rendering = false; |
5591 FakeOutputSurface* output_surface = | 5599 FakeOutputSurface* output_surface = |
5592 FakeOutputSurface::CreateDeferredGL( | 5600 FakeOutputSurface::CreateDeferredGL( |
5593 scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice()), | 5601 scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice()), |
5594 delegated_rendering).release(); | 5602 delegated_rendering).release(); |
5595 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), | 5603 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), |
5596 scoped_ptr<OutputSurface>(output_surface))); | 5604 scoped_ptr<OutputSurface>(output_surface))); |
5597 | 5605 |
5598 output_surface->set_forced_draw_to_software_device(true); | 5606 const gfx::Transform external_transform; |
5599 EXPECT_TRUE(output_surface->ForcedDrawToSoftwareDevice()); | 5607 const gfx::Rect external_viewport; |
| 5608 const gfx::Rect external_clip; |
| 5609 const bool resourceless_software_draw = true; |
| 5610 const bool valid_for_tile_management = true; |
| 5611 host_impl_->SetExternalDrawConstraints(external_transform, |
| 5612 external_viewport, |
| 5613 external_clip, |
| 5614 resourceless_software_draw, |
| 5615 valid_for_tile_management); |
5600 | 5616 |
5601 // SolidColorLayerImpl will be drawn. | 5617 // SolidColorLayerImpl will be drawn. |
5602 scoped_ptr<SolidColorLayerImpl> root_layer = | 5618 scoped_ptr<SolidColorLayerImpl> root_layer = |
5603 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 5619 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
5604 | 5620 |
5605 // VideoLayerImpl will not be drawn. | 5621 // VideoLayerImpl will not be drawn. |
5606 FakeVideoFrameProvider provider; | 5622 FakeVideoFrameProvider provider; |
5607 scoped_ptr<VideoLayerImpl> video_layer = | 5623 scoped_ptr<VideoLayerImpl> video_layer = |
5608 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); | 5624 VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider); |
5609 video_layer->SetBounds(gfx::Size(10, 10)); | 5625 video_layer->SetBounds(gfx::Size(10, 10)); |
(...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6627 300u * 1024u * 1024u); | 6643 300u * 1024u * 1024u); |
6628 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, | 6644 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, |
6629 150u * 1024u * 1024u); | 6645 150u * 1024u * 1024u); |
6630 } | 6646 } |
6631 | 6647 |
6632 TEST_F(LayerTreeHostImplTest, ExternalTransformReflectedInNextDraw) { | 6648 TEST_F(LayerTreeHostImplTest, ExternalTransformReflectedInNextDraw) { |
6633 const gfx::Size layer_size(100, 100); | 6649 const gfx::Size layer_size(100, 100); |
6634 gfx::Transform external_transform; | 6650 gfx::Transform external_transform; |
6635 const gfx::Rect external_viewport(layer_size); | 6651 const gfx::Rect external_viewport(layer_size); |
6636 const gfx::Rect external_clip(layer_size); | 6652 const gfx::Rect external_clip(layer_size); |
| 6653 const bool resourceless_software_draw = false; |
6637 const bool valid_for_tile_management = true; | 6654 const bool valid_for_tile_management = true; |
6638 LayerImpl* layer = SetupScrollAndContentsLayers(layer_size); | 6655 LayerImpl* layer = SetupScrollAndContentsLayers(layer_size); |
6639 | 6656 |
6640 host_impl_->SetExternalDrawConstraints(external_transform, | 6657 host_impl_->SetExternalDrawConstraints(external_transform, |
6641 external_viewport, | 6658 external_viewport, |
6642 external_clip, | 6659 external_clip, |
| 6660 resourceless_software_draw, |
6643 valid_for_tile_management); | 6661 valid_for_tile_management); |
6644 DrawFrame(); | 6662 DrawFrame(); |
6645 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6663 EXPECT_TRANSFORMATION_MATRIX_EQ( |
6646 external_transform, layer->draw_properties().target_space_transform); | 6664 external_transform, layer->draw_properties().target_space_transform); |
6647 | 6665 |
6648 external_transform.Translate(20, 20); | 6666 external_transform.Translate(20, 20); |
6649 host_impl_->SetExternalDrawConstraints(external_transform, | 6667 host_impl_->SetExternalDrawConstraints(external_transform, |
6650 external_viewport, | 6668 external_viewport, |
6651 external_clip, | 6669 external_clip, |
| 6670 resourceless_software_draw, |
6652 valid_for_tile_management); | 6671 valid_for_tile_management); |
6653 DrawFrame(); | 6672 DrawFrame(); |
6654 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6673 EXPECT_TRANSFORMATION_MATRIX_EQ( |
6655 external_transform, layer->draw_properties().target_space_transform); | 6674 external_transform, layer->draw_properties().target_space_transform); |
6656 } | 6675 } |
6657 | 6676 |
6658 } // namespace | 6677 } // namespace |
6659 } // namespace cc | 6678 } // namespace cc |
OLD | NEW |