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

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

Issue 286953008: cc: Allow DeferredInitialize to use DelegatingRenderer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: No call to self constructor in initializer Created 6 years, 7 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 | Annotate | Revision Log
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 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 render_passes.push_back(render_pass.Pass()); 566 render_passes.push_back(render_pass.Pass());
567 } 567 }
568 568
569 static DrawMode GetDrawMode(OutputSurface* output_surface) { 569 static DrawMode GetDrawMode(OutputSurface* output_surface) {
570 if (output_surface->ForcedDrawToSoftwareDevice()) { 570 if (output_surface->ForcedDrawToSoftwareDevice()) {
571 return DRAW_MODE_RESOURCELESS_SOFTWARE; 571 return DRAW_MODE_RESOURCELESS_SOFTWARE;
572 } else if (output_surface->context_provider()) { 572 } else if (output_surface->context_provider()) {
573 return DRAW_MODE_HARDWARE; 573 return DRAW_MODE_HARDWARE;
574 } else { 574 } else {
575 DCHECK_EQ(!output_surface->software_device(), 575 DCHECK_EQ(!output_surface->software_device(),
576 output_surface->capabilities().delegated_rendering); 576 output_surface->capabilities().delegated_rendering &&
577 !output_surface->capabilities().deferred_gl_initialization)
578 << output_surface->capabilities().delegated_rendering << " "
579 << output_surface->capabilities().deferred_gl_initialization;
577 return DRAW_MODE_SOFTWARE; 580 return DRAW_MODE_SOFTWARE;
578 } 581 }
579 } 582 }
580 583
581 static void AppendQuadsForLayer( 584 static void AppendQuadsForLayer(
582 RenderPass* target_render_pass, 585 RenderPass* target_render_pass,
583 LayerImpl* layer, 586 LayerImpl* layer,
584 const OcclusionTracker<LayerImpl>& occlusion_tracker, 587 const OcclusionTracker<LayerImpl>& occlusion_tracker,
585 AppendQuadsData* append_quads_data) { 588 AppendQuadsData* append_quads_data) {
586 QuadCuller quad_culler(target_render_pass, layer, occlusion_tracker); 589 QuadCuller quad_culler(target_render_pass, layer, occlusion_tracker);
(...skipping 1229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 if (pending_tree_) 1819 if (pending_tree_)
1817 pending_tree_->ReleaseResources(); 1820 pending_tree_->ReleaseResources();
1818 if (recycle_tree_) 1821 if (recycle_tree_)
1819 recycle_tree_->ReleaseResources(); 1822 recycle_tree_->ReleaseResources();
1820 1823
1821 EvictAllUIResources(); 1824 EvictAllUIResources();
1822 } 1825 }
1823 1826
1824 void LayerTreeHostImpl::CreateAndSetRenderer( 1827 void LayerTreeHostImpl::CreateAndSetRenderer(
1825 OutputSurface* output_surface, 1828 OutputSurface* output_surface,
1826 ResourceProvider* resource_provider, 1829 ResourceProvider* resource_provider) {
1827 bool skip_gl_renderer) {
1828 DCHECK(!renderer_); 1830 DCHECK(!renderer_);
1829 if (output_surface->capabilities().delegated_rendering) { 1831 if (output_surface->capabilities().delegated_rendering) {
1830 renderer_ = DelegatingRenderer::Create( 1832 renderer_ = DelegatingRenderer::Create(
1831 this, &settings_, output_surface, resource_provider); 1833 this, &settings_, output_surface, resource_provider);
1832 } else if (output_surface->context_provider() && !skip_gl_renderer) { 1834 } else if (output_surface->context_provider()) {
1833 renderer_ = GLRenderer::Create(this, 1835 renderer_ = GLRenderer::Create(this,
1834 &settings_, 1836 &settings_,
1835 output_surface, 1837 output_surface,
1836 resource_provider, 1838 resource_provider,
1837 texture_mailbox_deleter_.get(), 1839 texture_mailbox_deleter_.get(),
1838 settings_.highp_threshold_min); 1840 settings_.highp_threshold_min);
1839 } else if (output_surface->software_device()) { 1841 } else if (output_surface->software_device()) {
1840 renderer_ = SoftwareRenderer::Create( 1842 renderer_ = SoftwareRenderer::Create(
1841 this, &settings_, output_surface, resource_provider); 1843 this, &settings_, output_surface, resource_provider);
1842 } 1844 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1949 ResourceProvider::Create(output_surface.get(), 1951 ResourceProvider::Create(output_surface.get(),
1950 shared_bitmap_manager_, 1952 shared_bitmap_manager_,
1951 settings_.highp_threshold_min, 1953 settings_.highp_threshold_min,
1952 settings_.use_rgba_4444_textures, 1954 settings_.use_rgba_4444_textures,
1953 settings_.texture_id_allocation_chunk_size, 1955 settings_.texture_id_allocation_chunk_size,
1954 settings_.use_distance_field_text); 1956 settings_.use_distance_field_text);
1955 1957
1956 if (output_surface->capabilities().deferred_gl_initialization) 1958 if (output_surface->capabilities().deferred_gl_initialization)
1957 EnforceZeroBudget(true); 1959 EnforceZeroBudget(true);
1958 1960
1959 bool skip_gl_renderer = false; 1961 CreateAndSetRenderer(output_surface.get(), resource_provider.get());
1960 CreateAndSetRenderer(
1961 output_surface.get(), resource_provider.get(), skip_gl_renderer);
1962 1962
1963 transfer_buffer_memory_limit_ = 1963 transfer_buffer_memory_limit_ =
1964 GetMaxTransferBufferUsageBytes(output_surface->context_provider().get()); 1964 GetMaxTransferBufferUsageBytes(output_surface->context_provider().get());
1965 1965
1966 if (settings_.impl_side_painting) { 1966 if (settings_.impl_side_painting) {
1967 // Note: we use zero-copy rasterizer by default when the renderer is using 1967 // Note: we use zero-copy rasterizer by default when the renderer is using
1968 // shared memory resources. 1968 // shared memory resources.
1969 bool use_zero_copy = 1969 bool use_zero_copy =
1970 (settings_.use_zero_copy || 1970 (settings_.use_zero_copy ||
1971 GetRendererCapabilities().using_shared_memory_resources) && 1971 GetRendererCapabilities().using_shared_memory_resources) &&
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2019 void LayerTreeHostImpl::DeferredInitialize() { 2019 void LayerTreeHostImpl::DeferredInitialize() {
2020 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 2020 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
2021 DCHECK(settings_.impl_side_painting); 2021 DCHECK(settings_.impl_side_painting);
2022 DCHECK(output_surface_->context_provider()); 2022 DCHECK(output_surface_->context_provider());
2023 2023
2024 ReleaseTreeResources(); 2024 ReleaseTreeResources();
2025 renderer_.reset(); 2025 renderer_.reset();
2026 2026
2027 resource_provider_->InitializeGL(); 2027 resource_provider_->InitializeGL();
2028 2028
2029 bool skip_gl_renderer = false; 2029 CreateAndSetRenderer(output_surface_.get(), resource_provider_.get());
2030 CreateAndSetRenderer(
2031 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
2032 2030
2033 EnforceZeroBudget(false); 2031 EnforceZeroBudget(false);
2034 client_->SetNeedsCommitOnImplThread(); 2032 client_->SetNeedsCommitOnImplThread();
2035 } 2033 }
2036 2034
2037 void LayerTreeHostImpl::ReleaseGL() { 2035 void LayerTreeHostImpl::ReleaseGL() {
2038 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 2036 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
2039 DCHECK(settings_.impl_side_painting); 2037 DCHECK(settings_.impl_side_painting);
2040 DCHECK(output_surface_->context_provider()); 2038 DCHECK(output_surface_->context_provider());
2041 2039
2042 ReleaseTreeResources(); 2040 ReleaseTreeResources();
2043 renderer_.reset(); 2041 renderer_.reset();
2044 tile_manager_.reset(); 2042 tile_manager_.reset();
2045 resource_pool_.reset(); 2043 resource_pool_.reset();
2046 raster_worker_pool_.reset(); 2044 raster_worker_pool_.reset();
2047 direct_raster_worker_pool_.reset(); 2045 direct_raster_worker_pool_.reset();
2048 staging_resource_pool_.reset(); 2046 staging_resource_pool_.reset();
2049 resource_provider_->InitializeSoftware(); 2047 resource_provider_->InitializeSoftware();
2050 2048
2051 bool skip_gl_renderer = true; 2049 output_surface_->ReleaseContextProvider();
2052 CreateAndSetRenderer( 2050 CreateAndSetRenderer(output_surface_.get(), resource_provider_.get());
2053 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
2054 2051
2055 EnforceZeroBudget(true); 2052 EnforceZeroBudget(true);
2056 DCHECK(GetRendererCapabilities().using_map_image); 2053 DCHECK(GetRendererCapabilities().using_map_image);
2057 CreateAndSetTileManager(resource_provider_.get(), 2054 CreateAndSetTileManager(resource_provider_.get(),
2058 NULL, 2055 NULL,
2059 true, 2056 true,
2060 false, 2057 false,
2061 GetRendererCapabilities().allow_rasterize_on_demand); 2058 GetRendererCapabilities().allow_rasterize_on_demand);
2062 DCHECK(tile_manager_); 2059 DCHECK(tile_manager_);
2063 2060
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after
3134 swap_promise_monitor_.erase(monitor); 3131 swap_promise_monitor_.erase(monitor);
3135 } 3132 }
3136 3133
3137 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { 3134 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() {
3138 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); 3135 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin();
3139 for (; it != swap_promise_monitor_.end(); it++) 3136 for (; it != swap_promise_monitor_.end(); it++)
3140 (*it)->OnSetNeedsRedrawOnImpl(); 3137 (*it)->OnSetNeedsRedrawOnImpl();
3141 } 3138 }
3142 3139
3143 } // namespace cc 3140 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698