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 |
#651 in Memory management
51 downloads per month
50KB
884 lines
Ashpan
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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
~125K SLoC