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

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

Issue 817133006: Support different formats in the same resource pool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove ResourceFormatUsage Created 5 years, 11 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 1995 matching lines...) Expand 10 before | Expand all | Expand 10 after
2006 scoped_ptr<ResourcePool>* resource_pool, 2006 scoped_ptr<ResourcePool>* resource_pool,
2007 scoped_ptr<ResourcePool>* staging_resource_pool) { 2007 scoped_ptr<ResourcePool>* staging_resource_pool) {
2008 base::SingleThreadTaskRunner* task_runner = 2008 base::SingleThreadTaskRunner* task_runner =
2009 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 2009 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
2010 : proxy_->MainThreadTaskRunner(); 2010 : proxy_->MainThreadTaskRunner();
2011 DCHECK(task_runner); 2011 DCHECK(task_runner);
2012 2012
2013 ContextProvider* context_provider = output_surface_->context_provider(); 2013 ContextProvider* context_provider = output_surface_->context_provider();
2014 if (!context_provider) { 2014 if (!context_provider) {
2015 *resource_pool = 2015 *resource_pool =
2016 ResourcePool::Create(resource_provider_.get(), 2016 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, false);
2017 GL_TEXTURE_2D,
2018 resource_provider_->best_texture_format());
2019 2017
2020 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create( 2018 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create(
2021 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), 2019 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
2022 resource_provider_.get()); 2020 resource_provider_.get());
2023 return; 2021 return;
2024 } 2022 }
2025 2023
2026 if (use_gpu_rasterization_) { 2024 if (use_gpu_rasterization_) {
2027 *resource_pool = 2025 *resource_pool =
2028 ResourcePool::Create(resource_provider_.get(), 2026 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, false);
2029 GL_TEXTURE_2D,
2030 resource_provider_->best_texture_format());
2031 2027
2032 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create( 2028 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create(
2033 task_runner, TileTaskWorkerPool::GetTaskGraphRunner()); 2029 task_runner, TileTaskWorkerPool::GetTaskGraphRunner());
2034 return; 2030 return;
2035 } 2031 }
2036 2032
2037 if (GetRendererCapabilities().using_image) { 2033 if (GetRendererCapabilities().using_image) {
2038 unsigned image_target = settings_.use_image_texture_target; 2034 unsigned image_target = settings_.use_image_texture_target;
2039 DCHECK_IMPLIES( 2035 DCHECK_IMPLIES(
2040 image_target == GL_TEXTURE_RECTANGLE_ARB, 2036 image_target == GL_TEXTURE_RECTANGLE_ARB,
2041 context_provider->ContextCapabilities().gpu.texture_rectangle); 2037 context_provider->ContextCapabilities().gpu.texture_rectangle);
2042 DCHECK_IMPLIES( 2038 DCHECK_IMPLIES(
2043 image_target == GL_TEXTURE_EXTERNAL_OES, 2039 image_target == GL_TEXTURE_EXTERNAL_OES,
2044 context_provider->ContextCapabilities().gpu.egl_image_external); 2040 context_provider->ContextCapabilities().gpu.egl_image_external);
2045 2041
2046 if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) { 2042 if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) {
2047 *resource_pool = 2043 *resource_pool =
2048 ResourcePool::Create(resource_provider_.get(), image_target, 2044 ResourcePool::Create(resource_provider_.get(), image_target, false);
2049 resource_provider_->best_texture_format());
2050 2045
2051 TaskGraphRunner* task_graph_runner; 2046 TaskGraphRunner* task_graph_runner;
2052 if (IsSynchronousSingleThreaded()) { 2047 if (IsSynchronousSingleThreaded()) {
2053 DCHECK(!single_thread_synchronous_task_graph_runner_); 2048 DCHECK(!single_thread_synchronous_task_graph_runner_);
2054 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner); 2049 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner);
2055 task_graph_runner = single_thread_synchronous_task_graph_runner_.get(); 2050 task_graph_runner = single_thread_synchronous_task_graph_runner_.get();
2056 } else { 2051 } else {
2057 task_graph_runner = TileTaskWorkerPool::GetTaskGraphRunner(); 2052 task_graph_runner = TileTaskWorkerPool::GetTaskGraphRunner();
2058 } 2053 }
2059 2054
2060 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create( 2055 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create(
2061 task_runner, task_graph_runner, resource_provider_.get()); 2056 task_runner, task_graph_runner, resource_provider_.get());
2062 return; 2057 return;
2063 } 2058 }
2064 2059
2065 if (settings_.use_one_copy) { 2060 if (settings_.use_one_copy) {
2066 // We need to create a staging resource pool when using copy rasterizer. 2061 // We need to create a staging resource pool when using copy rasterizer.
2067 *staging_resource_pool = 2062 *staging_resource_pool =
2068 ResourcePool::Create(resource_provider_.get(), image_target, 2063 ResourcePool::Create(resource_provider_.get(), image_target, false);
2069 resource_provider_->best_texture_format());
2070 *resource_pool = 2064 *resource_pool =
2071 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, 2065 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, false);
2072 resource_provider_->best_texture_format());
2073 2066
2074 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create( 2067 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create(
2075 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), 2068 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
2076 context_provider, resource_provider_.get(), 2069 context_provider, resource_provider_.get(),
2077 staging_resource_pool_.get()); 2070 staging_resource_pool_.get());
2078 return; 2071 return;
2079 } 2072 }
2080 } 2073 }
2081 2074
2082 *resource_pool = ResourcePool::Create( 2075 *resource_pool =
2083 resource_provider_.get(), GL_TEXTURE_2D, 2076 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, true);
2084 resource_provider_->memory_efficient_texture_format());
2085 2077
2086 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create( 2078 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create(
2087 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), context_provider, 2079 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), context_provider,
2088 resource_provider_.get(), 2080 resource_provider_.get(),
2089 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), 2081 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(),
2090 settings_.renderer_settings.refresh_rate)); 2082 settings_.renderer_settings.refresh_rate));
2091 } 2083 }
2092 2084
2093 void LayerTreeHostImpl::DestroyTileManager() { 2085 void LayerTreeHostImpl::DestroyTileManager() {
2094 tile_manager_ = nullptr; 2086 tile_manager_ = nullptr;
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
3507 } 3499 }
3508 3500
3509 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3501 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3510 std::vector<PictureLayerImpl*>::iterator it = 3502 std::vector<PictureLayerImpl*>::iterator it =
3511 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3503 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3512 DCHECK(it != picture_layers_.end()); 3504 DCHECK(it != picture_layers_.end());
3513 picture_layers_.erase(it); 3505 picture_layers_.erase(it);
3514 } 3506 }
3515 3507
3516 } // namespace cc 3508 } // namespace cc
OLDNEW
« cc/resources/resource_pool.cc ('K') | « cc/test/layer_tree_pixel_resource_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698