| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "content/renderer/gpu/render_widget_compositor.h" | 5 #include "content/renderer/gpu/render_widget_compositor.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 323 } |
| 324 } | 324 } |
| 325 | 325 |
| 326 settings.strict_layer_property_change_checking = | 326 settings.strict_layer_property_change_checking = |
| 327 cmd->HasSwitch(cc::switches::kStrictLayerPropertyChangeChecking); | 327 cmd->HasSwitch(cc::switches::kStrictLayerPropertyChangeChecking); |
| 328 | 328 |
| 329 #if defined(OS_ANDROID) | 329 #if defined(OS_ANDROID) |
| 330 SynchronousCompositorFactory* synchronous_compositor_factory = | 330 SynchronousCompositorFactory* synchronous_compositor_factory = |
| 331 SynchronousCompositorFactory::GetInstance(); | 331 SynchronousCompositorFactory::GetInstance(); |
| 332 | 332 |
| 333 // We can't use GPU rasterization on low-end devices, because the Ganesh |
| 334 // cache would consume too much memory. |
| 335 if (base::SysInfo::IsLowEndDevice()) |
| 336 settings.gpu_rasterization_enabled = false; |
| 333 settings.using_synchronous_renderer_compositor = | 337 settings.using_synchronous_renderer_compositor = |
| 334 synchronous_compositor_factory; | 338 synchronous_compositor_factory; |
| 335 settings.record_full_layer = widget->DoesRecordFullLayer(); | 339 settings.record_full_layer = widget->DoesRecordFullLayer(); |
| 336 settings.report_overscroll_only_for_scrollable_axes = | 340 settings.report_overscroll_only_for_scrollable_axes = |
| 337 !synchronous_compositor_factory; | 341 !synchronous_compositor_factory; |
| 338 settings.max_partial_texture_updates = 0; | 342 settings.max_partial_texture_updates = 0; |
| 339 if (synchronous_compositor_factory) { | 343 if (synchronous_compositor_factory) { |
| 340 // Android WebView uses system scrollbars, so make ours invisible. | 344 // Android WebView uses system scrollbars, so make ours invisible. |
| 341 settings.scrollbar_animator = cc::LayerTreeSettings::NoAnimator; | 345 settings.scrollbar_animator = cc::LayerTreeSettings::NoAnimator; |
| 342 settings.solid_color_scrollbar_color = SK_ColorTRANSPARENT; | 346 settings.solid_color_scrollbar_color = SK_ColorTRANSPARENT; |
| 343 } else { | 347 } else { |
| 344 settings.scrollbar_animator = cc::LayerTreeSettings::LinearFade; | 348 settings.scrollbar_animator = cc::LayerTreeSettings::LinearFade; |
| 345 settings.scrollbar_fade_delay_ms = 300; | 349 settings.scrollbar_fade_delay_ms = 300; |
| 346 settings.scrollbar_fade_resize_delay_ms = 2000; | 350 settings.scrollbar_fade_resize_delay_ms = 2000; |
| 347 settings.scrollbar_fade_duration_ms = 300; | 351 settings.scrollbar_fade_duration_ms = 300; |
| 348 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); | 352 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); |
| 349 } | 353 } |
| 350 settings.renderer_settings.highp_threshold_min = 2048; | 354 settings.renderer_settings.highp_threshold_min = 2048; |
| 351 // Android WebView handles root layer flings itself. | 355 // Android WebView handles root layer flings itself. |
| 352 settings.ignore_root_layer_flings = | 356 settings.ignore_root_layer_flings = |
| 353 synchronous_compositor_factory; | 357 synchronous_compositor_factory; |
| 354 // Memory policy on Android WebView does not depend on whether device is | 358 // Memory policy on Android WebView does not depend on whether device is |
| 355 // low end, so always use default policy. | 359 // low end, so always use default policy. |
| 356 bool is_low_end_device = | 360 bool use_low_memory_policy = |
| 357 base::SysInfo::IsLowEndDevice() && !synchronous_compositor_factory; | 361 base::SysInfo::IsLowEndDevice() && !synchronous_compositor_factory; |
| 358 // RGBA_4444 textures are only enabled for low end devices | 362 // RGBA_4444 textures are only enabled for low end devices |
| 359 // and are disabled for Android WebView as it doesn't support the format. | 363 // and are disabled for Android WebView as it doesn't support the format. |
| 360 settings.renderer_settings.use_rgba_4444_textures = is_low_end_device; | 364 settings.renderer_settings.use_rgba_4444_textures = use_low_memory_policy; |
| 361 if (is_low_end_device) { | 365 if (use_low_memory_policy) { |
| 362 // On low-end we want to be very carefull about killing other | 366 // On low-end we want to be very carefull about killing other |
| 363 // apps. So initially we use 50% more memory to avoid flickering | 367 // apps. So initially we use 50% more memory to avoid flickering |
| 364 // or raster-on-demand. | 368 // or raster-on-demand. |
| 365 settings.max_memory_for_prepaint_percentage = 67; | 369 settings.max_memory_for_prepaint_percentage = 67; |
| 366 } else { | 370 } else { |
| 367 // On other devices we have increased memory excessively to avoid | 371 // On other devices we have increased memory excessively to avoid |
| 368 // raster-on-demand already, so now we reserve 50% _only_ to avoid | 372 // raster-on-demand already, so now we reserve 50% _only_ to avoid |
| 369 // raster-on-demand, and use 50% of the memory otherwise. | 373 // raster-on-demand, and use 50% of the memory otherwise. |
| 370 settings.max_memory_for_prepaint_percentage = 50; | 374 settings.max_memory_for_prepaint_percentage = 50; |
| 371 } | 375 } |
| (...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 widget_->OnSwapBuffersAborted(); | 895 widget_->OnSwapBuffersAborted(); |
| 892 } | 896 } |
| 893 | 897 |
| 894 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { | 898 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { |
| 895 cc::ContextProvider* provider = | 899 cc::ContextProvider* provider = |
| 896 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 900 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 897 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); | 901 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); |
| 898 } | 902 } |
| 899 | 903 |
| 900 } // namespace content | 904 } // namespace content |
| OLD | NEW |