xref: /aosp_15_r20/prebuilts/android-emulator/linux-x86_64/lib/advancedFeatures.ini (revision d870e0501505f2fc9999364ffe386a6b6151adc1)
1*d870e050SAndroid Build Coastguard Worker#-------------------------------------------------------------------------------
2*d870e050SAndroid Build Coastguard Worker# Advanced emulator features
3*d870e050SAndroid Build Coastguard Worker#-------------------------------------------------------------------------------
4*d870e050SAndroid Build Coastguard Worker
5*d870e050SAndroid Build Coastguard Worker# GLPipeChecksum----------------------------------------------------------------
6*d870e050SAndroid Build Coastguard Worker# For every GL call that transfers between host and guest, GLPipeChecksum = on
7*d870e050SAndroid Build Coastguard Worker# will compute a checksum consisting of some function of the actual bit vector
8*d870e050SAndroid Build Coastguard Worker# corresponding to the GL command, verifying that the same checksum shows up
9*d870e050SAndroid Build Coastguard Worker# on both the host and guest. Violations of the checksum (mismatches) result
10*d870e050SAndroid Build Coastguard Worker# in an abort() and crash report being sent.
11*d870e050SAndroid Build Coastguard Worker#
12*d870e050SAndroid Build Coastguard Worker# Currently, the checksum is mainly making sure that the command itself and all
13*d870e050SAndroid Build Coastguard Worker# arrays passed through the pipe are of proper length.
14*d870e050SAndroid Build Coastguard WorkerGLPipeChecksum = on
15*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
16*d870e050SAndroid Build Coastguard Worker
17*d870e050SAndroid Build Coastguard Worker# GrallocSync-------------------------------------------------------------------
18*d870e050SAndroid Build Coastguard Worker# Most apps that display images do so through OpenGL, but there are some apps
19*d870e050SAndroid Build Coastguard Worker# that write directly to gralloc color buffers. In our goldfish-driver gralloc
20*d870e050SAndroid Build Coastguard Worker# implementation, which represents gralloc color buffers as host OpenGL color
21*d870e050SAndroid Build Coastguard Worker# buffers.
22*d870e050SAndroid Build Coastguard Worker#
23*d870e050SAndroid Build Coastguard Worker# For example, in the camera app, the emulated webcam driver will pull frames
24*d870e050SAndroid Build Coastguard Worker# to a gralloc color buffer directly, and then in another thread or process,
25*d870e050SAndroid Build Coastguard Worker# the color buffer representing the camera frame preview could be posted
26*d870e050SAndroid Build Coastguard Worker# onscreen.
27*d870e050SAndroid Build Coastguard Worker#
28*d870e050SAndroid Build Coastguard Worker# These operations aren't guaranteed to have their order preserved when arriving
29*d870e050SAndroid Build Coastguard Worker# from the guest, and if executed on the host in the wrong order, we could
30*d870e050SAndroid Build Coastguard Worker# end up with out of order webcam frames, for instance.
31*d870e050SAndroid Build Coastguard Worker#
32*d870e050SAndroid Build Coastguard Worker# GrallocSync = on adds synchronization to the host for this use case where apps
33*d870e050SAndroid Build Coastguard Worker# directly write to gralloc color buffers and then post them.
34*d870e050SAndroid Build Coastguard Worker# Gralloc sync disabled for now because it is making CTS sad.
35*d870e050SAndroid Build Coastguard WorkerGrallocSync = off
36*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
37*d870e050SAndroid Build Coastguard Worker
38*d870e050SAndroid Build Coastguard Worker# GLAsyncSwap-------------------------------------------------------------------
39*d870e050SAndroid Build Coastguard Worker# OpenGL apps in the guest present their contents indirectly through
40*d870e050SAndroid Build Coastguard Worker# SurfaceFlinger. The goldfish driver's implementation of eglSwapBuffers is
41*d870e050SAndroid Build Coastguard Worker# based on queuing the finished frame (buffer) to SurfaceFlinger.
42*d870e050SAndroid Build Coastguard Worker# SurfaceFlinger then acquires that finished buffer from the OpenGL app,
43*d870e050SAndroid Build Coastguard Worker# does the actual posting to the display (which may involve a call in turn
44*d870e050SAndroid Build Coastguard Worker# to eglSwapBuffers, esp. if we are not using hardware composer),
45*d870e050SAndroid Build Coastguard Worker# and releases the buffer, allowing the OpenGL app to dequeue a fresh
46*d870e050SAndroid Build Coastguard Worker# buffer for whatever to draw next.
47*d870e050SAndroid Build Coastguard Worker#
48*d870e050SAndroid Build Coastguard Worker# The problem is that when we are using host GPU, the rubber meets the road #
49*d870e050SAndroid Build Coastguard Worker# in the host not the guest (what the user sees is not due to any concrete
50*d870e050SAndroid Build Coastguard Worker# action inside the guest, but due to the host GPU communicating with the host
51*d870e050SAndroid Build Coastguard Worker# display), so it's not always clear what a "finished frame" means. In
52*d870e050SAndroid Build Coastguard Worker# particular, the frame is not necessarily finished when the buffer is queued
53*d870e050SAndroid Build Coastguard Worker# in the guest, depending on host driver quirks. So, posting unfinished or
54*d870e050SAndroid Build Coastguard Worker# even older buffers to SurfaceFlinger will result in out of order frames.
55*d870e050SAndroid Build Coastguard Worker#
56*d870e050SAndroid Build Coastguard Worker# GLAsyncSwap = off pretends this issue doesn't exist and it's up to the host
57*d870e050SAndroid Build Coastguard Worker# driver to properly synchronize upon calling rcFlushWindowColorBuffer.
58*d870e050SAndroid Build Coastguard Worker# GLAsyncSwap = on uses the host GL driver's fence commands and fence fd's in
59*d870e050SAndroid Build Coastguard Worker# the guest in order to have explicit signals of buffer swaps complete. This
60*d870e050SAndroid Build Coastguard Worker# preserves frame ordering at a slight performance cost, but the cost is less
61*d870e050SAndroid Build Coastguard Worker# than that of other solutions like calling glFinish() on the host.
62*d870e050SAndroid Build Coastguard WorkerGLAsyncSwap = on
63*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
64*d870e050SAndroid Build Coastguard Worker
65*d870e050SAndroid Build Coastguard Worker# EncryptUserData---------------------------------------------------------------
66*d870e050SAndroid Build Coastguard Worker# CTS requires that userdata be encrypted, at least for api23 and later. However
67*d870e050SAndroid Build Coastguard Worker# for non Google images or older system images, this is not required or not
68*d870e050SAndroid Build Coastguard Worker# implemted. Emulator will enable this feature only if the system says it supports
69*d870e050SAndroid Build Coastguard Worker# encryption. It is on by default on the host, and according to the current rule,
70*d870e050SAndroid Build Coastguard Worker# a feature is only on if both host and guest support it; so it effectively leaves
71*d870e050SAndroid Build Coastguard Worker# to guest to decide.
72*d870e050SAndroid Build Coastguard WorkerEncryptUserData = on
73*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
74*d870e050SAndroid Build Coastguard Worker
75*d870e050SAndroid Build Coastguard Worker# RefCountPipe------------------------------------------------------------------
76*d870e050SAndroid Build Coastguard Worker# RefCount Pipe is a different approach to simplify the Color Buffer management
77*d870e050SAndroid Build Coastguard Worker# on host. In guest, the handle returned by gralloc allocator can be passed around
78*d870e050SAndroid Build Coastguard Worker# between processes through Binder. Android system ensures that the handle on both
79*d870e050SAndroid Build Coastguard Worker# calling and receiving end willl be properly closed. Thus, when gralloc allocates
80*d870e050SAndroid Build Coastguard Worker# buffer for the first time, we establish a Refcount pipe between guest and host,
81*d870e050SAndroid Build Coastguard Worker# and assign its fd to the handle. In the desturctor of the handle, close the fd.
82*d870e050SAndroid Build Coastguard Worker# Guest kernel will decide when to really close the fd and thus trigger the pipe's
83*d870e050SAndroid Build Coastguard Worker# closing on host. On the host side, we only need to destroy the color buffer
84*d870e050SAndroid Build Coastguard Worker# immediately and not worry about any reference counting at all. This approach will
85*d870e050SAndroid Build Coastguard Worker# not only simplify the the logic between guest and host, but also reduce memory leaks.
86*d870e050SAndroid Build Coastguard WorkerRefCountPipe = on
87*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
88*d870e050SAndroid Build Coastguard Worker
89*d870e050SAndroid Build Coastguard Worker
90*d870e050SAndroid Build Coastguard Worker# IntelPerformanceMonitoringUnit------------------------------------------------
91*d870e050SAndroid Build Coastguard Worker# Some CTS tests (mainly SimplePerf) require that the CPU expose some kind of
92*d870e050SAndroid Build Coastguard Worker# counters that can be used to measure CPU performance in cycles,
93*d870e050SAndroid Build Coastguard Worker# cache hit/miss, etc.
94*d870e050SAndroid Build Coastguard Worker# However, the use of this on the vCPU requires that the guest kernel be in
95*d870e050SAndroid Build Coastguard Worker# a fairly recent state, otherwise the emulator will kernel panic on startup.
96*d870e050SAndroid Build Coastguard WorkerIntelPerformanceMonitoringUnit = on
97*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
98*d870e050SAndroid Build Coastguard Worker
99*d870e050SAndroid Build Coastguard Worker# GLDMA-------------------------------------------------------------------------
100*d870e050SAndroid Build Coastguard Worker# Video playback can approach 1080p60 and be solid 720p60 if we map guest memory
101*d870e050SAndroid Build Coastguard Worker# to host and use it to perofrm color buffer updates, and perform YV12->RGB
102*d870e050SAndroid Build Coastguard Worker# on the host as well, in an OpenGL shader.
103*d870e050SAndroid Build Coastguard WorkerGLDMA = on
104*d870e050SAndroid Build Coastguard Worker
105*d870e050SAndroid Build Coastguard Worker# Enables DMA support for glMapBufferRange and glUnmapBuffer
106*d870e050SAndroid Build Coastguard WorkerGLDMA2 = on
107*d870e050SAndroid Build Coastguard Worker# Enables direct memory (to the host memory) access in glMapBufferRange
108*d870e050SAndroid Build Coastguard WorkerGLDirectMem = off
109*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
110*d870e050SAndroid Build Coastguard Worker
111*d870e050SAndroid Build Coastguard Worker# GLESDynamicVersion------------------------------------------------------------
112*d870e050SAndroid Build Coastguard Worker# This feature attempts to detect the maximum supported GLES version depending on
113*d870e050SAndroid Build Coastguard Worker# which OpenGL function pointers have been found on the GL libraries used
114*d870e050SAndroid Build Coastguard Worker# on the host system. Different platforms / hardware + video driver setups can
115*d870e050SAndroid Build Coastguard Worker# have different support.
116*d870e050SAndroid Build Coastguard Worker# For example, OS X is not known to support GLES 3.1.
117*d870e050SAndroid Build Coastguard Worker# If this feature is set to "off", the max supported GLES version is assumed to
118*d870e050SAndroid Build Coastguard Worker# be <= 2 and also depend on the system image only (some images only support ES 1).
119*d870e050SAndroid Build Coastguard WorkerGLESDynamicVersion = off
120*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
121*d870e050SAndroid Build Coastguard Worker
122*d870e050SAndroid Build Coastguard Worker# Wifi -------------------------------------------------------------------------
123*d870e050SAndroid Build Coastguard Worker# This feature indicates that the system image and the emulator support Wifi.
124*d870e050SAndroid Build Coastguard Worker# When this is enabled the network configuration of the system image will be
125*d870e050SAndroid Build Coastguard Worker# significantly different and the emulator will send different network setup
126*d870e050SAndroid Build Coastguard Worker# information via RIL.
127*d870e050SAndroid Build Coastguard WorkerWifi = on
128*d870e050SAndroid Build Coastguard Worker
129*d870e050SAndroid Build Coastguard Worker# ForceANGLE--------------------------------------------------------------------
130*d870e050SAndroid Build Coastguard Worker# This feature attempts to default the renderer to ANGLE, but can be itself
131*d870e050SAndroid Build Coastguard Worker# overridden by:
132*d870e050SAndroid Build Coastguard Worker# -gpu command line argument
133*d870e050SAndroid Build Coastguard Worker# UI setting
134*d870e050SAndroid Build Coastguard Worker# The override (and others) are done through the UI, so the user is aware
135*d870e050SAndroid Build Coastguard Worker# and if the user changes to a setting other than "auto", the user setting
136*d870e050SAndroid Build Coastguard Worker# is respected.
137*d870e050SAndroid Build Coastguard WorkerForceANGLE = off
138*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
139*d870e050SAndroid Build Coastguard Worker
140*d870e050SAndroid Build Coastguard Worker# ForceSwiftshader--------------------------------------------------------------
141*d870e050SAndroid Build Coastguard Worker# This feature attempts to default the renderer to Swiftshader. Otherwise,
142*d870e050SAndroid Build Coastguard Worker# same behavior as ForceANGLE.
143*d870e050SAndroid Build Coastguard WorkerForceSwiftshader = off
144*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
145*d870e050SAndroid Build Coastguard Worker
146*d870e050SAndroid Build Coastguard Worker# PlayStoreImage ---------------------------------------------------------------
147*d870e050SAndroid Build Coastguard Worker# The playstore image has CTS requirements that emulator should check and ensure
148*d870e050SAndroid Build Coastguard Worker# Guest image will indicate whether it has it or not;
149*d870e050SAndroid Build Coastguard WorkerPlayStoreImage = on
150*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
151*d870e050SAndroid Build Coastguard Worker
152*d870e050SAndroid Build Coastguard Worker# LogcatPipe ---------------------------------------------------------------
153*d870e050SAndroid Build Coastguard Worker# The pipe based logcat is meant to replace the 'adb shell logcat'
154*d870e050SAndroid Build Coastguard Worker# Guest image will indicate whether it has it or not;
155*d870e050SAndroid Build Coastguard WorkerLogcatPipe = on
156*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
157*d870e050SAndroid Build Coastguard Worker
158*d870e050SAndroid Build Coastguard Worker# Hypervisor feature flags. Assumed mutually exclusive. If all flags are off,
159*d870e050SAndroid Build Coastguard Worker# then we have:
160*d870e050SAndroid Build Coastguard Worker# Mac/Win: HAXM
161*d870e050SAndroid Build Coastguard Worker# Linux: KVM
162*d870e050SAndroid Build Coastguard Worker# If a flag is on, then attempts are made to detect host support, and if there
163*d870e050SAndroid Build Coastguard Worker# is support, then the hypervisor in question is actually used.
164*d870e050SAndroid Build Coastguard WorkerHYPERV = off
165*d870e050SAndroid Build Coastguard WorkerHVF = on
166*d870e050SAndroid Build Coastguard WorkerKVM = off
167*d870e050SAndroid Build Coastguard WorkerHAXM = off
168*d870e050SAndroid Build Coastguard Worker
169*d870e050SAndroid Build Coastguard Worker# FastSnapshotV1 ---------------------------------------------------------------
170*d870e050SAndroid Build Coastguard Worker# Enable the new implementation of snapshotting in the emulator and use it for
171*d870e050SAndroid Build Coastguard Worker# quick boot.
172*d870e050SAndroid Build Coastguard WorkerFastSnapshotV1 = on
173*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
174*d870e050SAndroid Build Coastguard Worker
175*d870e050SAndroid Build Coastguard Worker# ScreenRecording --------------------------------------------------------------
176*d870e050SAndroid Build Coastguard Worker# Enables the host-side screen recording feature.
177*d870e050SAndroid Build Coastguard WorkerScreenRecording = on
178*d870e050SAndroid Build Coastguard Worker# ------------------------------------------------------------------------------
179*d870e050SAndroid Build Coastguard Worker
180*d870e050SAndroid Build Coastguard Worker# VirtualScene -----------------------------------------------------------------
181*d870e050SAndroid Build Coastguard Worker# Enables the host-side virtual scene feature.
182*d870e050SAndroid Build Coastguard WorkerVirtualScene = on
183*d870e050SAndroid Build Coastguard Worker
184*d870e050SAndroid Build Coastguard Worker# VideoPlayback -----------------------------------------------------------------
185*d870e050SAndroid Build Coastguard Worker# Enables the camera video playback feature.
186*d870e050SAndroid Build Coastguard WorkerVideoPlayback = off
187*d870e050SAndroid Build Coastguard Worker
188*d870e050SAndroid Build Coastguard Worker# system as root  --------------------------------------------------------------
189*d870e050SAndroid Build Coastguard Worker# Guest feature: when this is on, emulator should use system partition as root fs
190*d870e050SAndroid Build Coastguard Worker# instead of using ramdisk as root fs.
191*d870e050SAndroid Build Coastguard WorkerSystemAsRoot = on
192*d870e050SAndroid Build Coastguard Worker
193*d870e050SAndroid Build Coastguard Worker# GenericSnapshotsUI------------------------------------------------------------
194*d870e050SAndroid Build Coastguard Worker# Show the generic snapshots UI.
195*d870e050SAndroid Build Coastguard WorkerGenericSnapshotsUI = on
196*d870e050SAndroid Build Coastguard Worker
197*d870e050SAndroid Build Coastguard Worker# WindowsOnDemandSnapshotLoad---------------------------------------------------
198*d870e050SAndroid Build Coastguard Worker# On-demand snapshot load for Windows.
199*d870e050SAndroid Build Coastguard WorkerWindowsOnDemandSnapshotLoad = on
200*d870e050SAndroid Build Coastguard Worker
201*d870e050SAndroid Build Coastguard Worker# Windows Hypervisor Platform---------------------------------------------------
202*d870e050SAndroid Build Coastguard Worker# Allow WHPX
203*d870e050SAndroid Build Coastguard WorkerWindowsHypervisorPlatform = on
204*d870e050SAndroid Build Coastguard Worker
205*d870e050SAndroid Build Coastguard Worker# Device Tree Blob--------------------------------------------------------------
206*d870e050SAndroid Build Coastguard WorkerKernelDeviceTreeBlobSupport = on
207*d870e050SAndroid Build Coastguard Worker
208*d870e050SAndroid Build Coastguard Worker# Dynamic partition support --------------------------------------------------------------
209*d870e050SAndroid Build Coastguard WorkerDynamicPartition = on
210*d870e050SAndroid Build Coastguard Worker
211*d870e050SAndroid Build Coastguard Worker# Location UI v2----------------------------------------------------------------
212*d870e050SAndroid Build Coastguard WorkerLocationUiV2 = on
213*d870e050SAndroid Build Coastguard Worker
214*d870e050SAndroid Build Coastguard Worker# SnapshotAdb-------------------------------------------------------------------
215*d870e050SAndroid Build Coastguard WorkerSnapshotAdb = off
216*d870e050SAndroid Build Coastguard Worker
217*d870e050SAndroid Build Coastguard Worker# QuickbootFileBacked-----------------------------------------------------------
218*d870e050SAndroid Build Coastguard WorkerQuickbootFileBacked = on
219*d870e050SAndroid Build Coastguard Worker
220*d870e050SAndroid Build Coastguard Worker# HWComposer Host Composition---------------------------------------------------
221*d870e050SAndroid Build Coastguard WorkerHostComposition = on
222*d870e050SAndroid Build Coastguard Worker
223*d870e050SAndroid Build Coastguard Worker# On-demand RAM load for snapshots----------------------------------------------
224*d870e050SAndroid Build Coastguard Worker# Currently disabled due to issues with MemoryWatch and host side
225*d870e050SAndroid Build Coastguard Worker# EFAULT's and recent guest kernels + Linux KVM
226*d870e050SAndroid Build Coastguard WorkerOnDemandSnapshotLoad = off
227*d870e050SAndroid Build Coastguard Worker
228*d870e050SAndroid Build Coastguard Worker# WifiConfigurable--------------------------------------------------------------
229*d870e050SAndroid Build Coastguard WorkerWifiConfigurable = off
230*d870e050SAndroid Build Coastguard Worker
231*d870e050SAndroid Build Coastguard Worker# Vulkan------------------------------------------------------------------------
232*d870e050SAndroid Build Coastguard Worker# If enabled, the guest Vulkan HAL (if installed) will activate.
233*d870e050SAndroid Build Coastguard WorkerVulkan = off
234*d870e050SAndroid Build Coastguard Worker
235*d870e050SAndroid Build Coastguard Worker# CarVHalTable--------------------------------------------------------------
236*d870e050SAndroid Build Coastguard Worker# if enabled, Car Vhal Table will show in extended window -> CarData
237*d870e050SAndroid Build Coastguard WorkerCarVHalTable = on
238*d870e050SAndroid Build Coastguard Worker
239*d870e050SAndroid Build Coastguard Worker# VirtioInput-------------------------------------------------------------------
240*d870e050SAndroid Build Coastguard Worker# VirtioInput is a guest side feature which indicates that CONFIG_VIRTIO_INPUT is
241*d870e050SAndroid Build Coastguard Worker# enabled in kernel. If enabled, emulator will use virtio input device instead of
242*d870e050SAndroid Build Coastguard Worker# goldfish_events to implement multi-touch functionality.
243*d870e050SAndroid Build Coastguard WorkerVirtioInput = on
244*d870e050SAndroid Build Coastguard Worker
245*d870e050SAndroid Build Coastguard Worker# IpDisconnectOnLoad------------------------------------------------------------
246*d870e050SAndroid Build Coastguard Worker# Reset IP connection state when loading from snapshots
247*d870e050SAndroid Build Coastguard WorkerIpDisconnectOnLoad = off
248*d870e050SAndroid Build Coastguard Worker
249*d870e050SAndroid Build Coastguard Worker# VulkanSnapshots---------------------------------------------------------------
250*d870e050SAndroid Build Coastguard Worker# Reset IP connection state when loading from snapshots
251*d870e050SAndroid Build Coastguard WorkerVulkanSnapshots = off
252*d870e050SAndroid Build Coastguard Worker
253*d870e050SAndroid Build Coastguard Worker# MultiDisplay------------------------------------------------------------------
254*d870e050SAndroid Build Coastguard Worker# MultiDisplay is a guest side feature
255*d870e050SAndroid Build Coastguard WorkerMultiDisplay = on
256*d870e050SAndroid Build Coastguard Worker
257*d870e050SAndroid Build Coastguard Worker# VulkanNullOptionalStrings-----------------------------------------------------
258*d870e050SAndroid Build Coastguard Worker# When we want to encode null optional vulkan strings as actual nulls instead of
259*d870e050SAndroid Build Coastguard Worker# empty strings
260*d870e050SAndroid Build Coastguard Worker# Requires guest support.
261*d870e050SAndroid Build Coastguard WorkerVulkanNullOptionalStrings = on
262*d870e050SAndroid Build Coastguard Worker
263*d870e050SAndroid Build Coastguard Worker# DynamicMediaProfile-----------------------------------------------------------
264*d870e050SAndroid Build Coastguard Worker# Enables changing the media_codecs_google_video.xml to link to another file by
265*d870e050SAndroid Build Coastguard Worker# setting a boot property ro.kernel.qemu.mediaprofile.video to the location of the
266*d870e050SAndroid Build Coastguard Worker# configuration file.
267*d870e050SAndroid Build Coastguard WorkerDynamicMediaProfile = off
268*d870e050SAndroid Build Coastguard Worker
269*d870e050SAndroid Build Coastguard Worker# YUV420888toNV21---------------------------------------------------------------
270*d870e050SAndroid Build Coastguard Worker# YUV420888toNV21 is a guest side feature which unifies the pixel format
271*d870e050SAndroid Build Coastguard Worker# HAL_PIXEL_FORMAT_YCbCr_420_888 as NV21 in gralloc and camera HAL
272*d870e050SAndroid Build Coastguard WorkerYUV420888toNV21 = on
273*d870e050SAndroid Build Coastguard Worker
274*d870e050SAndroid Build Coastguard Worker# YUVCache---------------------------------------------------------------
275*d870e050SAndroid Build Coastguard Worker# YUVCache is a guest side feature which asks the host to cache the
276*d870e050SAndroid Build Coastguard Worker# HAL_PIXEL_FORMAT_YCbCr_420_888 and HAL_PIXEL_FORMAT_YV12 frame.
277*d870e050SAndroid Build Coastguard WorkerYUVCache = on
278*d870e050SAndroid Build Coastguard Worker
279*d870e050SAndroid Build Coastguard Worker# KeycodeForwarding-------------------------------------------------------------
280*d870e050SAndroid Build Coastguard Worker# KeycodeForwarding is a guest side feature which emulator host will capture the keypress
281*d870e050SAndroid Build Coastguard Worker# and forward Liunx keycode to Android system.
282*d870e050SAndroid Build Coastguard Worker# NOTE: This differs from QtRawKeyboardInput in that keycode processing
283*d870e050SAndroid Build Coastguard Worker# still separates modifier keys from typed keys, and input is provided as paired
284*d870e050SAndroid Build Coastguard Worker# keydown and keyup events (rather than raw keydown/keyup events).
285*d870e050SAndroid Build Coastguard WorkerKeycodeForwarding = on
286*d870e050SAndroid Build Coastguard Worker
287*d870e050SAndroid Build Coastguard Worker# VulkanIgnoredHandles----------------------------------------------------------
288*d870e050SAndroid Build Coastguard Worker# Change in the Vulkan protocol to ignore handles in some situations
289*d870e050SAndroid Build Coastguard Worker# (VkWriteDescriptorSet, and others)
290*d870e050SAndroid Build Coastguard Worker# Requires guest support
291*d870e050SAndroid Build Coastguard WorkerVulkanIgnoredHandles = on
292*d870e050SAndroid Build Coastguard Worker
293*d870e050SAndroid Build Coastguard Worker# VirtioGpuNext-----------------------------------------------------------------
294*d870e050SAndroid Build Coastguard Worker# Whether virtio-gpu-next is supported. Requires guest support.
295*d870e050SAndroid Build Coastguard WorkerVirtioGpuNext = on
296*d870e050SAndroid Build Coastguard Worker
297*d870e050SAndroid Build Coastguard Worker# Mac80211hwsimUserspaceManaged-------------------------------------------------
298*d870e050SAndroid Build Coastguard Worker# Do not create mac80211_hwsim radios by the kernel on boot, create radios from
299*d870e050SAndroid Build Coastguard Worker# userspace instead.
300*d870e050SAndroid Build Coastguard WorkerMac80211hwsimUserspaceManaged = on
301*d870e050SAndroid Build Coastguard Worker
302*d870e050SAndroid Build Coastguard Worker# HasSharedSlotsHostMemoryAllocator---------------------------------------------
303*d870e050SAndroid Build Coastguard Worker# Host supports AddressSpaceSharedSlotsHostMemoryAllocatorContext
304*d870e050SAndroid Build Coastguard WorkerHasSharedSlotsHostMemoryAllocator = on
305*d870e050SAndroid Build Coastguard Worker
306*d870e050SAndroid Build Coastguard Worker# CarVHalReplay--------------------------------------------------------------
307*d870e050SAndroid Build Coastguard Worker# if enabled, sensor replay will be visible in extended window on Automotive AVDs.
308*d870e050SAndroid Build Coastguard WorkerCarVhalReplay = on
309*d870e050SAndroid Build Coastguard Worker
310*d870e050SAndroid Build Coastguard Worker# HardwareDecoder--------------------------------------------------------------
311*d870e050SAndroid Build Coastguard Worker# if enabled, emulator will add qemu.hwcodec.avcdec=2 and qemu.hwcodec.vpxdec=2
312*d870e050SAndroid Build Coastguard Worker# to the kernel command line to tell guest the two decoders can be enabled
313*d870e050SAndroid Build Coastguard WorkerHardwareDecoder = on
314*d870e050SAndroid Build Coastguard Worker
315*d870e050SAndroid Build Coastguard Worker# AndroidVirtualizationFramework ----------------------------------------------
316*d870e050SAndroid Build Coastguard Worker# if enabled, emulator will use -cpu host to enable kvm support inside the guest
317*d870e050SAndroid Build Coastguard Worker# this only works on x86_64 linux host; does not work on apple silicon for the moment
318*d870e050SAndroid Build Coastguard WorkerAndroidVirtualizationFramework = on
319*d870e050SAndroid Build Coastguard Worker
320*d870e050SAndroid Build Coastguard Worker# NoDelayCloseColorBuffer------------------------------------------------------
321*d870e050SAndroid Build Coastguard Worker# Used in conjunction with RefCountPipe = off, in systems where the guest
322*d870e050SAndroid Build Coastguard Worker# properly associates a color buffer with an OS handle, so we can safely
323*d870e050SAndroid Build Coastguard Worker# clean up the color buffer immediately.
324*d870e050SAndroid Build Coastguard WorkerNoDelayCloseColorBuffer = off
325*d870e050SAndroid Build Coastguard Worker
326*d870e050SAndroid Build Coastguard Worker# NoDeviceFrame----------------------------------------------------------------
327*d870e050SAndroid Build Coastguard Worker# Don't show the device frame, regardless of AVD config or Qt setting.
328*d870e050SAndroid Build Coastguard WorkerNoDeviceFrame = off
329*d870e050SAndroid Build Coastguard Worker
330*d870e050SAndroid Build Coastguard Worker# VirtioGpuNativeSync----------------------------------------------------------
331*d870e050SAndroid Build Coastguard Worker# Use virtio-gpu instead of goldfish sync for syncfd support.
332*d870e050SAndroid Build Coastguard Worker# TODO: test with goldfish
333*d870e050SAndroid Build Coastguard WorkerVirtioGpuNativeSync = off
334*d870e050SAndroid Build Coastguard Worker
335*d870e050SAndroid Build Coastguard Worker# VirtioWifi--------------------------------------------------------------------
336*d870e050SAndroid Build Coastguard Worker# if enabled, emulator will add ro.kernel.qemu.virtiowifi to the kernel command line
337*d870e050SAndroid Build Coastguard Worker# to tell the geust that VirtioWifi kernel driver will be used instead of mac80211_hwsim.
338*d870e050SAndroid Build Coastguard WorkerVirtioWifi = on
339*d870e050SAndroid Build Coastguard Worker
340*d870e050SAndroid Build Coastguard Worker# VulkanShaderFloat16Int8-------------------------------------------------------
341*d870e050SAndroid Build Coastguard Worker# Enables struct defs for VK_KHR_shader_float16_int8.
342*d870e050SAndroid Build Coastguard WorkerVulkanShaderFloat16Int8 = on
343*d870e050SAndroid Build Coastguard Worker
344*d870e050SAndroid Build Coastguard Worker# CarRotary--------------------------------------------------------------
345*d870e050SAndroid Build Coastguard Worker# if enabled, Car rotary controller will be visible in extended window on Automotive AVDs.
346*d870e050SAndroid Build Coastguard WorkerCarRotary = on
347*d870e050SAndroid Build Coastguard Worker
348*d870e050SAndroid Build Coastguard Worker# ModemSimulator--------------------------------------------------------------
349*d870e050SAndroid Build Coastguard Worker# turn on the modem simulator, instead of the legacy modem
350*d870e050SAndroid Build Coastguard WorkerModemSimulator = on
351*d870e050SAndroid Build Coastguard Worker
352*d870e050SAndroid Build Coastguard Worker# TvRemote
353*d870e050SAndroid Build Coastguard Worker# When enabled, the dpad is replaced with a remote specific to Android TV devices.
354*d870e050SAndroid Build Coastguard WorkerTvRemote = on
355*d870e050SAndroid Build Coastguard Worker
356*d870e050SAndroid Build Coastguard Worker# GuestUsesAngle--------------------------------------------------------------
357*d870e050SAndroid Build Coastguard Worker# Whether or not the guest is using ANGLE as its OpenGL driver.
358*d870e050SAndroid Build Coastguard WorkerGuestUsesAngle = off
359*d870e050SAndroid Build Coastguard Worker
360*d870e050SAndroid Build Coastguard Worker# VirtioVsockPipe--------------------------------------------------------------
361*d870e050SAndroid Build Coastguard Worker# The virtio-vsock device is a drop-in replacement for the goldfish_pipe device.
362*d870e050SAndroid Build Coastguard WorkerVirtioVsockPipe = on
363*d870e050SAndroid Build Coastguard Worker
364*d870e050SAndroid Build Coastguard Worker# VirtioMouse------------------------------------------------------------------
365*d870e050SAndroid Build Coastguard Worker# If enabled, the emulator will create mouse input events for guests, otherwise
366*d870e050SAndroid Build Coastguard Worker# it creates multi-touch events.
367*d870e050SAndroid Build Coastguard WorkerVirtioMouse = on
368*d870e050SAndroid Build Coastguard Worker
369*d870e050SAndroid Build Coastguard Worker# VirtconsoleLogcat-------------------------------------------------------------
370*d870e050SAndroid Build Coastguard Worker# If enabled, it replaces LogcatPipe with the forhvc1 chardev consifured to
371*d870e050SAndroid Build Coastguard Worker# stdio or to a file.
372*d870e050SAndroid Build Coastguard WorkerVirtconsoleLogcat = on
373*d870e050SAndroid Build Coastguard Worker
374*d870e050SAndroid Build Coastguard Worker# VulkanQueueSubmitWithCommands-------------------------------------------------
375*d870e050SAndroid Build Coastguard Worker# Use deferred command submission and global sequence number synchronization with Vulkan.
376*d870e050SAndroid Build Coastguard WorkerVulkanQueueSubmitWithCommands = on
377*d870e050SAndroid Build Coastguard Worker
378*d870e050SAndroid Build Coastguard Worker# VulkanBatchedDescriptorSetUpdate----------------------------------------------
379*d870e050SAndroid Build Coastguard Worker# Use batched descriptor set update.
380*d870e050SAndroid Build Coastguard WorkerVulkanBatchedDescriptorSetUpdate = on
381*d870e050SAndroid Build Coastguard Worker
382*d870e050SAndroid Build Coastguard Worker# Minigbm---------------------------------------------------------------
383*d870e050SAndroid Build Coastguard Worker# Minigbm is a guest side feature which use the minigbm for gralloc. It asks the host
384*d870e050SAndroid Build Coastguard Worker# camera to legacy operation
385*d870e050SAndroid Build Coastguard WorkerMinigbm = on
386*d870e050SAndroid Build Coastguard Worker# GnssGrpcV1-------------------------------------------------
387*d870e050SAndroid Build Coastguard Worker# Use grpc based gnss implementation
388*d870e050SAndroid Build Coastguard WorkerGnssGrpcV1 = on
389*d870e050SAndroid Build Coastguard Worker
390*d870e050SAndroid Build Coastguard Worker# AndroidbootProps--------------------------------------------------------------
391*d870e050SAndroid Build Coastguard Worker# AndroidbootProps2-------------------------------------------------------------
392*d870e050SAndroid Build Coastguard Worker# If enabled, the boot userspace properties (e.g. `qemu=1` or
393*d870e050SAndroid Build Coastguard Worker# `qemu.opengles.version=123456`) are passed in the ramdisk instead of
394*d870e050SAndroid Build Coastguard Worker# the kernel command line (which is deprecated for these purposes).
395*d870e050SAndroid Build Coastguard Worker# AndroidbootProps2 does not populate `qemu` and `androidboot.hardware` on the
396*d870e050SAndroid Build Coastguard Worker# host side since they are constants.
397*d870e050SAndroid Build Coastguard WorkerAndroidbootProps = on
398*d870e050SAndroid Build Coastguard WorkerAndroidbootProps2 = on
399*d870e050SAndroid Build Coastguard Worker
400*d870e050SAndroid Build Coastguard Worker# DeviceSkinOverlay-------------------------------------------------------------
401*d870e050SAndroid Build Coastguard Worker# Apply overlay for each enabled devices (pixel devices)
402*d870e050SAndroid Build Coastguard WorkerDeviceSkinOverlay = on
403*d870e050SAndroid Build Coastguard Worker
404*d870e050SAndroid Build Coastguard Worker# DeviceStateOnBoot-------------------------------------------------------------
405*d870e050SAndroid Build Coastguard Worker# If enabled, it will generate device_state_configratio.xml and send to guest.
406*d870e050SAndroid Build Coastguard WorkerDeviceStateOnBoot = on
407*d870e050SAndroid Build Coastguard Worker
408*d870e050SAndroid Build Coastguard Worker# SupportPixelFold -------------------------------------------------------------
409*d870e050SAndroid Build Coastguard Worker# If enabled, it will create pixel_fold specific configuration on /data/system
410*d870e050SAndroid Build Coastguard Worker# {devicestate/ and displayconfig/}, when the hw.device.name=pixel_fold is given
411*d870e050SAndroid Build Coastguard Worker# in the avd/config.ini
412*d870e050SAndroid Build Coastguard WorkerSupportPixelFold = on
413*d870e050SAndroid Build Coastguard Worker
414*d870e050SAndroid Build Coastguard Worker# HWCMultiConfigs--------------------------------------------------------------
415*d870e050SAndroid Build Coastguard Worker# If enabled, will config multiple configs in hwcompser HAL
416*d870e050SAndroid Build Coastguard WorkerHWCMultiConfigs = on
417*d870e050SAndroid Build Coastguard Worker
418*d870e050SAndroid Build Coastguard Worker# AsyncComposeSupport ---------------------------------------------------
419*d870e050SAndroid Build Coastguard Worker# If enabled, hwcomposer will be able to use asynchronous render control
420*d870e050SAndroid Build Coastguard Worker# commands to compose and post frame buffers.
421*d870e050SAndroid Build Coastguard WorkerAsyncComposeSupport = off
422*d870e050SAndroid Build Coastguard Worker
423*d870e050SAndroid Build Coastguard Worker# VirtioSndCard-----------------------------------------------------------------
424*d870e050SAndroid Build Coastguard Worker# Enables the virtio-snd audio card and disables the Intel HDA one
425*d870e050SAndroid Build Coastguard WorkerVirtioSndCard = on
426*d870e050SAndroid Build Coastguard Worker
427*d870e050SAndroid Build Coastguard Worker# DownloadableSnapshot -----------------------------------------------------------------
428*d870e050SAndroid Build Coastguard Worker# Enables downloadable snapshot
429*d870e050SAndroid Build Coastguard WorkerDownloadableSnapshot = on
430*d870e050SAndroid Build Coastguard Worker
431*d870e050SAndroid Build Coastguard Worker# VirtioTablet-----------------------------------------------------------------
432*d870e050SAndroid Build Coastguard Worker# If enabled, the emulator will create tablet input events for guests, otherwise
433*d870e050SAndroid Build Coastguard Worker# it creates multi-touch events. Cannot be used with VirtioMouse.
434*d870e050SAndroid Build Coastguard WorkerVirtioTablet = on
435*d870e050SAndroid Build Coastguard Worker
436*d870e050SAndroid Build Coastguard Worker# VirtioGpuFenceContexts--------------------------------------------------------
437*d870e050SAndroid Build Coastguard Worker# If enabled, virtio-gpu fence on multiple timelines will be supported.
438*d870e050SAndroid Build Coastguard Worker# Currently this feature doesn't work because the qemu doesn't support this
439*d870e050SAndroid Build Coastguard Worker# feature yet, while crosvm and the gfxstream renderer backend has already
440*d870e050SAndroid Build Coastguard Worker# supported this feature.
441*d870e050SAndroid Build Coastguard WorkerVirtioGpuFenceContexts = off
442*d870e050SAndroid Build Coastguard Worker
443*d870e050SAndroid Build Coastguard Worker# VsockSnapshotLoadFixed_b231345789---------------------------------------------
444*d870e050SAndroid Build Coastguard Worker# Send the RST frame when the VSOCK device is loaded from a snapshot.
445*d870e050SAndroid Build Coastguard WorkerVsockSnapshotLoadFixed_b231345789 = on
446*d870e050SAndroid Build Coastguard Worker
447*d870e050SAndroid Build Coastguard Worker# VulkanAstcLdrEmulation--------------------------------------------------------
448*d870e050SAndroid Build Coastguard Worker# Enable Vulkan ASTC LDR emulation.
449*d870e050SAndroid Build Coastguard WorkerVulkanAstcLdrEmulation = on
450*d870e050SAndroid Build Coastguard Worker
451*d870e050SAndroid Build Coastguard Worker# VulkanYcbcrEmulation----------------------------------------------------------
452*d870e050SAndroid Build Coastguard Worker# Enable Vulkan ASTC LDR emulation.
453*d870e050SAndroid Build Coastguard WorkerVulkanYcbcrEmulation = off
454*d870e050SAndroid Build Coastguard Worker
455*d870e050SAndroid Build Coastguard Worker# Enable Vulkan to allocate device memory only
456*d870e050SAndroid Build Coastguard Worker# there will be no host only memory
457*d870e050SAndroid Build Coastguard Worker# needed for amd gpu on linux, for the moment
458*d870e050SAndroid Build Coastguard Worker# caution: this essentially limits the amount of
459*d870e050SAndroid Build Coastguard Worker# memory on gpu.
460*d870e050SAndroid Build Coastguard Worker# Bug: 324086743
461*d870e050SAndroid Build Coastguard WorkerVulkanAllocateDeviceMemoryOnly = off
462*d870e050SAndroid Build Coastguard Worker
463*d870e050SAndroid Build Coastguard Worker# when the memory is host visible, we want to
464*d870e050SAndroid Build Coastguard Worker# allocate them from emulator instead of from
465*d870e050SAndroid Build Coastguard Worker# driver using vkAllocateMemory, to avoid
466*d870e050SAndroid Build Coastguard Worker# kvm "Bad Address" problem
467*d870e050SAndroid Build Coastguard WorkerVulkanAllocateHostMemory = off
468*d870e050SAndroid Build Coastguard Worker
469*d870e050SAndroid Build Coastguard Worker# NetsimWebUi-------------------------------------------------------------------
470*d870e050SAndroid Build Coastguard Worker# Enable the netsim web user interface
471*d870e050SAndroid Build Coastguard WorkerNetsimWebUi = on
472*d870e050SAndroid Build Coastguard Worker
473*d870e050SAndroid Build Coastguard Worker# NetsimCliUi-------------------------------------------------------------------
474*d870e050SAndroid Build Coastguard Worker# Enable the netsim command line interface through the netsim executable
475*d870e050SAndroid Build Coastguard WorkerNetsimCliUi = on
476*d870e050SAndroid Build Coastguard Worker
477*d870e050SAndroid Build Coastguard Worker# WiFiPacketStream--------------------------------------------------------------
478*d870e050SAndroid Build Coastguard Worker# Enable WiFi packet streamer. Netsim will provide WiFi functionality
479*d870e050SAndroid Build Coastguard WorkerWiFiPacketStream = off
480*d870e050SAndroid Build Coastguard Worker
481*d870e050SAndroid Build Coastguard Worker# Uwb---------------------------------------------------------------------------
482*d870e050SAndroid Build Coastguard Worker# Enable Uwb packet streamer. Netsim will provide Uwb functionality
483*d870e050SAndroid Build Coastguard WorkerUwb = on
484*d870e050SAndroid Build Coastguard Worker
485*d870e050SAndroid Build Coastguard Worker# GuestAngle--------------------------------------------------------------------
486*d870e050SAndroid Build Coastguard Worker# Enforce usage of ANGLE on the guest side.
487*d870e050SAndroid Build Coastguard WorkerGuestAngle = on
488*d870e050SAndroid Build Coastguard Worker
489*d870e050SAndroid Build Coastguard Worker# BypassVulkanDeviceFeatureOverrides--------------------------------------------
490*d870e050SAndroid Build Coastguard Worker# Bypass a certain set of problematic Vulkan overrides which we haven't fully implemented yet.
491*d870e050SAndroid Build Coastguard WorkerBypassVulkanDeviceFeatureOverrides = off
492*d870e050SAndroid Build Coastguard Worker
493*d870e050SAndroid Build Coastguard Worker#DeviceKeyboardHasAssistKey-----------------------------------------------------
494*d870e050SAndroid Build Coastguard Worker# For devices without this key on the keyboard, the emulator will send the
495*d870e050SAndroid Build Coastguard Worker# event via adb
496*d870e050SAndroid Build Coastguard WorkerDeviceKeyboardHasAssistKey = on
497*d870e050SAndroid Build Coastguard Worker
498*d870e050SAndroid Build Coastguard Worker# QtRawKeyboardInput
499*d870e050SAndroid Build Coastguard Worker# Enables raw keyboard input from QT (specifically keydown/keyup events) to be
500*d870e050SAndroid Build Coastguard Worker# sent to the guest with minimal manipulation. Critical shortcut keys (mouse
501*d870e050SAndroid Build Coastguard Worker# release, tool window shortcuts, etc.) are still processed prior to sending
502*d870e050SAndroid Build Coastguard Worker# key input. This has no effect when gRPC keyboard input is used instead.
503*d870e050SAndroid Build Coastguard WorkerQtRawKeyboardInput = off
504