1 // Copyright (c) 2012 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/base/switches.h" 6 7 #include "base/command_line.h" 8 9 namespace cc { 10 namespace switches { 11 12 // On platforms where checkerboards are used, prefer background colors instead 13 // of checkerboards. 14 const char kBackgroundColorInsteadOfCheckerboard[] = 15 "background-color-instead-of-checkerboard"; 16 17 // Disables LCD text. 18 const char kDisableLCDText[] = "disable-lcd-text"; 19 20 const char kDisableThreadedAnimation[] = "disable-threaded-animation"; 21 22 // Disables layer-edge anti-aliasing in the compositor. 23 const char kDisableCompositedAntialiasing[] = 24 "disable-composited-antialiasing"; 25 26 // Paint content on the main thread instead of the compositor thread. 27 // Overrides the kEnableImplSidePainting flag. 28 const char kDisableImplSidePainting[] = "disable-impl-side-painting"; 29 30 // Enables LCD text. 31 const char kEnableLCDText[] = "enable-lcd-text"; 32 33 // Paint content on the compositor thread instead of the main thread. 34 const char kEnableImplSidePainting[] = "enable-impl-side-painting"; 35 36 const char kEnableTopControlsPositionCalculation[] = 37 "enable-top-controls-position-calculation"; 38 39 // Allow heuristics to determine when a layer tile should be drawn with 40 // the Skia GPU backend. Only valid with GPU accelerated compositing + 41 // impl-side painting. 42 const char kEnableGPURasterization[] = "enable-gpu-rasterization"; 43 44 // The height of the movable top controls. 45 const char kTopControlsHeight[] = "top-controls-height"; 46 47 // Percentage of the top controls need to be hidden before they will auto hide. 48 const char kTopControlsHideThreshold[] = "top-controls-hide-threshold"; 49 50 // Percentage of the top controls need to be shown before they will auto show. 51 const char kTopControlsShowThreshold[] = "top-controls-show-threshold"; 52 53 // Number of worker threads used to rasterize content. 54 const char kNumRasterThreads[] = "num-raster-threads"; 55 56 // Show metrics about overdraw in about:tracing recordings, such as the number 57 // of pixels culled, and the number of pixels drawn, for each frame. 58 const char kTraceOverdraw[] = "trace-overdraw"; 59 60 // Re-rasters everything multiple times to simulate a much slower machine. 61 // Give a scale factor to cause raster to take that many times longer to 62 // complete, such as --slow-down-raster-scale-factor=25. 63 const char kSlowDownRasterScaleFactor[] = "slow-down-raster-scale-factor"; 64 65 // Max tiles allowed for each tilings interest area. 66 const char kMaxTilesForInterestArea[] = "max-tiles-for-interest-area"; 67 68 // The amount of unused resource memory compositor is allowed to keep around. 69 const char kMaxUnusedResourceMemoryUsagePercentage[] = 70 "max-unused-resource-memory-usage-percentage"; 71 72 // Causes the compositor to render to textures which are then sent to the parent 73 // through the texture mailbox mechanism. 74 // Requires --enable-compositor-frame-message. 75 const char kCompositeToMailbox[] = "composite-to-mailbox"; 76 77 // Check that property changes during paint do not occur. 78 const char kStrictLayerPropertyChangeChecking[] = 79 "strict-layer-property-change-checking"; 80 81 // Virtual viewport for fixed-position elements, scrollbars during pinch. 82 const char kEnablePinchVirtualViewport[] = "enable-pinch-virtual-viewport"; 83 84 const char kEnablePartialSwap[] = "enable-partial-swap"; 85 // Disable partial swap which is needed for some OpenGL drivers / emulators. 86 const char kUIDisablePartialSwap[] = "ui-disable-partial-swap"; 87 88 const char kEnablePerTilePainting[] = "enable-per-tile-painting"; 89 const char kUIEnablePerTilePainting[] = "ui-enable-per-tile-painting"; 90 91 // Renders a border around compositor layers to help debug and study 92 // layer compositing. 93 const char kShowCompositedLayerBorders[] = "show-composited-layer-borders"; 94 const char kUIShowCompositedLayerBorders[] = "ui-show-layer-borders"; 95 96 // Draws a FPS indicator 97 const char kShowFPSCounter[] = "show-fps-counter"; 98 const char kUIShowFPSCounter[] = "ui-show-fps-counter"; 99 100 // Renders a border that represents the bounding box for the layer's animation. 101 const char kShowLayerAnimationBounds[] = "show-layer-animation-bounds"; 102 const char kUIShowLayerAnimationBounds[] = "ui-show-layer-animation-bounds"; 103 104 // Show rects in the HUD around layers whose properties have changed. 105 const char kShowPropertyChangedRects[] = "show-property-changed-rects"; 106 const char kUIShowPropertyChangedRects[] = "ui-show-property-changed-rects"; 107 108 // Show rects in the HUD around damage as it is recorded into each render 109 // surface. 110 const char kShowSurfaceDamageRects[] = "show-surface-damage-rects"; 111 const char kUIShowSurfaceDamageRects[] = "ui-show-surface-damage-rects"; 112 113 // Show rects in the HUD around the screen-space transformed bounds of every 114 // layer. 115 const char kShowScreenSpaceRects[] = "show-screenspace-rects"; 116 const char kUIShowScreenSpaceRects[] = "ui-show-screenspace-rects"; 117 118 // Show rects in the HUD around the screen-space transformed bounds of every 119 // layer's replica, when they have one. 120 const char kShowReplicaScreenSpaceRects[] = "show-replica-screenspace-rects"; 121 const char kUIShowReplicaScreenSpaceRects[] = 122 "ui-show-replica-screenspace-rects"; 123 124 // Show rects in the HUD wherever something is known to be drawn opaque and is 125 // considered occluding the pixels behind it. 126 const char kShowOccludingRects[] = "show-occluding-rects"; 127 const char kUIShowOccludingRects[] = "ui-show-occluding-rects"; 128 129 // Show rects in the HUD wherever something is not known to be drawn opaque and 130 // is not considered to be occluding the pixels behind it. 131 const char kShowNonOccludingRects[] = "show-nonoccluding-rects"; 132 const char kUIShowNonOccludingRects[] = "ui-show-nonoccluding-rects"; 133 134 // Enable rasterizer that writes directly to GPU memory. 135 const char kEnableMapImage[] = "enable-map-image"; 136 137 // Disable rasterizer that writes directly to GPU memory. 138 // Overrides the kEnableMapImage flag. 139 const char kDisableMapImage[] = "disable-map-image"; 140 141 // Prevents the layer tree unit tests from timing out. 142 const char kCCLayerTreeTestNoTimeout[] = "cc-layer-tree-test-no-timeout"; 143 144 // Makes pixel tests write their output instead of read it. 145 const char kCCRebaselinePixeltests[] = "cc-rebaseline-pixeltests"; 146 147 // Disable textures using RGBA_4444 layout. 148 const char kDisable4444Textures[] = "disable-4444-textures"; 149 150 // Disable touch hit testing in the compositor. 151 const char kDisableCompositorTouchHitTesting[] = 152 "disable-compositor-touch-hit-testing"; 153 154 bool IsLCDTextEnabled() { 155 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 156 if (command_line->HasSwitch(switches::kDisableLCDText)) 157 return false; 158 else if (command_line->HasSwitch(switches::kEnableLCDText)) 159 return true; 160 161 #if defined(OS_ANDROID) 162 return false; 163 #else 164 return true; 165 #endif 166 } 167 168 namespace { 169 bool CheckImplSidePaintingStatus() { 170 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 171 172 if (command_line.HasSwitch(switches::kDisableImplSidePainting)) 173 return false; 174 else if (command_line.HasSwitch(switches::kEnableImplSidePainting)) 175 return true; 176 177 #if defined(OS_ANDROID) 178 return true; 179 #else 180 return false; 181 #endif 182 } 183 184 bool CheckGPURasterizationStatus() { 185 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 186 return command_line.HasSwitch(switches::kEnableGPURasterization); 187 } 188 189 } // namespace 190 191 bool IsImplSidePaintingEnabled() { 192 static bool enabled = CheckImplSidePaintingStatus(); 193 return enabled; 194 } 195 196 bool IsGPURasterizationEnabled() { 197 static bool enabled = CheckGPURasterizationStatus(); 198 return enabled; 199 } 200 201 bool IsMapImageEnabled() { 202 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 203 204 if (command_line.HasSwitch(switches::kDisableMapImage)) 205 return false; 206 else if (command_line.HasSwitch(switches::kEnableMapImage)) 207 return true; 208 209 return false; 210 } 211 212 } // namespace switches 213 } // namespace cc 214