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 |