Properties.h revision 0df6209a02d0ea99d2dff3a46ed9febd5925df4b
16b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/* 26b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Copyright (C) 2010 The Android Open Source Project 36b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 46b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Licensed under the Apache License, Version 2.0 (the "License"); 56b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * you may not use this file except in compliance with the License. 66b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * You may obtain a copy of the License at 76b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 86b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * http://www.apache.org/licenses/LICENSE-2.0 96b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 106b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Unless required by applicable law or agreed to in writing, software 116b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * distributed under the License is distributed on an "AS IS" BASIS, 126b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * See the License for the specific language governing permissions and 146b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * limitations under the License. 156b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 166b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 176b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#ifndef ANDROID_HWUI_PROPERTIES_H 186b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define ANDROID_HWUI_PROPERTIES_H 196b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 206b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include <cutils/properties.h> 216b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 226b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 236b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * This file contains the list of system properties used to configure libhwui. 246b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 256b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 266b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huanamespace android { 276b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huanamespace uirenderer { 286b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 296b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 306b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Compile-time properties 316b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 326b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 336b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Textures used by layers must have dimensions multiples of this number 346b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define LAYER_SIZE 64 356b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 366b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Defines the size in bits of the stencil buffer for the framebuffer 376b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Note: Only 1 bit is required for clipping but more bits are required 386b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// to properly implement overdraw debugging 396b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define STENCIL_BUFFER_SIZE 8 406b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 416b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 426b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Debug properties 436b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 446b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 456b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 466b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Debug level for app developers. The value is a numeric value defined 476b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * by the DebugLevel enum below. 486b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 496b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEBUG "debug.hwui.level" 506b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 516b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 526b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Debug levels. Debug levels are used as flags. 536b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 546b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaenum DebugLevel { 556b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua kDebugDisabled = 0, 566b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua kDebugMemory = 1, 576b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua kDebugCaches = 2, 586b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua kDebugMoreCaches = kDebugMemory | kDebugCaches 596b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; 606b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 616b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 626b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Used to enable/disable layers update debugging. The accepted values are 636b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "true" and "false". The default value is "false". 646b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 656b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEBUG_LAYERS_UPDATES "debug.hwui.show_layers_updates" 666b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 676b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 686b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Used to enable/disable overdraw debugging. 696b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 706b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * The accepted values are 716b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "show", to show overdraw 726b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "show_deuteranomaly", to show overdraw if you suffer from Deuteranomaly 736b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "count", to show an overdraw counter 746b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "false", to disable overdraw debugging 756b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 766b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * The default value is "false". 776b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 786b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEBUG_OVERDRAW "debug.hwui.overdraw" 796b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 806b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 816b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * System property used to enable or disable hardware rendering profiling. 826b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * The default value of this property is assumed to be false. 836b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 846b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * When profiling is enabled, the adb shell dumpsys gfxinfo command will 856b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * output extra information about the time taken to execute by the last 866b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * frames. 876b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 886b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Possible values: 896b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "true", to enable profiling 906b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "visual_bars", to enable profiling and visualize the results on screen 916b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "false", to disable profiling 926b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 936b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_PROFILE "debug.hwui.profile" 946b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_PROFILE_VISUALIZE_BARS "visual_bars" 956b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 966b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 976b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Used to enable/disable non-rectangular clipping debugging. 986b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 996b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * The accepted values are: 1006b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "highlight", drawing commands clipped by the stencil will 1016b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * be colored differently 1026b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "region", renders the clipping region on screen whenever 1036b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * the stencil is set 1046b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "hide", don't show the clip 1056b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 1066b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * The default value is "hide". 1076b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1086b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEBUG_STENCIL_CLIP "debug.hwui.show_non_rect_clip" 1096b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1106b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1116b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Turn on to draw dirty regions every other frame. 1126b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 1136b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Possible values: 1146b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "true", to enable dirty regions debugging 1156b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "false", to disable dirty regions debugging 1166b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1176b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEBUG_SHOW_DIRTY_REGIONS "debug.hwui.show_dirty_regions" 1186b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1196b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1206b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Disables draw operation deferral if set to "true", forcing draw 1216b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * commands to be issued to OpenGL in order, and processed in sequence 1226b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * with state-manipulation canvas commands. 1236b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1246b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DISABLE_DRAW_DEFER "debug.hwui.disable_draw_defer" 1256b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1266b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1276b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Used to disable draw operation reordering when deferring draw operations 1286b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Has no effect if PROPERTY_DISABLE_DRAW_DEFER is set to "true" 1296b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1306b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DISABLE_DRAW_REORDER "debug.hwui.disable_draw_reorder" 1316b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1326b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1336b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Setting this property will enable or disable the dropping of frames with 1346b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * empty damage. Default is "true". 1356b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1366b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_SKIP_EMPTY_DAMAGE "debug.hwui.skip_empty_damage" 1376b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1386b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1396b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Controls whether or not HWUI will use the EGL_EXT_buffer_age extension 1406b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * to do partial invalidates. Setting this to "false" will fall back to 1416b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * using BUFFER_PRESERVED instead 1426b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Default is "true" 1436b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1446b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_USE_BUFFER_AGE "debug.hwui.use_buffer_age" 1456b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1466b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1476b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Setting this to "false" will force HWUI to always do full-redraws of the surface. 1486b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * This will disable the use of EGL_EXT_buffer_age and BUFFER_PRESERVED. 1496b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Default is "true" 1506b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1516b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_ENABLE_PARTIAL_UPDATES "debug.hwui.use_partial_updates" 1526b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1536b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_FILTER_TEST_OVERHEAD "debug.hwui.filter_test_overhead" 1546b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1556b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1566b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Allows to set rendering pipeline mode to OpenGL (default), Skia OpenGL 1576b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * or Vulkan. 1586b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1596b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DEFAULT_RENDERER "debug.hwui.default_renderer" 1606b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1616b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 1626b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Runtime configuration properties 1636b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 1646b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1656b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1666b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Used to enable/disable scissor optimization. The accepted values are 1676b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * "true" and "false". The default value is "false". 1686b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 1696b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * When scissor optimization is enabled, libhwui will attempt to 1706b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * minimize the use of scissor by selectively enabling and disabling the 1716b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * GL scissor test. 1726b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * When the optimization is disabled, OpenGLRenderer will keep the GL 1736b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * scissor test enabled and change the scissor rect as needed. 1746b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Some GPUs (for instance the SGX 540) perform better when changing 1756b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * the scissor rect often than when enabling/disabling the scissor test 1766b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * often. 1776b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1786b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DISABLE_SCISSOR_OPTIMIZATION "ro.hwui.disable_scissor_opt" 1796b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1806b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 1816b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Indicates whether PBOs can be used to back pixel buffers. 1826b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Accepted values are "true" and "false". Default is true. 1836b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 1846b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_ENABLE_GPU_PIXEL_BUFFERS "ro.hwui.use_gpu_pixel_buffers" 1856b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1866b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// These properties are defined in mega-bytes 1876b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXTURE_CACHE_SIZE "ro.hwui.texture_cache_size" 1886b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_LAYER_CACHE_SIZE "ro.hwui.layer_cache_size" 1896b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_RENDER_BUFFER_CACHE_SIZE "ro.hwui.r_buffer_cache_size" 1906b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_GRADIENT_CACHE_SIZE "ro.hwui.gradient_cache_size" 1916b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_PATH_CACHE_SIZE "ro.hwui.path_cache_size" 1926b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_VERTEX_CACHE_SIZE "ro.hwui.vertex_cache_size" 1936b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_PATCH_CACHE_SIZE "ro.hwui.patch_cache_size" 1946b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_DROP_SHADOW_CACHE_SIZE "ro.hwui.drop_shadow_cache_size" 1956b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_FBO_CACHE_SIZE "ro.hwui.fbo_cache_size" 1966b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 1976b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// These properties are defined in percentage (range 0..1) 1986b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXTURE_CACHE_FLUSH_RATE "ro.hwui.texture_cache_flushrate" 1996b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2006b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// These properties are defined in pixels 2016b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXT_SMALL_CACHE_WIDTH "ro.hwui.text_small_cache_width" 2026b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXT_SMALL_CACHE_HEIGHT "ro.hwui.text_small_cache_height" 2036b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXT_LARGE_CACHE_WIDTH "ro.hwui.text_large_cache_width" 2046b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXT_LARGE_CACHE_HEIGHT "ro.hwui.text_large_cache_height" 2056b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2066b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Gamma (>= 1.0, <= 10.0) 2076b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define PROPERTY_TEXT_GAMMA "hwui.text_gamma" 2086b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2096b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 2106b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Default property values 2116b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 2126b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2136b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_TEXTURE_CACHE_SIZE 24.0f 2146b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_LAYER_CACHE_SIZE 16.0f 2156b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_RENDER_BUFFER_CACHE_SIZE 2.0f 2166b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_PATH_CACHE_SIZE 4.0f 2176b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_VERTEX_CACHE_SIZE 1.0f 2186b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_PATCH_CACHE_SIZE 128.0f // in kB 2196b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_GRADIENT_CACHE_SIZE 0.5f 2206b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_DROP_SHADOW_CACHE_SIZE 2.0f 2216b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_FBO_CACHE_SIZE 0 2226b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2236b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_TEXTURE_CACHE_FLUSH_RATE 0.6f 2246b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2256b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_TEXT_GAMMA 1.4f 2266b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2276b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// cap to 256 to limite paths in the path cache 2286b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define DEFAULT_PATH_TEXTURE_CAP 256 2296b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2306b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 2316b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Misc 2326b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/////////////////////////////////////////////////////////////////////////////// 2336b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2346b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Converts a number of mega-bytes into bytes 2356b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define MB(s) ((s) * 1024 * 1024) 2366b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// Converts a number of kilo-bytes into bytes 2376b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#define KB(s) ((s) * 1024) 2386b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2396b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaenum class ProfileType { 2406b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua None, 2416b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua Console, 2426b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua Bars 2436b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; 2446b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2456b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaenum class OverdrawColorSet { 2466b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua Default = 0, 2476b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua Deuteranomaly 2486b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; 2496b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2506b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaenum class StencilClipDebug { 2516b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua Hide, 2526b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua ShowHighlight, 2536b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua ShowRegion 2546b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; 2556b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2566b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaenum class RenderPipelineType { 2576b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua OpenGL = 0, 2586b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua SkiaGL, 2596b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua SkiaVulkan, 2606b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua NotInitialized = 128 2616b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; 2626b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2636b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/** 2646b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Renderthread-only singleton which manages several static rendering properties. Most of these 2656b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * are driven by system properties which are queried once at initialization, and again if init() 2666b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * is called. 2676b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 2686b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaclass Properties { 2696b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huapublic: 2706b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool load(); 2716b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2726b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool drawDeferDisabled; 2736b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool drawReorderDisabled; 2746b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool debugLayersUpdates; 2756b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool debugOverdraw; 2766b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool showDirtyRegions; 2776b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua // TODO: Remove after stabilization period 2786b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool skipEmptyFrames; 2796b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool useBufferAge; 2806b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool enablePartialUpdates; 2816b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2826b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float textGamma; 2836b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2846b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int fboCacheSize; 2856b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int gradientCacheSize; 2866b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int layerPoolSize; 2876b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int patchCacheSize; 2886b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int pathCacheSize; 2896b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int renderBufferCacheSize; 2906b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int tessellationCacheSize; 2916b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int textDropShadowCacheSize; 2926b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int textureCacheSize; 2936b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float textureCacheFlushRate; 2946b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2956b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static DebugLevel debugLevel; 2966b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static OverdrawColorSet overdrawColorSet; 2976b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static StencilClipDebug debugStencilClip; 2986b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 2996b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua // Override the value for a subset of properties in this class 3006b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static void overrideProperty(const char* name, const char* value); 3016b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3026b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float overrideLightRadius; 3036b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float overrideLightPosY; 3046b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float overrideLightPosZ; 3056b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static float overrideAmbientRatio; 3066b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int overrideAmbientShadowStrength; 3076b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static int overrideSpotShadowStrength; 3086b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3096b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static ProfileType getProfileType(); 3106b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static RenderPipelineType getRenderPipelineType(); 3116b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool isSkiaEnabled(); 3126b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3136b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua // Should be used only by test apps 3146b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool waitForGpuCompletion; 3156b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool forceDrawFrame; 3166b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3176b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua // Should only be set by automated tests to try and filter out 3186b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua // any overhead they add 3196b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool filterOutTestOverhead; 3206b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3216b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huaprivate: 3226b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static ProfileType sProfileType; 3236b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static bool sDisableProfileBars; 3246b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua static RenderPipelineType sRenderPipelineType; 3256b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3266b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; // class Caches 3276b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3286b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; // namespace uirenderer 3296b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua}; // namespace android 3306b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 3316b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#endif // ANDROID_HWUI_PROPERTIES_H 3326b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua