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