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