aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorKarol Herbst <[email protected]>2019-05-22 13:46:40 +0200
committerMarge Bot <[email protected]>2020-04-15 11:08:13 +0000
commitc170c0cfe4bd3c08385953e6e03f4403f5cfb5b9 (patch)
tree3e5cf926d412372d8f45d902d74bd837c602a621 /src/gallium
parente738967d6e4cfe25d4c14dd3211b27ddb67ed8cb (diff)
clover: add stubs for SVM
although most of those are 2.0 core functions, there is cl_arm_shared_virtual_memory to expose those in a 1.2 context. But we should be able to expose this extension with 1.1 as well as there is no technicaly reason why this shouldn't work. v2: move svm functions into existing files v3: rename func args to match convention Signed-off-by: Karol Herbst <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> Reviewed-by: Pierre Moreau <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2076>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/state_trackers/clover/api/dispatch.cpp20
-rw-r--r--src/gallium/state_trackers/clover/api/kernel.cpp17
-rw-r--r--src/gallium/state_trackers/clover/api/memory.cpp15
-rw-r--r--src/gallium/state_trackers/clover/api/transfer.cpp75
4 files changed, 117 insertions, 10 deletions
diff --git a/src/gallium/state_trackers/clover/api/dispatch.cpp b/src/gallium/state_trackers/clover/api/dispatch.cpp
index a2d270ea05b..6e1b0351afa 100644
--- a/src/gallium/state_trackers/clover/api/dispatch.cpp
+++ b/src/gallium/state_trackers/clover/api/dispatch.cpp
@@ -150,20 +150,20 @@ namespace clover {
clCreateCommandQueueWithProperties,
NULL, // clCreatePipe
NULL, // clGetPipeInfo
- NULL, // clSVMAlloc
- NULL, // clSVMFree
- NULL, // clEnqueueSVMFree
- NULL, // clEnqueueSVMMemcpy
- NULL, // clEnqueueSVMMemFill
- NULL, // clEnqueueSVMMap
- NULL, // clEnqueueSVMUnmap
+ clSVMAlloc,
+ clSVMFree,
+ clEnqueueSVMFree,
+ clEnqueueSVMMemcpy,
+ clEnqueueSVMMemFill,
+ clEnqueueSVMMap,
+ clEnqueueSVMUnmap,
NULL, // clCreateSamplerWithProperties
- NULL, // clSetKernelArgSVMPointer
- NULL, // clSetKernelExecInfo
+ clSetKernelArgSVMPointer,
+ clSetKernelExecInfo,
NULL, // clGetKernelSubGroupInfoKHR
NULL, // clCloneKernel
NULL, // clCreateProgramWithIL
- NULL, // clEnqueueSVMMigrateMem
+ clEnqueueSVMMigrateMem,
NULL, // clGetDeviceAndHostTimer
NULL, // clGetHostTimer
NULL, // clGetKernelSubGroupInfo
diff --git a/src/gallium/state_trackers/clover/api/kernel.cpp b/src/gallium/state_trackers/clover/api/kernel.cpp
index b665773d9ec..35b2f5450f7 100644
--- a/src/gallium/state_trackers/clover/api/kernel.cpp
+++ b/src/gallium/state_trackers/clover/api/kernel.cpp
@@ -333,3 +333,20 @@ clEnqueueNativeKernel(cl_command_queue d_q, void (*func)(void *),
const cl_event *d_deps, cl_event *rd_ev) {
return CL_INVALID_OPERATION;
}
+
+CLOVER_API cl_int
+clSetKernelArgSVMPointer(cl_kernel d_kern,
+ cl_uint arg_index,
+ const void *arg_value) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clSetKernelExecInfo(cl_kernel d_kern,
+ cl_kernel_exec_info param_name,
+ size_t param_value_size,
+ const void *param_value) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
diff --git a/src/gallium/state_trackers/clover/api/memory.cpp b/src/gallium/state_trackers/clover/api/memory.cpp
index df4b9baa1d9..6a0717680cf 100644
--- a/src/gallium/state_trackers/clover/api/memory.cpp
+++ b/src/gallium/state_trackers/clover/api/memory.cpp
@@ -426,3 +426,18 @@ clEnqueueFillImage(cl_command_queue command_queue, cl_mem image,
CLOVER_NOT_SUPPORTED_UNTIL("1.2");
return CL_INVALID_VALUE;
}
+
+CLOVER_API void *
+clSVMAlloc(cl_context d_ctx,
+ cl_svm_mem_flags flags,
+ size_t size,
+ unsigned int alignment) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return nullptr;
+}
+
+CLOVER_API void
+clSVMFree(cl_context d_ctx,
+ void *svm_pointer) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+}
diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp b/src/gallium/state_trackers/clover/api/transfer.cpp
index 34559042aec..879b8a9d762 100644
--- a/src/gallium/state_trackers/clover/api/transfer.cpp
+++ b/src/gallium/state_trackers/clover/api/transfer.cpp
@@ -764,3 +764,78 @@ clEnqueueMigrateMemObjects(cl_command_queue command_queue,
CLOVER_NOT_SUPPORTED_UNTIL("1.2");
return CL_INVALID_VALUE;
}
+
+CLOVER_API cl_int
+clEnqueueSVMFree(cl_command_queue d_q,
+ cl_uint num_svm_pointers,
+ void *svm_pointers[],
+ void (CL_CALLBACK *pfn_free_func) (cl_command_queue queue, cl_uint num_svm_pointers, void *svm_pointers[], void *user_data),
+ void *user_data,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clEnqueueSVMMemcpy(cl_command_queue d_q,
+ cl_bool blocking_copy,
+ void *dst_ptr,
+ const void *src_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clEnqueueSVMMemFill(cl_command_queue d_q,
+ void *svm_ptr,
+ const void *pattern,
+ size_t pattern_size,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clEnqueueSVMMap(cl_command_queue d_q,
+ cl_bool blocking_map,
+ cl_map_flags map_flags,
+ void *svm_ptr,
+ size_t size,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clEnqueueSVMUnmap(cl_command_queue d_q,
+ void *svm_ptr,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.0");
+ return CL_INVALID_VALUE;
+}
+
+CLOVER_API cl_int
+clEnqueueSVMMigrateMem(cl_command_queue d_q,
+ cl_uint num_svm_pointers,
+ const void **svm_pointers,
+ const size_t *sizes,
+ const cl_mem_migration_flags flags,
+ cl_uint num_events_in_wait_list,
+ const cl_event *event_wait_list,
+ cl_event *event) {
+ CLOVER_NOT_SUPPORTED_UNTIL("2.1");
+ return CL_INVALID_VALUE;
+}