The Android 5.1 update brings several improvements to the Nexus 6, including a number of bug fixes and UI refinements. It also enables OpenGL ES 3.1 support and the Qualcomm VP8 hardware video decoder. Unfortunately, it does not enable hardware based storage encryption or fix optical image stabilization for the rear camera. There’s also no improvement in display calibration.
The other Nexus 6 specific changes are a mixed bag. Utilizing NEON instructions for the encryption engine does speed up data reads for larger block sizes, but seems to hurt performance when reading and writing smaller data blocks. Disabling Qualcomm’s thread migration boost feature reduces performance by up to 20% in specific workloads where the CPU cores aren’t fully utilized. However, this did contribute to a noticeable gain in the PCMark battery life test.
The final big change in the 5.1 update for the Nexus 6, keeping all four cores online all the time, is harder to evaluate. Typically, our phones perform a number of tasks in the background keeping us updated on events happening in the world. With only two cores generally available, which was the case when running the initial 5.0 build, these tasks could interrupt the foreground app or UI interaction, producing a noticeable lag and hurting the user experience. Having more cores available to service these background tasks should improve responsiveness. The downside is that static power drain is increased, reducing the battery life gained from disabling the thread migration boost, and the thermal/power envelope is decreased, which can keep cores from reaching max frequency and reducing performance.
In the end, the performance penalty seen in specific cases is not enough to outweigh the benefits from the 5.1 update. It’s important to have realistic expectations though. I don’t expect these changes to be permanent, but rather stepping stones on a path to a more efficient CPU governor.