blob: dfaec8bbf935d07c101475d2db1146bab899f7ec [file] [log] [blame]
// Copyright (c) 2022 The Vulkano developers
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT
// license <LICENSE-MIT or https://opensource.org/licenses/MIT>,
// at your option. All files in the project carrying such
// notice may not be copied, modified, or distributed except
// according to those terms.
use super::{write_file, VkRegistryData};
use proc_macro2::{Literal, TokenStream};
use quote::quote;
pub fn write(vk_data: &VkRegistryData) {
let version_output = version_output(vk_data.header_version);
write_file(
"version.rs",
format!(
"vk.xml header version {}.{}.{}",
vk_data.header_version.0, vk_data.header_version.1, vk_data.header_version.2
),
quote! {
#version_output
},
);
}
fn version_output((major, minor, patch): (u16, u16, u16)) -> TokenStream {
let major = Literal::u16_unsuffixed(major);
let minor = Literal::u16_unsuffixed(minor);
let patch = Literal::u16_unsuffixed(patch);
quote! {
impl Version {
/// The highest Vulkan API version currently supported by Vulkano.
///
/// It is allowed for applications that use Vulkano to make use of features from higher
/// versions than this. However, Vulkano itself will not make use of those features and
/// will not expose their APIs, so they must be accessed by other means.
///
/// The `max_api_version` of an [`Instance`](crate::instance::Instance) equals
/// `HEADER_VERSION` by default, which locks out features from newer versions. In order
/// to enable the use of higher versions, the `max_api_version` must be overridden when
/// creating an instance.
pub const HEADER_VERSION: Version = Version {
major: #major,
minor: #minor,
patch: #patch,
};
}
}
}