| 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 #include "cc/resources/texture_mailbox_deleter.h" | 57 #include "cc/resources/texture_mailbox_deleter.h" |
| 58 #include "cc/resources/ui_resource_bitmap.h" | 58 #include "cc/resources/ui_resource_bitmap.h" |
| 59 #include "cc/scheduler/delay_based_time_source.h" | 59 #include "cc/scheduler/delay_based_time_source.h" |
| 60 #include "cc/trees/damage_tracker.h" | 60 #include "cc/trees/damage_tracker.h" |
| 61 #include "cc/trees/layer_tree_host.h" | 61 #include "cc/trees/layer_tree_host.h" |
| 62 #include "cc/trees/layer_tree_host_common.h" | 62 #include "cc/trees/layer_tree_host_common.h" |
| 63 #include "cc/trees/layer_tree_impl.h" | 63 #include "cc/trees/layer_tree_impl.h" |
| 64 #include "cc/trees/occlusion_tracker.h" | 64 #include "cc/trees/occlusion_tracker.h" |
| 65 #include "cc/trees/single_thread_proxy.h" | 65 #include "cc/trees/single_thread_proxy.h" |
| 66 #include "cc/trees/tree_synchronizer.h" | 66 #include "cc/trees/tree_synchronizer.h" |
| 67 #include "gpu/command_buffer/client/gles2_interface.h" |
| 67 #include "gpu/GLES2/gl2extchromium.h" | 68 #include "gpu/GLES2/gl2extchromium.h" |
| 68 #include "ui/gfx/frame_time.h" | 69 #include "ui/gfx/frame_time.h" |
| 69 #include "ui/gfx/size_conversions.h" | 70 #include "ui/gfx/size_conversions.h" |
| 70 #include "ui/gfx/vector2d_conversions.h" | 71 #include "ui/gfx/vector2d_conversions.h" |
| 71 | 72 |
| 72 namespace { | 73 namespace { |
| 73 | 74 |
| 74 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { | 75 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { |
| 75 if (visible) { | 76 if (visible) { |
| 76 TRACE_EVENT_ASYNC_BEGIN1("webkit", | 77 TRACE_EVENT_ASYNC_BEGIN1("webkit", |
| (...skipping 1309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 // because they were exported. | 1387 // because they were exported. |
| 1387 if (tile_manager_) { | 1388 if (tile_manager_) { |
| 1388 DCHECK(resource_pool_); | 1389 DCHECK(resource_pool_); |
| 1389 | 1390 |
| 1390 resource_pool_->CheckBusyResources(); | 1391 resource_pool_->CheckBusyResources(); |
| 1391 resource_pool_->ReduceResourceUsage(); | 1392 resource_pool_->ReduceResourceUsage(); |
| 1392 } | 1393 } |
| 1393 // If we're not visible, we likely released resources, so we want to | 1394 // If we're not visible, we likely released resources, so we want to |
| 1394 // aggressively flush here to make sure those DeleteTextures make it to the | 1395 // aggressively flush here to make sure those DeleteTextures make it to the |
| 1395 // GPU process to free up the memory. | 1396 // GPU process to free up the memory. |
| 1396 if (resource_provider_ && !visible_) | 1397 if (output_surface_->context_provider() && !visible_) { |
| 1397 resource_provider_->ShallowFlushIfSupported(); | 1398 output_surface_->context_provider()->ContextGL()->ShallowFlushCHROMIUM(); |
| 1399 } |
| 1398 } | 1400 } |
| 1399 | 1401 |
| 1400 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { | 1402 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { |
| 1401 client_->OnCanDrawStateChanged(CanDraw()); | 1403 client_->OnCanDrawStateChanged(CanDraw()); |
| 1402 } | 1404 } |
| 1403 | 1405 |
| 1404 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { | 1406 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { |
| 1405 CompositorFrameMetadata metadata; | 1407 CompositorFrameMetadata metadata; |
| 1406 metadata.device_scale_factor = device_scale_factor_; | 1408 metadata.device_scale_factor = device_scale_factor_; |
| 1407 metadata.page_scale_factor = active_tree_->total_page_scale_factor(); | 1409 metadata.page_scale_factor = active_tree_->total_page_scale_factor(); |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1921 ContextProvider* context_provider = output_surface_->context_provider(); | 1923 ContextProvider* context_provider = output_surface_->context_provider(); |
| 1922 transfer_buffer_memory_limit_ = | 1924 transfer_buffer_memory_limit_ = |
| 1923 GetMaxTransferBufferUsageBytes(context_provider); | 1925 GetMaxTransferBufferUsageBytes(context_provider); |
| 1924 | 1926 |
| 1925 if (use_gpu_rasterization_) { | 1927 if (use_gpu_rasterization_) { |
| 1926 resource_pool_ = | 1928 resource_pool_ = |
| 1927 ResourcePool::Create(resource_provider_.get(), | 1929 ResourcePool::Create(resource_provider_.get(), |
| 1928 GL_TEXTURE_2D, | 1930 GL_TEXTURE_2D, |
| 1929 resource_provider_->best_texture_format()); | 1931 resource_provider_->best_texture_format()); |
| 1930 | 1932 |
| 1931 raster_worker_pool_ = GpuRasterWorkerPool::Create( | 1933 raster_worker_pool_ = |
| 1932 proxy_->ImplThreadTaskRunner(), resource_provider_.get()); | 1934 GpuRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), |
| 1935 context_provider, |
| 1936 resource_provider_.get()); |
| 1933 on_demand_task_graph_runner_ = &synchronous_task_graph_runner_; | 1937 on_demand_task_graph_runner_ = &synchronous_task_graph_runner_; |
| 1934 } else if (UseZeroCopyTextureUpload()) { | 1938 } else if (UseZeroCopyTextureUpload()) { |
| 1935 resource_pool_ = | 1939 resource_pool_ = |
| 1936 ResourcePool::Create(resource_provider_.get(), | 1940 ResourcePool::Create(resource_provider_.get(), |
| 1937 GetMapImageTextureTarget(context_provider), | 1941 GetMapImageTextureTarget(context_provider), |
| 1938 resource_provider_->best_texture_format()); | 1942 resource_provider_->best_texture_format()); |
| 1939 | 1943 |
| 1940 raster_worker_pool_ = | 1944 raster_worker_pool_ = |
| 1941 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), | 1945 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), |
| 1942 RasterWorkerPool::GetTaskGraphRunner(), | 1946 RasterWorkerPool::GetTaskGraphRunner(), |
| 1943 resource_provider_.get()); | 1947 resource_provider_.get()); |
| 1944 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); | 1948 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); |
| 1945 } else if (UseOneCopyTextureUpload()) { | 1949 } else if (UseOneCopyTextureUpload()) { |
| 1946 // We need to create a staging resource pool when using copy rasterizer. | 1950 // We need to create a staging resource pool when using copy rasterizer. |
| 1947 staging_resource_pool_ = | 1951 staging_resource_pool_ = |
| 1948 ResourcePool::Create(resource_provider_.get(), | 1952 ResourcePool::Create(resource_provider_.get(), |
| 1949 GetMapImageTextureTarget(context_provider), | 1953 GetMapImageTextureTarget(context_provider), |
| 1950 resource_provider_->best_texture_format()); | 1954 resource_provider_->best_texture_format()); |
| 1951 resource_pool_ = | 1955 resource_pool_ = |
| 1952 ResourcePool::Create(resource_provider_.get(), | 1956 ResourcePool::Create(resource_provider_.get(), |
| 1953 GL_TEXTURE_2D, | 1957 GL_TEXTURE_2D, |
| 1954 resource_provider_->best_texture_format()); | 1958 resource_provider_->best_texture_format()); |
| 1955 | 1959 |
| 1956 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create( | 1960 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create( |
| 1957 proxy_->ImplThreadTaskRunner(), | 1961 proxy_->ImplThreadTaskRunner(), |
| 1958 RasterWorkerPool::GetTaskGraphRunner(), | 1962 RasterWorkerPool::GetTaskGraphRunner(), |
| 1963 context_provider, |
| 1959 resource_provider_.get(), | 1964 resource_provider_.get(), |
| 1960 staging_resource_pool_.get()); | 1965 staging_resource_pool_.get()); |
| 1961 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); | 1966 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); |
| 1962 } else { | 1967 } else { |
| 1963 resource_pool_ = ResourcePool::Create( | 1968 resource_pool_ = ResourcePool::Create( |
| 1964 resource_provider_.get(), | 1969 resource_provider_.get(), |
| 1965 GL_TEXTURE_2D, | 1970 GL_TEXTURE_2D, |
| 1966 resource_provider_->memory_efficient_texture_format()); | 1971 resource_provider_->memory_efficient_texture_format()); |
| 1967 | 1972 |
| 1968 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( | 1973 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( |
| 1969 proxy_->ImplThreadTaskRunner(), | 1974 proxy_->ImplThreadTaskRunner(), |
| 1970 RasterWorkerPool::GetTaskGraphRunner(), | 1975 RasterWorkerPool::GetTaskGraphRunner(), |
| 1976 context_provider, |
| 1971 resource_provider_.get(), | 1977 resource_provider_.get(), |
| 1972 transfer_buffer_memory_limit_); | 1978 transfer_buffer_memory_limit_); |
| 1973 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); | 1979 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); |
| 1974 } | 1980 } |
| 1975 | 1981 |
| 1976 tile_manager_ = | 1982 tile_manager_ = |
| 1977 TileManager::Create(this, | 1983 TileManager::Create(this, |
| 1978 proxy_->ImplThreadTaskRunner(), | 1984 proxy_->ImplThreadTaskRunner(), |
| 1979 resource_pool_.get(), | 1985 resource_pool_.get(), |
| 1980 raster_worker_pool_->AsRasterizer(), | 1986 raster_worker_pool_->AsRasterizer(), |
| (...skipping 1284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3265 } | 3271 } |
| 3266 | 3272 |
| 3267 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3273 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
| 3268 std::vector<PictureLayerImpl*>::iterator it = | 3274 std::vector<PictureLayerImpl*>::iterator it = |
| 3269 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3275 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
| 3270 DCHECK(it != picture_layers_.end()); | 3276 DCHECK(it != picture_layers_.end()); |
| 3271 picture_layers_.erase(it); | 3277 picture_layers_.erase(it); |
| 3272 } | 3278 } |
| 3273 | 3279 |
| 3274 } // namespace cc | 3280 } // namespace cc |
| OLD | NEW |