14 releases (6 breaking)

0.7.0 Mar 30, 2022
0.6.1 Jan 11, 2022
0.6.0 Dec 22, 2021
0.5.2 Sep 22, 2021

#95 in Rendering

MIT/Apache

50KB
884 lines

Ashpan

Crates.io Version Documentation License: MIT License: Apache 2.0

RAII helpers for ash

ashpan makes it easier to properly clean up ash resources when failures occur. It's essentially a scopeguard that has been tailored to Vulkan.

Example

use ashpan::{DeviceExt, Guarded};

struct Resources { ... }

unsafe fn create_resources(device: &ash::Device) -> VkResult<Resources> {
    let render_pass = create_render_pass(device)?;
    let pipeline_layout = create_pipeline_layout(device)?;
    let pipeline = create_pipeline(device, *render_pass, *pipeline_layout)?;
    Ok(Resources {
        render_pass: render_pass.take(),
        pipeline_layout: pipeline_layout.take(),
        pipeline: pipeline.take(),
    })
}

unsafe fn create_render_pass(device: &ash::Device) -> VkResult<Guarded<vk::RenderPass>> {
    let create_info = unimplemented!();
    device.create_guarded_render_pass(create_info, None)
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~5MB
~124K SLoC