blob: 2ae5a3b4bc6cd43156ed31ef42a409e67270b9da [file] [log] [blame]
#-------------------------------------------------------------------------------
# Advanced emulator features
#-------------------------------------------------------------------------------
# GLPipeChecksum----------------------------------------------------------------
# For every GL call that transfers between host and guest, GLPipeChecksum = on
# will compute a checksum consisting of some function of the actual bit vector
# corresponding to the GL command, verifying that the same checksum shows up
# on both the host and guest. Violations of the checksum (mismatches) result
# in an abort() and crash report being sent.
#
# Currently, the checksum is mainly making sure that the command itself and all
# arrays passed through the pipe are of proper length.
GLPipeChecksum = on
# ------------------------------------------------------------------------------
# GrallocSync-------------------------------------------------------------------
# Most apps that display images do so through OpenGL, but there are some apps
# that write directly to gralloc color buffers. In our goldfish-driver gralloc
# implementation, which represents gralloc color buffers as host OpenGL color
# buffers.
#
# For example, in the camera app, the emulated webcam driver will pull frames
# to a gralloc color buffer directly, and then in another thread or process,
# the color buffer representing the camera frame preview could be posted
# onscreen.
#
# These operations aren't guaranteed to have their order preserved when arriving
# from the guest, and if executed on the host in the wrong order, we could
# end up with out of order webcam frames, for instance.
#
# GrallocSync = on adds synchronization to the host for this use case where apps
# directly write to gralloc color buffers and then post them.
# Gralloc sync disabled for now because it is making CTS sad.
GrallocSync = off
# ------------------------------------------------------------------------------
# GLAsyncSwap-------------------------------------------------------------------
# OpenGL apps in the guest present their contents indirectly through
# SurfaceFlinger. The goldfish driver's implementation of eglSwapBuffers is
# based on queuing the finished frame (buffer) to SurfaceFlinger.
# SurfaceFlinger then acquires that finished buffer from the OpenGL app,
# does the actual posting to the display (which may involve a call in turn
# to eglSwapBuffers, esp. if we are not using hardware composer),
# and releases the buffer, allowing the OpenGL app to dequeue a fresh
# buffer for whatever to draw next.
#
# The problem is that when we are using host GPU, the rubber meets the road #
# in the host not the guest (what the user sees is not due to any concrete
# action inside the guest, but due to the host GPU communicating with the host
# display), so it's not always clear what a "finished frame" means. In
# particular, the frame is not necessarily finished when the buffer is queued
# in the guest, depending on host driver quirks. So, posting unfinished or
# even older buffers to SurfaceFlinger will result in out of order frames.
#
# GLAsyncSwap = off pretends this issue doesn't exist and it's up to the host
# driver to properly synchronize upon calling rcFlushWindowColorBuffer.
# GLAsyncSwap = on uses the host GL driver's fence commands and fence fd's in
# the guest in order to have explicit signals of buffer swaps complete. This
# preserves frame ordering at a slight performance cost, but the cost is less
# than that of other solutions like calling glFinish() on the host.
# Disabled by default for now
GLAsyncSwap = off
# ------------------------------------------------------------------------------
# EncryptUserData---------------------------------------------------------------
# CTS requires that userdata be encrypted, at least for api23 and later. However
# for non Google images or older system images, this is not required or not
# implemted. Emulator will enable this feature only if the system says it supports
# encryption. It is on by default on the host, and according to the current rule,
# a feature is only on if both host and guest support it; so it effectively leaves
# to guest to decide.
EncryptUserData = on
# ------------------------------------------------------------------------------
# RefCountPipe------------------------------------------------------------------
# RefCount Pipe is a different approach to simplify the Color Buffer management
# on host. In guest, the handle returned by gralloc allocator can be passed around
# between processes through Binder. Android system ensures that the handle on both
# calling and receiving end willl be properly closed. Thus, when gralloc allocates
# buffer for the first time, we establish a Refcount pipe between guest and host,
# and assign its fd to the handle. In the desturctor of the handle, close the fd.
# Guest kernel will decide when to really close the fd and thus trigger the pipe's
# closing on host. On the host side, we only need to destroy the color buffer
# immediately and not worry about any reference counting at all. This approach will
# not only simplify the the logic between guest and host, but also reduce memory leaks.
RefCountPipe = on
# ------------------------------------------------------------------------------
# IntelPerformanceMonitoringUnit------------------------------------------------
# Some CTS tests (mainly SimplePerf) require that the CPU expose some kind of
# counters that can be used to measure CPU performance in cycles,
# cache hit/miss, etc.
# However, the use of this on the vCPU requires that the guest kernel be in
# a fairly recent state, otherwise the emulator will kernel panic on startup.
IntelPerformanceMonitoringUnit = on
# ------------------------------------------------------------------------------
# GLDMA-------------------------------------------------------------------------
# Video playback can approach 1080p60 and be solid 720p60 if we map guest memory
# to host and use it to perofrm color buffer updates, and perform YV12->RGB
# on the host as well, in an OpenGL shader.
GLDMA = on
# ------------------------------------------------------------------------------
# GLESDynamicVersion------------------------------------------------------------
# This feature attempts to detect the maximum supported GLES version depending on
# which OpenGL function pointers have been found on the GL libraries used
# on the host system. Different platforms / hardware + video driver setups can
# have different support.
# For example, OS X is not known to support GLES 3.1.
# If this feature is set to "off", the max supported GLES version is assumed to
# be <= 2 and also depend on the system image only (some images only support ES 1).
GLESDynamicVersion = off
# ------------------------------------------------------------------------------
# Wifi -------------------------------------------------------------------------
# This feature indicates that the system image and the emulator support Wifi.
# When this is enabled the network configuration of the system image will be
# significantly different and the emulator will send different network setup
# information via RIL.
Wifi = on
# ForceANGLE--------------------------------------------------------------------
# This feature attempts to default the renderer to ANGLE, but can be itself
# overridden by:
# -gpu command line argument
# UI setting
# The override (and others) are done through the UI, so the user is aware
# and if the user changes to a setting other than "auto", the user setting
# is respected.
ForceANGLE = off
# ------------------------------------------------------------------------------
# ForceSwiftshader--------------------------------------------------------------
# This feature attempts to default the renderer to Swiftshader. Otherwise,
# same behavior as ForceANGLE.
ForceSwiftshader = off
# ------------------------------------------------------------------------------
# PlayStoreImage ---------------------------------------------------------------
# The playstore image has CTS requirements that emulator should check and ensure
# Guest image will indicate whether it has it or not;
PlayStoreImage = on
# ------------------------------------------------------------------------------
# LogcatPipe ---------------------------------------------------------------
# The pipe based logcat is meant to replace the 'adb shell logcat'
# Guest image will indicate whether it has it or not;
LogcatPipe = on
# ------------------------------------------------------------------------------
# Hypervisor feature flags. Assumed mutually exclusive. If all flags are off,
# then we have:
# Mac/Win: HAXM
# Linux: KVM
# If a flag is on, then attempts are made to detect host support, and if there
# is support, then the hypervisor in question is actually used.
HYPERV = off
HVF = on
KVM = off
HAXM = off
# FastSnapshotV1 ---------------------------------------------------------------
# Enable the new implementation of snapshotting in the emulator and use it for
# quick boot.
FastSnapshotV1 = on
# ------------------------------------------------------------------------------
# ScreenRecording --------------------------------------------------------------
# Enables the host-side screen recording feature.
ScreenRecording = on
# ------------------------------------------------------------------------------
# VirtualScene -----------------------------------------------------------------
# Enables the host-side virtual scene feature.
VirtualScene = on
# VideoPlayback
# Enables the camera video playback feature.
VideoPlayback = off
# system as root --------------------------------------------------------------
# Guest feature: when this is on, emulator should use system partition as root fs
# instead of using ramdisk as root fs.
SystemAsRoot = on
# IgnoreHostOpenGLErrors--------------------------------------------------------
# Don't query the host for OpenGL errors. Only use if rendering is OK for you
# already. Should decrease jank in UI by quite a bit.
IgnoreHostOpenGLErrors = off
# GenericSnapshotsUI------------------------------------------------------------
# Show the generic snapshots UI.
GenericSnapshotsUI = on
# AllowSnapshotMigration--------------------------------------------------------
# Skip snapshot file consistency checks, allowing for snapshot migration.
AllowSnapshotMigration = off
# WindowsOnDemandSnapshotLoad---------------------------------------------------
# On-demand snapshot load for Windows.
WindowsOnDemandSnapshotLoad = on
# Windows Hypervisor Platform---------------------------------------------------
# Allow WHPX
WindowsHypervisorPlatform = on
# Device Tree Blob--------------------------------------------------------------
KernelDeviceTreeBlobSupport = on
# Dynamic partition support --------------------------------------------------------------
DynamicPartition = on
# Location UI v2----------------------------------------------------------------
LocationUiV2 = on
# SnapshotAdb-------------------------------------------------------------------
SnapshotAdb = off
# QuickbootFileBacked-----------------------------------------------------------
QuickbootFileBacked = on
# HWComposer Host Composition---------------------------------------------------
HostComposition = on
# On-demand RAM load for snapshots----------------------------------------------
# Currently disabled due to issues with MemoryWatch and host side
# EFAULT's and recent guest kernels + Linux KVM
OnDemandSnapshotLoad = off
# WifiConfigurable--------------------------------------------------------------
WifiConfigurable = off
# Vulkan------------------------------------------------------------------------
# If enabled, the guest Vulkan HAL (if installed) will activate.
Vulkan = off
# CarVHalTable--------------------------------------------------------------
# if enabled, Car Vhal Table will show in extended window -> CarData
CarVHalTable = on
# VirtioInput-------------------------------------------------------------------
# VirtioInput is a guest side feature which indicates that CONFIG_VIRTIO_INPUT is
# enabled in kernel. If enabled, emulator will use virtio input device instead of
# goldfish_events to implement multi-touch functionality.
VirtioInput = on
# IpDisconnectOnLoad------------------------------------------------------------
# Reset IP connection state when loading from snapshots
IpDisconnectOnLoad = off
# VulkanSnapshots---------------------------------------------------------------
# Reset IP connection state when loading from snapshots
VulkanSnapshots = off
# MultiDisplay------------------------------------------------------------------
# MultiDisplay is a guest side feature
MultiDisplay = on
# VulkanNullOptionalStrings-----------------------------------------------------
# When we want to encode null optional vulkan strings as actual nulls instead of
# empty strings
# Requires guest support as well.
# On Fuchsia, hardcoded to on.
VulkanNullOptionalStrings = on
# DynamicMediaProfile-----------------------------------------------------------
# Enables changing the media_codecs_google_video.xml to link to another file by
# setting a boot property ro.kernel.qemu.mediaprofile.video to the location of the
# configuration file.
DynamicMediaProfile = off
# YUV420888toNV21---------------------------------------------------------------
# YUV420888toNV21 is a guest side feature which unifies the pixel format
# HAL_PIXEL_FORMAT_YCbCr_420_888 as NV21 in gralloc and camera HAL
YUV420888toNV21 = on
# YUVCache---------------------------------------------------------------
# YUVCache is a guest side feature which asks the host to cache the
# HAL_PIXEL_FORMAT_YCbCr_420_888 and HAL_PIXEL_FORMAT_YV12 frame.
YUVCache = on
# KeycodeForwarding-------------------------------------------------------------
# KeycodeForwarding is a guest side feature which emulator host will capture the keypress
# and forward Liunx keycode to Android system.
KeycodeForwarding = on
# VulkanIgnoredHandles----------------------------------------------------------
# Change in the Vulkan protocol to ignore handles in some situations
# (VkWriteDescriptorSet, and others)
# Requires guest support
VulkanIgnoredHandles = on
# VirtioGpuNext-----------------------------------------------------------------
# Whether virtio-gpu-next is supported. Requires guest support.
VirtioGpuNext = on
# Mac80211hwsimUserspaceManaged-------------------------------------------------
# Do not create mac80211_hwsim radios by the kernel on boot, create radios from
# userspace instead.
Mac80211hwsimUserspaceManaged = on
# HasSharedSlotsHostMemoryAllocator---------------------------------------------
# Host supports AddressSpaceSharedSlotsHostMemoryAllocatorContext
HasSharedSlotsHostMemoryAllocator = on
# CarVHalReplay--------------------------------------------------------------
# if enabled, sensor replay will be visible in extended window on Automotive AVDs.
CarVhalReplay = on
# HardwareDecoder--------------------------------------------------------------
# if enabled, emulator will add qemu.hwcodec.avcdec=2 and qemu.hwcodec.vpxdec=2
# to the kernel command line to tell guest the two decoders can be enabled
HardwareDecoder = on
# NoDelayCloseColorBuffer------------------------------------------------------
# Used in conjunction with RefCountPipe = off, in systems where the guest
# properly associates a color buffer with an OS handle, so we can safely
# clean up the color buffer immediately.
NoDelayCloseColorBuffer = off
# NoDeviceFrame----------------------------------------------------------------
# Don't show the device frame, regardless of AVD config or Qt setting.
NoDeviceFrame = off
# VirtioGpuNativeSync----------------------------------------------------------
# Use virtio-gpu instead of goldfish sync for syncfd support.
# TODO: test with goldfish
VirtioGpuNativeSync = off
# VirtioWifi--------------------------------------------------------------------
# if enabled, emulator will add ro.kernel.qemu.virtiowifi to the kernel command line
# to tell the geust that VirtioWifi kernel driver will be used instead of mac80211_hwsim.
VirtioWifi = on
# VulkanShaderFloat16Int8-------------------------------------------------------
# Enables struct defs for VK_KHR_shader_float16_int8.
VulkanShaderFloat16Int8 = on
# CarRotary--------------------------------------------------------------
# if enabled, Car rotary controller will be visible in extended window on Automotive AVDs.
CarRotary = on
# ModemSimulator--------------------------------------------------------------
# turn on the modem simulator, instead of the legacy modem
ModemSimulator = on
# TvRemote
# When enabled, the dpad is replaced with a remote specific to Android TV devices.
TvRemote = on
# GuestUsesAngle--------------------------------------------------------------
# Whether or not the guest is using ANGLE as its OpenGL driver.
GuestUsesAngle = off
# VirtioVsockPipe--------------------------------------------------------------
# The virtio-vsock device is a drop-in replacement for the goldfish_pipe device.
VirtioVsockPipe = on
# VirtioMouse------------------------------------------------------------------
# If enabled, the emulator will create mouse input events for guests, otherwise
# it creates multi-touch events.
VirtioMouse = off
# VirtconsoleLogcat-------------------------------------------------------------
# If enabled, it replaces LogcatPipe with the forhvc1 chardev consifured to
# stdio or to a file.
VirtconsoleLogcat = on
# VulkanQueueSubmitWithCommands-------------------------------------------------
# Use deferred command submission and global sequence number synchronization with Vulkan.
VulkanQueueSubmitWithCommands = on
# VulkanBatchedDescriptorSetUpdate----------------------------------------------
# Use batched descriptor set updates.
VulkanBatchedDescriptorSetUpdate = on
# Minigbm---------------------------------------------------------------
# Minigbm is a guest side feature which use the minigbm for gralloc. It asks the host
# camera to legacy operation
Minigbm = on
# GnssGrpcV1-------------------------------------------------
# Use grpc based gnss implementation
GnssGrpcV1 = on
# AndroidbootProps--------------------------------------------------------------
# If enabled, the boot userspace properties (e.g. `qemu=1` or
# `qemu.opengles.version=123456`) are passed in the ramdisk instead of
# the kernel command line (which is deprecated for these purposes).
AndroidbootProps = on