GPU Proposal: Lock in minimum requirements

2 min read Original article ↗

A lot of @TheSpydog and I's time this past month has been spent trying to figure out the scope limit for the feature set of SDL GPU. One problem has consistently shown itself over and over again: Android.

Android Vulkan feature sets are notoriously spotty. Features that are universally supported on every other platform have low support on Android, forcing us to make difficult restrictive decisions or turn the API into a mess of client queries. There doesn't seem to be much rhyme or reason to any of the feature omissions. It's worth noting that Nintendo Switch is basically Android hardware, but the feature set is robust, strongly implying that this is a vendor issue.

At this point it's difficult for me to argue that it would be a good idea to complicate the feature set of SDL GPU, which will almost certainly
be used primarily to ship on desktop and console platforms, just to make concessions to Android. At least iOS as a mobile platform uses Metal and guarantees a broadly similar feature set to desktop MacOS.

We haven't even gotten into the litany of broken nonconformant Vulkan drivers on various Android hardware. What's our answer to that? Clients will just see the issues as our problem. Will we have to turn the Vulkan backend into a mess of driver-specific hacks for Android?

My proposal is simple: Android should not be supported by SDL GPU. Graphics on Android is a mess and I don't think anyone on this project wants to turn into a full-time Android support engineer.

Pinging @slouken and @icculus for comment on this.