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