pub mod core;
pub mod dispatch;
pub mod format;
pub mod lifecycle;
pub mod ops;
pub mod state;
pub mod transfer;
pub use self::core::GpuVec;
pub use self::state::{BufferPhase, PhaseViolationError};
impl<T: Copy + Send + Sync + 'static> From<GpuVec<T>> for Vec<T> {
#[inline(always)]
fn from(gpu_vec: GpuVec<T>) -> Self {
gpu_vec.to_vec()
}
}
impl<T: Copy + Send + Sync + 'static> From<&[T]> for GpuVec<T> {
#[inline(always)]
fn from(slice: &[T]) -> Self {
GpuVec::from_slice(slice)
}
}
impl<T: Copy + Send + Sync + 'static> From<Vec<T>> for GpuVec<T> {
#[inline(always)]
fn from(vec: Vec<T>) -> Self {
GpuVec::from_slice(&vec)
}
}
#[macro_export]
macro_rules! gpu_vec {
() => {
$crate::enki_api::resources::GpuVec::new()
};
($elem:expr; $n:expr) => {
$crate::enki_api::resources::GpuVec::from_elem($elem, $n)
};
($($x:expr),* $(,)?) => {
$crate::enki_api::resources::GpuVec::from_slice(&[$($x),*])
};
}