diff --git a/notcuda/src/cuda.rs b/notcuda/src/cuda.rs index a957ba0..2dc26f5 100644 --- a/notcuda/src/cuda.rs +++ b/notcuda/src/cuda.rs @@ -2914,7 +2914,7 @@ pub extern "C" fn cuMemsetD8_v2( uc: ::std::os::raw::c_uchar, N: usize, ) -> CUresult { - r#impl::unimplemented() + r#impl::memory::set_d8_v2(dstDevice.decuda(), uc, N).encuda() } #[cfg_attr(not(test), no_mangle)] diff --git a/notcuda/src/impl/memory.rs b/notcuda/src/impl/memory.rs index 1e7dcb7..f33a08c 100644 --- a/notcuda/src/impl/memory.rs +++ b/notcuda/src/impl/memory.rs @@ -38,6 +38,17 @@ pub(crate) fn set_d32_v2(dst: *mut c_void, ui: u32, n: usize) -> Result<(), CUre })? } +pub(crate) fn set_d8_v2(dst: *mut c_void, uc: u8, n: usize) -> Result<(), CUresult> { + GlobalState::lock_stream(stream::CU_STREAM_LEGACY, |stream| { + let mut cmd_list = stream.command_list()?; + unsafe { + cmd_list.append_memory_fill_unsafe(dst, &uc, mem::size_of::() * n, None, &mut []) + }?; + stream.queue.execute(cmd_list)?; + Ok::<_, CUresult>(()) + })? +} + #[cfg(test)] mod test { use super::super::test::CudaDriverFns;