Google's Pixel 3 Is Using The MSM DRM Driver, More Android Phones Moving To DRM/KMS Code
It turns out Google's recently announced Pixel 3 smartphone is making use of the MSM Direct Rendering Manager driver associated with the Freedreno open-source Qualcomm graphics project. Google is also getting more Android vendors moving over to using DRM/KMS drivers to power their graphics/display.
Alistair Strachan of Google presented at this week's Linux Plumbers Conference and the growing adoption of Direct Rendering Manager / Kernel Mode-Setting drivers by Android devices.
Finally DRM/KMS is becoming the de facto standard for display interfaces used by Android compared to the fragmented mess in the past and many (still) relying upon FBDEV frame-buffer drivers. As part of this, Google is encouraging their partners to upstream their DRM/KMS drivers into the Linux kernel to make it easier upgrading kernels as well as for testing/validation. This shouldn't be too surprising though given the uptick in Google developers working on upstream DRM patches.
One of the interesting bits shared was that the Google Pixel 3 that began shipping a month ago is using the Linux 4.9 kernel and is relying upon the MSM DRM driver. That's quite a success seeing as Freedreno/MSM started out as a reverse-engineering effort hobby project by Rob Clark who at the time was working for Texas Instruments moved onto Red Hat. Qualcomm's Innovation Center has been contributing now to the MSM effort and Google developers have also been helping out with the MSM driver for improving the Qualcomm SoC display support. Google developers have also been contributing to the Freedreno Gallium3D driver code in user-space. It was shared at LPC that Android Q (the next major release) will ship options of the Linux 4.9, 4.14, or 4.19 kernels. All of these Android Q kernels have prerequisite DRM/KMS changes as they work towards "DRM everywhere."
With the push for DRM drivers they hope for one kernel display driver interface (including no more FBDEV!), more shared code, better debugging, and better testing.
Android's DRM stack still interfaces with GrAlloc and drm_hwcomposer components before tieing into EGL/OpenGL and Vulkan that are then exposed to applications through the Android frameworks.
Alistair Strachan's presentation can be viewed in full here (PDF).