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