xref: /aosp_15_r20/frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker# Copyright (C) 2019 The Android Open Source Project
2*38e8c45fSAndroid Build Coastguard Worker#
3*38e8c45fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the License);
4*38e8c45fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*38e8c45fSAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*38e8c45fSAndroid Build Coastguard Worker#
7*38e8c45fSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
8*38e8c45fSAndroid Build Coastguard Worker#
9*38e8c45fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*38e8c45fSAndroid Build Coastguard Worker# distributed under the License is distributed on an AS IS BASIS,
11*38e8c45fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*38e8c45fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*38e8c45fSAndroid Build Coastguard Worker# limitations under the License.
14*38e8c45fSAndroid Build Coastguard Worker
15*38e8c45fSAndroid Build Coastguard Workermodule: "android.sysprop.SurfaceFlingerProperties"
16*38e8c45fSAndroid Build Coastguard Workerowner: Platform
17*38e8c45fSAndroid Build Coastguard Worker
18*38e8c45fSAndroid Build Coastguard Worker# The following two properties define (respectively):
19*38e8c45fSAndroid Build Coastguard Worker#
20*38e8c45fSAndroid Build Coastguard Worker# - The phase offset between hardware vsync and when apps are woken up by the
21*38e8c45fSAndroid Build Coastguard Worker#   Choreographer callback
22*38e8c45fSAndroid Build Coastguard Worker# - The phase offset between hardware vsync and when SurfaceFlinger wakes up
23*38e8c45fSAndroid Build Coastguard Worker#   to consume input
24*38e8c45fSAndroid Build Coastguard Worker# Their values may be tuned to trade off between display pipeline latency (both
25*38e8c45fSAndroid Build Coastguard Worker# overall latency and the lengths of the app --> SF and SF --> display phases)
26*38e8c45fSAndroid Build Coastguard Worker# and frame delivery jitter (which typically manifests as "jank" or "jerkiness"
27*38e8c45fSAndroid Build Coastguard Worker# while interacting with the device). The default values must produce a
28*38e8c45fSAndroid Build Coastguard Worker# relatively low amount of jitter at the expense of roughly two frames of
29*38e8c45fSAndroid Build Coastguard Worker# app --> display latency, and unless significant testing is performed to avoid
30*38e8c45fSAndroid Build Coastguard Worker# increased display jitter (both manual investigation using systrace [1] and
31*38e8c45fSAndroid Build Coastguard Worker# automated testing using dumpsys gfxinfo [2] are recommended), they should not
32*38e8c45fSAndroid Build Coastguard Worker# be modified.
33*38e8c45fSAndroid Build Coastguard Worker#
34*38e8c45fSAndroid Build Coastguard Worker# [1] https://developer.android.com/studio/profile/systrace.html
35*38e8c45fSAndroid Build Coastguard Worker# [2] https://developer.android.com/training/testing/performance.html
36*38e8c45fSAndroid Build Coastguard Workerprop {
37*38e8c45fSAndroid Build Coastguard Worker    api_name: "vsync_event_phase_offset_ns"
38*38e8c45fSAndroid Build Coastguard Worker    type: Long
39*38e8c45fSAndroid Build Coastguard Worker    scope: Public
40*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
41*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.vsync_event_phase_offset_ns"
42*38e8c45fSAndroid Build Coastguard Worker}
43*38e8c45fSAndroid Build Coastguard Worker
44*38e8c45fSAndroid Build Coastguard Workerprop {
45*38e8c45fSAndroid Build Coastguard Worker    api_name: "vsync_sf_event_phase_offset_ns"
46*38e8c45fSAndroid Build Coastguard Worker    type: Long
47*38e8c45fSAndroid Build Coastguard Worker    scope: Public
48*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
49*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.vsync_sf_event_phase_offset_ns"
50*38e8c45fSAndroid Build Coastguard Worker}
51*38e8c45fSAndroid Build Coastguard Worker
52*38e8c45fSAndroid Build Coastguard Worker# Instruct the Render Engine to use EGL_IMG_context_priority hint if available.
53*38e8c45fSAndroid Build Coastguard Workerprop {
54*38e8c45fSAndroid Build Coastguard Worker    api_name: "use_context_priority"
55*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
56*38e8c45fSAndroid Build Coastguard Worker    scope: Public
57*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
58*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.use_context_priority"
59*38e8c45fSAndroid Build Coastguard Worker}
60*38e8c45fSAndroid Build Coastguard Worker
61*38e8c45fSAndroid Build Coastguard Worker# Controls the number of buffers SurfaceFlinger will allocate for use in FramebufferSurface.
62*38e8c45fSAndroid Build Coastguard Workerprop {
63*38e8c45fSAndroid Build Coastguard Worker    api_name: "max_frame_buffer_acquired_buffers"
64*38e8c45fSAndroid Build Coastguard Worker    type: Long
65*38e8c45fSAndroid Build Coastguard Worker    scope: Public
66*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
67*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.max_frame_buffer_acquired_buffers"
68*38e8c45fSAndroid Build Coastguard Worker}
69*38e8c45fSAndroid Build Coastguard Worker
70*38e8c45fSAndroid Build Coastguard Worker# Controls the maximum width in pixels that the graphics pipeline can support for GPU fallback
71*38e8c45fSAndroid Build Coastguard Worker# composition. For example, 8k displays with 4k GPUs, or 4k displays with 2k GPUs.
72*38e8c45fSAndroid Build Coastguard Workerprop {
73*38e8c45fSAndroid Build Coastguard Worker    api_name: "max_graphics_width"
74*38e8c45fSAndroid Build Coastguard Worker    type: Integer
75*38e8c45fSAndroid Build Coastguard Worker    scope: Public
76*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
77*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.max_graphics_width"
78*38e8c45fSAndroid Build Coastguard Worker}
79*38e8c45fSAndroid Build Coastguard Worker
80*38e8c45fSAndroid Build Coastguard Worker# Controls the maximum height in pixels that the graphics pipeline can support for GPU fallback
81*38e8c45fSAndroid Build Coastguard Worker# composition. For example, 8k displays with 4k GPUs, or 4k displays with 2k GPUs.
82*38e8c45fSAndroid Build Coastguard Workerprop {
83*38e8c45fSAndroid Build Coastguard Worker    api_name: "max_graphics_height"
84*38e8c45fSAndroid Build Coastguard Worker    type: Integer
85*38e8c45fSAndroid Build Coastguard Worker    scope: Public
86*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
87*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.max_graphics_height"
88*38e8c45fSAndroid Build Coastguard Worker}
89*38e8c45fSAndroid Build Coastguard Worker
90*38e8c45fSAndroid Build Coastguard Worker# hasWideColorDisplay indicates that the device has
91*38e8c45fSAndroid Build Coastguard Worker# or can support a wide-color display, e.g. color space
92*38e8c45fSAndroid Build Coastguard Worker# greater than sRGB. Typical display may have same
93*38e8c45fSAndroid Build Coastguard Worker# color primaries as DCI-P3.
94*38e8c45fSAndroid Build Coastguard Worker# Indicate support for this feature by setting
95*38e8c45fSAndroid Build Coastguard Worker# TARGET_HAS_WIDE_COLOR_DISPLAY to true in BoardConfig.mk
96*38e8c45fSAndroid Build Coastguard Worker# This also means that the device is color managed.
97*38e8c45fSAndroid Build Coastguard Worker# A color managed device will use the appropriate
98*38e8c45fSAndroid Build Coastguard Worker# display mode depending on the content on the screen.
99*38e8c45fSAndroid Build Coastguard Worker# Default is sRGB.
100*38e8c45fSAndroid Build Coastguard Workerprop {
101*38e8c45fSAndroid Build Coastguard Worker    api_name: "has_wide_color_display"
102*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
103*38e8c45fSAndroid Build Coastguard Worker    scope: Public
104*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
105*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.has_wide_color_display"
106*38e8c45fSAndroid Build Coastguard Worker}
107*38e8c45fSAndroid Build Coastguard Worker
108*38e8c45fSAndroid Build Coastguard Worker# Indicates if Sync framework is available. Sync framework provides fence
109*38e8c45fSAndroid Build Coastguard Worker# mechanism which significantly reduces buffer processing latency.
110*38e8c45fSAndroid Build Coastguard Workerprop {
111*38e8c45fSAndroid Build Coastguard Worker    api_name: "running_without_sync_framework"
112*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
113*38e8c45fSAndroid Build Coastguard Worker    scope: Public
114*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
115*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.running_without_sync_framework"
116*38e8c45fSAndroid Build Coastguard Worker}
117*38e8c45fSAndroid Build Coastguard Worker
118*38e8c45fSAndroid Build Coastguard Worker# hwHDRDisplay indicates that the device has an High Dynamic Range display.
119*38e8c45fSAndroid Build Coastguard Worker# A display is considered High Dynamic Range if it
120*38e8c45fSAndroid Build Coastguard Worker#
121*38e8c45fSAndroid Build Coastguard Worker#     1. is a wide color gamut display, typically DCI-P3 or lager
122*38e8c45fSAndroid Build Coastguard Worker#     2. has high luminance capability, typically 540 nits or higher at 10% OPR
123*38e8c45fSAndroid Build Coastguard Worker#
124*38e8c45fSAndroid Build Coastguard Worker# Indicate support for this feature by setting
125*38e8c45fSAndroid Build Coastguard Worker# ro.surface_flinger.has_HDR_display to true in device.mk
126*38e8c45fSAndroid Build Coastguard Worker# ro.surface_flinger.has_wide_color_display must be set to true when
127*38e8c45fSAndroid Build Coastguard Worker# ro.surface_flinger.has_HDR_display is true.
128*38e8c45fSAndroid Build Coastguard Workerprop {
129*38e8c45fSAndroid Build Coastguard Worker    api_name: "has_HDR_display"
130*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
131*38e8c45fSAndroid Build Coastguard Worker    scope: Public
132*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
133*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.has_HDR_display"
134*38e8c45fSAndroid Build Coastguard Worker}
135*38e8c45fSAndroid Build Coastguard Worker
136*38e8c45fSAndroid Build Coastguard Worker# Specify the offset in nanoseconds to add to vsync time when timestamping present fences.
137*38e8c45fSAndroid Build Coastguard Workerprop {
138*38e8c45fSAndroid Build Coastguard Worker    api_name: "present_time_offset_from_vsync_ns"
139*38e8c45fSAndroid Build Coastguard Worker    type: Long
140*38e8c45fSAndroid Build Coastguard Worker    scope: Public
141*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
142*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.present_time_offset_from_vsync_ns"
143*38e8c45fSAndroid Build Coastguard Worker}
144*38e8c45fSAndroid Build Coastguard Worker
145*38e8c45fSAndroid Build Coastguard Worker# Some hardware can do RGB->YUV conversion more efficiently in hardware
146*38e8c45fSAndroid Build Coastguard Worker# controlled by HWC than in hardware controlled by the video encoder.
147*38e8c45fSAndroid Build Coastguard Worker# This instruct VirtualDisplaySurface to use HWC for such conversion on
148*38e8c45fSAndroid Build Coastguard Worker# GL composition.
149*38e8c45fSAndroid Build Coastguard Workerprop {
150*38e8c45fSAndroid Build Coastguard Worker    api_name: "force_hwc_copy_for_virtual_displays"
151*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
152*38e8c45fSAndroid Build Coastguard Worker    scope: Public
153*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
154*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.force_hwc_copy_for_virtual_displays"
155*38e8c45fSAndroid Build Coastguard Worker}
156*38e8c45fSAndroid Build Coastguard Worker
157*38e8c45fSAndroid Build Coastguard Worker# Maximum dimension supported by HWC for virtual display.
158*38e8c45fSAndroid Build Coastguard Worker# Must be equals to min(max_width, max_height).
159*38e8c45fSAndroid Build Coastguard Workerprop {
160*38e8c45fSAndroid Build Coastguard Worker    api_name: "max_virtual_display_dimension"
161*38e8c45fSAndroid Build Coastguard Worker    type: Long
162*38e8c45fSAndroid Build Coastguard Worker    scope: Public
163*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
164*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.max_virtual_display_dimension"
165*38e8c45fSAndroid Build Coastguard Worker}
166*38e8c45fSAndroid Build Coastguard Worker
167*38e8c45fSAndroid Build Coastguard Worker# Return true if surface flinger should use vr flinger for compatible vr
168*38e8c45fSAndroid Build Coastguard Worker# apps, false otherwise. Devices that will never be running vr apps should
169*38e8c45fSAndroid Build Coastguard Worker# return false to avoid extra resource usage. Daydream ready devices must
170*38e8c45fSAndroid Build Coastguard Worker# return true for full vr support.
171*38e8c45fSAndroid Build Coastguard Workerprop {
172*38e8c45fSAndroid Build Coastguard Worker    api_name: "use_vr_flinger"
173*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
174*38e8c45fSAndroid Build Coastguard Worker    scope: Public
175*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
176*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.use_vr_flinger"
177*38e8c45fSAndroid Build Coastguard Worker}
178*38e8c45fSAndroid Build Coastguard Worker
179*38e8c45fSAndroid Build Coastguard Worker# Returns true if surface flinger should start
180*38e8c45fSAndroid Build Coastguard Worker# [email protected]::IAllocator service.
181*38e8c45fSAndroid Build Coastguard Workerprop {
182*38e8c45fSAndroid Build Coastguard Worker    api_name: "start_graphics_allocator_service"
183*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
184*38e8c45fSAndroid Build Coastguard Worker    scope: Public
185*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
186*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.start_graphics_allocator_service"
187*38e8c45fSAndroid Build Coastguard Worker}
188*38e8c45fSAndroid Build Coastguard Worker
189*38e8c45fSAndroid Build Coastguard Worker# Returns the orientation of the primary display device.
190*38e8c45fSAndroid Build Coastguard Workerprop {
191*38e8c45fSAndroid Build Coastguard Worker    api_name: "primary_display_orientation"
192*38e8c45fSAndroid Build Coastguard Worker    type: Enum
193*38e8c45fSAndroid Build Coastguard Worker    enum_values: "ORIENTATION_0|ORIENTATION_90|ORIENTATION_180|ORIENTATION_270"
194*38e8c45fSAndroid Build Coastguard Worker    scope: Public
195*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
196*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.primary_display_orientation"
197*38e8c45fSAndroid Build Coastguard Worker}
198*38e8c45fSAndroid Build Coastguard Worker
199*38e8c45fSAndroid Build Coastguard Worker# useColorManagement indicates whether SurfaceFlinger should manage color
200*38e8c45fSAndroid Build Coastguard Worker# by switching to appropriate color mode automatically depending on the
201*38e8c45fSAndroid Build Coastguard Worker# Dataspace of the surfaces on screen.
202*38e8c45fSAndroid Build Coastguard Worker# DEPRECATED: SurfaceFlinger is always color managed.
203*38e8c45fSAndroid Build Coastguard Workerprop {
204*38e8c45fSAndroid Build Coastguard Worker    api_name: "use_color_management"
205*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
206*38e8c45fSAndroid Build Coastguard Worker    scope: Public
207*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
208*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.use_color_management"
209*38e8c45fSAndroid Build Coastguard Worker}
210*38e8c45fSAndroid Build Coastguard Worker
211*38e8c45fSAndroid Build Coastguard Worker# The following four properties define:
212*38e8c45fSAndroid Build Coastguard Worker# Returns the default data space and pixel format that SurfaceFlinger
213*38e8c45fSAndroid Build Coastguard Worker# expects to receive and output as well as the wide color gamut data space
214*38e8c45fSAndroid Build Coastguard Worker# and pixel format for wide color gamut surfaces.
215*38e8c45fSAndroid Build Coastguard Worker# To determine the data space and pixel format, there are a few things
216*38e8c45fSAndroid Build Coastguard Worker# we recommend to consider:
217*38e8c45fSAndroid Build Coastguard Worker#
218*38e8c45fSAndroid Build Coastguard Worker#   1. Hardware composer's capability to composite contents with the chosen
219*38e8c45fSAndroid Build Coastguard Worker#      data space and pixel format efficiently;
220*38e8c45fSAndroid Build Coastguard Worker#   2. Hardware composer's ability to composite contents when sRGB contents
221*38e8c45fSAndroid Build Coastguard Worker#      and the chosen wide color gamut data space contents coexist;
222*38e8c45fSAndroid Build Coastguard Worker#   3. For better blending, consider using pixel format where the alpha
223*38e8c45fSAndroid Build Coastguard Worker#      channel has as many bits as the RGB color channel.
224*38e8c45fSAndroid Build Coastguard Worker#   4. Memory consumption and efficient buffer compression when considering
225*38e8c45fSAndroid Build Coastguard Worker#      more bits in pixel format.
226*38e8c45fSAndroid Build Coastguard Worker
227*38e8c45fSAndroid Build Coastguard Worker# dataspace is the default data space that SurfaceFlinger expects.
228*38e8c45fSAndroid Build Coastguard Worker# The data space must not be Dataspace::UNKNOWN, if unspecified,
229*38e8c45fSAndroid Build Coastguard Worker# the default data space is Dataspace::V0_SRGB;
230*38e8c45fSAndroid Build Coastguard Workerprop {
231*38e8c45fSAndroid Build Coastguard Worker    api_name: "default_composition_dataspace"
232*38e8c45fSAndroid Build Coastguard Worker    type: Long
233*38e8c45fSAndroid Build Coastguard Worker    scope: Public
234*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
235*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.default_composition_dataspace"
236*38e8c45fSAndroid Build Coastguard Worker}
237*38e8c45fSAndroid Build Coastguard Worker
238*38e8c45fSAndroid Build Coastguard Worker# pixelFormat is the default pixel format that SurfaceFlinger
239*38e8c45fSAndroid Build Coastguard Worker# expects. If unspecified, the default pixel format is
240*38e8c45fSAndroid Build Coastguard Worker# PixelFormat::RGBA_8888.
241*38e8c45fSAndroid Build Coastguard Workerprop {
242*38e8c45fSAndroid Build Coastguard Worker    api_name: "default_composition_pixel_format"
243*38e8c45fSAndroid Build Coastguard Worker    type: Integer
244*38e8c45fSAndroid Build Coastguard Worker    scope: Public
245*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
246*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.default_composition_pixel_format"
247*38e8c45fSAndroid Build Coastguard Worker}
248*38e8c45fSAndroid Build Coastguard Worker
249*38e8c45fSAndroid Build Coastguard Worker# wcgDataspace is the data space that SurfaceFlinger expects for
250*38e8c45fSAndroid Build Coastguard Worker# wide color gamut surfaces.
251*38e8c45fSAndroid Build Coastguard Worker# When hasWideColorDisplay returns true, this API must return a
252*38e8c45fSAndroid Build Coastguard Worker# valid wide color gamut data space.
253*38e8c45fSAndroid Build Coastguard Worker# The data space must not be UNKNOWN, if unspecified, the data space
254*38e8c45fSAndroid Build Coastguard Worker# is V0_SRGB by default, which essentially indicates there's no wide
255*38e8c45fSAndroid Build Coastguard Worker# color gamut, meaning hasWideColorDisplay returns false.
256*38e8c45fSAndroid Build Coastguard Workerprop {
257*38e8c45fSAndroid Build Coastguard Worker    api_name: "wcg_composition_dataspace"
258*38e8c45fSAndroid Build Coastguard Worker    type: Long
259*38e8c45fSAndroid Build Coastguard Worker    scope: Public
260*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
261*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.wcg_composition_dataspace"
262*38e8c45fSAndroid Build Coastguard Worker}
263*38e8c45fSAndroid Build Coastguard Worker
264*38e8c45fSAndroid Build Coastguard Worker# wcgPixelFormat is the pixel format that SurfaceFlinger expects for
265*38e8c45fSAndroid Build Coastguard Worker# wide color gamut surfaces. If unspecified, the pixel format is
266*38e8c45fSAndroid Build Coastguard Worker# PixelFormat::RGBA_8888 by default.
267*38e8c45fSAndroid Build Coastguard Workerprop {
268*38e8c45fSAndroid Build Coastguard Worker    api_name: "wcg_composition_pixel_format"
269*38e8c45fSAndroid Build Coastguard Worker    type: Integer
270*38e8c45fSAndroid Build Coastguard Worker    scope: Public
271*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
272*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.wcg_composition_pixel_format"
273*38e8c45fSAndroid Build Coastguard Worker}
274*38e8c45fSAndroid Build Coastguard Worker
275*38e8c45fSAndroid Build Coastguard Worker# colorSpaceAgnosticDataspace specifies the data space that
276*38e8c45fSAndroid Build Coastguard Worker# SurfaceFlinger expects for surfaces which are color space agnostic.
277*38e8c45fSAndroid Build Coastguard Worker# The variable works only when useColorManagement is specified. If
278*38e8c45fSAndroid Build Coastguard Worker# unspecified, the data space follows what SurfaceFlinger expects for
279*38e8c45fSAndroid Build Coastguard Worker# surfaces when useColorManagement is specified.
280*38e8c45fSAndroid Build Coastguard Worker# DEPRECATED: do not use
281*38e8c45fSAndroid Build Coastguard Workerprop {
282*38e8c45fSAndroid Build Coastguard Worker    api_name: "color_space_agnostic_dataspace"
283*38e8c45fSAndroid Build Coastguard Worker    type: Long
284*38e8c45fSAndroid Build Coastguard Worker    scope: Public
285*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
286*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.color_space_agnostic_dataspace"
287*38e8c45fSAndroid Build Coastguard Worker}
288*38e8c45fSAndroid Build Coastguard Worker
289*38e8c45fSAndroid Build Coastguard Worker# Return the native panel primary data. The data includes red, green,
290*38e8c45fSAndroid Build Coastguard Worker# blue and white. The primary format is CIE 1931 XYZ color space.
291*38e8c45fSAndroid Build Coastguard Worker# If unspecified, the primaries is sRGB gamut by default.
292*38e8c45fSAndroid Build Coastguard Worker
293*38e8c45fSAndroid Build Coastguard Workerprop {
294*38e8c45fSAndroid Build Coastguard Worker    api_name: "display_primary_red"
295*38e8c45fSAndroid Build Coastguard Worker    type: DoubleList
296*38e8c45fSAndroid Build Coastguard Worker    scope: Public
297*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
298*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.display_primary_red"
299*38e8c45fSAndroid Build Coastguard Worker}
300*38e8c45fSAndroid Build Coastguard Worker
301*38e8c45fSAndroid Build Coastguard Workerprop {
302*38e8c45fSAndroid Build Coastguard Worker    api_name: "display_primary_green"
303*38e8c45fSAndroid Build Coastguard Worker    type: DoubleList
304*38e8c45fSAndroid Build Coastguard Worker    scope: Public
305*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
306*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.display_primary_green"
307*38e8c45fSAndroid Build Coastguard Worker}
308*38e8c45fSAndroid Build Coastguard Worker
309*38e8c45fSAndroid Build Coastguard Workerprop {
310*38e8c45fSAndroid Build Coastguard Worker    api_name: "display_primary_blue"
311*38e8c45fSAndroid Build Coastguard Worker    type: DoubleList
312*38e8c45fSAndroid Build Coastguard Worker    scope: Public
313*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
314*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.display_primary_blue"
315*38e8c45fSAndroid Build Coastguard Worker}
316*38e8c45fSAndroid Build Coastguard Worker
317*38e8c45fSAndroid Build Coastguard Workerprop {
318*38e8c45fSAndroid Build Coastguard Worker    api_name: "display_primary_white"
319*38e8c45fSAndroid Build Coastguard Worker    type: DoubleList
320*38e8c45fSAndroid Build Coastguard Worker    scope: Public
321*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
322*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.display_primary_white"
323*38e8c45fSAndroid Build Coastguard Worker}
324*38e8c45fSAndroid Build Coastguard Worker
325*38e8c45fSAndroid Build Coastguard Worker# refreshRateSwitching indicates whether SurfaceFlinger should use refresh rate
326*38e8c45fSAndroid Build Coastguard Worker# switching on the device, e.g. to switch between 60 and 90 Hz. The settings
327*38e8c45fSAndroid Build Coastguard Worker# below that are related to refresh rate switching will only have an effect if
328*38e8c45fSAndroid Build Coastguard Worker# refresh_rate_switching is enabled.
329*38e8c45fSAndroid Build Coastguard Workerprop {
330*38e8c45fSAndroid Build Coastguard Worker    api_name: "refresh_rate_switching"
331*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
332*38e8c45fSAndroid Build Coastguard Worker    scope: Public
333*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
334*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.refresh_rate_switching"
335*38e8c45fSAndroid Build Coastguard Worker    deprecated: true
336*38e8c45fSAndroid Build Coastguard Worker}
337*38e8c45fSAndroid Build Coastguard Worker
338*38e8c45fSAndroid Build Coastguard Workerprop {
339*38e8c45fSAndroid Build Coastguard Worker    api_name: "set_idle_timer_ms"
340*38e8c45fSAndroid Build Coastguard Worker    type: Integer
341*38e8c45fSAndroid Build Coastguard Worker    scope: Public
342*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
343*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.set_idle_timer_ms"
344*38e8c45fSAndroid Build Coastguard Worker}
345*38e8c45fSAndroid Build Coastguard Worker
346*38e8c45fSAndroid Build Coastguard Worker# setTouchTimerMs indicates what is considered a timeout in milliseconds for Scheduler.
347*38e8c45fSAndroid Build Coastguard Worker# This value is used by the Scheduler to trigger touch inactivity callbacks that will switch the
348*38e8c45fSAndroid Build Coastguard Worker# display to a lower refresh rate. Setting this property to 0 means there is no timer.
349*38e8c45fSAndroid Build Coastguard Workerprop {
350*38e8c45fSAndroid Build Coastguard Worker    api_name: "set_touch_timer_ms"
351*38e8c45fSAndroid Build Coastguard Worker    type: Integer
352*38e8c45fSAndroid Build Coastguard Worker    scope: Public
353*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
354*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.set_touch_timer_ms"
355*38e8c45fSAndroid Build Coastguard Worker}
356*38e8c45fSAndroid Build Coastguard Worker
357*38e8c45fSAndroid Build Coastguard Worker# setDisplayPowerTimerMs indicates what is considered a timeout in milliseconds for Scheduler.
358*38e8c45fSAndroid Build Coastguard Worker# This value is used by the Scheduler to trigger display power inactivity callbacks that will
359*38e8c45fSAndroid Build Coastguard Worker# keep the display in peak refresh rate as long as display power is not in normal mode.
360*38e8c45fSAndroid Build Coastguard Worker# Setting this property to 0 means there is no timer.
361*38e8c45fSAndroid Build Coastguard Workerprop {
362*38e8c45fSAndroid Build Coastguard Worker    api_name: "set_display_power_timer_ms"
363*38e8c45fSAndroid Build Coastguard Worker    type: Integer
364*38e8c45fSAndroid Build Coastguard Worker    scope: Public
365*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
366*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.set_display_power_timer_ms"
367*38e8c45fSAndroid Build Coastguard Worker}
368*38e8c45fSAndroid Build Coastguard Worker
369*38e8c45fSAndroid Build Coastguard Worker# useContentDetectionForRefreshRate indicates whether Scheduler should detect content FPS, and try
370*38e8c45fSAndroid Build Coastguard Worker# to adjust the screen refresh rate based on that.
371*38e8c45fSAndroid Build Coastguard Workerprop {
372*38e8c45fSAndroid Build Coastguard Worker    api_name: "use_content_detection_for_refresh_rate"
373*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
374*38e8c45fSAndroid Build Coastguard Worker    scope: Public
375*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
376*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.use_content_detection_for_refresh_rate"
377*38e8c45fSAndroid Build Coastguard Worker}
378*38e8c45fSAndroid Build Coastguard Worker
379*38e8c45fSAndroid Build Coastguard Worker# useSmart90ForVideo indicates whether Scheduler should detect content FPS, and try to adjust the
380*38e8c45fSAndroid Build Coastguard Worker# screen refresh rate based on that.
381*38e8c45fSAndroid Build Coastguard Worker# Replaced by useContentDetectionForRefreshRate
382*38e8c45fSAndroid Build Coastguard Workerprop {
383*38e8c45fSAndroid Build Coastguard Worker    api_name: "use_smart_90_for_video"
384*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
385*38e8c45fSAndroid Build Coastguard Worker    scope: Public
386*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
387*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.use_smart_90_for_video"
388*38e8c45fSAndroid Build Coastguard Worker    deprecated: true
389*38e8c45fSAndroid Build Coastguard Worker}
390*38e8c45fSAndroid Build Coastguard Worker
391*38e8c45fSAndroid Build Coastguard Workerprop {
392*38e8c45fSAndroid Build Coastguard Worker    api_name: "enable_protected_contents"
393*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
394*38e8c45fSAndroid Build Coastguard Worker    scope: Public
395*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
396*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.protected_contents"
397*38e8c45fSAndroid Build Coastguard Worker}
398*38e8c45fSAndroid Build Coastguard Worker
399*38e8c45fSAndroid Build Coastguard Worker# Indicates whether Scheduler's idle timer should support a display driver timeout in the kernel.
400*38e8c45fSAndroid Build Coastguard Worker# The value of set_idle_timer_ms should be shorter in time than the timeout duration in the kernel.
401*38e8c45fSAndroid Build Coastguard Workerprop {
402*38e8c45fSAndroid Build Coastguard Worker    api_name: "support_kernel_idle_timer"
403*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
404*38e8c45fSAndroid Build Coastguard Worker    scope: Public
405*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
406*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.support_kernel_idle_timer"
407*38e8c45fSAndroid Build Coastguard Worker}
408*38e8c45fSAndroid Build Coastguard Worker
409*38e8c45fSAndroid Build Coastguard Worker# Indicates whether background blurs are supported.
410*38e8c45fSAndroid Build Coastguard Workerprop {
411*38e8c45fSAndroid Build Coastguard Worker    api_name: "supports_background_blur"
412*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
413*38e8c45fSAndroid Build Coastguard Worker    scope: Public
414*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
415*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.supports_background_blur"
416*38e8c45fSAndroid Build Coastguard Worker}
417*38e8c45fSAndroid Build Coastguard Worker
418*38e8c45fSAndroid Build Coastguard Worker# Sets the timeout used to rate limit DISPLAY_UPDATE_IMMINENT Power HAL notifications.
419*38e8c45fSAndroid Build Coastguard Worker# SurfaceFlinger wakeups will trigger this boost whenever they are separated by more than this
420*38e8c45fSAndroid Build Coastguard Worker# duration (specified in milliseconds). A value of 0 disables the rate limit, and will result in
421*38e8c45fSAndroid Build Coastguard Worker# Power HAL notifications every time SF wakes up.
422*38e8c45fSAndroid Build Coastguard Workerprop {
423*38e8c45fSAndroid Build Coastguard Worker    api_name: "display_update_imminent_timeout_ms"
424*38e8c45fSAndroid Build Coastguard Worker    type: Integer
425*38e8c45fSAndroid Build Coastguard Worker    scope: Public
426*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
427*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.display_update_imminent_timeout_ms"
428*38e8c45fSAndroid Build Coastguard Worker}
429*38e8c45fSAndroid Build Coastguard Worker
430*38e8c45fSAndroid Build Coastguard Worker
431*38e8c45fSAndroid Build Coastguard Worker# Updates the DeviceProductInfo when a hoplug reconnect event is processed
432*38e8c45fSAndroid Build Coastguard Workerprop {
433*38e8c45fSAndroid Build Coastguard Worker    api_name: "update_device_product_info_on_hotplug_reconnect"
434*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
435*38e8c45fSAndroid Build Coastguard Worker    scope: Public
436*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
437*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.update_device_product_info_on_hotplug_reconnect"
438*38e8c45fSAndroid Build Coastguard Worker}
439*38e8c45fSAndroid Build Coastguard Worker
440*38e8c45fSAndroid Build Coastguard Worker# Enables the frame rate override feature
441*38e8c45fSAndroid Build Coastguard Workerprop {
442*38e8c45fSAndroid Build Coastguard Worker    api_name: "enable_frame_rate_override"
443*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
444*38e8c45fSAndroid Build Coastguard Worker    scope: Public
445*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
446*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.enable_frame_rate_override"
447*38e8c45fSAndroid Build Coastguard Worker}
448*38e8c45fSAndroid Build Coastguard Worker
449*38e8c45fSAndroid Build Coastguard Worker# Enables Layer Caching
450*38e8c45fSAndroid Build Coastguard Workerprop {
451*38e8c45fSAndroid Build Coastguard Worker    api_name: "enable_layer_caching"
452*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
453*38e8c45fSAndroid Build Coastguard Worker    scope: Public
454*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
455*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.enable_layer_caching"
456*38e8c45fSAndroid Build Coastguard Worker}
457*38e8c45fSAndroid Build Coastguard Worker
458*38e8c45fSAndroid Build Coastguard Worker# Enables SDR layer dimming
459*38e8c45fSAndroid Build Coastguard Workerprop {
460*38e8c45fSAndroid Build Coastguard Worker    api_name: "enable_sdr_dimming"
461*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
462*38e8c45fSAndroid Build Coastguard Worker    scope: Public
463*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
464*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.enable_sdr_dimming"
465*38e8c45fSAndroid Build Coastguard Worker}
466*38e8c45fSAndroid Build Coastguard Worker
467*38e8c45fSAndroid Build Coastguard Worker# Ignores Camera layers when calculating HDR coverage information
468*38e8c45fSAndroid Build Coastguard Workerprop {
469*38e8c45fSAndroid Build Coastguard Worker    api_name: "ignore_hdr_camera_layers"
470*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
471*38e8c45fSAndroid Build Coastguard Worker    scope: Public
472*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
473*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.ignore_hdr_camera_layers"
474*38e8c45fSAndroid Build Coastguard Worker}
475*38e8c45fSAndroid Build Coastguard Worker
476*38e8c45fSAndroid Build Coastguard Worker# Controls the minimum acquired buffers SurfaceFlinger will suggest via
477*38e8c45fSAndroid Build Coastguard Worker# ISurfaceComposer.getMaxAcquiredBufferCount().
478*38e8c45fSAndroid Build Coastguard Workerprop {
479*38e8c45fSAndroid Build Coastguard Worker    api_name: "min_acquired_buffers"
480*38e8c45fSAndroid Build Coastguard Worker    type: Long
481*38e8c45fSAndroid Build Coastguard Worker    scope: Public
482*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
483*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.min_acquired_buffers"
484*38e8c45fSAndroid Build Coastguard Worker}
485*38e8c45fSAndroid Build Coastguard Worker
486*38e8c45fSAndroid Build Coastguard Worker# When enabled, SurfaceFlinger will attempt to clear the per-layer HAL buffer cache slots for
487*38e8c45fSAndroid Build Coastguard Worker# buffers when they are evicted from the app cache by using additional setLayerBuffer commands.
488*38e8c45fSAndroid Build Coastguard Worker# Ideally, this behavior would always be enabled to reduce graphics memory consumption. However,
489*38e8c45fSAndroid Build Coastguard Worker# Some HAL implementations may not support the additional setLayerBuffer commands used to clear
490*38e8c45fSAndroid Build Coastguard Worker# the cache slots.
491*38e8c45fSAndroid Build Coastguard Workerprop {
492*38e8c45fSAndroid Build Coastguard Worker    api_name: "clear_slots_with_set_layer_buffer"
493*38e8c45fSAndroid Build Coastguard Worker    type: Boolean
494*38e8c45fSAndroid Build Coastguard Worker    scope: Public
495*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
496*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.clear_slots_with_set_layer_buffer"
497*38e8c45fSAndroid Build Coastguard Worker}
498*38e8c45fSAndroid Build Coastguard Worker
499*38e8c45fSAndroid Build Coastguard Worker# Controls the default frame rate override of game applications. Ideally, game applications set
500*38e8c45fSAndroid Build Coastguard Worker# desired frame rate via setFrameRate() API. However, to cover the scenario when the game didn't
501*38e8c45fSAndroid Build Coastguard Worker# have a set frame rate, we introduce the default frame rate. The priority of this override is the
502*38e8c45fSAndroid Build Coastguard Worker# lowest among setFrameRate() and game intervention override.
503*38e8c45fSAndroid Build Coastguard Workerprop {
504*38e8c45fSAndroid Build Coastguard Worker    api_name: "game_default_frame_rate_override"
505*38e8c45fSAndroid Build Coastguard Worker    type: Integer
506*38e8c45fSAndroid Build Coastguard Worker    scope: Public
507*38e8c45fSAndroid Build Coastguard Worker    access: Readonly
508*38e8c45fSAndroid Build Coastguard Worker    prop_name: "ro.surface_flinger.game_default_frame_rate_override"
509*38e8c45fSAndroid Build Coastguard Worker}
510