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 <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1638 ContextProvider* context_provider, | 1638 ContextProvider* context_provider, |
1639 bool using_map_image) { | 1639 bool using_map_image) { |
1640 DCHECK(settings_.impl_side_painting); | 1640 DCHECK(settings_.impl_side_painting); |
1641 DCHECK(resource_provider); | 1641 DCHECK(resource_provider); |
1642 tile_manager_ = | 1642 tile_manager_ = |
1643 TileManager::Create(this, | 1643 TileManager::Create(this, |
1644 resource_provider, | 1644 resource_provider, |
1645 settings_.num_raster_threads, | 1645 settings_.num_raster_threads, |
1646 rendering_stats_instrumentation_, | 1646 rendering_stats_instrumentation_, |
1647 using_map_image, | 1647 using_map_image, |
1648 GetMaxTransferBufferUsageBytes(context_provider)); | 1648 GetMaxTransferBufferUsageBytes(context_provider), |
| 1649 settings_.use_rgba_4444_textures); |
1649 | 1650 |
1650 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); | 1651 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); |
1651 need_to_update_visible_tiles_before_draw_ = false; | 1652 need_to_update_visible_tiles_before_draw_ = false; |
1652 } | 1653 } |
1653 | 1654 |
1654 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { | 1655 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { |
1655 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); | 1656 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); |
1656 } | 1657 } |
1657 | 1658 |
1658 bool LayerTreeHostImpl::InitializeRenderer( | 1659 bool LayerTreeHostImpl::InitializeRenderer( |
1659 scoped_ptr<OutputSurface> output_surface) { | 1660 scoped_ptr<OutputSurface> output_surface) { |
1660 // Since we will create a new resource provider, we cannot continue to use | 1661 // Since we will create a new resource provider, we cannot continue to use |
1661 // the old resources (i.e. render_surfaces and texture IDs). Clear them | 1662 // the old resources (i.e. render_surfaces and texture IDs). Clear them |
1662 // before we destroy the old resource provider. | 1663 // before we destroy the old resource provider. |
1663 ReleaseTreeResources(); | 1664 ReleaseTreeResources(); |
1664 if (resource_provider_) | 1665 if (resource_provider_) |
1665 resource_provider_->DidLoseOutputSurface(); | 1666 resource_provider_->DidLoseOutputSurface(); |
1666 | 1667 |
1667 // Note: order is important here. | 1668 // Note: order is important here. |
1668 renderer_.reset(); | 1669 renderer_.reset(); |
1669 tile_manager_.reset(); | 1670 tile_manager_.reset(); |
1670 resource_provider_.reset(); | 1671 resource_provider_.reset(); |
1671 output_surface_.reset(); | 1672 output_surface_.reset(); |
1672 | 1673 |
1673 if (!output_surface->BindToClient(this)) | 1674 if (!output_surface->BindToClient(this)) |
1674 return false; | 1675 return false; |
1675 | 1676 |
1676 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( | 1677 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( |
1677 output_surface.get(), settings_.highp_threshold_min); | 1678 output_surface.get(), |
| 1679 settings_.highp_threshold_min); |
1678 if (!resource_provider) | 1680 if (!resource_provider) |
1679 return false; | 1681 return false; |
1680 | 1682 |
1681 if (output_surface->capabilities().deferred_gl_initialization) | 1683 if (output_surface->capabilities().deferred_gl_initialization) |
1682 EnforceZeroBudget(true); | 1684 EnforceZeroBudget(true); |
1683 | 1685 |
1684 bool skip_gl_renderer = false; | 1686 bool skip_gl_renderer = false; |
1685 CreateAndSetRenderer( | 1687 CreateAndSetRenderer( |
1686 output_surface.get(), resource_provider.get(), skip_gl_renderer); | 1688 output_surface.get(), resource_provider.get(), skip_gl_renderer); |
1687 | 1689 |
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2624 break; | 2626 break; |
2625 } | 2627 } |
2626 | 2628 |
2627 // Allow for multiple creation requests with the same UIResourceId. The | 2629 // Allow for multiple creation requests with the same UIResourceId. The |
2628 // previous resource is simply deleted. | 2630 // previous resource is simply deleted. |
2629 ResourceProvider::ResourceId id = ResourceIdForUIResource(uid); | 2631 ResourceProvider::ResourceId id = ResourceIdForUIResource(uid); |
2630 if (id) | 2632 if (id) |
2631 DeleteUIResource(uid); | 2633 DeleteUIResource(uid); |
2632 id = resource_provider_->CreateResource( | 2634 id = resource_provider_->CreateResource( |
2633 bitmap->GetSize(), | 2635 bitmap->GetSize(), |
2634 resource_provider_->best_texture_format(), | |
2635 wrap_mode, | 2636 wrap_mode, |
2636 ResourceProvider::TextureUsageAny); | 2637 ResourceProvider::TextureUsageAny, |
| 2638 resource_provider_->best_texture_format()); |
2637 | 2639 |
2638 ui_resource_map_[uid] = id; | 2640 ui_resource_map_[uid] = id; |
2639 resource_provider_->SetPixels(id, | 2641 resource_provider_->SetPixels(id, |
2640 reinterpret_cast<uint8_t*>(bitmap->GetPixels()), | 2642 reinterpret_cast<uint8_t*>(bitmap->GetPixels()), |
2641 gfx::Rect(bitmap->GetSize()), | 2643 gfx::Rect(bitmap->GetSize()), |
2642 gfx::Rect(bitmap->GetSize()), | 2644 gfx::Rect(bitmap->GetSize()), |
2643 gfx::Vector2d(0, 0)); | 2645 gfx::Vector2d(0, 0)); |
2644 } | 2646 } |
2645 | 2647 |
2646 void LayerTreeHostImpl::DeleteUIResource(UIResourceId uid) { | 2648 void LayerTreeHostImpl::DeleteUIResource(UIResourceId uid) { |
(...skipping 15 matching lines...) Expand all Loading... |
2662 | 2664 |
2663 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( | 2665 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( |
2664 UIResourceId uid) const { | 2666 UIResourceId uid) const { |
2665 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); | 2667 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); |
2666 if (iter != ui_resource_map_.end()) | 2668 if (iter != ui_resource_map_.end()) |
2667 return iter->second; | 2669 return iter->second; |
2668 return 0; | 2670 return 0; |
2669 } | 2671 } |
2670 | 2672 |
2671 } // namespace cc | 2673 } // namespace cc |
OLD | NEW |