Home | History | Annotate | Download | only in debug
      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
      3 // found in the LICENSE file.
      4 
      5 #include "cc/debug/layer_tree_debug_state.h"
      6 
      7 #include "base/logging.h"
      8 
      9 namespace cc {
     10 
     11 // IMPORTANT: new fields must be added to Equal() and Unite()
     12 LayerTreeDebugState::LayerTreeDebugState()
     13     : show_fps_counter(false),
     14       show_debug_borders(false),
     15       continuous_painting(false),
     16       show_paint_rects(false),
     17       show_property_changed_rects(false),
     18       show_surface_damage_rects(false),
     19       show_screen_space_rects(false),
     20       show_replica_screen_space_rects(false),
     21       show_occluding_rects(false),
     22       show_non_occluding_rects(false),
     23       show_touch_event_handler_rects(false),
     24       show_wheel_event_handler_rects(false),
     25       show_scroll_event_handler_rects(false),
     26       show_non_fast_scrollable_rects(false),
     27       show_layer_animation_bounds_rects(false),
     28       slow_down_raster_scale_factor(0),
     29       rasterize_only_visible_content(false),
     30       show_picture_borders(false),
     31       record_rendering_stats_(false) {}
     32 
     33 LayerTreeDebugState::~LayerTreeDebugState() {}
     34 
     35 void LayerTreeDebugState::SetRecordRenderingStats(bool enabled) {
     36   record_rendering_stats_ = enabled;
     37 }
     38 
     39 bool LayerTreeDebugState::RecordRenderingStats() const {
     40   return record_rendering_stats_ || continuous_painting;
     41 }
     42 
     43 bool LayerTreeDebugState::ShowHudInfo() const {
     44   return show_fps_counter || continuous_painting ||
     45          ShowHudRects();
     46 }
     47 
     48 bool LayerTreeDebugState::ShowHudRects() const {
     49   return show_paint_rects || show_property_changed_rects ||
     50          show_surface_damage_rects || show_screen_space_rects ||
     51          show_replica_screen_space_rects || show_occluding_rects ||
     52          show_non_occluding_rects || show_touch_event_handler_rects ||
     53          show_wheel_event_handler_rects || show_scroll_event_handler_rects ||
     54          show_non_fast_scrollable_rects || show_layer_animation_bounds_rects;
     55 }
     56 
     57 bool LayerTreeDebugState::ShowMemoryStats() const {
     58   return show_fps_counter || continuous_painting;
     59 }
     60 
     61 bool LayerTreeDebugState::Equal(const LayerTreeDebugState& a,
     62                                 const LayerTreeDebugState& b) {
     63   return (
     64       a.show_fps_counter == b.show_fps_counter &&
     65       a.show_debug_borders == b.show_debug_borders &&
     66       a.continuous_painting == b.continuous_painting &&
     67       a.show_paint_rects == b.show_paint_rects &&
     68       a.show_property_changed_rects == b.show_property_changed_rects &&
     69       a.show_surface_damage_rects == b.show_surface_damage_rects &&
     70       a.show_screen_space_rects == b.show_screen_space_rects &&
     71       a.show_replica_screen_space_rects == b.show_replica_screen_space_rects &&
     72       a.show_occluding_rects == b.show_occluding_rects &&
     73       a.show_non_occluding_rects == b.show_non_occluding_rects &&
     74       a.show_touch_event_handler_rects == b.show_touch_event_handler_rects &&
     75       a.show_wheel_event_handler_rects == b.show_wheel_event_handler_rects &&
     76       a.show_scroll_event_handler_rects == b.show_scroll_event_handler_rects &&
     77       a.show_non_fast_scrollable_rects == b.show_non_fast_scrollable_rects &&
     78       a.show_layer_animation_bounds_rects ==
     79           b.show_layer_animation_bounds_rects &&
     80       a.slow_down_raster_scale_factor == b.slow_down_raster_scale_factor &&
     81       a.rasterize_only_visible_content == b.rasterize_only_visible_content &&
     82       a.show_picture_borders == b.show_picture_borders &&
     83       a.record_rendering_stats_ == b.record_rendering_stats_);
     84 }
     85 
     86 LayerTreeDebugState LayerTreeDebugState::Unite(const LayerTreeDebugState& a,
     87                                                const LayerTreeDebugState& b) {
     88   LayerTreeDebugState r(a);
     89 
     90   r.show_fps_counter |= b.show_fps_counter;
     91   r.show_debug_borders |= b.show_debug_borders;
     92   r.continuous_painting |= b.continuous_painting;
     93 
     94   r.show_paint_rects |= b.show_paint_rects;
     95   r.show_property_changed_rects |= b.show_property_changed_rects;
     96   r.show_surface_damage_rects |= b.show_surface_damage_rects;
     97   r.show_screen_space_rects |= b.show_screen_space_rects;
     98   r.show_replica_screen_space_rects |= b.show_replica_screen_space_rects;
     99   r.show_occluding_rects |= b.show_occluding_rects;
    100   r.show_non_occluding_rects |= b.show_non_occluding_rects;
    101   r.show_touch_event_handler_rects |= b.show_touch_event_handler_rects;
    102   r.show_wheel_event_handler_rects |= b.show_wheel_event_handler_rects;
    103   r.show_scroll_event_handler_rects |= b.show_scroll_event_handler_rects;
    104   r.show_non_fast_scrollable_rects |= b.show_non_fast_scrollable_rects;
    105   r.show_layer_animation_bounds_rects |= b.show_layer_animation_bounds_rects;
    106 
    107   if (b.slow_down_raster_scale_factor)
    108     r.slow_down_raster_scale_factor = b.slow_down_raster_scale_factor;
    109   r.rasterize_only_visible_content |= b.rasterize_only_visible_content;
    110   r.show_picture_borders |= b.show_picture_borders;
    111 
    112   r.record_rendering_stats_ |= b.record_rendering_stats_;
    113 
    114   return r;
    115 }
    116 
    117 }  // namespace cc
    118