jay_ash/extensions/nv/
cuda_kernel_launch.rs1use crate::RawPtr;
4use crate::prelude::*;
5use crate::vk;
6use alloc::vec::Vec;
7use core::mem;
8
9impl crate::nv::cuda_kernel_launch::Device {
10 #[inline]
12 pub unsafe fn create_cuda_module(
13 &self,
14 create_info: &vk::CudaModuleCreateInfoNV<'_>,
15 allocator: Option<&vk::AllocationCallbacks<'_>>,
16 ) -> VkResult<vk::CudaModuleNV> {
17 unsafe {
18 let mut module = mem::MaybeUninit::uninit();
19 (self.fp.create_cuda_module_nv)(
20 self.handle,
21 create_info,
22 allocator.as_raw_ptr(),
23 module.as_mut_ptr(),
24 )
25 .assume_init_on_success(module)
26 }
27 }
28
29 #[inline]
31 pub unsafe fn get_cuda_module_cache(&self, module: vk::CudaModuleNV) -> VkResult<Vec<u8>> {
32 unsafe {
33 read_into_uninitialized_vector(|cache_size, cache_data: *mut u8| {
34 (self.fp.get_cuda_module_cache_nv)(
35 self.handle,
36 module,
37 cache_size,
38 cache_data.cast(),
39 )
40 })
41 }
42 }
43
44 #[inline]
46 pub unsafe fn create_cuda_function(
47 &self,
48 create_info: &vk::CudaFunctionCreateInfoNV<'_>,
49 allocator: Option<&vk::AllocationCallbacks<'_>>,
50 ) -> VkResult<vk::CudaFunctionNV> {
51 unsafe {
52 let mut function = mem::MaybeUninit::uninit();
53 (self.fp.create_cuda_function_nv)(
54 self.handle,
55 create_info,
56 allocator.as_raw_ptr(),
57 function.as_mut_ptr(),
58 )
59 .assume_init_on_success(function)
60 }
61 }
62
63 #[inline]
65 pub unsafe fn destroy_cuda_module(
66 &self,
67 module: vk::CudaModuleNV,
68 allocator: Option<&vk::AllocationCallbacks<'_>>,
69 ) {
70 unsafe { (self.fp.destroy_cuda_module_nv)(self.handle, module, allocator.as_raw_ptr()) }
71 }
72
73 #[inline]
75 pub unsafe fn destroy_cuda_function(
76 &self,
77 function: vk::CudaFunctionNV,
78 allocator: Option<&vk::AllocationCallbacks<'_>>,
79 ) {
80 unsafe { (self.fp.destroy_cuda_function_nv)(self.handle, function, allocator.as_raw_ptr()) }
81 }
82
83 #[inline]
85 pub unsafe fn cmd_cuda_launch_kernel(
86 &self,
87 command_buffer: vk::CommandBuffer,
88 launch_info: &vk::CudaLaunchInfoNV<'_>,
89 ) {
90 unsafe { (self.fp.cmd_cuda_launch_kernel_nv)(command_buffer, launch_info) }
91 }
92}