ocl_stream/traits/
to_ocl_buffer.rs1use ocl::{Buffer, OclPrm, ProQue};
8use std::any::type_name;
9
10pub trait ToOclBuffer<T>
11where
12 T: OclPrm,
13{
14 fn to_ocl_buffer(&self, pro_que: &ProQue) -> ocl::Result<Buffer<T>>;
15}
16
17impl<T> ToOclBuffer<T> for Vec<T>
18where
19 T: OclPrm,
20{
21 fn to_ocl_buffer(&self, pro_que: &ProQue) -> ocl::Result<Buffer<T>> {
22 log::trace!(
23 "Allocating OpenCL Buffer for Vec of type {} with len {}",
24 type_name::<T>(),
25 self.len()
26 );
27 let buffer = pro_que.buffer_builder().len(self.len()).build()?;
28 buffer.write(&self[..]).enq()?;
29
30 Ok(buffer)
31 }
32}