1*d57664e9SAndroid Build Coastguard Worker /* 2*d57664e9SAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project 3*d57664e9SAndroid Build Coastguard Worker * 4*d57664e9SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*d57664e9SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*d57664e9SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*d57664e9SAndroid Build Coastguard Worker * 8*d57664e9SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*d57664e9SAndroid Build Coastguard Worker * 10*d57664e9SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*d57664e9SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*d57664e9SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*d57664e9SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*d57664e9SAndroid Build Coastguard Worker * limitations under the License. 15*d57664e9SAndroid Build Coastguard Worker */ 16*d57664e9SAndroid Build Coastguard Worker 17*d57664e9SAndroid Build Coastguard Worker #ifndef ANDROID_HWUI_PROPERTIES_H 18*d57664e9SAndroid Build Coastguard Worker #define ANDROID_HWUI_PROPERTIES_H 19*d57664e9SAndroid Build Coastguard Worker 20*d57664e9SAndroid Build Coastguard Worker #include <cutils/compiler.h> 21*d57664e9SAndroid Build Coastguard Worker 22*d57664e9SAndroid Build Coastguard Worker /** 23*d57664e9SAndroid Build Coastguard Worker * This file contains the list of system properties used to configure libhwui. 24*d57664e9SAndroid Build Coastguard Worker */ 25*d57664e9SAndroid Build Coastguard Worker 26*d57664e9SAndroid Build Coastguard Worker namespace android { 27*d57664e9SAndroid Build Coastguard Worker namespace uirenderer { 28*d57664e9SAndroid Build Coastguard Worker 29*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 30*d57664e9SAndroid Build Coastguard Worker // Compile-time properties 31*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 32*d57664e9SAndroid Build Coastguard Worker 33*d57664e9SAndroid Build Coastguard Worker // Textures used by layers must have dimensions multiples of this number 34*d57664e9SAndroid Build Coastguard Worker #define LAYER_SIZE 64 35*d57664e9SAndroid Build Coastguard Worker 36*d57664e9SAndroid Build Coastguard Worker // Defines the size in bits of the stencil buffer for the framebuffer 37*d57664e9SAndroid Build Coastguard Worker // Note: Only 1 bit is required for clipping but more bits are required 38*d57664e9SAndroid Build Coastguard Worker // to properly implement overdraw debugging 39*d57664e9SAndroid Build Coastguard Worker #define STENCIL_BUFFER_SIZE 8 40*d57664e9SAndroid Build Coastguard Worker 41*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 42*d57664e9SAndroid Build Coastguard Worker // Debug properties 43*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 44*d57664e9SAndroid Build Coastguard Worker 45*d57664e9SAndroid Build Coastguard Worker /** 46*d57664e9SAndroid Build Coastguard Worker * Debug level for app developers. The value is a numeric value defined 47*d57664e9SAndroid Build Coastguard Worker * by the DebugLevel enum below. 48*d57664e9SAndroid Build Coastguard Worker */ 49*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_DEBUG "debug.hwui.level" 50*d57664e9SAndroid Build Coastguard Worker 51*d57664e9SAndroid Build Coastguard Worker /** 52*d57664e9SAndroid Build Coastguard Worker * Debug levels. Debug levels are used as flags. 53*d57664e9SAndroid Build Coastguard Worker */ 54*d57664e9SAndroid Build Coastguard Worker enum DebugLevel { 55*d57664e9SAndroid Build Coastguard Worker kDebugDisabled = 0, 56*d57664e9SAndroid Build Coastguard Worker kDebugMemory = 1, 57*d57664e9SAndroid Build Coastguard Worker kDebugCaches = 2, 58*d57664e9SAndroid Build Coastguard Worker kDebugMoreCaches = kDebugMemory | kDebugCaches 59*d57664e9SAndroid Build Coastguard Worker }; 60*d57664e9SAndroid Build Coastguard Worker 61*d57664e9SAndroid Build Coastguard Worker /** 62*d57664e9SAndroid Build Coastguard Worker * Used to enable/disable layers update debugging. The accepted values are 63*d57664e9SAndroid Build Coastguard Worker * "true" and "false". The default value is "false". 64*d57664e9SAndroid Build Coastguard Worker */ 65*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_DEBUG_LAYERS_UPDATES "debug.hwui.show_layers_updates" 66*d57664e9SAndroid Build Coastguard Worker 67*d57664e9SAndroid Build Coastguard Worker /** 68*d57664e9SAndroid Build Coastguard Worker * Used to enable/disable overdraw debugging. 69*d57664e9SAndroid Build Coastguard Worker * 70*d57664e9SAndroid Build Coastguard Worker * The accepted values are 71*d57664e9SAndroid Build Coastguard Worker * "show", to show overdraw 72*d57664e9SAndroid Build Coastguard Worker * "show_deuteranomaly", to show overdraw if you suffer from Deuteranomaly 73*d57664e9SAndroid Build Coastguard Worker * "count", to show an overdraw counter 74*d57664e9SAndroid Build Coastguard Worker * "false", to disable overdraw debugging 75*d57664e9SAndroid Build Coastguard Worker * 76*d57664e9SAndroid Build Coastguard Worker * The default value is "false". 77*d57664e9SAndroid Build Coastguard Worker */ 78*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_DEBUG_OVERDRAW "debug.hwui.overdraw" 79*d57664e9SAndroid Build Coastguard Worker 80*d57664e9SAndroid Build Coastguard Worker /** 81*d57664e9SAndroid Build Coastguard Worker * System property used to enable or disable hardware rendering profiling. 82*d57664e9SAndroid Build Coastguard Worker * The default value of this property is assumed to be false. 83*d57664e9SAndroid Build Coastguard Worker * 84*d57664e9SAndroid Build Coastguard Worker * When profiling is enabled, the adb shell dumpsys gfxinfo command will 85*d57664e9SAndroid Build Coastguard Worker * output extra information about the time taken to execute by the last 86*d57664e9SAndroid Build Coastguard Worker * frames. 87*d57664e9SAndroid Build Coastguard Worker * 88*d57664e9SAndroid Build Coastguard Worker * Possible values: 89*d57664e9SAndroid Build Coastguard Worker * "true", to enable profiling 90*d57664e9SAndroid Build Coastguard Worker * "visual_bars", to enable profiling and visualize the results on screen 91*d57664e9SAndroid Build Coastguard Worker * "false", to disable profiling 92*d57664e9SAndroid Build Coastguard Worker */ 93*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_PROFILE "debug.hwui.profile" 94*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_PROFILE_VISUALIZE_BARS "visual_bars" 95*d57664e9SAndroid Build Coastguard Worker 96*d57664e9SAndroid Build Coastguard Worker /** 97*d57664e9SAndroid Build Coastguard Worker * Turn on to draw dirty regions every other frame. 98*d57664e9SAndroid Build Coastguard Worker * 99*d57664e9SAndroid Build Coastguard Worker * Possible values: 100*d57664e9SAndroid Build Coastguard Worker * "true", to enable dirty regions debugging 101*d57664e9SAndroid Build Coastguard Worker * "false", to disable dirty regions debugging 102*d57664e9SAndroid Build Coastguard Worker */ 103*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_DEBUG_SHOW_DIRTY_REGIONS "debug.hwui.show_dirty_regions" 104*d57664e9SAndroid Build Coastguard Worker 105*d57664e9SAndroid Build Coastguard Worker /** 106*d57664e9SAndroid Build Coastguard Worker * Setting this property will enable or disable the dropping of frames with 107*d57664e9SAndroid Build Coastguard Worker * empty damage. Default is "true". 108*d57664e9SAndroid Build Coastguard Worker */ 109*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_SKIP_EMPTY_DAMAGE "debug.hwui.skip_empty_damage" 110*d57664e9SAndroid Build Coastguard Worker 111*d57664e9SAndroid Build Coastguard Worker /** 112*d57664e9SAndroid Build Coastguard Worker * Controls whether or not HWUI will use the EGL_EXT_buffer_age extension 113*d57664e9SAndroid Build Coastguard Worker * to do partial invalidates. Setting this to "false" will fall back to 114*d57664e9SAndroid Build Coastguard Worker * using BUFFER_PRESERVED instead 115*d57664e9SAndroid Build Coastguard Worker * Default is "true" 116*d57664e9SAndroid Build Coastguard Worker */ 117*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_USE_BUFFER_AGE "debug.hwui.use_buffer_age" 118*d57664e9SAndroid Build Coastguard Worker 119*d57664e9SAndroid Build Coastguard Worker /** 120*d57664e9SAndroid Build Coastguard Worker * Setting this to "false" will force HWUI to always do full-redraws of the surface. 121*d57664e9SAndroid Build Coastguard Worker * This will disable the use of EGL_EXT_buffer_age and BUFFER_PRESERVED. 122*d57664e9SAndroid Build Coastguard Worker * Default is "true" 123*d57664e9SAndroid Build Coastguard Worker */ 124*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_ENABLE_PARTIAL_UPDATES "debug.hwui.use_partial_updates" 125*d57664e9SAndroid Build Coastguard Worker 126*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_FILTER_TEST_OVERHEAD "debug.hwui.filter_test_overhead" 127*d57664e9SAndroid Build Coastguard Worker 128*d57664e9SAndroid Build Coastguard Worker /** 129*d57664e9SAndroid Build Coastguard Worker * Indicates whether PBOs can be used to back pixel buffers. 130*d57664e9SAndroid Build Coastguard Worker * Accepted values are "true" and "false". Default is true. 131*d57664e9SAndroid Build Coastguard Worker */ 132*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_ENABLE_GPU_PIXEL_BUFFERS "debug.hwui.use_gpu_pixel_buffers" 133*d57664e9SAndroid Build Coastguard Worker 134*d57664e9SAndroid Build Coastguard Worker /** 135*d57664e9SAndroid Build Coastguard Worker * Allows to set rendering pipeline mode to OpenGL (default), Skia OpenGL 136*d57664e9SAndroid Build Coastguard Worker * or Vulkan. 137*d57664e9SAndroid Build Coastguard Worker */ 138*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_RENDERER "debug.hwui.renderer" 139*d57664e9SAndroid Build Coastguard Worker 140*d57664e9SAndroid Build Coastguard Worker /** 141*d57664e9SAndroid Build Coastguard Worker * Allows to collect a recording of Skia drawing commands. 142*d57664e9SAndroid Build Coastguard Worker */ 143*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_CAPTURE_SKP_ENABLED "debug.hwui.capture_skp_enabled" 144*d57664e9SAndroid Build Coastguard Worker 145*d57664e9SAndroid Build Coastguard Worker /** 146*d57664e9SAndroid Build Coastguard Worker * Might split Skia's GPU resource utilization into separate tracing tracks (slow). 147*d57664e9SAndroid Build Coastguard Worker * 148*d57664e9SAndroid Build Coastguard Worker * Aggregate total and purgeable numbers will still be reported under a "misc" track when this is 149*d57664e9SAndroid Build Coastguard Worker * disabled, they just won't be split into distinct categories. Results may vary depending on GPU 150*d57664e9SAndroid Build Coastguard Worker * backend/API, and the category mappings defined in ATraceMemoryDump's hardcoded sResourceMap. 151*d57664e9SAndroid Build Coastguard Worker */ 152*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_TRACE_GPU_RESOURCES "debug.hwui.trace_gpu_resources" 153*d57664e9SAndroid Build Coastguard Worker 154*d57664e9SAndroid Build Coastguard Worker /** 155*d57664e9SAndroid Build Coastguard Worker * Allows broad recording of Skia drawing commands. 156*d57664e9SAndroid Build Coastguard Worker * 157*d57664e9SAndroid Build Coastguard Worker * If disabled, a very minimal set of trace events *may* be recorded. 158*d57664e9SAndroid Build Coastguard Worker * If enabled, a much broader set of trace events *may* be recorded. 159*d57664e9SAndroid Build Coastguard Worker * 160*d57664e9SAndroid Build Coastguard Worker * In either case, trace events are only recorded if an appropriately configured tracing session is 161*d57664e9SAndroid Build Coastguard Worker * active. 162*d57664e9SAndroid Build Coastguard Worker * 163*d57664e9SAndroid Build Coastguard Worker * Use debug.hwui.skia_use_perfetto_track_events to determine if ATrace (default) or Perfetto is 164*d57664e9SAndroid Build Coastguard Worker * used as the tracing backend. 165*d57664e9SAndroid Build Coastguard Worker */ 166*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_SKIA_TRACING_ENABLED "debug.hwui.skia_tracing_enabled" 167*d57664e9SAndroid Build Coastguard Worker 168*d57664e9SAndroid Build Coastguard Worker /** 169*d57664e9SAndroid Build Coastguard Worker * Switches Skia's tracing to use Perfetto's Track Event system instead of ATrace. 170*d57664e9SAndroid Build Coastguard Worker * 171*d57664e9SAndroid Build Coastguard Worker * If disabled, ATrace will be used by default, which will record trace events from any of Skia's 172*d57664e9SAndroid Build Coastguard Worker * tracing categories if overall system tracing is active and the "gfx" and "view" ATrace categories 173*d57664e9SAndroid Build Coastguard Worker * are enabled. 174*d57664e9SAndroid Build Coastguard Worker * 175*d57664e9SAndroid Build Coastguard Worker * If enabled, then Perfetto's Track Event system will be used instead, which will only record if an 176*d57664e9SAndroid Build Coastguard Worker * active Perfetto tracing session is targeting the correct apps and Skia tracing categories with 177*d57664e9SAndroid Build Coastguard Worker * the Track Event data source enabled. This approach may be used to selectively filter out 178*d57664e9SAndroid Build Coastguard Worker * undesired Skia tracing categories, and events will contain more data fields. 179*d57664e9SAndroid Build Coastguard Worker */ 180*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_SKIA_USE_PERFETTO_TRACK_EVENTS "debug.hwui.skia_use_perfetto_track_events" 181*d57664e9SAndroid Build Coastguard Worker 182*d57664e9SAndroid Build Coastguard Worker /** 183*d57664e9SAndroid Build Coastguard Worker * Defines how many frames in a sequence to capture. 184*d57664e9SAndroid Build Coastguard Worker */ 185*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_CAPTURE_SKP_FRAMES "debug.hwui.capture_skp_frames" 186*d57664e9SAndroid Build Coastguard Worker 187*d57664e9SAndroid Build Coastguard Worker /** 188*d57664e9SAndroid Build Coastguard Worker * File name and location, where a SKP recording will be saved. 189*d57664e9SAndroid Build Coastguard Worker */ 190*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_CAPTURE_SKP_FILENAME "debug.hwui.skp_filename" 191*d57664e9SAndroid Build Coastguard Worker 192*d57664e9SAndroid Build Coastguard Worker /** 193*d57664e9SAndroid Build Coastguard Worker * Controls whether HWUI will send timing hints to HintManager for 194*d57664e9SAndroid Build Coastguard Worker * better CPU scheduling. Accepted values are "true" and "false". 195*d57664e9SAndroid Build Coastguard Worker */ 196*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_USE_HINT_MANAGER "debug.hwui.use_hint_manager" 197*d57664e9SAndroid Build Coastguard Worker 198*d57664e9SAndroid Build Coastguard Worker /** 199*d57664e9SAndroid Build Coastguard Worker * Percentage of frame time that's used for CPU work. The rest is 200*d57664e9SAndroid Build Coastguard Worker * reserved for GPU work. This is used with use_hint_manager to 201*d57664e9SAndroid Build Coastguard Worker * provide timing hints to HintManager. Accepted values are 202*d57664e9SAndroid Build Coastguard Worker * integer from 1-100. 203*d57664e9SAndroid Build Coastguard Worker */ 204*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_TARGET_CPU_TIME_PERCENTAGE "debug.hwui.target_cpu_time_percent" 205*d57664e9SAndroid Build Coastguard Worker 206*d57664e9SAndroid Build Coastguard Worker /** 207*d57664e9SAndroid Build Coastguard Worker * Property for whether this is running in the emulator. 208*d57664e9SAndroid Build Coastguard Worker */ 209*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_IS_EMULATOR "ro.boot.qemu" 210*d57664e9SAndroid Build Coastguard Worker 211*d57664e9SAndroid Build Coastguard Worker /** 212*d57664e9SAndroid Build Coastguard Worker * Turns on the Skia GPU option "reduceOpsTaskSplitting" which improves GPU 213*d57664e9SAndroid Build Coastguard Worker * efficiency but may increase VRAM consumption. Default is "true". 214*d57664e9SAndroid Build Coastguard Worker */ 215*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_REDUCE_OPS_TASK_SPLITTING "renderthread.skia.reduceopstasksplitting" 216*d57664e9SAndroid Build Coastguard Worker 217*d57664e9SAndroid Build Coastguard Worker /** 218*d57664e9SAndroid Build Coastguard Worker * Enable WebView Overlays feature. 219*d57664e9SAndroid Build Coastguard Worker */ 220*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_WEBVIEW_OVERLAYS_ENABLED "debug.hwui.webview_overlays_enabled" 221*d57664e9SAndroid Build Coastguard Worker 222*d57664e9SAndroid Build Coastguard Worker /** 223*d57664e9SAndroid Build Coastguard Worker * Property for globally GL drawing state. Can be overridden per process with 224*d57664e9SAndroid Build Coastguard Worker * setDrawingEnabled. 225*d57664e9SAndroid Build Coastguard Worker */ 226*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_DRAWING_ENABLED "debug.hwui.drawing_enabled" 227*d57664e9SAndroid Build Coastguard Worker 228*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_MEMORY_POLICY "debug.hwui.app_memory_policy" 229*d57664e9SAndroid Build Coastguard Worker 230*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_8BIT_HDR_HEADROOM "debug.hwui.8bit_hdr_headroom" 231*d57664e9SAndroid Build Coastguard Worker 232*d57664e9SAndroid Build Coastguard Worker /** 233*d57664e9SAndroid Build Coastguard Worker * Whether to initialize GL even when HWUI is running Vulkan. 234*d57664e9SAndroid Build Coastguard Worker */ 235*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_INITIALIZE_GL_ALWAYS "debug.hwui.initialize_gl_always" 236*d57664e9SAndroid Build Coastguard Worker 237*d57664e9SAndroid Build Coastguard Worker #define PROPERTY_SKIP_EGLMANAGER_TELEMETRY "debug.hwui.skip_eglmanager_telemetry" 238*d57664e9SAndroid Build Coastguard Worker 239*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 240*d57664e9SAndroid Build Coastguard Worker // Misc 241*d57664e9SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////// 242*d57664e9SAndroid Build Coastguard Worker 243*d57664e9SAndroid Build Coastguard Worker // Converts a number of mega-bytes into bytes 244*d57664e9SAndroid Build Coastguard Worker #define MB(s) ((s)*1024 * 1024) 245*d57664e9SAndroid Build Coastguard Worker // Converts a number of kilo-bytes into bytes 246*d57664e9SAndroid Build Coastguard Worker #define KB(s) ((s)*1024) 247*d57664e9SAndroid Build Coastguard Worker 248*d57664e9SAndroid Build Coastguard Worker enum class ProfileType { None, Console, Bars }; 249*d57664e9SAndroid Build Coastguard Worker 250*d57664e9SAndroid Build Coastguard Worker enum class OverdrawColorSet { Default = 0, Deuteranomaly }; 251*d57664e9SAndroid Build Coastguard Worker 252*d57664e9SAndroid Build Coastguard Worker enum class RenderPipelineType { SkiaGL, SkiaVulkan, SkiaCpu, NotInitialized = 128 }; 253*d57664e9SAndroid Build Coastguard Worker 254*d57664e9SAndroid Build Coastguard Worker enum class StretchEffectBehavior { 255*d57664e9SAndroid Build Coastguard Worker ShaderHWUI, // Stretch shader in HWUI only, matrix scale in SF 256*d57664e9SAndroid Build Coastguard Worker Shader, // Stretch shader in both HWUI and SF 257*d57664e9SAndroid Build Coastguard Worker UniformScale // Uniform scale stretch everywhere 258*d57664e9SAndroid Build Coastguard Worker }; 259*d57664e9SAndroid Build Coastguard Worker 260*d57664e9SAndroid Build Coastguard Worker enum class DrawingEnabled { NotInitialized, On, Off }; 261*d57664e9SAndroid Build Coastguard Worker 262*d57664e9SAndroid Build Coastguard Worker /** 263*d57664e9SAndroid Build Coastguard Worker * Renderthread-only singleton which manages several static rendering properties. Most of these 264*d57664e9SAndroid Build Coastguard Worker * are driven by system properties which are queried once at initialization, and again if init() 265*d57664e9SAndroid Build Coastguard Worker * is called. 266*d57664e9SAndroid Build Coastguard Worker */ 267*d57664e9SAndroid Build Coastguard Worker class Properties { 268*d57664e9SAndroid Build Coastguard Worker public: 269*d57664e9SAndroid Build Coastguard Worker static bool load(); 270*d57664e9SAndroid Build Coastguard Worker 271*d57664e9SAndroid Build Coastguard Worker static bool debugLayersUpdates; 272*d57664e9SAndroid Build Coastguard Worker static bool debugOverdraw; 273*d57664e9SAndroid Build Coastguard Worker static bool debugTraceGpuResourceCategories; 274*d57664e9SAndroid Build Coastguard Worker static bool showDirtyRegions; 275*d57664e9SAndroid Build Coastguard Worker // TODO: Remove after stabilization period 276*d57664e9SAndroid Build Coastguard Worker static bool skipEmptyFrames; 277*d57664e9SAndroid Build Coastguard Worker static bool useBufferAge; 278*d57664e9SAndroid Build Coastguard Worker static bool enablePartialUpdates; 279*d57664e9SAndroid Build Coastguard Worker static bool enableRenderEffectCache; 280*d57664e9SAndroid Build Coastguard Worker 281*d57664e9SAndroid Build Coastguard Worker // TODO: Move somewhere else? 282*d57664e9SAndroid Build Coastguard Worker static constexpr float textGamma = 1.45f; 283*d57664e9SAndroid Build Coastguard Worker 284*d57664e9SAndroid Build Coastguard Worker static DebugLevel debugLevel; 285*d57664e9SAndroid Build Coastguard Worker static OverdrawColorSet overdrawColorSet; 286*d57664e9SAndroid Build Coastguard Worker 287*d57664e9SAndroid Build Coastguard Worker // Override the value for a subset of properties in this class 288*d57664e9SAndroid Build Coastguard Worker static void overrideProperty(const char* name, const char* value); 289*d57664e9SAndroid Build Coastguard Worker 290*d57664e9SAndroid Build Coastguard Worker static float overrideLightRadius; 291*d57664e9SAndroid Build Coastguard Worker static float overrideLightPosY; 292*d57664e9SAndroid Build Coastguard Worker static float overrideLightPosZ; 293*d57664e9SAndroid Build Coastguard Worker static float overrideAmbientRatio; 294*d57664e9SAndroid Build Coastguard Worker static int overrideAmbientShadowStrength; 295*d57664e9SAndroid Build Coastguard Worker static int overrideSpotShadowStrength; 296*d57664e9SAndroid Build Coastguard Worker 297*d57664e9SAndroid Build Coastguard Worker static ProfileType getProfileType(); 298*d57664e9SAndroid Build Coastguard Worker static RenderPipelineType peekRenderPipelineType(); 299*d57664e9SAndroid Build Coastguard Worker static RenderPipelineType getRenderPipelineType(); 300*d57664e9SAndroid Build Coastguard Worker 301*d57664e9SAndroid Build Coastguard Worker static bool enableHighContrastText; 302*d57664e9SAndroid Build Coastguard Worker 303*d57664e9SAndroid Build Coastguard Worker // Should be used only by test apps 304*d57664e9SAndroid Build Coastguard Worker static bool waitForGpuCompletion; 305*d57664e9SAndroid Build Coastguard Worker static bool forceDrawFrame; 306*d57664e9SAndroid Build Coastguard Worker 307*d57664e9SAndroid Build Coastguard Worker // Should only be set by automated tests to try and filter out 308*d57664e9SAndroid Build Coastguard Worker // any overhead they add 309*d57664e9SAndroid Build Coastguard Worker static bool filterOutTestOverhead; 310*d57664e9SAndroid Build Coastguard Worker 311*d57664e9SAndroid Build Coastguard Worker // Workaround a device lockup in edge cases by switching to async mode 312*d57664e9SAndroid Build Coastguard Worker // instead of the default vsync (b/38372997). Only system_server should hit this. 313*d57664e9SAndroid Build Coastguard Worker // Any existing RenderProxy & Surface combination will be unaffected, only things 314*d57664e9SAndroid Build Coastguard Worker // created after changing this. 315*d57664e9SAndroid Build Coastguard Worker static bool disableVsync; 316*d57664e9SAndroid Build Coastguard Worker 317*d57664e9SAndroid Build Coastguard Worker static bool skpCaptureEnabled; 318*d57664e9SAndroid Build Coastguard Worker 319*d57664e9SAndroid Build Coastguard Worker // For experimentation b/68769804 320*d57664e9SAndroid Build Coastguard Worker static bool enableRTAnimations; 321*d57664e9SAndroid Build Coastguard Worker 322*d57664e9SAndroid Build Coastguard Worker // Used for testing only to change the render pipeline. 323*d57664e9SAndroid Build Coastguard Worker static void overrideRenderPipelineType(RenderPipelineType); 324*d57664e9SAndroid Build Coastguard Worker 325*d57664e9SAndroid Build Coastguard Worker static bool runningInEmulator; 326*d57664e9SAndroid Build Coastguard Worker 327*d57664e9SAndroid Build Coastguard Worker static bool debuggingEnabled; 328*d57664e9SAndroid Build Coastguard Worker static bool isolatedProcess; 329*d57664e9SAndroid Build Coastguard Worker 330*d57664e9SAndroid Build Coastguard Worker static int contextPriority; 331*d57664e9SAndroid Build Coastguard Worker 332*d57664e9SAndroid Build Coastguard Worker static float defaultSdrWhitePoint; 333*d57664e9SAndroid Build Coastguard Worker 334*d57664e9SAndroid Build Coastguard Worker static bool useHintManager; 335*d57664e9SAndroid Build Coastguard Worker static int targetCpuTimePercentage; 336*d57664e9SAndroid Build Coastguard Worker 337*d57664e9SAndroid Build Coastguard Worker static bool enableWebViewOverlays; 338*d57664e9SAndroid Build Coastguard Worker 339*d57664e9SAndroid Build Coastguard Worker static bool isHighEndGfx; 340*d57664e9SAndroid Build Coastguard Worker static bool isLowRam; 341*d57664e9SAndroid Build Coastguard Worker static bool isSystemOrPersistent; 342*d57664e9SAndroid Build Coastguard Worker 343*d57664e9SAndroid Build Coastguard Worker static float maxHdrHeadroomOn8bit; 344*d57664e9SAndroid Build Coastguard Worker 345*d57664e9SAndroid Build Coastguard Worker static bool clipSurfaceViews; 346*d57664e9SAndroid Build Coastguard Worker static bool hdr10bitPlus; 347*d57664e9SAndroid Build Coastguard Worker static bool skipTelemetry; 348*d57664e9SAndroid Build Coastguard Worker static bool queryGlobalPriority; 349*d57664e9SAndroid Build Coastguard Worker 350*d57664e9SAndroid Build Coastguard Worker static int timeoutMultiplier; 351*d57664e9SAndroid Build Coastguard Worker getStretchEffectBehavior()352*d57664e9SAndroid Build Coastguard Worker static StretchEffectBehavior getStretchEffectBehavior() { 353*d57664e9SAndroid Build Coastguard Worker return stretchEffectBehavior; 354*d57664e9SAndroid Build Coastguard Worker } 355*d57664e9SAndroid Build Coastguard Worker setIsHighEndGfx(bool isHighEndGfx)356*d57664e9SAndroid Build Coastguard Worker static void setIsHighEndGfx(bool isHighEndGfx) { 357*d57664e9SAndroid Build Coastguard Worker Properties::isHighEndGfx = isHighEndGfx; 358*d57664e9SAndroid Build Coastguard Worker stretchEffectBehavior = isHighEndGfx ? 359*d57664e9SAndroid Build Coastguard Worker StretchEffectBehavior::ShaderHWUI : 360*d57664e9SAndroid Build Coastguard Worker StretchEffectBehavior::UniformScale; 361*d57664e9SAndroid Build Coastguard Worker } 362*d57664e9SAndroid Build Coastguard Worker setIsLowRam(bool isLowRam)363*d57664e9SAndroid Build Coastguard Worker static void setIsLowRam(bool isLowRam) { Properties::isLowRam = isLowRam; } 364*d57664e9SAndroid Build Coastguard Worker setIsSystemOrPersistent(bool isSystemOrPersistent)365*d57664e9SAndroid Build Coastguard Worker static void setIsSystemOrPersistent(bool isSystemOrPersistent) { 366*d57664e9SAndroid Build Coastguard Worker Properties::isSystemOrPersistent = isSystemOrPersistent; 367*d57664e9SAndroid Build Coastguard Worker } 368*d57664e9SAndroid Build Coastguard Worker 369*d57664e9SAndroid Build Coastguard Worker /** 370*d57664e9SAndroid Build Coastguard Worker * Used for testing. Typical configuration of stretch behavior is done 371*d57664e9SAndroid Build Coastguard Worker * through setIsHighEndGfx 372*d57664e9SAndroid Build Coastguard Worker */ setStretchEffectBehavior(StretchEffectBehavior behavior)373*d57664e9SAndroid Build Coastguard Worker static void setStretchEffectBehavior(StretchEffectBehavior behavior) { 374*d57664e9SAndroid Build Coastguard Worker stretchEffectBehavior = behavior; 375*d57664e9SAndroid Build Coastguard Worker } 376*d57664e9SAndroid Build Coastguard Worker 377*d57664e9SAndroid Build Coastguard Worker // Represents if drawing is enabled. Should only be Off in headless testing environments 378*d57664e9SAndroid Build Coastguard Worker static DrawingEnabled drawingEnabled; 379*d57664e9SAndroid Build Coastguard Worker static bool isDrawingEnabled(); 380*d57664e9SAndroid Build Coastguard Worker static void setDrawingEnabled(bool enable); 381*d57664e9SAndroid Build Coastguard Worker 382*d57664e9SAndroid Build Coastguard Worker static bool initializeGlAlways(); 383*d57664e9SAndroid Build Coastguard Worker static bool resampleGainmapRegions(); 384*d57664e9SAndroid Build Coastguard Worker 385*d57664e9SAndroid Build Coastguard Worker private: 386*d57664e9SAndroid Build Coastguard Worker static StretchEffectBehavior stretchEffectBehavior; 387*d57664e9SAndroid Build Coastguard Worker static ProfileType sProfileType; 388*d57664e9SAndroid Build Coastguard Worker static bool sDisableProfileBars; 389*d57664e9SAndroid Build Coastguard Worker static RenderPipelineType sRenderPipelineType; 390*d57664e9SAndroid Build Coastguard Worker }; // class Caches 391*d57664e9SAndroid Build Coastguard Worker 392*d57664e9SAndroid Build Coastguard Worker } // namespace uirenderer 393*d57664e9SAndroid Build Coastguard Worker } // namespace android 394*d57664e9SAndroid Build Coastguard Worker 395*d57664e9SAndroid Build Coastguard Worker #endif // ANDROID_HWUI_PROPERTIES_H 396