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

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

Issue 296453009: cc: Get rid of rasterizer delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: switch tile manager 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 return GL_TEXTURE_2D; 108 return GL_TEXTURE_2D;
109 109
110 if (context_provider->ContextCapabilities().gpu.egl_image_external) 110 if (context_provider->ContextCapabilities().gpu.egl_image_external)
111 return GL_TEXTURE_EXTERNAL_OES; 111 return GL_TEXTURE_EXTERNAL_OES;
112 if (context_provider->ContextCapabilities().gpu.texture_rectangle) 112 if (context_provider->ContextCapabilities().gpu.texture_rectangle)
113 return GL_TEXTURE_RECTANGLE_ARB; 113 return GL_TEXTURE_RECTANGLE_ARB;
114 114
115 return GL_TEXTURE_2D; 115 return GL_TEXTURE_2D;
116 } 116 }
117 117
118 bool UseZeroCopyTextureUpload(cc::LayerTreeHostImpl* host_impl) {
reveman 2014/05/21 04:17:06 Either make these two functions member functions i
alokp 2014/05/21 05:24:43 Done.
119 // Note: we use zero-copy by default when the renderer is using
120 // shared memory resources.
121 return (host_impl->settings().use_zero_copy ||
122 host_impl->GetRendererCapabilities().using_shared_memory_resources) &&
123 host_impl->GetRendererCapabilities().using_map_image;
124 }
125
126 bool UseOneCopyTextureUpload(cc::LayerTreeHostImpl* host_impl) {
127 // Sync query support is required by one-copy rasterizer.
128 return host_impl->settings().use_one_copy &&
129 host_impl->GetRendererCapabilities().using_map_image &&
130 host_impl->resource_provider()->use_sync_query();
131 }
132
118 } // namespace 133 } // namespace
119 134
120 namespace cc { 135 namespace cc {
121 136
122 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { 137 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient {
123 public: 138 public:
124 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create( 139 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create(
125 LayerTreeHostImpl* layer_tree_host_impl, 140 LayerTreeHostImpl* layer_tree_host_impl,
126 scoped_refptr<DelayBasedTimeSource> time_source) { 141 scoped_refptr<DelayBasedTimeSource> time_source) {
127 return make_scoped_ptr( 142 return make_scoped_ptr(
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 // made a contract with our animation controllers that the registrar 310 // made a contract with our animation controllers that the registrar
296 // will outlive them, and we must make good. 311 // will outlive them, and we must make good.
297 if (recycle_tree_) 312 if (recycle_tree_)
298 recycle_tree_->Shutdown(); 313 recycle_tree_->Shutdown();
299 if (pending_tree_) 314 if (pending_tree_)
300 pending_tree_->Shutdown(); 315 pending_tree_->Shutdown();
301 active_tree_->Shutdown(); 316 active_tree_->Shutdown();
302 recycle_tree_.reset(); 317 recycle_tree_.reset();
303 pending_tree_.reset(); 318 pending_tree_.reset();
304 active_tree_.reset(); 319 active_tree_.reset();
305 tile_manager_.reset(); 320 DestroyTileManager();
306 resource_pool_.reset();
307 raster_worker_pool_.reset();
308 direct_raster_worker_pool_.reset();
309 staging_resource_pool_.reset();
310 } 321 }
311 322
312 void LayerTreeHostImpl::BeginMainFrameAborted(bool did_handle) { 323 void LayerTreeHostImpl::BeginMainFrameAborted(bool did_handle) {
313 // If the begin frame data was handled, then scroll and scale set was applied 324 // If the begin frame data was handled, then scroll and scale set was applied
314 // by the main thread, so the active tree needs to be updated as if these sent 325 // by the main thread, so the active tree needs to be updated as if these sent
315 // values were applied and committed. 326 // values were applied and committed.
316 if (did_handle) { 327 if (did_handle) {
317 active_tree_->ApplySentScrollAndScaleDeltasFromAbortedCommit(); 328 active_tree_->ApplySentScrollAndScaleDeltasFromAbortedCommit();
318 active_tree_->ResetContentsTexturesPurged(); 329 active_tree_->ResetContentsTexturesPurged();
319 } 330 }
(...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 return renderer_ && renderer_->IsContextLost(); 1532 return renderer_ && renderer_->IsContextLost();
1522 } 1533 }
1523 1534
1524 void LayerTreeHostImpl::SetUseGpuRasterization(bool use_gpu) { 1535 void LayerTreeHostImpl::SetUseGpuRasterization(bool use_gpu) {
1525 if (use_gpu == use_gpu_rasterization_) 1536 if (use_gpu == use_gpu_rasterization_)
1526 return; 1537 return;
1527 1538
1528 use_gpu_rasterization_ = use_gpu; 1539 use_gpu_rasterization_ = use_gpu;
1529 ReleaseTreeResources(); 1540 ReleaseTreeResources();
1530 1541
1542 // Replace existing tile manager with another one that uses appropriate
1543 // rasterizer.
1544 if (tile_manager_) {
1545 DestroyTileManager();
1546 CreateAndSetTileManager(output_surface_->context_provider().get());
1547 }
1548
1531 // We have released tilings for both active and pending tree. 1549 // We have released tilings for both active and pending tree.
1532 // We would not have any content to draw until the pending tree is activated. 1550 // We would not have any content to draw until the pending tree is activated.
1533 // Prevent the active tree from drawing until activation. 1551 // Prevent the active tree from drawing until activation.
1534 active_tree_->SetRequiresHighResToDraw(); 1552 active_tree_->SetRequiresHighResToDraw();
1535 } 1553 }
1536 1554
1537 const RendererCapabilitiesImpl& 1555 const RendererCapabilitiesImpl&
1538 LayerTreeHostImpl::GetRendererCapabilities() const { 1556 LayerTreeHostImpl::GetRendererCapabilities() const {
1539 return renderer_->Capabilities(); 1557 return renderer_->Capabilities();
1540 } 1558 }
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 void LayerTreeHostImpl::ReleaseTreeResources() { 1832 void LayerTreeHostImpl::ReleaseTreeResources() {
1815 active_tree_->ReleaseResources(); 1833 active_tree_->ReleaseResources();
1816 if (pending_tree_) 1834 if (pending_tree_)
1817 pending_tree_->ReleaseResources(); 1835 pending_tree_->ReleaseResources();
1818 if (recycle_tree_) 1836 if (recycle_tree_)
1819 recycle_tree_->ReleaseResources(); 1837 recycle_tree_->ReleaseResources();
1820 1838
1821 EvictAllUIResources(); 1839 EvictAllUIResources();
1822 } 1840 }
1823 1841
1824 void LayerTreeHostImpl::CreateAndSetRenderer( 1842 void LayerTreeHostImpl::CreateAndSetRenderer(bool skip_gl_renderer) {
1825 OutputSurface* output_surface,
1826 ResourceProvider* resource_provider,
1827 bool skip_gl_renderer) {
1828 DCHECK(!renderer_); 1843 DCHECK(!renderer_);
1829 if (output_surface->capabilities().delegated_rendering) { 1844 DCHECK(output_surface_);
1845 DCHECK(resource_provider_);
1846
1847 if (output_surface_->capabilities().delegated_rendering) {
1830 renderer_ = DelegatingRenderer::Create( 1848 renderer_ = DelegatingRenderer::Create(
1831 this, &settings_, output_surface, resource_provider); 1849 this, &settings_, output_surface_.get(), resource_provider_.get());
1832 } else if (output_surface->context_provider() && !skip_gl_renderer) { 1850 } else if (output_surface_->context_provider() && !skip_gl_renderer) {
1833 renderer_ = GLRenderer::Create(this, 1851 renderer_ = GLRenderer::Create(this,
1834 &settings_, 1852 &settings_,
1835 output_surface, 1853 output_surface_.get(),
1836 resource_provider, 1854 resource_provider_.get(),
1837 texture_mailbox_deleter_.get(), 1855 texture_mailbox_deleter_.get(),
1838 settings_.highp_threshold_min); 1856 settings_.highp_threshold_min);
1839 } else if (output_surface->software_device()) { 1857 } else if (output_surface_->software_device()) {
1840 renderer_ = SoftwareRenderer::Create( 1858 renderer_ = SoftwareRenderer::Create(
1841 this, &settings_, output_surface, resource_provider); 1859 this, &settings_, output_surface_.get(), resource_provider_.get());
1842 } 1860 }
1843 DCHECK(renderer_); 1861 DCHECK(renderer_);
1844 1862
1845 renderer_->SetVisible(visible_); 1863 renderer_->SetVisible(visible_);
1846 SetFullRootLayerDamage(); 1864 SetFullRootLayerDamage();
1847 1865
1848 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be 1866 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be
1849 // initialized to get max texture size. Also, after releasing resources, 1867 // initialized to get max texture size. Also, after releasing resources,
1850 // trees need another update to generate new ones. 1868 // trees need another update to generate new ones.
1851 active_tree_->set_needs_update_draw_properties(); 1869 active_tree_->set_needs_update_draw_properties();
1852 if (pending_tree_) 1870 if (pending_tree_)
1853 pending_tree_->set_needs_update_draw_properties(); 1871 pending_tree_->set_needs_update_draw_properties();
1854 client_->UpdateRendererCapabilitiesOnImplThread(); 1872 client_->UpdateRendererCapabilitiesOnImplThread();
1855 } 1873 }
1856 1874
1857 void LayerTreeHostImpl::CreateAndSetTileManager( 1875 void LayerTreeHostImpl::CreateAndSetTileManager(
1858 ResourceProvider* resource_provider, 1876 ContextProvider* context_provider) {
1859 ContextProvider* context_provider, 1877 DCHECK(!tile_manager_);
1860 bool use_zero_copy,
1861 bool use_one_copy,
1862 bool allow_rasterize_on_demand) {
1863 DCHECK(settings_.impl_side_painting); 1878 DCHECK(settings_.impl_side_painting);
1864 DCHECK(resource_provider); 1879 DCHECK(resource_provider_);
1865 DCHECK(proxy_->ImplThreadTaskRunner()); 1880 DCHECK(proxy_->ImplThreadTaskRunner());
1866 1881
1867 transfer_buffer_memory_limit_ = 1882 transfer_buffer_memory_limit_ =
1868 GetMaxTransferBufferUsageBytes(context_provider); 1883 GetMaxTransferBufferUsageBytes(context_provider);
1869 1884
1870 if (use_zero_copy) { 1885 if (use_gpu_rasterization_ && context_provider) {
1871 resource_pool_ = 1886 resource_pool_ =
1872 ResourcePool::Create(resource_provider, 1887 ResourcePool::Create(resource_provider_.get(),
1888 GL_TEXTURE_2D,
1889 resource_provider_->best_texture_format());
1890
1891 raster_worker_pool_ =
1892 DirectRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
1893 resource_provider_.get(),
1894 context_provider);
1895
1896 } else if (UseZeroCopyTextureUpload(this)) {
1897 resource_pool_ =
1898 ResourcePool::Create(resource_provider_.get(),
1873 GetMapImageTextureTarget(context_provider), 1899 GetMapImageTextureTarget(context_provider),
1874 resource_provider->best_texture_format()); 1900 resource_provider_->best_texture_format());
1901
1875 raster_worker_pool_ = 1902 raster_worker_pool_ =
1876 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 1903 ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
1877 RasterWorkerPool::GetTaskGraphRunner(), 1904 RasterWorkerPool::GetTaskGraphRunner(),
1878 resource_provider); 1905 resource_provider_.get());
1879 } else if (use_one_copy) { 1906 } else if (UseOneCopyTextureUpload(this)) {
1880 // We need to create a staging resource pool when using copy rasterizer. 1907 // We need to create a staging resource pool when using copy rasterizer.
1881 staging_resource_pool_ = 1908 staging_resource_pool_ =
1882 ResourcePool::Create(resource_provider, 1909 ResourcePool::Create(resource_provider_.get(),
1883 GetMapImageTextureTarget(context_provider), 1910 GetMapImageTextureTarget(context_provider),
1884 resource_provider->best_texture_format()); 1911 resource_provider_->best_texture_format());
1885 resource_pool_ = 1912 resource_pool_ =
1886 ResourcePool::Create(resource_provider, 1913 ResourcePool::Create(resource_provider_.get(),
1887 GL_TEXTURE_2D, 1914 GL_TEXTURE_2D,
1888 resource_provider->best_texture_format()); 1915 resource_provider_->best_texture_format());
1889 1916
1890 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create( 1917 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create(
1891 proxy_->ImplThreadTaskRunner(), 1918 proxy_->ImplThreadTaskRunner(),
1892 RasterWorkerPool::GetTaskGraphRunner(), 1919 RasterWorkerPool::GetTaskGraphRunner(),
1893 resource_provider, 1920 resource_provider_.get(),
1894 staging_resource_pool_.get()); 1921 staging_resource_pool_.get());
1895 } else { 1922 } else {
1923 resource_pool_ = ResourcePool::Create(
1924 resource_provider_.get(),
1925 GL_TEXTURE_2D,
1926 resource_provider_->memory_efficient_texture_format());
1927
1896 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 1928 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
1897 proxy_->ImplThreadTaskRunner(), 1929 proxy_->ImplThreadTaskRunner(),
1898 RasterWorkerPool::GetTaskGraphRunner(), 1930 RasterWorkerPool::GetTaskGraphRunner(),
1899 resource_provider, 1931 resource_provider_.get(),
1900 transfer_buffer_memory_limit_); 1932 transfer_buffer_memory_limit_);
1901 resource_pool_ = ResourcePool::Create(
1902 resource_provider,
1903 GL_TEXTURE_2D,
1904 resource_provider->memory_efficient_texture_format());
1905 } 1933 }
1906 direct_raster_worker_pool_ = DirectRasterWorkerPool::Create( 1934
1907 proxy_->ImplThreadTaskRunner(), resource_provider, context_provider);
1908 tile_manager_ = 1935 tile_manager_ =
1909 TileManager::Create(this, 1936 TileManager::Create(this,
1910 resource_pool_.get(), 1937 resource_pool_.get(),
1911 raster_worker_pool_->AsRasterizer(), 1938 raster_worker_pool_->AsRasterizer(),
1912 direct_raster_worker_pool_->AsRasterizer(), 1939 GetRendererCapabilities().allow_rasterize_on_demand,
1913 allow_rasterize_on_demand,
1914 rendering_stats_instrumentation_); 1940 rendering_stats_instrumentation_);
1941 DCHECK(tile_manager_);
reveman 2014/05/21 04:17:06 I don't think it's necessary to check that ::Creat
alokp 2014/05/21 05:24:43 Done.
1915 1942
1916 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 1943 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
1917 need_to_update_visible_tiles_before_draw_ = false; 1944 need_to_update_visible_tiles_before_draw_ = false;
1918 } 1945 }
1919 1946
1947 void LayerTreeHostImpl::DestroyTileManager() {
1948 tile_manager_.reset();
1949 resource_pool_.reset();
1950 staging_resource_pool_.reset();
1951 raster_worker_pool_.reset();
1952 }
1953
1920 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { 1954 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) {
1921 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); 1955 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget);
1922 } 1956 }
1923 1957
1924 bool LayerTreeHostImpl::InitializeRenderer( 1958 bool LayerTreeHostImpl::InitializeRenderer(
1925 scoped_ptr<OutputSurface> output_surface) { 1959 scoped_ptr<OutputSurface> output_surface) {
1926 #if DCHECK_IS_ON 1960 #if DCHECK_IS_ON
1927 DCHECK(!renderer_ || did_lose_called_); 1961 DCHECK(!renderer_ || did_lose_called_);
1928 #endif 1962 #endif
1929 1963
1930 // Since we will create a new resource provider, we cannot continue to use 1964 // Since we will create a new resource provider, we cannot continue to use
1931 // the old resources (i.e. render_surfaces and texture IDs). Clear them 1965 // the old resources (i.e. render_surfaces and texture IDs). Clear them
1932 // before we destroy the old resource provider. 1966 // before we destroy the old resource provider.
1933 ReleaseTreeResources(); 1967 ReleaseTreeResources();
1934 1968
1935 // Note: order is important here. 1969 // Note: order is important here.
1936 renderer_.reset(); 1970 renderer_.reset();
1937 tile_manager_.reset(); 1971 DestroyTileManager();
1938 resource_pool_.reset();
1939 staging_resource_pool_.reset();
1940 raster_worker_pool_.reset();
1941 direct_raster_worker_pool_.reset();
1942 resource_provider_.reset(); 1972 resource_provider_.reset();
1943 output_surface_.reset(); 1973 output_surface_.reset();
1944 1974
1945 if (!output_surface->BindToClient(this)) 1975 if (!output_surface->BindToClient(this))
1946 return false; 1976 return false;
1947 1977
1948 scoped_ptr<ResourceProvider> resource_provider = 1978 output_surface_ = output_surface.Pass();
1949 ResourceProvider::Create(output_surface.get(), 1979 resource_provider_ =
1980 ResourceProvider::Create(output_surface_.get(),
1950 shared_bitmap_manager_, 1981 shared_bitmap_manager_,
1951 settings_.highp_threshold_min, 1982 settings_.highp_threshold_min,
1952 settings_.use_rgba_4444_textures, 1983 settings_.use_rgba_4444_textures,
1953 settings_.texture_id_allocation_chunk_size, 1984 settings_.texture_id_allocation_chunk_size,
1954 settings_.use_distance_field_text); 1985 settings_.use_distance_field_text);
1955 1986
1956 if (output_surface->capabilities().deferred_gl_initialization) 1987 if (output_surface_->capabilities().deferred_gl_initialization)
1957 EnforceZeroBudget(true); 1988 EnforceZeroBudget(true);
1958 1989
1959 bool skip_gl_renderer = false; 1990 bool skip_gl_renderer = false;
1960 CreateAndSetRenderer( 1991 CreateAndSetRenderer(skip_gl_renderer);
1961 output_surface.get(), resource_provider.get(), skip_gl_renderer);
1962 1992
1993 ContextProvider* context_provider = output_surface_->context_provider().get();
1963 transfer_buffer_memory_limit_ = 1994 transfer_buffer_memory_limit_ =
1964 GetMaxTransferBufferUsageBytes(output_surface->context_provider().get()); 1995 GetMaxTransferBufferUsageBytes(context_provider);
1965 1996
1966 if (settings_.impl_side_painting) { 1997 if (settings_.impl_side_painting)
1967 // Note: we use zero-copy rasterizer by default when the renderer is using 1998 CreateAndSetTileManager(context_provider);
1968 // shared memory resources.
1969 bool use_zero_copy =
1970 (settings_.use_zero_copy ||
1971 GetRendererCapabilities().using_shared_memory_resources) &&
1972 GetRendererCapabilities().using_map_image;
1973
1974 // Sync query support is required by one-copy rasterizer.
1975 bool use_one_copy = settings_.use_one_copy &&
1976 GetRendererCapabilities().using_map_image &&
1977 resource_provider->use_sync_query();
1978
1979 CreateAndSetTileManager(
1980 resource_provider.get(),
1981 output_surface->context_provider().get(),
1982 use_zero_copy,
1983 use_one_copy,
1984 GetRendererCapabilities().allow_rasterize_on_demand);
1985 }
1986 1999
1987 // Initialize vsync parameters to sane values. 2000 // Initialize vsync parameters to sane values.
1988 const base::TimeDelta display_refresh_interval = 2001 const base::TimeDelta display_refresh_interval =
1989 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / 2002 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond /
1990 settings_.refresh_rate); 2003 settings_.refresh_rate);
1991 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); 2004 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval);
1992 2005
1993 // TODO(brianderson): Don't use a hard-coded parent draw time. 2006 // TODO(brianderson): Don't use a hard-coded parent draw time.
1994 base::TimeDelta parent_draw_time = 2007 base::TimeDelta parent_draw_time =
1995 output_surface->capabilities().adjust_deadline_for_parent 2008 output_surface_->capabilities().adjust_deadline_for_parent
1996 ? BeginFrameArgs::DefaultDeadlineAdjustment() 2009 ? BeginFrameArgs::DefaultDeadlineAdjustment()
1997 : base::TimeDelta(); 2010 : base::TimeDelta();
1998 client_->SetEstimatedParentDrawTime(parent_draw_time); 2011 client_->SetEstimatedParentDrawTime(parent_draw_time);
1999 2012
2000 int max_frames_pending = 2013 int max_frames_pending = output_surface_->capabilities().max_frames_pending;
2001 output_surface->capabilities().max_frames_pending;
2002 if (max_frames_pending <= 0) 2014 if (max_frames_pending <= 0)
2003 max_frames_pending = OutputSurface::DEFAULT_MAX_FRAMES_PENDING; 2015 max_frames_pending = OutputSurface::DEFAULT_MAX_FRAMES_PENDING;
2004 client_->SetMaxSwapsPendingOnImplThread(max_frames_pending); 2016 client_->SetMaxSwapsPendingOnImplThread(max_frames_pending);
2005
2006 resource_provider_ = resource_provider.Pass();
2007 output_surface_ = output_surface.Pass();
2008
2009 client_->OnCanDrawStateChanged(CanDraw()); 2017 client_->OnCanDrawStateChanged(CanDraw());
2010 2018
2011 return true; 2019 return true;
2012 } 2020 }
2013 2021
2014 void LayerTreeHostImpl::CommitVSyncParameters(base::TimeTicks timebase, 2022 void LayerTreeHostImpl::CommitVSyncParameters(base::TimeTicks timebase,
2015 base::TimeDelta interval) { 2023 base::TimeDelta interval) {
2016 client_->CommitVSyncParameters(timebase, interval); 2024 client_->CommitVSyncParameters(timebase, interval);
2017 } 2025 }
2018 2026
2019 void LayerTreeHostImpl::DeferredInitialize() { 2027 void LayerTreeHostImpl::DeferredInitialize() {
2020 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 2028 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
2021 DCHECK(settings_.impl_side_painting); 2029 DCHECK(settings_.impl_side_painting);
2022 DCHECK(output_surface_->context_provider()); 2030 DCHECK(output_surface_->context_provider());
2023 2031
2024 ReleaseTreeResources(); 2032 ReleaseTreeResources();
2025 renderer_.reset(); 2033 renderer_.reset();
2026 2034
2027 resource_provider_->InitializeGL(); 2035 resource_provider_->InitializeGL();
2028 2036
2029 bool skip_gl_renderer = false; 2037 bool skip_gl_renderer = false;
2030 CreateAndSetRenderer( 2038 CreateAndSetRenderer(skip_gl_renderer);
2031 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
2032 2039
2033 EnforceZeroBudget(false); 2040 EnforceZeroBudget(false);
2034 client_->SetNeedsCommitOnImplThread(); 2041 client_->SetNeedsCommitOnImplThread();
2035 } 2042 }
2036 2043
2037 void LayerTreeHostImpl::ReleaseGL() { 2044 void LayerTreeHostImpl::ReleaseGL() {
2038 DCHECK(output_surface_->capabilities().deferred_gl_initialization); 2045 DCHECK(output_surface_->capabilities().deferred_gl_initialization);
2039 DCHECK(settings_.impl_side_painting); 2046 DCHECK(settings_.impl_side_painting);
2040 DCHECK(output_surface_->context_provider()); 2047 DCHECK(output_surface_->context_provider());
2041 2048
2042 ReleaseTreeResources(); 2049 ReleaseTreeResources();
2043 renderer_.reset(); 2050 renderer_.reset();
2044 tile_manager_.reset(); 2051 DestroyTileManager();
2045 resource_pool_.reset();
2046 raster_worker_pool_.reset();
2047 direct_raster_worker_pool_.reset();
2048 staging_resource_pool_.reset();
2049 resource_provider_->InitializeSoftware(); 2052 resource_provider_->InitializeSoftware();
2050 2053
2051 bool skip_gl_renderer = true; 2054 bool skip_gl_renderer = true;
2052 CreateAndSetRenderer( 2055 CreateAndSetRenderer(skip_gl_renderer);
2053 output_surface_.get(), resource_provider_.get(), skip_gl_renderer);
2054 2056
2055 EnforceZeroBudget(true); 2057 EnforceZeroBudget(true);
2056 DCHECK(GetRendererCapabilities().using_map_image); 2058 DCHECK(UseZeroCopyTextureUpload(this));
reveman 2014/05/21 04:17:06 I don't think this DCHECK makes sense here. You're
alokp 2014/05/21 05:24:43 Done.
2057 CreateAndSetTileManager(resource_provider_.get(), 2059 CreateAndSetTileManager(NULL);
2058 NULL,
2059 true,
2060 false,
2061 GetRendererCapabilities().allow_rasterize_on_demand);
2062 DCHECK(tile_manager_);
2063 2060
2064 client_->SetNeedsCommitOnImplThread(); 2061 client_->SetNeedsCommitOnImplThread();
2065 } 2062 }
2066 2063
2067 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { 2064 void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) {
2068 if (device_viewport_size == device_viewport_size_) 2065 if (device_viewport_size == device_viewport_size_)
2069 return; 2066 return;
2070 2067
2071 if (pending_tree_) 2068 if (pending_tree_)
2072 active_tree_->SetViewportSizeInvalid(); 2069 active_tree_->SetViewportSizeInvalid();
(...skipping 1061 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698