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

Side by Side Diff: content/renderer/gpu/render_widget_compositor.cc

Issue 1408123005: Android Webview IPC-based sync compositing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: send FrameAct Created 5 years, 1 month 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
OLDNEW
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 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 cc::switches::kSlowDownRasterScaleFactor, 363 cc::switches::kSlowDownRasterScaleFactor,
364 kMinSlowDownScaleFactor, 364 kMinSlowDownScaleFactor,
365 kMaxSlowDownScaleFactor, 365 kMaxSlowDownScaleFactor,
366 &settings.initial_debug_state.slow_down_raster_scale_factor); 366 &settings.initial_debug_state.slow_down_raster_scale_factor);
367 } 367 }
368 368
369 settings.strict_layer_property_change_checking = 369 settings.strict_layer_property_change_checking =
370 cmd->HasSwitch(cc::switches::kStrictLayerPropertyChangeChecking); 370 cmd->HasSwitch(cc::switches::kStrictLayerPropertyChangeChecking);
371 371
372 #if defined(OS_ANDROID) 372 #if defined(OS_ANDROID)
373 SynchronousCompositorFactory* synchronous_compositor_factory = 373 DCHECK(!SynchronousCompositorFactory::GetInstance() ||
374 SynchronousCompositorFactory::GetInstance(); 374 !cmd->HasSwitch(switches::kIPCSyncCompositing));
375 bool using_synchronous_compositor =
376 SynchronousCompositorFactory::GetInstance() ||
377 cmd->HasSwitch(switches::kIPCSyncCompositing);
375 378
376 // We can't use GPU rasterization on low-end devices, because the Ganesh 379 // We can't use GPU rasterization on low-end devices, because the Ganesh
377 // cache would consume too much memory. 380 // cache would consume too much memory.
378 if (base::SysInfo::IsLowEndDevice()) 381 if (base::SysInfo::IsLowEndDevice())
379 settings.gpu_rasterization_enabled = false; 382 settings.gpu_rasterization_enabled = false;
380 settings.using_synchronous_renderer_compositor = 383 settings.using_synchronous_renderer_compositor = using_synchronous_compositor;
381 synchronous_compositor_factory;
382 settings.record_full_layer = widget_->DoesRecordFullLayer(); 384 settings.record_full_layer = widget_->DoesRecordFullLayer();
383 if (synchronous_compositor_factory) { 385 if (using_synchronous_compositor) {
384 // Android WebView uses system scrollbars, so make ours invisible. 386 // Android WebView uses system scrollbars, so make ours invisible.
385 settings.scrollbar_animator = cc::LayerTreeSettings::NO_ANIMATOR; 387 settings.scrollbar_animator = cc::LayerTreeSettings::NO_ANIMATOR;
386 settings.solid_color_scrollbar_color = SK_ColorTRANSPARENT; 388 settings.solid_color_scrollbar_color = SK_ColorTRANSPARENT;
387 } else { 389 } else {
388 settings.scrollbar_animator = cc::LayerTreeSettings::LINEAR_FADE; 390 settings.scrollbar_animator = cc::LayerTreeSettings::LINEAR_FADE;
389 settings.scrollbar_fade_delay_ms = 300; 391 settings.scrollbar_fade_delay_ms = 300;
390 settings.scrollbar_fade_resize_delay_ms = 2000; 392 settings.scrollbar_fade_resize_delay_ms = 2000;
391 settings.scrollbar_fade_duration_ms = 300; 393 settings.scrollbar_fade_duration_ms = 300;
392 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); 394 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128);
393 } 395 }
394 settings.renderer_settings.highp_threshold_min = 2048; 396 settings.renderer_settings.highp_threshold_min = 2048;
395 // Android WebView handles root layer flings itself. 397 // Android WebView handles root layer flings itself.
396 settings.ignore_root_layer_flings = 398 settings.ignore_root_layer_flings = using_synchronous_compositor;
397 synchronous_compositor_factory;
398 // Memory policy on Android WebView does not depend on whether device is 399 // Memory policy on Android WebView does not depend on whether device is
399 // low end, so always use default policy. 400 // low end, so always use default policy.
400 bool use_low_memory_policy = 401 bool use_low_memory_policy =
401 base::SysInfo::IsLowEndDevice() && !synchronous_compositor_factory; 402 base::SysInfo::IsLowEndDevice() && !using_synchronous_compositor;
402 // RGBA_4444 textures are only enabled by default for low end devices 403 // RGBA_4444 textures are only enabled by default for low end devices
403 // and are disabled for Android WebView as it doesn't support the format. 404 // and are disabled for Android WebView as it doesn't support the format.
404 settings.renderer_settings.use_rgba_4444_textures = use_low_memory_policy; 405 settings.renderer_settings.use_rgba_4444_textures = use_low_memory_policy;
405 if (use_low_memory_policy) { 406 if (use_low_memory_policy) {
406 // On low-end we want to be very carefull about killing other 407 // On low-end we want to be very carefull about killing other
407 // apps. So initially we use 50% more memory to avoid flickering 408 // apps. So initially we use 50% more memory to avoid flickering
408 // or raster-on-demand. 409 // or raster-on-demand.
409 settings.max_memory_for_prepaint_percentage = 67; 410 settings.max_memory_for_prepaint_percentage = 67;
410 } else { 411 } else {
411 // On other devices we have increased memory excessively to avoid 412 // On other devices we have increased memory excessively to avoid
412 // raster-on-demand already, so now we reserve 50% _only_ to avoid 413 // raster-on-demand already, so now we reserve 50% _only_ to avoid
413 // raster-on-demand, and use 50% of the memory otherwise. 414 // raster-on-demand, and use 50% of the memory otherwise.
414 settings.max_memory_for_prepaint_percentage = 50; 415 settings.max_memory_for_prepaint_percentage = 50;
415 } 416 }
416 // Webview does not own the surface so should not clear it. 417 // Webview does not own the surface so should not clear it.
417 settings.renderer_settings.should_clear_root_render_pass = 418 settings.renderer_settings.should_clear_root_render_pass =
418 !synchronous_compositor_factory; 419 !using_synchronous_compositor;
419 420
420 // TODO(danakj): Only do this on low end devices. 421 // TODO(danakj): Only do this on low end devices.
421 settings.create_low_res_tiling = true; 422 settings.create_low_res_tiling = true;
422 423
423 settings.use_external_begin_frame_source = true; 424 settings.use_external_begin_frame_source = true;
424 425
425 #elif !defined(OS_MACOSX) 426 #elif !defined(OS_MACOSX)
426 if (ui::IsOverlayScrollbarEnabled()) { 427 if (ui::IsOverlayScrollbarEnabled()) {
427 settings.scrollbar_animator = cc::LayerTreeSettings::THINNING; 428 settings.scrollbar_animator = cc::LayerTreeSettings::THINNING;
428 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); 429 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128);
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 #endif 1080 #endif
1080 return actual; 1081 return actual;
1081 } 1082 }
1082 1083
1083 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor( 1084 void RenderWidgetCompositor::SetPaintedDeviceScaleFactor(
1084 float device_scale) { 1085 float device_scale) {
1085 layer_tree_host_->SetPaintedDeviceScaleFactor(device_scale); 1086 layer_tree_host_->SetPaintedDeviceScaleFactor(device_scale);
1086 } 1087 }
1087 1088
1088 } // namespace content 1089 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698