Vulkan device properties on Android
Compared to desktop environments like Windows and Linux, Vulkan on Android is a very different situation. Aside from the obvious hardware specific differences between full desktop GPUs and integrated mobile GPUs there are issues that also complicate data retrieval for my Vulkan Hardware Database. One such issue is device naming and how GPUs and mobile devices corelate. On desktop a given GPU like a RTX 4070 from NVIDIA always reports the same Vulkan properties for a given driver version, no matter who produced that graphics card. On Android that’s very different. Just because two mobile devices share the same GPU doesn’t actually mean they support the same features. This is mostly caused by how different mobile vendors handle driver updates (if they update at all).
But one issue that might not be obvious is how to actually identify mobile devices on Android. If you use vkGetPhysicalDeviceProperties
on Android, all you get is the name of the GPU. E.g. Mali-G71. But there is no way to get the actual device name. For that you need to resort to other means. And those have changed multiple times since I started the database in 2016. In the early days, Google provided a machine-readable list of human readable device names that I used to translate between an Id fetched via the Android api. But that list was discontinued at some point and adding a different way of getting more or less human readable device names took time and effort. And so generic reports with GPU-only names made their way into the database:
The issue with those: THe version number is taken from the reports with those generic names. Clicking on that generic devices let’s you see other reports with that GPU:
Comparing that list with the version numbers from the first list shows the issue: E.g. the Adreno (TM) 540 reported 1.0.31 as the max. API version, even though some devices using can run Vulkan 1.1.
Cleaning up old reports
As this led to confusion and had a negative impact on the quality of the results returned by the database, I have removed the generic, GPU only reports from the database. So they no longer pollute search results and lead people to believe that some devices would only support Vulkan 1.0, where in reality devices using that GPU already support 1.1 or even newer.
Here is the list of generic, GPU based, device names that had their reports removed:
- Adreno (TM) 418
- Adreno (TM) 430
- Adreno (TM) 505
- Adreno (TM) 506
- Adreno (TM) 510
- Adreno (TM) 512
- Adreno (TM) 530
- Adreno (TM) 540
- Adreno (TM) 610
- Adreno (TM) 618
- Adreno (TM) 619
- Adreno (TM) 640
- Adreno (TM) 642L
- Adreno (TM) 650
- Adreno (TM) 660
- Adreno (TM) 730
- Mali-G52
- Mali-G52 MC2
- Mali-G57 MC3
- Mali-G71
- Mali-G76
- Mali-G76 MC4
- Mali-G77
- Mali-T760
- Mali-T830
- Mali-T880
All of them were uploaded between 2017 and early 2022, so no recent data has been removed.
2025 outlook
One thing I’ve been to improve for the Vulkan Hardware Database for ages is how you can filter data. Right now you can apply a global filter for the min. API version, but that’s not enough. There have been several requests to add additional filters to the database and I’ve been working on making that happen. My plan is to release a substantial update to the database in the coming months that’ll add multiple global filters to help users get the data they’re actually looking for.