#-------------------------------------------------------------------------------
# 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 = on

# 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--------------------------------------------------------------
# AndroidbootProps2-------------------------------------------------------------
# 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).
# AndroidbootProps2 does not populate `qemu` and `androidboot.hardware` on the
# host side since they are constants.
AndroidbootProps = on
AndroidbootProps2 = on

# DeviceSkinOverlay-------------------------------------------------------------
# Apply overlay for each enabled devices (pixel devices)
DeviceSkinOverlay = on
AndroidbootProps = off

# BluetoothEmulation-------------------------------------------------------------
# If enabled, it will enable the bluetooth emulation stack.
BluetoothEmulation = off

# DeviceStateOnBoot-------------------------------------------------------------
# If enabled, it will generate device_state_configratio.xml and send to guest.
DeviceStateOnBoot = on

# HWCMultiConfigs--------------------------------------------------------------
# If enabled, will config multiple configs in hwcompser HAL
HWCMultiConfigs = on

# AsyncComposeSupport ---------------------------------------------------
# If enabled, hwcomposer will be able to use asynchronous render control
# commands to compose and post frame buffers.
AsyncComposeSupport = off

# VirtioSndCard-----------------------------------------------------------------
# Enables the virtio-snd audio card and disables the Intel HDA one
VirtioSndCard = on

# VirtioTablet-----------------------------------------------------------------
# If enabled, the emulator will create tablet input events for guests, otherwise
# it creates multi-touch events. Cannot be used with VirtioMouse.
VirtioTablet = on

# VirtioGpuFenceContexts--------------------------------------------------------
# If enabled, virtio-gpu fence on multiple timelines will be supported.
# Currently this feature doesn't work because the qemu doesn't support this
# feature yet, while crosvm and the gfxstream renderer backend has already
# supported this feature.
VirtioGpuFenceContexts = off
