blob: db9d9b6b7053f1f611614beef32c2893edad357a [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.
GLAsyncSwap = on
# ------------------------------------------------------------------------------
# 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
# ------------------------------------------------------------------------------
# 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
# ------------------------------------------------------------------------------