int GetVulkanVersionFromSystemProperty() char value[PROP_VALUE_MAX] = 0; if (__system_property_get("android.hardware.vulkan.version", value) > 0) int version = atoi(value); if (version > 0) return version;
| Value | Meaning | |-------|---------| | (empty) | Vulkan is on this device. | | 4194304 | Vulkan 1.0 (internal encoding: (1 << 22) ) | | 4194305 | Vulkan 1.0 with some 1.1 features (rare) | | 4194306 | Vulkan 1.0 with more extensions | | 4206592 | Vulkan 1.1 | | 4210688 | Vulkan 1.2 | | 4214784 | Vulkan 1.3 |
Let’s break down the structure using the standard Khronos version encoding logic. The number is typically split as follows: android.hardware.vulkan.version
Vulkan is a low-overhead, cross-platform 3D graphics and compute API. It is designed to offer "closer to metal" control, allowing developers to explicitly manage GPU memory, command buffers, and synchronization. Google recognized this potential immediately, announcing Vulkan support in .
The canonical way, however, is to use the Android NDK's Native Hardware Buffer queries or vulkan.h 's VkPhysicalDeviceProperties . The apiVersion field in VkPhysicalDeviceProperties directly corresponds to the android.hardware.vulkan.version system feature. It is designed to offer "closer to metal"
: Indicates a specific set of hardware feature guarantees, such as "Level 0" (basic) or "Level 1" (enhanced compute and shader capabilities). Android Developers
<uses-feature android:name="android.hardware.vulkan.version" android:version="0x402000" android:required="true" /> Use code with caution.
Use code with caution.