Friday, February 8, 2019

Emulator 28.1.6 Canary

Emulator 28.1.6 is now available in the Canary and Dev channels. Changes:

Project Marble:
  • Decreased idle CPU usage on macOS. On macOS, we've switched from select() to kqueue() for the QEMU main loop. kqueue() is a more efficient way to wait on events on BSD-like systems, burning less CPU than select(). This should decrease CPU usage of the main loop, especially when the emulator is idle.
  • Fixed hard-to-reproduce freeze on launch. It seems that Qt libraries sometimes lose signals, which resulted in a "Detected a hanging thread" on launch. We have worked around this bug.
Build

Emulator binary size should now be back to normal. We are also building more of our dependencies from source in order to lower risk of ABI incompatibilities and make the build more reproducible.

Vulkan: Experimental Support for ROM Developers

Changes in AOSP master:
  • Updated emulator prebuilts in AOSP.
    • The prebuilt emulator in AOSP master has been updated to 28.1.6.
    • The prebuilt emulator kernel in AOSP master has been updated to a variant of a 4.4 kernel that includes the necessary driver for Vulkan HOST_COHERENT memory.
ROM developers can now run a Vulkan-enabled emulator in the AOSP build environment on the AOSP master branch. This is an experimental level of support, mainly oriented to developers who work on system images, drivers, and game engines. Many extensions are still missing. 

However, https://github.com/googlesamples/android-vulkan-tutorials should be able to run, and HOST_COHERENT memory is supported. Instructions (for a Linux host):

mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem