Struct vulkano::pipeline::cache::PipelineCache
source · pub struct PipelineCache { /* private fields */ }
Expand description
Opaque cache that contains pipeline objects.
See the documentation of the module for more info.
Implementations§
source§impl PipelineCache
impl PipelineCache
sourcepub unsafe fn new(
device: Arc<Device>,
create_info: PipelineCacheCreateInfo
) -> Result<Arc<PipelineCache>, Validated<VulkanError>>
pub unsafe fn new( device: Arc<Device>, create_info: PipelineCacheCreateInfo ) -> Result<Arc<PipelineCache>, Validated<VulkanError>>
Builds a new pipeline cache.
Safety
- The data in
create_info.initial_data
must be valid data that was previously retrieved usingget_data
.
Examples
This example loads a cache from a file, if it exists.
See get_data
for how to store the data in a file.
use std::fs::File;
use std::io::Read;
use vulkano::pipeline::cache::{PipelineCache, PipelineCacheCreateInfo};
let initial_data = {
let file = File::open("pipeline_cache.bin");
if let Ok(mut file) = file {
let mut data = Vec::new();
if let Ok(_) = file.read_to_end(&mut data) {
data
} else {
Vec::new()
}
} else {
Vec::new()
}
};
// This is unsafe because there is no way to be sure that the file contains valid data.
let cache = unsafe {
PipelineCache::new(
device.clone(),
PipelineCacheCreateInfo {
initial_data,
..Default::default()
}
).unwrap()
};
sourcepub unsafe fn from_handle(
device: Arc<Device>,
handle: PipelineCache,
create_info: PipelineCacheCreateInfo
) -> Arc<PipelineCache>
pub unsafe fn from_handle( device: Arc<Device>, handle: PipelineCache, create_info: PipelineCacheCreateInfo ) -> Arc<PipelineCache>
Creates a new PipelineCache
from a raw object handle.
Safety
handle
must be a valid Vulkan object handle created fromdevice
.create_info
must match the info used to create the object.
sourcepub fn flags(&self) -> PipelineCacheCreateFlags
pub fn flags(&self) -> PipelineCacheCreateFlags
Returns the flags that the pipeline cache was created with.
sourcepub fn get_data(&self) -> Result<Vec<u8>, VulkanError>
pub fn get_data(&self) -> Result<Vec<u8>, VulkanError>
Obtains the data from the cache.
This data can be stored and then reloaded and passed to PipelineCache::new
.
Examples
use std::fs;
use std::fs::File;
use std::io::Write;
// If an error happens (eg. no permission for the file) we simply skip storing the cache.
if let Ok(data) = cache.get_data() {
if let Ok(mut file) = File::create("pipeline_cache.bin.tmp") {
if let Ok(_) = file.write_all(&data) {
let _ = fs::rename("pipeline_cache.bin.tmp", "pipeline_cache.bin");
} else {
let _ = fs::remove_file("pipeline_cache.bin.tmp");
}
}
}
sourcepub fn merge<'a>(
&self,
src_caches: impl IntoIterator<Item = &'a PipelineCache>
) -> Result<(), Validated<VulkanError>>
pub fn merge<'a>( &self, src_caches: impl IntoIterator<Item = &'a PipelineCache> ) -> Result<(), Validated<VulkanError>>
Merges other pipeline caches into this one.
It is self
that is modified here. The pipeline caches passed as parameter are untouched.
Trait Implementations§
source§impl Debug for PipelineCache
impl Debug for PipelineCache
source§impl DeviceOwned for PipelineCache
impl DeviceOwned for PipelineCache
source§impl Drop for PipelineCache
impl Drop for PipelineCache
source§impl Hash for PipelineCache
impl Hash for PipelineCache
source§impl PartialEq for PipelineCache
impl PartialEq for PipelineCache
source§impl VulkanObject for PipelineCache
impl VulkanObject for PipelineCache
impl Eq for PipelineCache
Auto Trait Implementations§
impl !RefUnwindSafe for PipelineCache
impl Send for PipelineCache
impl Sync for PipelineCache
impl Unpin for PipelineCache
impl !UnwindSafe for PipelineCache
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> DeviceOwnedVulkanObject for Twhere
T: DeviceOwned + VulkanObject,
impl<T> DeviceOwnedVulkanObject for Twhere T: DeviceOwned + VulkanObject,
source§fn set_debug_utils_object_name(
&self,
object_name: Option<&str>
) -> Result<(), VulkanError>
fn set_debug_utils_object_name( &self, object_name: Option<&str> ) -> Result<(), VulkanError>
Assigns a human-readable name to the object for debugging purposes. Read more