OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |