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

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: review comments addressed. 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
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
73 using gpu::gles2::GLES2Interface;
74
72 namespace { 75 namespace {
73 76
74 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { 77 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) {
75 if (visible) { 78 if (visible) {
76 TRACE_EVENT_ASYNC_BEGIN1("webkit", 79 TRACE_EVENT_ASYNC_BEGIN1("webkit",
77 "LayerTreeHostImpl::SetVisible", 80 "LayerTreeHostImpl::SetVisible",
78 id, 81 id,
79 "LayerTreeHostImpl", 82 "LayerTreeHostImpl",
80 id); 83 id);
81 return; 84 return;
(...skipping 1285 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 // because they were exported. 1370 // because they were exported.
1368 if (tile_manager_) { 1371 if (tile_manager_) {
1369 DCHECK(resource_pool_); 1372 DCHECK(resource_pool_);
1370 1373
1371 resource_pool_->CheckBusyResources(); 1374 resource_pool_->CheckBusyResources();
1372 resource_pool_->ReduceResourceUsage(); 1375 resource_pool_->ReduceResourceUsage();
1373 } 1376 }
1374 // If we're not visible, we likely released resources, so we want to 1377 // If we're not visible, we likely released resources, so we want to
1375 // aggressively flush here to make sure those DeleteTextures make it to the 1378 // aggressively flush here to make sure those DeleteTextures make it to the
1376 // GPU process to free up the memory. 1379 // GPU process to free up the memory.
1377 if (resource_provider_ && !visible_) 1380 if (output_surface_ && !visible_) {
danakj 2014/07/11 16:49:04 if os and os->context_provider() && !visible
1378 resource_provider_->ShallowFlushIfSupported(); 1381 GLES2Interface* gl = output_surface_->context_provider()->ContextGL();
1382 if (gl)
danakj 2014/07/11 16:49:04 don't need to check gl
1383 gl->ShallowFlushCHROMIUM();
1384 }
1379 } 1385 }
1380 1386
1381 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { 1387 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() {
1382 client_->OnCanDrawStateChanged(CanDraw()); 1388 client_->OnCanDrawStateChanged(CanDraw());
1383 } 1389 }
1384 1390
1385 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { 1391 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const {
1386 CompositorFrameMetadata metadata; 1392 CompositorFrameMetadata metadata;
1387 metadata.device_scale_factor = device_scale_factor_; 1393 metadata.device_scale_factor = device_scale_factor_;
1388 metadata.page_scale_factor = active_tree_->total_page_scale_factor(); 1394 metadata.page_scale_factor = active_tree_->total_page_scale_factor();
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
1902 ContextProvider* context_provider = output_surface_->context_provider(); 1908 ContextProvider* context_provider = output_surface_->context_provider();
1903 transfer_buffer_memory_limit_ = 1909 transfer_buffer_memory_limit_ =
1904 GetMaxTransferBufferUsageBytes(context_provider); 1910 GetMaxTransferBufferUsageBytes(context_provider);
1905 1911
1906 if (use_gpu_rasterization_) { 1912 if (use_gpu_rasterization_) {
1907 resource_pool_ = 1913 resource_pool_ =
1908 ResourcePool::Create(resource_provider_.get(), 1914 ResourcePool::Create(resource_provider_.get(),
1909 GL_TEXTURE_2D, 1915 GL_TEXTURE_2D,
1910 resource_provider_->best_texture_format()); 1916 resource_provider_->best_texture_format());
1911 1917
1912 raster_worker_pool_ = GpuRasterWorkerPool::Create( 1918 raster_worker_pool_ =
1913 proxy_->ImplThreadTaskRunner(), resource_provider_.get()); 1919 GpuRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
1920 context_provider,
1921 resource_provider_.get());
1914 on_demand_task_graph_runner_ = &synchronous_task_graph_runner_; 1922 on_demand_task_graph_runner_ = &synchronous_task_graph_runner_;
1915 } else if (UseZeroCopyTextureUpload()) { 1923 } else if (UseZeroCopyTextureUpload()) {
1916 resource_pool_ = 1924 resource_pool_ =
1917 ResourcePool::Create(resource_provider_.get(), 1925 ResourcePool::Create(resource_provider_.get(),
1918 GetMapImageTextureTarget(context_provider), 1926 GetMapImageTextureTarget(context_provider),
1919 resource_provider_->best_texture_format()); 1927 resource_provider_->best_texture_format());
1920 1928
1921 raster_worker_pool_ = 1929 raster_worker_pool_ =
1922 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 1930 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
1923 RasterWorkerPool::GetTaskGraphRunner(), 1931 RasterWorkerPool::GetTaskGraphRunner(),
1924 resource_provider_.get()); 1932 resource_provider_.get());
1925 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); 1933 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
1926 } else if (UseOneCopyTextureUpload()) { 1934 } else if (UseOneCopyTextureUpload()) {
1927 // We need to create a staging resource pool when using copy rasterizer. 1935 // We need to create a staging resource pool when using copy rasterizer.
1928 staging_resource_pool_ = 1936 staging_resource_pool_ =
1929 ResourcePool::Create(resource_provider_.get(), 1937 ResourcePool::Create(resource_provider_.get(),
1930 GetMapImageTextureTarget(context_provider), 1938 GetMapImageTextureTarget(context_provider),
1931 resource_provider_->best_texture_format()); 1939 resource_provider_->best_texture_format());
1932 resource_pool_ = 1940 resource_pool_ =
1933 ResourcePool::Create(resource_provider_.get(), 1941 ResourcePool::Create(resource_provider_.get(),
1934 GL_TEXTURE_2D, 1942 GL_TEXTURE_2D,
1935 resource_provider_->best_texture_format()); 1943 resource_provider_->best_texture_format());
1936 1944
1937 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create( 1945 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create(
1938 proxy_->ImplThreadTaskRunner(), 1946 proxy_->ImplThreadTaskRunner(),
1939 RasterWorkerPool::GetTaskGraphRunner(), 1947 RasterWorkerPool::GetTaskGraphRunner(),
1948 context_provider,
1940 resource_provider_.get(), 1949 resource_provider_.get(),
1941 staging_resource_pool_.get()); 1950 staging_resource_pool_.get());
1942 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); 1951 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
1943 } else { 1952 } else {
1944 resource_pool_ = ResourcePool::Create( 1953 resource_pool_ = ResourcePool::Create(
1945 resource_provider_.get(), 1954 resource_provider_.get(),
1946 GL_TEXTURE_2D, 1955 GL_TEXTURE_2D,
1947 resource_provider_->memory_efficient_texture_format()); 1956 resource_provider_->memory_efficient_texture_format());
1948 1957
1949 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 1958 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
1950 proxy_->ImplThreadTaskRunner(), 1959 proxy_->ImplThreadTaskRunner(),
1951 RasterWorkerPool::GetTaskGraphRunner(), 1960 RasterWorkerPool::GetTaskGraphRunner(),
1961 context_provider,
1952 resource_provider_.get(), 1962 resource_provider_.get(),
1953 transfer_buffer_memory_limit_); 1963 transfer_buffer_memory_limit_);
1954 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner(); 1964 on_demand_task_graph_runner_ = RasterWorkerPool::GetTaskGraphRunner();
1955 } 1965 }
1956 1966
1957 tile_manager_ = 1967 tile_manager_ =
1958 TileManager::Create(this, 1968 TileManager::Create(this,
1959 proxy_->ImplThreadTaskRunner(), 1969 proxy_->ImplThreadTaskRunner(),
1960 resource_pool_.get(), 1970 resource_pool_.get(),
1961 raster_worker_pool_->AsRasterizer(), 1971 raster_worker_pool_->AsRasterizer(),
(...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after
3245 } 3255 }
3246 3256
3247 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3257 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3248 std::vector<PictureLayerImpl*>::iterator it = 3258 std::vector<PictureLayerImpl*>::iterator it =
3249 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3259 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3250 DCHECK(it != picture_layers_.end()); 3260 DCHECK(it != picture_layers_.end());
3251 picture_layers_.erase(it); 3261 picture_layers_.erase(it);
3252 } 3262 }
3253 3263
3254 } // namespace cc 3264 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698