1 #------------------------------------------------------------------------------- 2 # Advanced emulator features 3 #------------------------------------------------------------------------------- 4 5 # GLPipeChecksum---------------------------------------------------------------- 6 # For every GL call that transfers between host and guest, GLPipeChecksum = on 7 # will compute a checksum consisting of some function of the actual bit vector 8 # corresponding to the GL command, verifying that the same checksum shows up 9 # on both the host and guest. Violations of the checksum (mismatches) result 10 # in an abort() and crash report being sent. 11 # 12 # Currently, the checksum is mainly making sure that the command itself and all 13 # arrays passed through the pipe are of proper length. 14 GLPipeChecksum = on 15 # ------------------------------------------------------------------------------ 16 17 # GrallocSync------------------------------------------------------------------- 18 # Most apps that display images do so through OpenGL, but there are some apps 19 # that write directly to gralloc color buffers. In our goldfish-driver gralloc 20 # implementation, which represents gralloc color buffers as host OpenGL color 21 # buffers. 22 # 23 # For example, in the camera app, the emulated webcam driver will pull frames 24 # to a gralloc color buffer directly, and then in another thread or process, 25 # the color buffer representing the camera frame preview could be posted 26 # onscreen. 27 # 28 # These operations aren't guaranteed to have their order preserved when arriving 29 # from the guest, and if executed on the host in the wrong order, we could 30 # end up with out of order webcam frames, for instance. 31 # 32 # GrallocSync = on adds synchronization to the host for this use case where apps 33 # directly write to gralloc color buffers and then post them. 34 # Gralloc sync disabled for now because it is making CTS sad. 35 GrallocSync = off 36 # ------------------------------------------------------------------------------ 37 38 # GLAsyncSwap------------------------------------------------------------------- 39 # OpenGL apps in the guest present their contents indirectly through 40 # SurfaceFlinger. The goldfish driver's implementation of eglSwapBuffers is 41 # based on queuing the finished frame (buffer) to SurfaceFlinger. 42 # SurfaceFlinger then acquires that finished buffer from the OpenGL app, 43 # does the actual posting to the display (which may involve a call in turn 44 # to eglSwapBuffers, esp. if we are not using hardware composer), 45 # and releases the buffer, allowing the OpenGL app to dequeue a fresh 46 # buffer for whatever to draw next. 47 # 48 # The problem is that when we are using host GPU, the rubber meets the road # 49 # in the host not the guest (what the user sees is not due to any concrete 50 # action inside the guest, but due to the host GPU communicating with the host 51 # display), so it's not always clear what a "finished frame" means. In 52 # particular, the frame is not necessarily finished when the buffer is queued 53 # in the guest, depending on host driver quirks. So, posting unfinished or 54 # even older buffers to SurfaceFlinger will result in out of order frames. 55 # 56 # GLAsyncSwap = off pretends this issue doesn't exist and it's up to the host 57 # driver to properly synchronize upon calling rcFlushWindowColorBuffer. 58 # GLAsyncSwap = on uses the host GL driver's fence commands and fence fd's in 59 # the guest in order to have explicit signals of buffer swaps complete. This 60 # preserves frame ordering at a slight performance cost, but the cost is less 61 # than that of other solutions like calling glFinish() on the host. 62 # Disabled by default for now 63 GLAsyncSwap = off 64 # ------------------------------------------------------------------------------ 65 66 # EncryptUserData--------------------------------------------------------------- 67 # CTS requires that userdata be encrypted, at least for api23 and later. However 68 # for non Google images or older system images, this is not required or not 69 # implemted. Emulator will enable this feature only if the system says it supports 70 # encryption. It is on by default on the host, and according to the current rule, 71 # a feature is only on if both host and guest support it; so it effectively leaves 72 # to guest to decide. 73 EncryptUserData = on 74 # ------------------------------------------------------------------------------ 75 76 # IntelPerformanceMonitoringUnit------------------------------------------------ 77 # Some CTS tests (mainly SimplePerf) require that the CPU expose some kind of 78 # counters that can be used to measure CPU performance in cycles, 79 # cache hit/miss, etc. 80 # However, the use of this on the vCPU requires that the guest kernel be in 81 # a fairly recent state, otherwise the emulator will kernel panic on startup. 82 IntelPerformanceMonitoringUnit = on 83 # ------------------------------------------------------------------------------ 84 85 # GLDMA------------------------------------------------------------------------- 86 # Video playback can approach 1080p60 and be solid 720p60 if we map guest memory 87 # to host and use it to perofrm color buffer updates, and perform YV12->RGB 88 # on the host as well, in an OpenGL shader. 89 GLDMA = on 90 # ------------------------------------------------------------------------------ 91 92 # GLESDynamicVersion------------------------------------------------------------ 93 # This feature attempts to detect the maximum supported GLES version depending on 94 # which OpenGL function pointers have been found on the GL libraries used 95 # on the host system. Different platforms / hardware + video driver setups can 96 # have different support. 97 # For example, OS X is not known to support GLES 3.1. 98 # If this feature is set to "off", the max supported GLES version is assumed to 99 # be <= 2 and also depend on the system image only (some images only support ES 1). 100 GLESDynamicVersion = off 101 # ------------------------------------------------------------------------------ 102 103 # Wifi ------------------------------------------------------------------------- 104 # This feature indicates that the system image and the emulator support Wifi. 105 # When this is enabled the network configuration of the system image will be 106 # significantly different and the emulator will send different network setup 107 # information via RIL. 108 Wifi = on 109 110 # ForceANGLE-------------------------------------------------------------------- 111 # This feature attempts to default the renderer to ANGLE, but can be itself 112 # overridden by: 113 # -gpu command line argument 114 # UI setting 115 # The override (and others) are done through the UI, so the user is aware 116 # and if the user changes to a setting other than "auto", the user setting 117 # is respected. 118 ForceANGLE = off 119 # ------------------------------------------------------------------------------ 120 121 # ForceSwiftshader-------------------------------------------------------------- 122 # This feature attempts to default the renderer to Swiftshader. Otherwise, 123 # same behavior as ForceANGLE. 124 ForceSwiftshader = off 125 # ------------------------------------------------------------------------------ 126 127 # PlayStoreImage --------------------------------------------------------------- 128 # The playstore image has CTS requirements that emulator should check and ensure 129 # Guest image will indicate whether it has it or not; 130 PlayStoreImage = on 131 # ------------------------------------------------------------------------------ 132 133 # LogcatPipe --------------------------------------------------------------- 134 # The pipe based logcat is meant to replace the 'adb shell logcat' 135 # Guest image will indicate whether it has it or not; 136 LogcatPipe = on 137 # ------------------------------------------------------------------------------ 138 139 # Hypervisor feature flags. Assumed mutually exclusive. If all flags are off, 140 # then we have: 141 # Mac/Win: HAXM 142 # Linux: KVM 143 # If a flag is on, then attempts are made to detect host support, and if there 144 # is support, then the hypervisor in question is actually used. 145 HYPERV = off 146 HVF = on 147 KVM = off 148 HAXM = off 149 150 # FastSnapshotV1 --------------------------------------------------------------- 151 # Enable the new implementation of snapshotting in the emulator and use it for 152 # quick boot. 153 FastSnapshotV1 = on 154 # ------------------------------------------------------------------------------ 155 156 # ScreenRecording -------------------------------------------------------------- 157 # Enables the host-side screen recording feature. 158 ScreenRecording = on 159 # ------------------------------------------------------------------------------ 160 161 # VirtualScene ----------------------------------------------------------------- 162 # Enables the host-side virtual scene feature. 163 VirtualScene = on 164 165 # system as root -------------------------------------------------------------- 166 # Guest feature: when this is on, emulator should use system partition as root fs 167 # instead of using ramdisk as root fs. 168 SystemAsRoot = on 169 170 # IgnoreHostOpenGLErrors-------------------------------------------------------- 171 # Don't query the host for OpenGL errors. Only use if rendering is OK for you 172 # already. Should decrease jank in UI by quite a bit. 173 IgnoreHostOpenGLErrors = off 174 175 # GenericSnapshotsUI------------------------------------------------------------ 176 # Show the generic snapshots UI. 177 GenericSnapshotsUI = on 178 179 # AllowSnapshotMigration-------------------------------------------------------- 180 # Skip snapshot file consistency checks, allowing for snapshot migration. 181 AllowSnapshotMigration = off 182 183 # WindowsOnDemandSnapshotLoad--------------------------------------------------- 184 # On-demand snapshot load for Windows. 185 WindowsOnDemandSnapshotLoad = on 186 187 # Windows Hypervisor Platform--------------------------------------------------- 188 # Allow WHPX 189 WindowsHypervisorPlatform = on 190