use {
clap::Parser,
screen_13::{
pool::alias::{Alias, AliasPool},
prelude::*,
},
std::sync::Arc,
};
fn main() -> Result<(), DriverError> {
pretty_env_logger::init();
let args = Args::parse();
let device_info = DeviceInfoBuilder::default().debug(args.debug);
let device = Arc::new(Device::create_headless(device_info)?);
let mut pool = AliasPool::new(HashPool::new(&device));
let image_info = ImageInfo::image_2d(
128,
128,
vk::Format::R8G8B8A8_UNORM,
vk::ImageUsageFlags::TRANSFER_SRC | vk::ImageUsageFlags::TRANSFER_DST,
);
let image1 = pool.alias(image_info)?;
let image2 = pool.alias(image_info)?;
assert!(Arc::ptr_eq(&image1, &image2));
let mut render_graph = RenderGraph::new();
let image1 = render_graph.bind_node(image1);
let image2 = render_graph.bind_node(image2);
assert_eq!(image1, image2);
let image_info = ImageInfo::image_2d(
image_info.width,
image_info.height,
image_info.fmt,
vk::ImageUsageFlags::TRANSFER_DST,
);
let image3 = render_graph.bind_node(pool.alias(image_info)?);
assert_eq!(image1, image3);
let image4 = render_graph.bind_node(pool.lease(image_info)?);
assert_ne!(image1, image4);
Ok(())
}
#[derive(Parser)]
struct Args {
#[arg(long)]
debug: bool,
}