enki/enki_api/resources/vec/
mod.rs1pub mod core;
2pub mod dispatch;
3pub mod format;
4pub mod lifecycle;
5pub mod ops;
6pub mod state;
7pub mod transfer;
8
9pub use self::core::GpuVec;
10pub use self::state::{BufferPhase, PhaseViolationError};
11
12impl<T: Copy + Send + Sync + 'static> From<GpuVec<T>> for Vec<T> {
13 #[inline(always)]
14 fn from(gpu_vec: GpuVec<T>) -> Self {
15 gpu_vec.to_vec()
16 }
17}
18
19impl<T: Copy + Send + Sync + 'static> From<&[T]> for GpuVec<T> {
20 #[inline(always)]
21 fn from(slice: &[T]) -> Self {
22 GpuVec::from_slice(slice)
23 }
24}
25
26impl<T: Copy + Send + Sync + 'static> From<Vec<T>> for GpuVec<T> {
27 #[inline(always)]
28 fn from(vec: Vec<T>) -> Self {
29 GpuVec::from_slice(&vec)
30 }
31}
32
33#[macro_export]
46macro_rules! gpu_vec {
47 () => {
48 $crate::enki_api::resources::GpuVec::new()
49 };
50 ($elem:expr; $n:expr) => {
51 $crate::enki_api::resources::GpuVec::from_elem($elem, $n)
52 };
53 ($($x:expr),* $(,)?) => {
54 $crate::enki_api::resources::GpuVec::from_slice(&[$($x),*])
55 };
56}