vk/core/version.rs
1//! Vulkan's packed API version, including the variant bits.
2
3/// Pack a Vulkan API version using the Khronos bit allocation.
4pub const fn make_api_version(variant: u32, major: u32, minor: u32, patch: u32) -> u32 {
5 (variant << 29) | (major << 22) | (minor << 12) | patch
6}
7
8/// Extract the API variant.
9pub const fn api_version_variant(version: u32) -> u32 {
10 version >> 29
11}
12
13/// Extract the major version, excluding the variant.
14pub const fn api_version_major(version: u32) -> u32 {
15 (version >> 22) & 0x7f
16}
17
18/// Extract the minor version.
19pub const fn api_version_minor(version: u32) -> u32 {
20 (version >> 12) & 0x3ff
21}
22
23/// Extract the patch version.
24pub const fn api_version_patch(version: u32) -> u32 {
25 version & 0xfff
26}