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 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1507 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture"); | 1507 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture"); |
1508 active_tree_->hud_layer()->UpdateHudTexture(draw_mode, | 1508 active_tree_->hud_layer()->UpdateHudTexture(draw_mode, |
1509 resource_provider_.get()); | 1509 resource_provider_.get()); |
1510 } | 1510 } |
1511 | 1511 |
1512 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) { | 1512 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) { |
1513 bool disable_picture_quad_image_filtering = | 1513 bool disable_picture_quad_image_filtering = |
1514 IsActivelyScrolling() || needs_animate_layers(); | 1514 IsActivelyScrolling() || needs_animate_layers(); |
1515 | 1515 |
1516 scoped_ptr<SoftwareRenderer> temp_software_renderer = | 1516 scoped_ptr<SoftwareRenderer> temp_software_renderer = |
1517 SoftwareRenderer::Create(this, &settings_, output_surface_.get(), NULL); | 1517 SoftwareRenderer::Create(this, &settings_.renderer_settings, |
| 1518 output_surface_.get(), NULL); |
1518 temp_software_renderer->DrawFrame(&frame->render_passes, | 1519 temp_software_renderer->DrawFrame(&frame->render_passes, |
1519 device_scale_factor_, | 1520 device_scale_factor_, |
1520 DeviceViewport(), | 1521 DeviceViewport(), |
1521 DeviceClip(), | 1522 DeviceClip(), |
1522 disable_picture_quad_image_filtering); | 1523 disable_picture_quad_image_filtering); |
1523 } else { | 1524 } else { |
1524 renderer_->DrawFrame(&frame->render_passes, | 1525 renderer_->DrawFrame(&frame->render_passes, |
1525 device_scale_factor_, | 1526 device_scale_factor_, |
1526 DeviceViewport(), | 1527 DeviceViewport(), |
1527 DeviceClip(), | 1528 DeviceClip(), |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1889 | 1890 |
1890 EvictAllUIResources(); | 1891 EvictAllUIResources(); |
1891 } | 1892 } |
1892 | 1893 |
1893 void LayerTreeHostImpl::CreateAndSetRenderer() { | 1894 void LayerTreeHostImpl::CreateAndSetRenderer() { |
1894 DCHECK(!renderer_); | 1895 DCHECK(!renderer_); |
1895 DCHECK(output_surface_); | 1896 DCHECK(output_surface_); |
1896 DCHECK(resource_provider_); | 1897 DCHECK(resource_provider_); |
1897 | 1898 |
1898 if (output_surface_->capabilities().delegated_rendering) { | 1899 if (output_surface_->capabilities().delegated_rendering) { |
1899 renderer_ = DelegatingRenderer::Create( | 1900 renderer_ = DelegatingRenderer::Create(this, &settings_.renderer_settings, |
1900 this, &settings_, output_surface_.get(), resource_provider_.get()); | 1901 output_surface_.get(), |
| 1902 resource_provider_.get()); |
1901 } else if (output_surface_->context_provider()) { | 1903 } else if (output_surface_->context_provider()) { |
1902 renderer_ = GLRenderer::Create(this, | 1904 renderer_ = GLRenderer::Create( |
1903 &settings_, | 1905 this, &settings_.renderer_settings, output_surface_.get(), |
1904 output_surface_.get(), | 1906 resource_provider_.get(), texture_mailbox_deleter_.get(), |
1905 resource_provider_.get(), | 1907 settings_.renderer_settings.highp_threshold_min); |
1906 texture_mailbox_deleter_.get(), | |
1907 settings_.highp_threshold_min); | |
1908 } else if (output_surface_->software_device()) { | 1908 } else if (output_surface_->software_device()) { |
1909 renderer_ = SoftwareRenderer::Create( | 1909 renderer_ = SoftwareRenderer::Create(this, &settings_.renderer_settings, |
1910 this, &settings_, output_surface_.get(), resource_provider_.get()); | 1910 output_surface_.get(), |
| 1911 resource_provider_.get()); |
1911 } | 1912 } |
1912 DCHECK(renderer_); | 1913 DCHECK(renderer_); |
1913 | 1914 |
1914 renderer_->SetVisible(visible_); | 1915 renderer_->SetVisible(visible_); |
1915 SetFullRootLayerDamage(); | 1916 SetFullRootLayerDamage(); |
1916 | 1917 |
1917 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be | 1918 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be |
1918 // initialized to get max texture size. Also, after releasing resources, | 1919 // initialized to get max texture size. Also, after releasing resources, |
1919 // trees need another update to generate new ones. | 1920 // trees need another update to generate new ones. |
1920 active_tree_->set_needs_update_draw_properties(); | 1921 active_tree_->set_needs_update_draw_properties(); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2019 context_provider, | 2020 context_provider, |
2020 resource_provider_.get(), | 2021 resource_provider_.get(), |
2021 staging_resource_pool_.get()); | 2022 staging_resource_pool_.get()); |
2022 } else { | 2023 } else { |
2023 *resource_pool = ResourcePool::Create( | 2024 *resource_pool = ResourcePool::Create( |
2024 resource_provider_.get(), | 2025 resource_provider_.get(), |
2025 GL_TEXTURE_2D, | 2026 GL_TEXTURE_2D, |
2026 resource_provider_->memory_efficient_texture_format()); | 2027 resource_provider_->memory_efficient_texture_format()); |
2027 | 2028 |
2028 *raster_worker_pool = PixelBufferRasterWorkerPool::Create( | 2029 *raster_worker_pool = PixelBufferRasterWorkerPool::Create( |
2029 task_runner, | 2030 task_runner, RasterWorkerPool::GetTaskGraphRunner(), context_provider, |
2030 RasterWorkerPool::GetTaskGraphRunner(), | |
2031 context_provider, | |
2032 resource_provider_.get(), | 2031 resource_provider_.get(), |
2033 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), | 2032 GetMaxTransferBufferUsageBytes( |
2034 settings_.refresh_rate)); | 2033 context_provider->ContextCapabilities(), |
| 2034 settings_.renderer_settings.refresh_rate)); |
2035 } | 2035 } |
2036 } | 2036 } |
2037 | 2037 |
2038 void LayerTreeHostImpl::DestroyTileManager() { | 2038 void LayerTreeHostImpl::DestroyTileManager() { |
2039 tile_manager_ = nullptr; | 2039 tile_manager_ = nullptr; |
2040 resource_pool_ = nullptr; | 2040 resource_pool_ = nullptr; |
2041 staging_resource_pool_ = nullptr; | 2041 staging_resource_pool_ = nullptr; |
2042 raster_worker_pool_ = nullptr; | 2042 raster_worker_pool_ = nullptr; |
2043 single_thread_synchronous_task_graph_runner_ = nullptr; | 2043 single_thread_synchronous_task_graph_runner_ = nullptr; |
2044 } | 2044 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2079 // Note: order is important here. | 2079 // Note: order is important here. |
2080 renderer_ = nullptr; | 2080 renderer_ = nullptr; |
2081 DestroyTileManager(); | 2081 DestroyTileManager(); |
2082 resource_provider_ = nullptr; | 2082 resource_provider_ = nullptr; |
2083 output_surface_ = nullptr; | 2083 output_surface_ = nullptr; |
2084 | 2084 |
2085 if (!output_surface->BindToClient(this)) | 2085 if (!output_surface->BindToClient(this)) |
2086 return false; | 2086 return false; |
2087 | 2087 |
2088 output_surface_ = output_surface.Pass(); | 2088 output_surface_ = output_surface.Pass(); |
2089 resource_provider_ = | 2089 resource_provider_ = ResourceProvider::Create( |
2090 ResourceProvider::Create(output_surface_.get(), | 2090 output_surface_.get(), shared_bitmap_manager_, gpu_memory_buffer_manager_, |
2091 shared_bitmap_manager_, | 2091 proxy_->blocking_main_thread_task_runner(), |
2092 gpu_memory_buffer_manager_, | 2092 settings_.renderer_settings.highp_threshold_min, |
2093 proxy_->blocking_main_thread_task_runner(), | 2093 settings_.renderer_settings.use_rgba_4444_textures, |
2094 settings_.highp_threshold_min, | 2094 settings_.renderer_settings.texture_id_allocation_chunk_size); |
2095 settings_.use_rgba_4444_textures, | |
2096 settings_.texture_id_allocation_chunk_size); | |
2097 | 2095 |
2098 if (output_surface_->capabilities().deferred_gl_initialization) | 2096 if (output_surface_->capabilities().deferred_gl_initialization) |
2099 EnforceZeroBudget(true); | 2097 EnforceZeroBudget(true); |
2100 | 2098 |
2101 CreateAndSetRenderer(); | 2099 CreateAndSetRenderer(); |
2102 | 2100 |
2103 if (settings_.impl_side_painting) | 2101 if (settings_.impl_side_painting) |
2104 CreateAndSetTileManager(); | 2102 CreateAndSetTileManager(); |
2105 | 2103 |
2106 // Initialize vsync parameters to sane values. | 2104 // Initialize vsync parameters to sane values. |
2107 const base::TimeDelta display_refresh_interval = | 2105 const base::TimeDelta display_refresh_interval = |
2108 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / | 2106 base::TimeDelta::FromMicroseconds( |
2109 settings_.refresh_rate); | 2107 base::Time::kMicrosecondsPerSecond / |
| 2108 settings_.renderer_settings.refresh_rate); |
2110 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); | 2109 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); |
2111 | 2110 |
2112 // TODO(brianderson): Don't use a hard-coded parent draw time. | 2111 // TODO(brianderson): Don't use a hard-coded parent draw time. |
2113 base::TimeDelta parent_draw_time = | 2112 base::TimeDelta parent_draw_time = |
2114 (!settings_.use_external_begin_frame_source && | 2113 (!settings_.use_external_begin_frame_source && |
2115 output_surface_->capabilities().adjust_deadline_for_parent) | 2114 output_surface_->capabilities().adjust_deadline_for_parent) |
2116 ? BeginFrameArgs::DefaultEstimatedParentDrawTime() | 2115 ? BeginFrameArgs::DefaultEstimatedParentDrawTime() |
2117 : base::TimeDelta(); | 2116 : base::TimeDelta(); |
2118 client_->SetEstimatedParentDrawTime(parent_draw_time); | 2117 client_->SetEstimatedParentDrawTime(parent_draw_time); |
2119 | 2118 |
(...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3442 } | 3441 } |
3443 | 3442 |
3444 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3443 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
3445 std::vector<PictureLayerImpl*>::iterator it = | 3444 std::vector<PictureLayerImpl*>::iterator it = |
3446 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3445 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
3447 DCHECK(it != picture_layers_.end()); | 3446 DCHECK(it != picture_layers_.end()); |
3448 picture_layers_.erase(it); | 3447 picture_layers_.erase(it); |
3449 } | 3448 } |
3450 | 3449 |
3451 } // namespace cc | 3450 } // namespace cc |
OLD | NEW |