Smartphone-oriented websites tend to focus only on the latest devices, but a large chunk of users choose not to upgrade their phones for one reason or another. Barring hardware failure, many of these devices may still have years of use ahead of them because, to their owners, they still work just fine. While custom ROMs can keep legacy smartphones alive for ages, it can be a nightmare for the modders to keep things like the camera and graphics drivers up to date without official manufacturer support.
Updating GPU drivers on Android
Unlike the smartphone ecosystem, updating the graphics driver on your PC is something you can always think about. This is possible because of the modular architecture of PC hardware drivers, which allows power users to tinker with closed source driver packages, or even opt for open source drivers instead of OEM-provided binaries. In the case of Android, however, driver updates generally only come to your phone alongside larger OS updates.
Updatable GPU drivers can come in handy for fixing bugs, improving graphics performance, or adding new features from OpenGL or Vulkan APIs. Nowadays, smartphones are bigger and faster than ever, making them the perfect vehicle for gaming, hence porting the PC-esque driver design to them does make sense.
Matter of fact, in an effort to modularize Android via Project Treble, Google actually made it possible to wrap the graphics driver set for a particular platform as an app and update it through the Play Store. Since then, several mainstream Android OEMs collaborated with Google and major GPU vendors, including ARM and Qualcomm, to distribute updates for their phones’ GPU drivers independent of larger software releases.
Does the updatable graphics driver design reduce the fragmentation?
Yes, to some extent. Nonetheless, a few worrying questions are still left unanswered. First of all, Google’s mechanism doesn’t provide an easy way to substitute the closed-source vendor driver with a third-party open source offering. You can, of course, manually replace the driver package in the vendor partition of the target device, provided you have root access and somehow get your hands on the necessary files, but that’s not an ideal solution for many.
Next comes the stability-versus-enhancement paradox. Android maintains a hierarchical arrangement when it comes to loading the graphics driver. While one can switch between the factory-installed build and the newer updated release using Developer options => Graphics driver preferences on a per-app basis, it ultimately boils down to the OEM’s decision when to push the graphics driver update. As a result, an end user can’t utilize bleeding-edge driver builds directly from the SoC maker, as OEMs are still responsible for rolling out the updates.
Enter Adreno Tools
As mentioned earlier, updating GPU drivers is possible with root access, but nothing can beat a non-root method. Thanks to XDA Senior Member bylaws, we now have a genius solution named Adreno Tools that allows on-the-fly GPU driver modifications or replacements on Android — that too without root! The developer’s background of porting Android to the Nintendo Switch certainly played a crucial role in this venture, as the whole project has its origin in Skyline, an open source, work-in-progress Nintendo Switch emulator for Android.
Fellow Skyline developer Mark “Pixelylon” pitched the idea of runtime drive replacement to bylaws, which eventually materialized into Adreno Tools. Being a rootless library, Adreno Tools can help any regular app to load custom GPU drivers, deal with BCn textures, and redirect file operations for further complex modifications. It does so by hooking into system libraries and seamlessly swapping in the new driver. Notably, there is no support for Mali GPUs yet.
Since there is no limitation on the origin of the driver, enthusiasts can also load third-party drivers through Adreno Tools. This is particularly useful for those who want to try out Turnip — an open source Vulkan driver for Qualcomm Adreno graphics hardware that falls under the Freedreno umbrella. For example, AetherSX2, the PlayStation 2 emulator for Android already utilizes Adreno Tools to give end users the choice to opt for Turnip instead of the OEM driver for better performance.
Given the alternatives for the Android GPU driver modding scene in the past, the Adreno Tools library is a fantastic step forward. We’re looking forward to seeing how the project grows and matures in the future. Be sure to give it a try and let us know what you think in the comments!
Featured image: Red Magic 6S Pro
The post This library makes it easier to use updated graphics drivers on your smartphone, without root appeared first on xda-developers.