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