Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1293)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 375303002: cc: Refactor ResourceProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixing typing error in build.gn Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/test/pixel_test.cc ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/test/pixel_test.cc ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698