xref: /aosp_15_r20/hardware/interfaces/configstore/1.0/ISurfaceFlingerConfigs.hal (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker/*
2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker *
4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker *
8*4d7e907cSAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker *
10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker */
16*4d7e907cSAndroid Build Coastguard Workerpackage [email protected];
17*4d7e907cSAndroid Build Coastguard Worker
18*4d7e907cSAndroid Build Coastguard Workerinterface ISurfaceFlingerConfigs {
19*4d7e907cSAndroid Build Coastguard Worker    /**
20*4d7e907cSAndroid Build Coastguard Worker     * The following two methods define (respectively):
21*4d7e907cSAndroid Build Coastguard Worker     *
22*4d7e907cSAndroid Build Coastguard Worker     * - The phase offset between hardware vsync and when apps are woken up by the
23*4d7e907cSAndroid Build Coastguard Worker     *   Choreographer callback
24*4d7e907cSAndroid Build Coastguard Worker     * - The phase offset between hardware vsync and when SurfaceFlinger wakes up
25*4d7e907cSAndroid Build Coastguard Worker     *   to consume input
26*4d7e907cSAndroid Build Coastguard Worker     *
27*4d7e907cSAndroid Build Coastguard Worker     * Their values may be tuned to trade off between display pipeline latency (both
28*4d7e907cSAndroid Build Coastguard Worker     * overall latency and the lengths of the app --> SF and SF --> display phases)
29*4d7e907cSAndroid Build Coastguard Worker     * and frame delivery jitter (which typically manifests as "jank" or "jerkiness"
30*4d7e907cSAndroid Build Coastguard Worker     * while interacting with the device). The default values must produce a
31*4d7e907cSAndroid Build Coastguard Worker     * relatively low amount of jitter at the expense of roughly two frames of
32*4d7e907cSAndroid Build Coastguard Worker     * app --> display latency, and unless significant testing is performed to avoid
33*4d7e907cSAndroid Build Coastguard Worker     * increased display jitter (both manual investigation using systrace [1] and
34*4d7e907cSAndroid Build Coastguard Worker     * automated testing using dumpsys gfxinfo [2] are recommended), they should not
35*4d7e907cSAndroid Build Coastguard Worker     * be modified.
36*4d7e907cSAndroid Build Coastguard Worker     *
37*4d7e907cSAndroid Build Coastguard Worker     * [1] https://developer.android.com/studio/profile/systrace.html
38*4d7e907cSAndroid Build Coastguard Worker     * [2] https://developer.android.com/training/testing/performance.html
39*4d7e907cSAndroid Build Coastguard Worker     */
40*4d7e907cSAndroid Build Coastguard Worker    vsyncEventPhaseOffsetNs() generates (OptionalInt64 value);
41*4d7e907cSAndroid Build Coastguard Worker    vsyncSfEventPhaseOffsetNs() generates (OptionalInt64 value);
42*4d7e907cSAndroid Build Coastguard Worker
43*4d7e907cSAndroid Build Coastguard Worker    /**
44*4d7e907cSAndroid Build Coastguard Worker     * Instruct the Render Engine to use EGL_IMG_context_priority hint if
45*4d7e907cSAndroid Build Coastguard Worker     * availabe.
46*4d7e907cSAndroid Build Coastguard Worker     */
47*4d7e907cSAndroid Build Coastguard Worker    useContextPriority() generates(OptionalBool value);
48*4d7e907cSAndroid Build Coastguard Worker
49*4d7e907cSAndroid Build Coastguard Worker    /**
50*4d7e907cSAndroid Build Coastguard Worker     * hasWideColorDisplay indicates that the device has
51*4d7e907cSAndroid Build Coastguard Worker     * or can support a wide-color display, e.g. color space
52*4d7e907cSAndroid Build Coastguard Worker     * greater than sRGB. Typical display may have same
53*4d7e907cSAndroid Build Coastguard Worker     * color primaries as DCI-P3.
54*4d7e907cSAndroid Build Coastguard Worker     * Indicate support for this feature by setting
55*4d7e907cSAndroid Build Coastguard Worker     * TARGET_HAS_WIDE_COLOR_DISPLAY to true in BoardConfig.mk
56*4d7e907cSAndroid Build Coastguard Worker     * This also means that the device is color managed.
57*4d7e907cSAndroid Build Coastguard Worker     * A color managed device will use the appropriate
58*4d7e907cSAndroid Build Coastguard Worker     * display mode depending on the content on the screen.
59*4d7e907cSAndroid Build Coastguard Worker     * Default is sRGB.
60*4d7e907cSAndroid Build Coastguard Worker     */
61*4d7e907cSAndroid Build Coastguard Worker    hasWideColorDisplay() generates (OptionalBool value);
62*4d7e907cSAndroid Build Coastguard Worker
63*4d7e907cSAndroid Build Coastguard Worker    /**
64*4d7e907cSAndroid Build Coastguard Worker     * hwHDRDisplay indicates that the device has an High Dynamic Range display.
65*4d7e907cSAndroid Build Coastguard Worker     * A display is considered High Dynamic Range if it
66*4d7e907cSAndroid Build Coastguard Worker     *
67*4d7e907cSAndroid Build Coastguard Worker     *     1. is a wide color gamut display, typically DCI-P3 or lager
68*4d7e907cSAndroid Build Coastguard Worker     *     2. has high luminance capability, typically 540 nits or higher at 10% OPR
69*4d7e907cSAndroid Build Coastguard Worker     *
70*4d7e907cSAndroid Build Coastguard Worker     * Indicate support for this feature by setting
71*4d7e907cSAndroid Build Coastguard Worker     * TARGET_HAS_HDR_DISPLAY to true in BoardConfig.mk
72*4d7e907cSAndroid Build Coastguard Worker     * TARGET_HAS_WIDE_COLOR_DISPLAY must be set to true when
73*4d7e907cSAndroid Build Coastguard Worker     * TARGET_HAS_HDR_DISPLAY is true.
74*4d7e907cSAndroid Build Coastguard Worker     */
75*4d7e907cSAndroid Build Coastguard Worker    hasHDRDisplay() generates (OptionalBool value);
76*4d7e907cSAndroid Build Coastguard Worker
77*4d7e907cSAndroid Build Coastguard Worker    /**
78*4d7e907cSAndroid Build Coastguard Worker     * Specify the offset in nanoseconds to add to vsync time when timestamping
79*4d7e907cSAndroid Build Coastguard Worker     * present fences.
80*4d7e907cSAndroid Build Coastguard Worker     */
81*4d7e907cSAndroid Build Coastguard Worker    presentTimeOffsetFromVSyncNs() generates(OptionalInt64 value);
82*4d7e907cSAndroid Build Coastguard Worker
83*4d7e907cSAndroid Build Coastguard Worker    /**
84*4d7e907cSAndroid Build Coastguard Worker     * Some hardware can do RGB->YUV conversion more efficiently in hardware
85*4d7e907cSAndroid Build Coastguard Worker     * controlled by HWC than in hardware controlled by the video encoder.
86*4d7e907cSAndroid Build Coastguard Worker     * This instruct VirtualDisplaySurface to use HWC for such conversion on
87*4d7e907cSAndroid Build Coastguard Worker     * GL composition.
88*4d7e907cSAndroid Build Coastguard Worker     */
89*4d7e907cSAndroid Build Coastguard Worker    useHwcForRGBtoYUV() generates(OptionalBool value);
90*4d7e907cSAndroid Build Coastguard Worker
91*4d7e907cSAndroid Build Coastguard Worker    /**
92*4d7e907cSAndroid Build Coastguard Worker     *  Maximum dimension supported by HWC for virtual display.
93*4d7e907cSAndroid Build Coastguard Worker     *  Must be equals to min(max_width, max_height).
94*4d7e907cSAndroid Build Coastguard Worker     */
95*4d7e907cSAndroid Build Coastguard Worker    maxVirtualDisplaySize() generates (OptionalUInt64 value);
96*4d7e907cSAndroid Build Coastguard Worker
97*4d7e907cSAndroid Build Coastguard Worker    /**
98*4d7e907cSAndroid Build Coastguard Worker     * Indicates if Sync framework is available. Sync framework provides fence
99*4d7e907cSAndroid Build Coastguard Worker     * mechanism which significantly reduces buffer processing latency.
100*4d7e907cSAndroid Build Coastguard Worker     */
101*4d7e907cSAndroid Build Coastguard Worker    hasSyncFramework() generates(OptionalBool value);
102*4d7e907cSAndroid Build Coastguard Worker
103*4d7e907cSAndroid Build Coastguard Worker    /**
104*4d7e907cSAndroid Build Coastguard Worker     * Return true if surface flinger should use vr flinger for compatible vr
105*4d7e907cSAndroid Build Coastguard Worker     * apps, false otherwise. Devices that will never be running vr apps should
106*4d7e907cSAndroid Build Coastguard Worker     * return false to avoid extra resource usage. Daydream ready devices must
107*4d7e907cSAndroid Build Coastguard Worker     * return true for full vr support.
108*4d7e907cSAndroid Build Coastguard Worker     */
109*4d7e907cSAndroid Build Coastguard Worker    useVrFlinger() generates (OptionalBool value);
110*4d7e907cSAndroid Build Coastguard Worker
111*4d7e907cSAndroid Build Coastguard Worker    /**
112*4d7e907cSAndroid Build Coastguard Worker     * Controls the number of buffers SurfaceFlinger will allocate for use in
113*4d7e907cSAndroid Build Coastguard Worker     * FramebufferSurface.
114*4d7e907cSAndroid Build Coastguard Worker     */
115*4d7e907cSAndroid Build Coastguard Worker    maxFrameBufferAcquiredBuffers() generates(OptionalInt64 value);
116*4d7e907cSAndroid Build Coastguard Worker
117*4d7e907cSAndroid Build Coastguard Worker    /**
118*4d7e907cSAndroid Build Coastguard Worker     * Returns true if surface flinger should start
119*4d7e907cSAndroid Build Coastguard Worker     * [email protected]::IAllocator service.
120*4d7e907cSAndroid Build Coastguard Worker     */
121*4d7e907cSAndroid Build Coastguard Worker    startGraphicsAllocatorService() generates(OptionalBool value);
122*4d7e907cSAndroid Build Coastguard Worker};
123