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

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

Issue 2007593005: Remove the concept of OutputSurface from ResourceProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resourceprovider-no-outputsurface: moreccptcompile Created 4 years, 6 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') | no next file » | 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 2178 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 } 2189 }
2190 2190
2191 void LayerTreeHostImpl::CreateResourceAndRasterBufferProvider( 2191 void LayerTreeHostImpl::CreateResourceAndRasterBufferProvider(
2192 std::unique_ptr<RasterBufferProvider>* raster_buffer_provider, 2192 std::unique_ptr<RasterBufferProvider>* raster_buffer_provider,
2193 std::unique_ptr<ResourcePool>* resource_pool) { 2193 std::unique_ptr<ResourcePool>* resource_pool) {
2194 DCHECK(GetTaskRunner()); 2194 DCHECK(GetTaskRunner());
2195 // TODO(vmpstr): Make this a DCHECK (or remove) when crbug.com/419086 is 2195 // TODO(vmpstr): Make this a DCHECK (or remove) when crbug.com/419086 is
2196 // resolved. 2196 // resolved.
2197 CHECK(resource_provider_); 2197 CHECK(resource_provider_);
2198 2198
2199 ContextProvider* context_provider = output_surface_->context_provider(); 2199 ContextProvider* compositor_context_provider =
2200 if (!context_provider) { 2200 output_surface_->context_provider();
2201 if (!compositor_context_provider) {
2201 *resource_pool = 2202 *resource_pool =
2202 ResourcePool::Create(resource_provider_.get(), GetTaskRunner()); 2203 ResourcePool::Create(resource_provider_.get(), GetTaskRunner());
2203 2204
2204 *raster_buffer_provider = 2205 *raster_buffer_provider =
2205 BitmapRasterBufferProvider::Create(resource_provider_.get()); 2206 BitmapRasterBufferProvider::Create(resource_provider_.get());
2206 return; 2207 return;
2207 } 2208 }
2208 2209
2210 ContextProvider* worker_context_provider =
2211 output_surface_->worker_context_provider();
2209 if (use_gpu_rasterization_) { 2212 if (use_gpu_rasterization_) {
2210 DCHECK(resource_provider_->output_surface()->worker_context_provider()); 2213 DCHECK(worker_context_provider);
2211 2214
2212 *resource_pool = 2215 *resource_pool =
2213 ResourcePool::Create(resource_provider_.get(), GetTaskRunner()); 2216 ResourcePool::Create(resource_provider_.get(), GetTaskRunner());
2214 2217
2215 int msaa_sample_count = use_msaa_ ? RequestedMSAASampleCount() : 0; 2218 int msaa_sample_count = use_msaa_ ? RequestedMSAASampleCount() : 0;
2216 2219
2217 *raster_buffer_provider = GpuRasterBufferProvider::Create( 2220 *raster_buffer_provider = base::MakeUnique<GpuRasterBufferProvider>(
2218 context_provider, resource_provider_.get(), 2221 compositor_context_provider, worker_context_provider,
2219 settings_.use_distance_field_text, msaa_sample_count); 2222 resource_provider_.get(), settings_.use_distance_field_text,
2223 msaa_sample_count);
2220 return; 2224 return;
2221 } 2225 }
2222 2226
2223 DCHECK(GetRendererCapabilities().using_image); 2227 DCHECK(GetRendererCapabilities().using_image);
2224 2228
2225 bool use_zero_copy = settings_.use_zero_copy; 2229 bool use_zero_copy = settings_.use_zero_copy;
2226 // TODO(reveman): Remove this when mojo supports worker contexts. 2230 // TODO(reveman): Remove this when mojo supports worker contexts.
2227 // crbug.com/522440 2231 // crbug.com/522440
2228 if (!resource_provider_->output_surface()->worker_context_provider()) { 2232 if (!worker_context_provider) {
2229 LOG(ERROR) 2233 LOG(ERROR)
2230 << "Forcing zero-copy tile initialization as worker context is missing"; 2234 << "Forcing zero-copy tile initialization as worker context is missing";
2231 use_zero_copy = true; 2235 use_zero_copy = true;
2232 } 2236 }
2233 2237
2234 if (use_zero_copy) { 2238 if (use_zero_copy) {
2235 *resource_pool = ResourcePool::CreateForGpuMemoryBufferResources( 2239 *resource_pool = ResourcePool::CreateForGpuMemoryBufferResources(
2236 resource_provider_.get(), GetTaskRunner()); 2240 resource_provider_.get(), GetTaskRunner());
2237 2241
2238 *raster_buffer_provider = ZeroCopyRasterBufferProvider::Create( 2242 *raster_buffer_provider = ZeroCopyRasterBufferProvider::Create(
2239 resource_provider_.get(), 2243 resource_provider_.get(),
2240 settings_.renderer_settings.preferred_tile_format); 2244 settings_.renderer_settings.preferred_tile_format);
2241 return; 2245 return;
2242 } 2246 }
2243 2247
2244 *resource_pool = 2248 *resource_pool =
2245 ResourcePool::Create(resource_provider_.get(), GetTaskRunner()); 2249 ResourcePool::Create(resource_provider_.get(), GetTaskRunner());
2246 2250
2247 const int max_copy_texture_chromium_size = 2251 const int max_copy_texture_chromium_size =
2248 context_provider->ContextCapabilities().max_copy_texture_chromium_size; 2252 compositor_context_provider->ContextCapabilities()
2253 .max_copy_texture_chromium_size;
2249 2254
2250 *raster_buffer_provider = OneCopyRasterBufferProvider::Create( 2255 *raster_buffer_provider = base::MakeUnique<OneCopyRasterBufferProvider>(
2251 GetTaskRunner(), context_provider, resource_provider_.get(), 2256 GetTaskRunner(), compositor_context_provider, worker_context_provider,
2252 max_copy_texture_chromium_size, settings_.use_partial_raster, 2257 resource_provider_.get(), max_copy_texture_chromium_size,
2253 settings_.max_staging_buffer_usage_in_bytes, 2258 settings_.use_partial_raster, settings_.max_staging_buffer_usage_in_bytes,
2254 settings_.renderer_settings.preferred_tile_format); 2259 settings_.renderer_settings.preferred_tile_format);
2255 } 2260 }
2256 2261
2257 void LayerTreeHostImpl::SetLayerTreeMutator(LayerTreeMutator* mutator) { 2262 void LayerTreeHostImpl::SetLayerTreeMutator(LayerTreeMutator* mutator) {
2258 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), 2263 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"),
2259 "LayerTreeHostImpl::SetLayerTreeMutator"); 2264 "LayerTreeHostImpl::SetLayerTreeMutator");
2260 mutator_ = mutator; 2265 mutator_ = mutator;
2261 } 2266 }
2262 2267
2263 void LayerTreeHostImpl::CleanUpTileManagerAndUIResources() { 2268 void LayerTreeHostImpl::CleanUpTileManagerAndUIResources() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2300 2305
2301 ReleaseOutputSurface(); 2306 ReleaseOutputSurface();
2302 if (!output_surface->BindToClient(this)) { 2307 if (!output_surface->BindToClient(this)) {
2303 // Avoid recreating tree resources because we might not have enough 2308 // Avoid recreating tree resources because we might not have enough
2304 // information to do this yet (eg. we don't have a TileManager at this 2309 // information to do this yet (eg. we don't have a TileManager at this
2305 // point). 2310 // point).
2306 return false; 2311 return false;
2307 } 2312 }
2308 2313
2309 output_surface_ = output_surface; 2314 output_surface_ = output_surface;
2310 resource_provider_ = ResourceProvider::Create( 2315 resource_provider_ = base::MakeUnique<ResourceProvider>(
2311 output_surface_, shared_bitmap_manager_, gpu_memory_buffer_manager_, 2316 output_surface_->context_provider(), shared_bitmap_manager_,
2317 gpu_memory_buffer_manager_,
2312 task_runner_provider_->blocking_main_thread_task_runner(), 2318 task_runner_provider_->blocking_main_thread_task_runner(),
2313 settings_.renderer_settings.highp_threshold_min, 2319 settings_.renderer_settings.highp_threshold_min,
2314 settings_.renderer_settings.texture_id_allocation_chunk_size, 2320 settings_.renderer_settings.texture_id_allocation_chunk_size,
2321 output_surface_->capabilities().delegated_sync_points_required,
2315 settings_.renderer_settings.use_gpu_memory_buffer_resources, 2322 settings_.renderer_settings.use_gpu_memory_buffer_resources,
2316 settings_.use_image_texture_targets); 2323 settings_.use_image_texture_targets);
2317 2324
2318 CreateAndSetRenderer(); 2325 CreateAndSetRenderer();
2319 2326
2320 // Since the new renderer may be capable of MSAA, update status here. 2327 // Since the new renderer may be capable of MSAA, update status here.
2321 UpdateGpuRasterizationStatus(); 2328 UpdateGpuRasterizationStatus();
2322 2329
2323 CreateTileManagerResources(); 2330 CreateTileManagerResources();
2324 RecreateTreeResources(); 2331 RecreateTreeResources();
(...skipping 1680 matching lines...) Expand 10 before | Expand all | Expand 10 after
4005 const { 4012 const {
4006 return fixed_raster_scale_attempted_scale_change_history_.count() >= 4013 return fixed_raster_scale_attempted_scale_change_history_.count() >=
4007 kFixedRasterScaleAttemptedScaleChangeThreshold; 4014 kFixedRasterScaleAttemptedScaleChangeThreshold;
4008 } 4015 }
4009 4016
4010 void LayerTreeHostImpl::SetFixedRasterScaleAttemptedToChangeScale() { 4017 void LayerTreeHostImpl::SetFixedRasterScaleAttemptedToChangeScale() {
4011 fixed_raster_scale_attempted_scale_change_history_.set(0); 4018 fixed_raster_scale_attempted_scale_change_history_.set(0);
4012 } 4019 }
4013 4020
4014 } // namespace cc 4021 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/pixel_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698