xref: /aosp_15_r20/prebuilts/android-emulator/darwin-x86_64/lib/advancedFeaturesCanary.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
91# IntelPerformanceMonitoringUnit------------------------------------------------
92# Some CTS tests (mainly SimplePerf) require that the CPU expose some kind of
93# counters that can be used to measure CPU performance in cycles,
94# cache hit/miss, etc.
95# However, the use of this on the vCPU requires that the guest kernel be in
96# a fairly recent state, otherwise the emulator will kernel panic on startup.
97IntelPerformanceMonitoringUnit = on
98# ------------------------------------------------------------------------------
99
100# GLDMA-------------------------------------------------------------------------
101# Video playback can approach 1080p60 and be solid 720p60 if we map guest memory
102# to host and use it to perofrm color buffer updates, and perform YV12->RGB
103# on the host as well, in an OpenGL shader.
104GLDMA = on
105
106# Enables DMA support for glMapBufferRange and glUnmapBuffer
107GLDMA2 = on
108# Enables direct memory (to the host memory) access in glMapBufferRange
109GLDirectMem = off
110# ------------------------------------------------------------------------------
111
112# GLESDynamicVersion------------------------------------------------------------
113# This feature attempts to detect the maximum supported GLES version depending on
114# which OpenGL function pointers have been found on the GL libraries used
115# on the host system. Different platforms / hardware + video driver setups can
116# have different support.
117# For example, OS X is not known to support GLES 3.1.
118# If this feature is set to "off", the max supported GLES version is assumed to
119# be <= 2 and also depend on the system image only (some images only support ES 1).
120GLESDynamicVersion = off
121# ------------------------------------------------------------------------------
122
123# Wifi -------------------------------------------------------------------------
124# This feature indicates that the system image and the emulator support Wifi.
125# When this is enabled the network configuration of the system image will be
126# significantly different and the emulator will send different network setup
127# information via RIL.
128Wifi = on
129
130# ForceANGLE--------------------------------------------------------------------
131# This feature attempts to default the renderer to ANGLE, but can be itself
132# overridden by:
133# -gpu command line argument
134# UI setting
135# The override (and others) are done through the UI, so the user is aware
136# and if the user changes to a setting other than "auto", the user setting
137# is respected.
138ForceANGLE = off
139# ------------------------------------------------------------------------------
140
141# ForceSwiftshader--------------------------------------------------------------
142# This feature attempts to default the renderer to Swiftshader. Otherwise,
143# same behavior as ForceANGLE.
144ForceSwiftshader = off
145# ------------------------------------------------------------------------------
146
147# PlayStoreImage ---------------------------------------------------------------
148# The playstore image has CTS requirements that emulator should check and ensure
149# Guest image will indicate whether it has it or not;
150PlayStoreImage = on
151# ------------------------------------------------------------------------------
152
153# LogcatPipe ---------------------------------------------------------------
154# The pipe based logcat is meant to replace the 'adb shell logcat'
155# Guest image will indicate whether it has it or not;
156LogcatPipe = on
157# ------------------------------------------------------------------------------
158
159# Hypervisor feature flags. Assumed mutually exclusive. If all flags are off,
160# then we have:
161# Mac/Win: HAXM
162# Linux: KVM
163# If a flag is on, then attempts are made to detect host support, and if there
164# is support, then the hypervisor in question is actually used.
165HYPERV = off
166HVF = on
167KVM = off
168HAXM = off
169
170# FastSnapshotV1 ---------------------------------------------------------------
171# Enable the new implementation of snapshotting in the emulator and use it for
172# quick boot.
173FastSnapshotV1 = on
174# ------------------------------------------------------------------------------
175
176# ScreenRecording --------------------------------------------------------------
177# Enables the host-side screen recording feature.
178ScreenRecording = on
179# ------------------------------------------------------------------------------
180
181# VirtualScene -----------------------------------------------------------------
182# Enables the host-side virtual scene feature.
183VirtualScene = on
184
185# VideoPlayback -----------------------------------------------------------------
186# Enables the camera video playback feature.
187VideoPlayback = off
188
189# system as root  --------------------------------------------------------------
190# Guest feature: when this is on, emulator should use system partition as root fs
191# instead of using ramdisk as root fs.
192SystemAsRoot = on
193
194# IgnoreHostOpenGLErrors--------------------------------------------------------
195# Don't query the host for OpenGL errors. Only use if rendering is OK for you
196# already. Should decrease jank in UI by quite a bit.
197IgnoreHostOpenGLErrors = off
198
199# GenericSnapshotsUI------------------------------------------------------------
200# Show the generic snapshots UI.
201GenericSnapshotsUI = on
202
203# AllowSnapshotMigration--------------------------------------------------------
204# Skip snapshot file consistency checks, allowing for snapshot migration.
205AllowSnapshotMigration = off
206
207# WindowsOnDemandSnapshotLoad---------------------------------------------------
208# On-demand snapshot load for Windows.
209WindowsOnDemandSnapshotLoad = on
210
211# Windows Hypervisor Platform---------------------------------------------------
212# Allow WHPX
213WindowsHypervisorPlatform = on
214
215# Device Tree Blob--------------------------------------------------------------
216KernelDeviceTreeBlobSupport = on
217
218# Dynamic partition support --------------------------------------------------------------
219DynamicPartition = on
220
221# Location UI v2----------------------------------------------------------------
222LocationUiV2 = on
223
224# SnapshotAdb-------------------------------------------------------------------
225SnapshotAdb = off
226
227# QuickbootFileBacked-----------------------------------------------------------
228QuickbootFileBacked = on
229
230# HWComposer Host Composition---------------------------------------------------
231HostComposition = on
232
233# On-demand RAM load for snapshots----------------------------------------------
234# Currently disabled due to issues with MemoryWatch and host side
235# EFAULT's and recent guest kernels + Linux KVM
236OnDemandSnapshotLoad = off
237
238# WifiConfigurable--------------------------------------------------------------
239WifiConfigurable = off
240
241# Vulkan------------------------------------------------------------------------
242# If enabled, the guest Vulkan HAL (if installed) will activate.
243Vulkan = off
244
245# CarVHalTable--------------------------------------------------------------
246# if enabled, Car Vhal Table will show in extended window -> CarData
247CarVHalTable = on
248
249# VirtioInput-------------------------------------------------------------------
250# VirtioInput is a guest side feature which indicates that CONFIG_VIRTIO_INPUT is
251# enabled in kernel. If enabled, emulator will use virtio input device instead of
252# goldfish_events to implement multi-touch functionality.
253VirtioInput = on
254
255# IpDisconnectOnLoad------------------------------------------------------------
256# Reset IP connection state when loading from snapshots
257IpDisconnectOnLoad = off
258
259# VulkanSnapshots---------------------------------------------------------------
260# Reset IP connection state when loading from snapshots
261VulkanSnapshots = off
262
263# MultiDisplay------------------------------------------------------------------
264# MultiDisplay is a guest side feature
265MultiDisplay = on
266
267# VulkanNullOptionalStrings-----------------------------------------------------
268# When we want to encode null optional vulkan strings as actual nulls instead of
269# empty strings
270# Requires guest support.
271VulkanNullOptionalStrings = on
272
273# DynamicMediaProfile-----------------------------------------------------------
274# Enables changing the media_codecs_google_video.xml to link to another file by
275# setting a boot property ro.kernel.qemu.mediaprofile.video to the location of the
276# configuration file.
277DynamicMediaProfile = off
278
279# YUV420888toNV21---------------------------------------------------------------
280# YUV420888toNV21 is a guest side feature which unifies the pixel format
281# HAL_PIXEL_FORMAT_YCbCr_420_888 as NV21 in gralloc and camera HAL
282YUV420888toNV21 = on
283
284# YUVCache---------------------------------------------------------------
285# YUVCache is a guest side feature which asks the host to cache the
286# HAL_PIXEL_FORMAT_YCbCr_420_888 and HAL_PIXEL_FORMAT_YV12 frame.
287YUVCache = on
288
289# KeycodeForwarding-------------------------------------------------------------
290# KeycodeForwarding is a guest side feature which emulator host will capture the keypress
291# and forward Liunx keycode to Android system.
292KeycodeForwarding = on
293
294# VulkanIgnoredHandles----------------------------------------------------------
295# Change in the Vulkan protocol to ignore handles in some situations
296# (VkWriteDescriptorSet, and others)
297# Requires guest support
298VulkanIgnoredHandles = on
299
300# VirtioGpuNext-----------------------------------------------------------------
301# Whether virtio-gpu-next is supported. Requires guest support.
302VirtioGpuNext = on
303
304# Mac80211hwsimUserspaceManaged-------------------------------------------------
305# Do not create mac80211_hwsim radios by the kernel on boot, create radios from
306# userspace instead.
307Mac80211hwsimUserspaceManaged = on
308
309# HasSharedSlotsHostMemoryAllocator---------------------------------------------
310# Host supports AddressSpaceSharedSlotsHostMemoryAllocatorContext
311HasSharedSlotsHostMemoryAllocator = on
312
313# CarVHalReplay--------------------------------------------------------------
314# if enabled, sensor replay will be visible in extended window on Automotive AVDs.
315CarVhalReplay = on
316
317# HardwareDecoder--------------------------------------------------------------
318# if enabled, emulator will add qemu.hwcodec.avcdec=2 and qemu.hwcodec.vpxdec=2
319# to the kernel command line to tell guest the two decoders can be enabled
320HardwareDecoder = on
321
322# NoDelayCloseColorBuffer------------------------------------------------------
323# Used in conjunction with RefCountPipe = off, in systems where the guest
324# properly associates a color buffer with an OS handle, so we can safely
325# clean up the color buffer immediately.
326NoDelayCloseColorBuffer = off
327
328# NoDeviceFrame----------------------------------------------------------------
329# Don't show the device frame, regardless of AVD config or Qt setting.
330NoDeviceFrame = off
331
332# VirtioGpuNativeSync----------------------------------------------------------
333# Use virtio-gpu instead of goldfish sync for syncfd support.
334# TODO: test with goldfish
335VirtioGpuNativeSync = off
336
337# VirtioWifi--------------------------------------------------------------------
338# if enabled, emulator will add ro.kernel.qemu.virtiowifi to the kernel command line
339# to tell the geust that VirtioWifi kernel driver will be used instead of mac80211_hwsim.
340VirtioWifi = on
341
342# VulkanShaderFloat16Int8-------------------------------------------------------
343# Enables struct defs for VK_KHR_shader_float16_int8.
344VulkanShaderFloat16Int8 = on
345
346# CarRotary--------------------------------------------------------------
347# if enabled, Car rotary controller will be visible in extended window on Automotive AVDs.
348CarRotary = on
349
350# ModemSimulator--------------------------------------------------------------
351# turn on the modem simulator, instead of the legacy modem
352ModemSimulator = on
353
354# TvRemote
355# When enabled, the dpad is replaced with a remote specific to Android TV devices.
356TvRemote = on
357
358# GuestUsesAngle--------------------------------------------------------------
359# Whether or not the guest is using ANGLE as its OpenGL driver.
360GuestUsesAngle = off
361
362# VirtioVsockPipe--------------------------------------------------------------
363# The virtio-vsock device is a drop-in replacement for the goldfish_pipe device.
364VirtioVsockPipe = on
365
366# VirtioMouse------------------------------------------------------------------
367# If enabled, the emulator will create mouse input events for guests, otherwise
368# it creates multi-touch events.
369VirtioMouse = on
370
371# VirtconsoleLogcat-------------------------------------------------------------
372# If enabled, it replaces LogcatPipe with the forhvc1 chardev consifured to
373# stdio or to a file.
374VirtconsoleLogcat = on
375
376# VulkanQueueSubmitWithCommands-------------------------------------------------
377# Use deferred command submission and global sequence number synchronization with Vulkan.
378VulkanQueueSubmitWithCommands = on
379
380# VulkanBatchedDescriptorSetUpdate----------------------------------------------
381# Use batched descriptor set update.
382VulkanQueueSubmitWithCommands = on
383
384# Minigbm---------------------------------------------------------------
385# Minigbm is a guest side feature which use the minigbm for gralloc. It asks the host
386# camera to legacy operation
387Minigbm = on
388# GnssGrpcV1-------------------------------------------------
389# Use grpc based gnss implementation
390GnssGrpcV1 = on
391
392# AndroidbootProps--------------------------------------------------------------
393# AndroidbootProps2-------------------------------------------------------------
394# If enabled, the boot userspace properties (e.g. `qemu=1` or
395# `qemu.opengles.version=123456`) are passed in the ramdisk instead of
396# the kernel command line (which is deprecated for these purposes).
397# AndroidbootProps2 does not populate `qemu` and `androidboot.hardware` on the
398# host side since they are constants.
399AndroidbootProps = on
400AndroidbootProps2 = on
401
402# DeviceSkinOverlay-------------------------------------------------------------
403# Apply overlay for each enabled devices (pixel devices)
404DeviceSkinOverlay = on
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