xref: /aosp_15_r20/prebuilts/android-emulator/darwin-x86_64/lib/advancedFeatures.ini (revision d870e0501505f2fc9999364ffe386a6b6151adc1)
1#-------------------------------------------------------------------------------
2# Advanced emulator features
3#-------------------------------------------------------------------------------
4
5# GLPipeChecksum----------------------------------------------------------------
6# For every GL call that transfers between host and guest, GLPipeChecksum = on
7# will compute a checksum consisting of some function of the actual bit vector
8# corresponding to the GL command, verifying that the same checksum shows up
9# on both the host and guest. Violations of the checksum (mismatches) result
10# in an abort() and crash report being sent.
11#
12# Currently, the checksum is mainly making sure that the command itself and all
13# arrays passed through the pipe are of proper length.
14GLPipeChecksum = on
15# ------------------------------------------------------------------------------
16
17# GrallocSync-------------------------------------------------------------------
18# Most apps that display images do so through OpenGL, but there are some apps
19# that write directly to gralloc color buffers. In our goldfish-driver gralloc
20# implementation, which represents gralloc color buffers as host OpenGL color
21# buffers.
22#
23# For example, in the camera app, the emulated webcam driver will pull frames
24# to a gralloc color buffer directly, and then in another thread or process,
25# the color buffer representing the camera frame preview could be posted
26# onscreen.
27#
28# These operations aren't guaranteed to have their order preserved when arriving
29# from the guest, and if executed on the host in the wrong order, we could
30# end up with out of order webcam frames, for instance.
31#
32# GrallocSync = on adds synchronization to the host for this use case where apps
33# directly write to gralloc color buffers and then post them.
34# Gralloc sync disabled for now because it is making CTS sad.
35GrallocSync = off
36# ------------------------------------------------------------------------------
37
38# GLAsyncSwap-------------------------------------------------------------------
39# OpenGL apps in the guest present their contents indirectly through
40# SurfaceFlinger. The goldfish driver's implementation of eglSwapBuffers is
41# based on queuing the finished frame (buffer) to SurfaceFlinger.
42# SurfaceFlinger then acquires that finished buffer from the OpenGL app,
43# does the actual posting to the display (which may involve a call in turn
44# to eglSwapBuffers, esp. if we are not using hardware composer),
45# and releases the buffer, allowing the OpenGL app to dequeue a fresh
46# buffer for whatever to draw next.
47#
48# The problem is that when we are using host GPU, the rubber meets the road #
49# in the host not the guest (what the user sees is not due to any concrete
50# action inside the guest, but due to the host GPU communicating with the host
51# display), so it's not always clear what a "finished frame" means. In
52# particular, the frame is not necessarily finished when the buffer is queued
53# in the guest, depending on host driver quirks. So, posting unfinished or
54# even older buffers to SurfaceFlinger will result in out of order frames.
55#
56# GLAsyncSwap = off pretends this issue doesn't exist and it's up to the host
57# driver to properly synchronize upon calling rcFlushWindowColorBuffer.
58# GLAsyncSwap = on uses the host GL driver's fence commands and fence fd's in
59# the guest in order to have explicit signals of buffer swaps complete. This
60# preserves frame ordering at a slight performance cost, but the cost is less
61# than that of other solutions like calling glFinish() on the host.
62# Disabled by default for now
63GLAsyncSwap = off
64# ------------------------------------------------------------------------------
65
66# EncryptUserData---------------------------------------------------------------
67# CTS requires that userdata be encrypted, at least for api23 and later. However
68# for non Google images or older system images, this is not required or not
69# implemted. Emulator will enable this feature only if the system says it supports
70# encryption. It is on by default on the host, and according to the current rule,
71# a feature is only on if both host and guest support it; so it effectively leaves
72# to guest to decide.
73EncryptUserData = on
74# ------------------------------------------------------------------------------
75
76# RefCountPipe------------------------------------------------------------------
77# RefCount Pipe is a different approach to simplify the Color Buffer management
78# on host. In guest, the handle returned by gralloc allocator can be passed around
79# between processes through Binder. Android system ensures that the handle on both
80# calling and receiving end willl be properly closed. Thus, when gralloc allocates
81# buffer for the first time, we establish a Refcount pipe between guest and host,
82# and assign its fd to the handle. In the desturctor of the handle, close the fd.
83# Guest kernel will decide when to really close the fd and thus trigger the pipe's
84# closing on host. On the host side, we only need to destroy the color buffer
85# immediately and not worry about any reference counting at all. This approach will
86# not only simplify the the logic between guest and host, but also reduce memory leaks.
87RefCountPipe = on
88# ------------------------------------------------------------------------------
89
90# IntelPerformanceMonitoringUnit------------------------------------------------
91# Some CTS tests (mainly SimplePerf) require that the CPU expose some kind of
92# counters that can be used to measure CPU performance in cycles,
93# cache hit/miss, etc.
94# However, the use of this on the vCPU requires that the guest kernel be in
95# a fairly recent state, otherwise the emulator will kernel panic on startup.
96IntelPerformanceMonitoringUnit = on
97# ------------------------------------------------------------------------------
98
99# GLDMA-------------------------------------------------------------------------
100# Video playback can approach 1080p60 and be solid 720p60 if we map guest memory
101# to host and use it to perofrm color buffer updates, and perform YV12->RGB
102# on the host as well, in an OpenGL shader.
103GLDMA = on
104# ------------------------------------------------------------------------------
105
106# GLESDynamicVersion------------------------------------------------------------
107# This feature attempts to detect the maximum supported GLES version depending on
108# which OpenGL function pointers have been found on the GL libraries used
109# on the host system. Different platforms / hardware + video driver setups can
110# have different support.
111# For example, OS X is not known to support GLES 3.1.
112# If this feature is set to "off", the max supported GLES version is assumed to
113# be <= 2 and also depend on the system image only (some images only support ES 1).
114GLESDynamicVersion = off
115# ------------------------------------------------------------------------------
116
117# Wifi -------------------------------------------------------------------------
118# This feature indicates that the system image and the emulator support Wifi.
119# When this is enabled the network configuration of the system image will be
120# significantly different and the emulator will send different network setup
121# information via RIL.
122Wifi = on
123
124# ForceANGLE--------------------------------------------------------------------
125# This feature attempts to default the renderer to ANGLE, but can be itself
126# overridden by:
127# -gpu command line argument
128# UI setting
129# The override (and others) are done through the UI, so the user is aware
130# and if the user changes to a setting other than "auto", the user setting
131# is respected.
132ForceANGLE = off
133# ------------------------------------------------------------------------------
134
135# ForceSwiftshader--------------------------------------------------------------
136# This feature attempts to default the renderer to Swiftshader. Otherwise,
137# same behavior as ForceANGLE.
138ForceSwiftshader = off
139# ------------------------------------------------------------------------------
140
141# PlayStoreImage ---------------------------------------------------------------
142# The playstore image has CTS requirements that emulator should check and ensure
143# Guest image will indicate whether it has it or not;
144PlayStoreImage = on
145# ------------------------------------------------------------------------------
146
147# LogcatPipe ---------------------------------------------------------------
148# The pipe based logcat is meant to replace the 'adb shell logcat'
149# Guest image will indicate whether it has it or not;
150LogcatPipe = on
151# ------------------------------------------------------------------------------
152
153# Hypervisor feature flags. Assumed mutually exclusive. If all flags are off,
154# then we have:
155# Mac/Win: HAXM
156# Linux: KVM
157# If a flag is on, then attempts are made to detect host support, and if there
158# is support, then the hypervisor in question is actually used.
159HYPERV = off
160HVF = on
161KVM = off
162HAXM = off
163
164# FastSnapshotV1 ---------------------------------------------------------------
165# Enable the new implementation of snapshotting in the emulator and use it for
166# quick boot.
167FastSnapshotV1 = on
168# ------------------------------------------------------------------------------
169
170# ScreenRecording --------------------------------------------------------------
171# Enables the host-side screen recording feature.
172ScreenRecording = on
173# ------------------------------------------------------------------------------
174
175# VirtualScene -----------------------------------------------------------------
176# Enables the host-side virtual scene feature.
177VirtualScene = on
178
179# VideoPlayback
180# Enables the camera video playback feature.
181VideoPlayback = off
182
183# system as root  --------------------------------------------------------------
184# Guest feature: when this is on, emulator should use system partition as root fs
185# instead of using ramdisk as root fs.
186SystemAsRoot = on
187
188# IgnoreHostOpenGLErrors--------------------------------------------------------
189# Don't query the host for OpenGL errors. Only use if rendering is OK for you
190# already. Should decrease jank in UI by quite a bit.
191IgnoreHostOpenGLErrors = off
192
193# GenericSnapshotsUI------------------------------------------------------------
194# Show the generic snapshots UI.
195GenericSnapshotsUI = on
196
197# AllowSnapshotMigration--------------------------------------------------------
198# Skip snapshot file consistency checks, allowing for snapshot migration.
199AllowSnapshotMigration = off
200
201# WindowsOnDemandSnapshotLoad---------------------------------------------------
202# On-demand snapshot load for Windows.
203WindowsOnDemandSnapshotLoad = on
204
205# Windows Hypervisor Platform---------------------------------------------------
206# Allow WHPX
207WindowsHypervisorPlatform = on
208
209# Device Tree Blob--------------------------------------------------------------
210KernelDeviceTreeBlobSupport = on
211
212# Dynamic partition support --------------------------------------------------------------
213DynamicPartition = on
214
215# Location UI v2----------------------------------------------------------------
216LocationUiV2 = on
217
218# SnapshotAdb-------------------------------------------------------------------
219SnapshotAdb = off
220
221# QuickbootFileBacked-----------------------------------------------------------
222QuickbootFileBacked = on
223
224# HWComposer Host Composition---------------------------------------------------
225HostComposition = on
226
227# On-demand RAM load for snapshots----------------------------------------------
228# Currently disabled due to issues with MemoryWatch and host side
229# EFAULT's and recent guest kernels + Linux KVM
230OnDemandSnapshotLoad = off
231
232# WifiConfigurable--------------------------------------------------------------
233WifiConfigurable = off
234
235# Vulkan------------------------------------------------------------------------
236# If enabled, the guest Vulkan HAL (if installed) will activate.
237Vulkan = off
238
239# CarVHalTable--------------------------------------------------------------
240# if enabled, Car Vhal Table will show in extended window -> CarData
241CarVHalTable = on
242
243# VirtioInput-------------------------------------------------------------------
244# VirtioInput is a guest side feature which indicates that CONFIG_VIRTIO_INPUT is
245# enabled in kernel. If enabled, emulator will use virtio input device instead of
246# goldfish_events to implement multi-touch functionality.
247VirtioInput = on
248
249# IpDisconnectOnLoad------------------------------------------------------------
250# Reset IP connection state when loading from snapshots
251IpDisconnectOnLoad = off
252
253# VulkanSnapshots---------------------------------------------------------------
254# Reset IP connection state when loading from snapshots
255VulkanSnapshots = off
256
257# MultiDisplay------------------------------------------------------------------
258# MultiDisplay is a guest side feature
259MultiDisplay = on
260
261# VulkanNullOptionalStrings-----------------------------------------------------
262# When we want to encode null optional vulkan strings as actual nulls instead of
263# empty strings
264# Requires guest support as well.
265# On Fuchsia, hardcoded to on.
266VulkanNullOptionalStrings = on
267
268# DynamicMediaProfile-----------------------------------------------------------
269# Enables changing the media_codecs_google_video.xml to link to another file by
270# setting a boot property ro.kernel.qemu.mediaprofile.video to the location of the
271# configuration file.
272DynamicMediaProfile = off
273
274# YUV420888toNV21---------------------------------------------------------------
275# YUV420888toNV21 is a guest side feature which unifies the pixel format
276# HAL_PIXEL_FORMAT_YCbCr_420_888 as NV21 in gralloc and camera HAL
277YUV420888toNV21 = on
278
279# YUVCache---------------------------------------------------------------
280# YUVCache is a guest side feature which asks the host to cache the
281# HAL_PIXEL_FORMAT_YCbCr_420_888 and HAL_PIXEL_FORMAT_YV12 frame.
282YUVCache = on
283
284# KeycodeForwarding-------------------------------------------------------------
285# KeycodeForwarding is a guest side feature which emulator host will capture the keypress
286# and forward Liunx keycode to Android system.
287KeycodeForwarding = on
288
289# VulkanIgnoredHandles----------------------------------------------------------
290# Change in the Vulkan protocol to ignore handles in some situations
291# (VkWriteDescriptorSet, and others)
292# Requires guest support
293VulkanIgnoredHandles = on
294
295# VirtioGpuNext-----------------------------------------------------------------
296# Whether virtio-gpu-next is supported. Requires guest support.
297VirtioGpuNext = on
298
299# Mac80211hwsimUserspaceManaged-------------------------------------------------
300# Do not create mac80211_hwsim radios by the kernel on boot, create radios from
301# userspace instead.
302Mac80211hwsimUserspaceManaged = on
303
304# HasSharedSlotsHostMemoryAllocator---------------------------------------------
305# Host supports AddressSpaceSharedSlotsHostMemoryAllocatorContext
306HasSharedSlotsHostMemoryAllocator = on
307
308# CarVHalReplay--------------------------------------------------------------
309# if enabled, sensor replay will be visible in extended window on Automotive AVDs.
310CarVhalReplay = on
311
312# HardwareDecoder--------------------------------------------------------------
313# if enabled, emulator will add qemu.hwcodec.avcdec=2 and qemu.hwcodec.vpxdec=2
314# to the kernel command line to tell guest the two decoders can be enabled
315HardwareDecoder = on
316
317# NoDelayCloseColorBuffer------------------------------------------------------
318# Used in conjunction with RefCountPipe = off, in systems where the guest
319# properly associates a color buffer with an OS handle, so we can safely
320# clean up the color buffer immediately.
321NoDelayCloseColorBuffer = off
322
323# NoDeviceFrame----------------------------------------------------------------
324# Don't show the device frame, regardless of AVD config or Qt setting.
325NoDeviceFrame = off
326
327# VirtioGpuNativeSync----------------------------------------------------------
328# Use virtio-gpu instead of goldfish sync for syncfd support.
329# TODO: test with goldfish
330VirtioGpuNativeSync = off
331
332# VirtioWifi--------------------------------------------------------------------
333# if enabled, emulator will add ro.kernel.qemu.virtiowifi to the kernel command line
334# to tell the geust that VirtioWifi kernel driver will be used instead of mac80211_hwsim.
335VirtioWifi = on
336
337# VulkanShaderFloat16Int8-------------------------------------------------------
338# Enables struct defs for VK_KHR_shader_float16_int8.
339VulkanShaderFloat16Int8 = on
340
341# CarRotary--------------------------------------------------------------
342# if enabled, Car rotary controller will be visible in extended window on Automotive AVDs.
343CarRotary = on
344
345# ModemSimulator--------------------------------------------------------------
346# turn on the modem simulator, instead of the legacy modem
347ModemSimulator = on
348
349# TvRemote
350# When enabled, the dpad is replaced with a remote specific to Android TV devices.
351TvRemote = on
352
353# GuestUsesAngle--------------------------------------------------------------
354# Whether or not the guest is using ANGLE as its OpenGL driver.
355GuestUsesAngle = off
356
357# VirtioVsockPipe--------------------------------------------------------------
358# The virtio-vsock device is a drop-in replacement for the goldfish_pipe device.
359VirtioVsockPipe = on
360
361# VirtioMouse------------------------------------------------------------------
362# If enabled, the emulator will create mouse input events for guests, otherwise
363# it creates multi-touch events.
364VirtioMouse = on
365
366# VirtconsoleLogcat-------------------------------------------------------------
367# If enabled, it replaces LogcatPipe with the forhvc1 chardev consifured to
368# stdio or to a file.
369VirtconsoleLogcat = on
370
371# VulkanQueueSubmitWithCommands-------------------------------------------------
372# Use deferred command submission and global sequence number synchronization with Vulkan.
373VulkanQueueSubmitWithCommands = on
374
375# VulkanBatchedDescriptorSetUpdate----------------------------------------------
376# Use batched descriptor set updates.
377VulkanBatchedDescriptorSetUpdate = on
378
379# Minigbm---------------------------------------------------------------
380# Minigbm is a guest side feature which use the minigbm for gralloc. It asks the host
381# camera to legacy operation
382Minigbm = on
383# GnssGrpcV1-------------------------------------------------
384# Use grpc based gnss implementation
385GnssGrpcV1 = on
386
387# AndroidbootProps--------------------------------------------------------------
388# AndroidbootProps2-------------------------------------------------------------
389# If enabled, the boot userspace properties (e.g. `qemu=1` or
390# `qemu.opengles.version=123456`) are passed in the ramdisk instead of
391# the kernel command line (which is deprecated for these purposes).
392# AndroidbootProps2 does not populate `qemu` and `androidboot.hardware` on the
393# host side since they are constants.
394AndroidbootProps = on
395AndroidbootProps2 = on
396
397# DeviceSkinOverlay-------------------------------------------------------------
398# Apply overlay for each enabled devices (pixel devices)
399DeviceSkinOverlay = on
400AndroidbootProps = off
401
402# BluetoothEmulation-------------------------------------------------------------
403# If enabled, it will enable the bluetooth emulation stack.
404BluetoothEmulation = off
405
406# DeviceStateOnBoot-------------------------------------------------------------
407# If enabled, it will generate device_state_configratio.xml and send to guest.
408DeviceStateOnBoot = on
409
410# HWCMultiConfigs--------------------------------------------------------------
411# If enabled, will config multiple configs in hwcompser HAL
412HWCMultiConfigs = on
413
414# AsyncComposeSupport ---------------------------------------------------
415# If enabled, hwcomposer will be able to use asynchronous render control
416# commands to compose and post frame buffers.
417AsyncComposeSupport = off
418
419# VirtioSndCard-----------------------------------------------------------------
420# Enables the virtio-snd audio card and disables the Intel HDA one
421VirtioSndCard = on
422
423# VirtioTablet-----------------------------------------------------------------
424# If enabled, the emulator will create tablet input events for guests, otherwise
425# it creates multi-touch events. Cannot be used with VirtioMouse.
426VirtioTablet = on
427
428# VirtioGpuFenceContexts--------------------------------------------------------
429# If enabled, virtio-gpu fence on multiple timelines will be supported.
430# Currently this feature doesn't work because the qemu doesn't support this
431# feature yet, while crosvm and the gfxstream renderer backend has already
432# supported this feature.
433VirtioGpuFenceContexts = off
434