rusticl: add svm func stubs

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15439>
This commit is contained in:
Karol Herbst 2022-03-18 02:20:56 +01:00 committed by Marge Bot
parent fb9882cb35
commit bed203bbef
3 changed files with 123 additions and 10 deletions

View file

@ -148,20 +148,20 @@ pub static DISPATCH: cl_icd_dispatch = cl_icd_dispatch {
clCreateCommandQueueWithProperties: Some(cl_create_command_queue_with_properties),
clCreatePipe: None,
clGetPipeInfo: None,
clSVMAlloc: None,
clSVMFree: None,
clEnqueueSVMFree: None,
clEnqueueSVMMemcpy: None,
clEnqueueSVMMemFill: None,
clEnqueueSVMMap: None,
clEnqueueSVMUnmap: None,
clSVMAlloc: Some(cl_svm_alloc),
clSVMFree: Some(cl_svm_free),
clEnqueueSVMFree: Some(cl_enqueue_svm_free),
clEnqueueSVMMemcpy: Some(cl_enqueue_svm_memcpy),
clEnqueueSVMMemFill: Some(cl_enqueue_svm_mem_fill),
clEnqueueSVMMap: Some(cl_enqueue_svm_map),
clEnqueueSVMUnmap: Some(cl_enqueue_svm_unmap),
clCreateSamplerWithProperties: None,
clSetKernelArgSVMPointer: None,
clSetKernelExecInfo: None,
clSetKernelArgSVMPointer: Some(cl_set_kernel_arg_svm_pointer),
clSetKernelExecInfo: Some(cl_set_kernel_exec_info),
clGetKernelSubGroupInfoKHR: None,
clCloneKernel: Some(cl_clone_kernel),
clCreateProgramWithIL: Some(cl_create_program_with_il),
clEnqueueSVMMigrateMem: None,
clEnqueueSVMMigrateMem: Some(cl_enqueue_svm_migrate_mem),
clGetDeviceAndHostTimer: None,
clGetHostTimer: None,
clGetKernelSubGroupInfo: None,
@ -1503,6 +1503,96 @@ extern "C" fn cl_create_command_queue_with_properties(
match_obj!(create_command_queue(context, device, 0), errcode_ret)
}
extern "C" fn cl_svm_alloc(
_context: cl_context,
_flags: cl_svm_mem_flags,
_size: usize,
_alignment: ::std::os::raw::c_uint,
) -> *mut ::std::os::raw::c_void {
ptr::null_mut()
}
extern "C" fn cl_svm_free(_context: cl_context, _svm_pointer: *mut ::std::os::raw::c_void) {}
extern "C" fn cl_enqueue_svm_free(
_command_queue: cl_command_queue,
_num_svm_pointers: cl_uint,
_svm_pointers: *mut *mut ::std::os::raw::c_void,
_pfn_free_func: ::std::option::Option<SVMFreeCb>,
_user_data: *mut ::std::os::raw::c_void,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_enqueue_svm_memcpy(
_command_queue: cl_command_queue,
_blocking_copy: cl_bool,
_dst_ptr: *mut ::std::os::raw::c_void,
_src_ptr: *const ::std::os::raw::c_void,
_size: usize,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_enqueue_svm_mem_fill(
_command_queue: cl_command_queue,
_svm_ptr: *mut ::std::os::raw::c_void,
_pattern: *const ::std::os::raw::c_void,
_pattern_size: usize,
_size: usize,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_enqueue_svm_map(
_command_queue: cl_command_queue,
_blocking_map: cl_bool,
_flags: cl_map_flags,
_svm_ptr: *mut ::std::os::raw::c_void,
_size: usize,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_enqueue_svm_unmap(
_command_queue: cl_command_queue,
_svm_ptr: *mut ::std::os::raw::c_void,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_set_kernel_arg_svm_pointer(
_kernel: cl_kernel,
_arg_index: cl_uint,
_arg_value: *const ::std::os::raw::c_void,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_set_kernel_exec_info(
_kernel: cl_kernel,
_param_name: cl_kernel_exec_info,
_param_value_size: usize,
_param_value: *const ::std::os::raw::c_void,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_clone_kernel(source_kernel: cl_kernel, errcode_ret: *mut cl_int) -> cl_kernel {
match_obj!(clone_kernel(source_kernel), errcode_ret)
}
@ -1516,6 +1606,19 @@ extern "C" fn cl_create_program_with_il(
match_obj!(create_program_with_il(context, il, length), errcode_ret)
}
extern "C" fn cl_enqueue_svm_migrate_mem(
_command_queue: cl_command_queue,
_num_svm_pointers: cl_uint,
_svm_pointers: *mut *const ::std::os::raw::c_void,
_sizes: *const usize,
_flags: cl_mem_migration_flags,
_num_events_in_wait_list: cl_uint,
_event_wait_list: *const cl_event,
_event: *mut cl_event,
) -> cl_int {
CL_INVALID_OPERATION
}
extern "C" fn cl_set_program_specialization_constant(
program: cl_program,
spec_id: cl_uint,

View file

@ -195,6 +195,7 @@ impl CLInfo<cl_mem_info> for cl_mem {
CL_MEM_REFERENCE_COUNT => cl_prop::<cl_uint>(self.refcnt()?),
CL_MEM_SIZE => cl_prop::<usize>(mem.size),
CL_MEM_TYPE => cl_prop::<cl_mem_object_type>(mem.mem_type),
CL_MEM_USES_SVM_POINTER => cl_prop::<cl_bool>(CL_FALSE),
_ => return Err(CL_INVALID_VALUE),
})
}

View file

@ -62,6 +62,15 @@ cl_callback!(
}
);
cl_callback!(
SVMFreeCb {
queue: cl_command_queue,
num_svm_pointers: cl_uint,
svm_pointers: *mut *mut ::std::os::raw::c_void,
user_data: *mut ::std::os::raw::c_void,
}
);
// a lot of APIs use 3 component vectors passed as C arrays
#[derive(Clone, Copy, PartialEq, Eq)]
pub struct CLVec<T> {