| 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 |