How game emulators learned to teach old smartphone GPUs new tricks

Android’s dirty F-word, “fragmentation,” may not get as many irate headlines or clicks as it once did, but it remains an issue in a thousand tiny ways. As pointed out by Esper.io’s Mishaal Rahmanin a recent (and exquisite) newsletter, one of those issues is GPU drivers, simply because of how Android works.

Two different phones with the same chipset might actually be running different drivers with different performance profiles and different features enabled, andthatcan be a headache for developers — particularly when they need every iota of performance or bleeding-edge features. For developers behind bleeding-edge game emulators, this is a serious concern. But the folks behindSkyline, a Nintendo Switch emulator, came up with a neat trick that brings updated performance and features to older hardware.

4

I got the chance to harassMarkandBilly, two developers among others behind the project, to talk about Adreno Tools, a library they built to plug the gap between older drivers and newer ones at the app level. Released last December, Adreno Tools allows an app to basically intercept how apps talk to the system driver, letting the app use itsowndrivers instead. There’s more to it than that, but it’s the short version, and it fixes a lot of problems.

One of the big issues game developers face is whether a given device will support the graphical features they need. As PC gamers know all too well, sometimes you need a certain generation of GPU for a feature to work — as in the case of things like ray tracing. Although they work very differently at a driver level, similar logic applies to phones: Different hardware can simply do different stuff. And sometimes developers have to rely on specific features to work that may or may not be present, which can make things confusing for users —especiallysince there’s that issue with GPU driver fragmentation we mentioned, which means even saying, “you need this chipset or better” may not actually be enough.

8bitdo-controller-hero

Returning to parallels on other gaming platforms, imagine a world where a Dell with an RTX 3080 ends up with different features than an HP with the same specs because it “lost support” last year or a Playstation 5 bought from Best Buy can run games that one purchased from Amazon can’t. It would all be a little ridiculous, right? To a certain degree, that’s actually how it is for Android phones right now, and it’s a problem for developers.

Enter: Adreno Tools. It allows developers to load apps with their own drivers. In the case of Nintendo Switch emulator Skyline’s case, they use something called Turnip, an open-source Vulkan driver for most recent Qualcomm Adreno GPUs. It provides both a known-good baseline on supported devices and, together with Adreno Tools, offers some extra features that can improve compatibility and performance on some hardware while also offering the developers a means to contribute back changes and request features — small indie developers can hardly ask Qualcomm to roll out changes just for them, and they’d still be waiting on system-level updates or Play Store-downloadable GPU drivers from device makers if somehow they could.

reicast-dreamcast-emulator

With Adreno Tools and Turnip, and thanks to the similarities shared by Qualcomm’s GPUs across generations, Skyline was able to ensure that older devices could make use of newer features, including a texture compression format required for several Nintendo Switch titles. Other emulators are adopting it too, and it can be extended for use on non-Adreno-based chipsets from companies other than just Qualcomm, drivers willing.

The developers tell me thatAetherSX2, a popular Playstation 2 emulator for Android, has at least partially adopted it (through a custom build), and the developers behindDolphin, the popular GameCube and Wii emulator, are also looking into it. (If you happen to be a game developer running into similar problems,this might be worth a look.)

Browsers

Adreno Tools can also be used to plug in more recent versions of official drivers for other apps that might use it. As an example for why you might want to, Rahman saw a pretty stunning 13% performance improvement in 3DMark by using an updated Qualcomm-provided driver on his Pixel 3 XL (though he used a different mechanism than Adreno Tools to do that):

It required a little shimming on the part of Skyline developer Billy Laws to shoehorn the driver, meant for recent Qualcomm chipsets, into working on an older one, but it exposes the possibility that customers could take it upon themselves to fix the fragmentation issueandsee better performance, without waiting on unincentivized OEMs to do what they should. As Rahman points out in his newsletter this week, there are plenty of ways that Android device drivers can be updated now, from system updatesto the Play Store, but it still hasn’t fundamentally solved the problem of GPU driver fragmentation.

Games

Adreno Tools doesn’t solve that issue either — no one really can outsidemaybeGoogle forcing some kind of PC-like centralized driver update schema. But it does at least mean developers have a workaround if and when they can’t rely on smartphone makers to deliver the necessary GPU features to their phones.

Broader branding hints at wider paid-tier ambitions

The note-taking app I should have used all along

An advanced, compact, purpose-built device

New data from Circana affirmed that Nintendo Switch 2 is still a resounding success in the United States, having now sold 2 million units

A hefty discount makes this a no-brainer

A great choice for those looking for value