xref: /aosp_15_r20/frameworks/base/libs/hwui/Properties.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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