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 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
565 render_passes.push_back(render_pass.Pass()); | 565 render_passes.push_back(render_pass.Pass()); |
566 } | 566 } |
567 | 567 |
568 static DrawMode GetDrawMode(OutputSurface* output_surface) { | 568 static DrawMode GetDrawMode(OutputSurface* output_surface) { |
569 if (output_surface->ForcedDrawToSoftwareDevice()) { | 569 if (output_surface->ForcedDrawToSoftwareDevice()) { |
570 return DRAW_MODE_RESOURCELESS_SOFTWARE; | 570 return DRAW_MODE_RESOURCELESS_SOFTWARE; |
571 } else if (output_surface->context_provider()) { | 571 } else if (output_surface->context_provider()) { |
572 return DRAW_MODE_HARDWARE; | 572 return DRAW_MODE_HARDWARE; |
573 } else { | 573 } else { |
574 DCHECK_EQ(!output_surface->software_device(), | 574 DCHECK_EQ(!output_surface->software_device(), |
575 output_surface->capabilities().delegated_rendering); | 575 output_surface->capabilities().delegated_rendering && |
576 !output_surface->capabilities().deferred_gl_initialization); | |
danakj
2014/05/16 22:44:29
Can you << the two flags after the DCHECK so if it
boliu
2014/05/16 23:08:26
Done.
| |
576 return DRAW_MODE_SOFTWARE; | 577 return DRAW_MODE_SOFTWARE; |
577 } | 578 } |
578 } | 579 } |
579 | 580 |
580 static void AppendQuadsForLayer( | 581 static void AppendQuadsForLayer( |
581 RenderPass* target_render_pass, | 582 RenderPass* target_render_pass, |
582 LayerImpl* layer, | 583 LayerImpl* layer, |
583 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 584 const OcclusionTracker<LayerImpl>& occlusion_tracker, |
584 AppendQuadsData* append_quads_data) { | 585 AppendQuadsData* append_quads_data) { |
585 QuadCuller quad_culler(target_render_pass, layer, occlusion_tracker); | 586 QuadCuller quad_culler(target_render_pass, layer, occlusion_tracker); |
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1806 pending_tree_->ReleaseResources(); | 1807 pending_tree_->ReleaseResources(); |
1807 if (recycle_tree_) | 1808 if (recycle_tree_) |
1808 recycle_tree_->ReleaseResources(); | 1809 recycle_tree_->ReleaseResources(); |
1809 | 1810 |
1810 EvictAllUIResources(); | 1811 EvictAllUIResources(); |
1811 } | 1812 } |
1812 | 1813 |
1813 void LayerTreeHostImpl::CreateAndSetRenderer( | 1814 void LayerTreeHostImpl::CreateAndSetRenderer( |
1814 OutputSurface* output_surface, | 1815 OutputSurface* output_surface, |
1815 ResourceProvider* resource_provider, | 1816 ResourceProvider* resource_provider, |
1816 bool skip_gl_renderer) { | 1817 bool force_software_renderer) { |
1817 DCHECK(!renderer_); | 1818 DCHECK(!renderer_); |
1818 if (output_surface->capabilities().delegated_rendering) { | 1819 if (output_surface->capabilities().delegated_rendering && |
1820 !force_software_renderer) { | |
1819 renderer_ = DelegatingRenderer::Create( | 1821 renderer_ = DelegatingRenderer::Create( |
1820 this, &settings_, output_surface, resource_provider); | 1822 this, &settings_, output_surface, resource_provider); |
1821 } else if (output_surface->context_provider() && !skip_gl_renderer) { | 1823 } else if (output_surface->context_provider() && !force_software_renderer) { |
1822 renderer_ = GLRenderer::Create(this, | 1824 renderer_ = GLRenderer::Create(this, |
1823 &settings_, | 1825 &settings_, |
1824 output_surface, | 1826 output_surface, |
1825 resource_provider, | 1827 resource_provider, |
1826 texture_mailbox_deleter_.get(), | 1828 texture_mailbox_deleter_.get(), |
1827 settings_.highp_threshold_min); | 1829 settings_.highp_threshold_min); |
1828 } else if (output_surface->software_device()) { | 1830 } else if (output_surface->software_device()) { |
1829 renderer_ = SoftwareRenderer::Create( | 1831 renderer_ = SoftwareRenderer::Create( |
1830 this, &settings_, output_surface, resource_provider); | 1832 this, &settings_, output_surface, resource_provider); |
1831 } | 1833 } |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1938 ResourceProvider::Create(output_surface.get(), | 1940 ResourceProvider::Create(output_surface.get(), |
1939 shared_bitmap_manager_, | 1941 shared_bitmap_manager_, |
1940 settings_.highp_threshold_min, | 1942 settings_.highp_threshold_min, |
1941 settings_.use_rgba_4444_textures, | 1943 settings_.use_rgba_4444_textures, |
1942 settings_.texture_id_allocation_chunk_size, | 1944 settings_.texture_id_allocation_chunk_size, |
1943 settings_.use_distance_field_text); | 1945 settings_.use_distance_field_text); |
1944 | 1946 |
1945 if (output_surface->capabilities().deferred_gl_initialization) | 1947 if (output_surface->capabilities().deferred_gl_initialization) |
1946 EnforceZeroBudget(true); | 1948 EnforceZeroBudget(true); |
1947 | 1949 |
1948 bool skip_gl_renderer = false; | 1950 bool force_software_renderer = |
1951 output_surface->capabilities().deferred_gl_initialization; | |
1949 CreateAndSetRenderer( | 1952 CreateAndSetRenderer( |
1950 output_surface.get(), resource_provider.get(), skip_gl_renderer); | 1953 output_surface.get(), resource_provider.get(), force_software_renderer); |
1951 | 1954 |
1952 transfer_buffer_memory_limit_ = | 1955 transfer_buffer_memory_limit_ = |
1953 GetMaxTransferBufferUsageBytes(output_surface->context_provider().get()); | 1956 GetMaxTransferBufferUsageBytes(output_surface->context_provider().get()); |
1954 | 1957 |
1955 if (settings_.impl_side_painting) { | 1958 if (settings_.impl_side_painting) { |
1956 // Note: we use zero-copy rasterizer by default when the renderer is using | 1959 // Note: we use zero-copy rasterizer by default when the renderer is using |
1957 // shared memory resources. | 1960 // shared memory resources. |
1958 bool use_zero_copy = | 1961 bool use_zero_copy = |
1959 (settings_.use_zero_copy || | 1962 (settings_.use_zero_copy || |
1960 GetRendererCapabilities().using_shared_memory_resources) && | 1963 GetRendererCapabilities().using_shared_memory_resources) && |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2008 void LayerTreeHostImpl::DeferredInitialize() { | 2011 void LayerTreeHostImpl::DeferredInitialize() { |
2009 DCHECK(output_surface_->capabilities().deferred_gl_initialization); | 2012 DCHECK(output_surface_->capabilities().deferred_gl_initialization); |
2010 DCHECK(settings_.impl_side_painting); | 2013 DCHECK(settings_.impl_side_painting); |
2011 DCHECK(output_surface_->context_provider()); | 2014 DCHECK(output_surface_->context_provider()); |
2012 | 2015 |
2013 ReleaseTreeResources(); | 2016 ReleaseTreeResources(); |
2014 renderer_.reset(); | 2017 renderer_.reset(); |
2015 | 2018 |
2016 resource_provider_->InitializeGL(); | 2019 resource_provider_->InitializeGL(); |
2017 | 2020 |
2018 bool skip_gl_renderer = false; | 2021 bool force_software_renderer = false; |
2019 CreateAndSetRenderer( | 2022 CreateAndSetRenderer( |
2020 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); | 2023 output_surface_.get(), resource_provider_.get(), force_software_renderer); |
2021 | 2024 |
2022 EnforceZeroBudget(false); | 2025 EnforceZeroBudget(false); |
2023 client_->SetNeedsCommitOnImplThread(); | 2026 client_->SetNeedsCommitOnImplThread(); |
2024 } | 2027 } |
2025 | 2028 |
2026 void LayerTreeHostImpl::ReleaseGL() { | 2029 void LayerTreeHostImpl::ReleaseGL() { |
2027 DCHECK(output_surface_->capabilities().deferred_gl_initialization); | 2030 DCHECK(output_surface_->capabilities().deferred_gl_initialization); |
2028 DCHECK(settings_.impl_side_painting); | 2031 DCHECK(settings_.impl_side_painting); |
2029 DCHECK(output_surface_->context_provider()); | 2032 DCHECK(output_surface_->context_provider()); |
2030 | 2033 |
2031 ReleaseTreeResources(); | 2034 ReleaseTreeResources(); |
2032 renderer_.reset(); | 2035 renderer_.reset(); |
2033 tile_manager_.reset(); | 2036 tile_manager_.reset(); |
2034 resource_pool_.reset(); | 2037 resource_pool_.reset(); |
2035 raster_worker_pool_.reset(); | 2038 raster_worker_pool_.reset(); |
2036 direct_raster_worker_pool_.reset(); | 2039 direct_raster_worker_pool_.reset(); |
2037 staging_resource_pool_.reset(); | 2040 staging_resource_pool_.reset(); |
2038 resource_provider_->InitializeSoftware(); | 2041 resource_provider_->InitializeSoftware(); |
2039 | 2042 |
2040 bool skip_gl_renderer = true; | 2043 bool force_software_renderer = true; |
2041 CreateAndSetRenderer( | 2044 CreateAndSetRenderer( |
2042 output_surface_.get(), resource_provider_.get(), skip_gl_renderer); | 2045 output_surface_.get(), resource_provider_.get(), force_software_renderer); |
2043 | 2046 |
2044 EnforceZeroBudget(true); | 2047 EnforceZeroBudget(true); |
2045 DCHECK(GetRendererCapabilities().using_map_image); | 2048 DCHECK(GetRendererCapabilities().using_map_image); |
2046 CreateAndSetTileManager(resource_provider_.get(), | 2049 CreateAndSetTileManager(resource_provider_.get(), |
2047 NULL, | 2050 NULL, |
2048 true, | 2051 true, |
2049 false, | 2052 false, |
2050 GetRendererCapabilities().allow_rasterize_on_demand); | 2053 GetRendererCapabilities().allow_rasterize_on_demand); |
2051 DCHECK(tile_manager_); | 2054 DCHECK(tile_manager_); |
2052 | 2055 |
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3123 swap_promise_monitor_.erase(monitor); | 3126 swap_promise_monitor_.erase(monitor); |
3124 } | 3127 } |
3125 | 3128 |
3126 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3129 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3127 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3130 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3128 for (; it != swap_promise_monitor_.end(); it++) | 3131 for (; it != swap_promise_monitor_.end(); it++) |
3129 (*it)->OnSetNeedsRedrawOnImpl(); | 3132 (*it)->OnSetNeedsRedrawOnImpl(); |
3130 } | 3133 } |
3131 | 3134 |
3132 } // namespace cc | 3135 } // namespace cc |
OLD | NEW |