summaryrefslogtreecommitdiff
path: root/src/bindings.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bindings.lisp')
-rw-r--r--src/bindings.lisp832
1 files changed, 832 insertions, 0 deletions
diff --git a/src/bindings.lisp b/src/bindings.lisp
new file mode 100644
index 0000000..0cc08ba
--- /dev/null
+++ b/src/bindings.lisp
@@ -0,0 +1,832 @@
+(in-package #:ocl-ffi)
+
+;;; Platform API
+
+(cffi:defcfun ("clGetPlatformIDs" %get-platform-ids) cl-error-code
+ (num-entries cl-uint)
+ (platforms cl-platform-id)
+ (num-platforms (:pointer cl-uint)))
+
+(cffi:defcfun ("clGetPlatformInfo" %get-platform-info) cl-error-code
+ (platform cl-platform-id)
+ (param-name cl-platform-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Device APIs
+
+(cffi:defcfun ("clGetDeviceIDs" %get-device-ids) cl-error-code
+ (platform cl-platform-id)
+ (device-type cl-device-type)
+ (num-entries cl-uint)
+ (devices (:pointer cl-device-id))
+ (num-devices (:pointer cl-uint)))
+
+(cffi:defcfun ("clGetDeviceInfo" %get-device-info) cl-error-code
+ (device cl-device-id)
+ (param-name cl-device-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clCreateSubDevices" %create-sub-devices) cl-int
+ (in-device cl-device-id)
+ (properties (:pointer cl-device-partition-property))
+ (num-devices cl-uint)
+ (out-devices (:pointer cl-device-id))
+ (num-devices-ret (:pointer cl-uint)))
+
+(cffi:defcfun ("clRetainDevice" %retain-device) cl-error-code
+ (device cl-device-id))
+
+(cffi:defcfun ("clReleaseDevice" %release-device) cl-error-code
+ (device cl-device-id))
+
+(cffi:defcfun ("clSetDefaultDeviceCommandQueue" %set-default-device-command-queue) cl-int
+ (context cl-context)
+ (device cl-device-id)
+ (command-queue cl-command-queue))
+
+(cffi:defcfun ("clGetDeviceAndHostTimer" %get-device-and-host-timer) cl-int
+ (device cl-device-id)
+ (device-timestamp (:pointer cl-ulong))
+ (host-timestamp (:pointer cl-ulong)))
+
+(cffi:defcfun ("clGetHostTimer" %get-host-timer) cl-int
+ (device cl-device-id)
+ (host-timestamp (:pointer cl-ulong)))
+
+;;; Context APIs
+
+(cffi:defcfun ("clCreateContext" %create-context) cl-context
+ (properties (:pointer cl-context-properties))
+ (num-devices cl-uint)
+ (devices (:pointer cl-device-id))
+ (pfn-notify :pointer)
+ (user-data (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateContextFromType" %create-context-from-type) cl-context
+ (device-type cl-device-type)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainContext" %retain-context) cl-error-code
+ (context cl-context))
+
+(cffi:defcfun ("clReleaseContext" %release-context) cl-error-code
+ (context cl-context))
+
+(cffi:defcfun ("clGetContextInfo" %get-context-info) cl-int
+ (context cl-context)
+ (param-name cl-context-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clSetContextDestructorCallback" set-context-destructor-callback) cl-int
+ (context cl-context)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+;;; Command Queue APIs
+
+(cffi:defcfun ("clCreateCommandQueueWithProperties" %create-command-queue-with-properties) cl-command-queue
+ (context cl-context)
+ (device cl-device-id)
+ (properties (:pointer cl-queue-properties))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainCommandQueue" %retain-command-queue) cl-error-code
+ (command-queue cl-command-queue))
+
+(cffi:defcfun ("clReleaseCommandQueue" %release-command-queue) cl-error-code
+ (command-queue cl-command-queue))
+
+(cffi:defcfun ("clGetCommandQueueInfo" %get-command-queue-info) cl-int
+ (command-queue cl-command-queue)
+ (param-name cl-command-queue-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Memory Object APIs
+
+(cffi:defcfun ("clCreateBuffer" %create-buffer) cl-mem
+ (context cl-context)
+ (flags cl-mem-flags)
+ (size :size)
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateSubBuffer" create-sub-buffer) cl-mem
+ (buffer cl-mem)
+ (flags cl-mem-flags)
+ (size :size)
+ (host-ptr (:pointer :void))
+ (buffer-create-type cl-buffer-create-type)
+ (buffer-create-info (:pointer :void))
+ (errcode-ret (:pointer :int)))
+
+(cffi:defcfun ("clCreateImage" create-image) cl-mem
+ (context cl-context)
+ (flags cl-mem-flags)
+ (image-format (:pointer (:struct cl-image-format)))
+ (image-desc (:pointer (:struct cl-image-desc)))
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreatePipe" %create-pipe) cl-mem
+ (context cl-context)
+ (flags cl-mem-flags)
+ (pipe-packet-size cl-uint)
+ (pipe-max-packets cl-uint)
+ (properties (:pointer cl-pipe-properties))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateBufferWithProperties" create-buffer-with-properties) cl-mem
+ (context cl-context)
+ (properties (:pointer cl-mem-properties))
+ (flags cl-mem-flags)
+ (size :size)
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateImageWithProperties" create-image-with-properties) cl-mem
+ (context cl-context)
+ (properties (:pointer cl-mem-properties))
+ (flags cl-mem-flags)
+ (image-format (:pointer (:struct cl-image-format)))
+ (image-desc (:pointer (:struct cl-image-desc)))
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainMemObject" %retain-mem-object) cl-error-code
+ (memobj cl-mem))
+
+(cffi:defcfun ("clReleaseMemObject" %release-mem-object) cl-error-code
+ (memobj cl-mem))
+
+(cffi:defcfun ("clGetSupportedImageFormats" %get-supported-image-formats) cl-error-code
+ (context cl-context)
+ (flags cl-mem-flags)
+ (image-type cl-mem-object-type)
+ (num-entries cl-uint)
+ (image-formats (:pointer (:struct cl-image-format)))
+ (num-image-formats (:pointer cl-uint)))
+
+(cffi:defcfun ("clGetMemObjectInfo" %get-mem-object-info) cl-int
+ (memobj cl-mem)
+ (param-name cl-mem-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetImageInfo" %get-image-info) cl-int
+ (image cl-mem)
+ (param-name cl-image-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetPipeInfo" %get-pipe-info) cl-int
+ (pipe cl-mem)
+ (param-name cl-pipe-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clSetMemObjectDestructorCallback" set-mem-object-destructor-callback) cl-int
+ (memobj cl-mem)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+;;; SVM Allocation APIs
+
+(cffi:defcfun ("clSVMAlloc" svm-alloc) (:pointer :void)
+ (context cl-context)
+ (flags cl-svm-mem-flags)
+ (size :size)
+ (aligment cl-uint))
+
+(cffi:defcfun ("clSVMFree" svm-free) :void
+ (context cl-context)
+ (svm-pointer (:pointer :void)))
+
+;;; Sampler APIs
+
+(cffi:defcfun ("clCreateSamplerWithProperties" %create-sampler-with-properties) cl-sampler
+ (context cl-context)
+ (sampler-properties (:pointer cl-sampler-properties))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainSampler" %retain-sampler) cl-int
+ (sampler cl-sampler))
+
+(cffi:defcfun ("clReleaseSampler" %release-sampler) cl-int
+ (sampler cl-sampler))
+
+(cffi:defcfun ("clGetSamplerInfo" %get-sampler-info) cl-int
+ (sampler cl-sampler)
+ (param-name cl-sampler-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Program Object APIs
+
+(cffi:defcfun ("clCreateProgramWithSource" %create-program-with-source) cl-program
+ (context cl-context)
+ (count cl-uint)
+ (strings (:pointer (:pointer :char)))
+ (lengths (:pointer :size))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateProgramWithBinary" create-program-with-binary) cl-program
+ (context cl-context)
+ (num-devices cl-uint)
+ (device-list (:pointer cl-device-id))
+ (lengths (:pointer :size))
+ (binaries (:pointer (:pointer :unsigned-char)))
+ (binary-status (:pointer cl-int))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateProgramWithBuiltInKernels" create-program-with-built-in-kernels) cl-program
+ (context cl-context)
+ (num-devices cl-uint)
+ (device-list (:pointer cl-device-id))
+ (kernel-names (:pointer :char))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateProgramWithIL" create-program-with-il) cl-program
+ (context cl-context)
+ (il (:pointer :void))
+ (length :size)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainProgram" %retain-program) cl-error-code
+ (program cl-program))
+
+(cffi:defcfun ("clReleaseProgram" %release-program) cl-error-code
+ (program cl-program))
+
+(cffi:defcfun ("clBuildProgram" %build-program) cl-error-code
+ (program cl-program)
+ (num-devices cl-uint)
+ (device-list (:pointer cl-device-id))
+ (options :string)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+(cffi:defcfun ("clCompileProgram" %compile-program) cl-error-code
+ (program cl-program)
+ (num-devices cl-uint)
+ (device-list (:pointer cl-device-id))
+ (options (:pointer :char))
+ (num-input-headers cl-uint)
+ (input-headers (:pointer cl-program))
+ (header-include-names (:pointer (:pointer :char)))
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+(cffi:defcfun ("clLinkProgram" %link-program) cl-program
+ (context cl-context)
+ (num-devices cl-uint)
+ (device-list (:pointer cl-device-id))
+ (options (:pointer :char))
+ (num-input-programs cl-uint)
+ (input-programs (:pointer cl-program))
+ (pfn-notify :pointer)
+ (user-data (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clSetProgramReleaseCallback" set-program-release-callback) cl-int
+ (program cl-program)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+(cffi:defcfun ("clSetProgramSpecializationConstant" set-program-specialization-constant) cl-int
+ (program cl-program)
+ (spec-id cl-uint)
+ (spec-size :size)
+ (spec-value (:pointer :void)))
+
+(cffi:defcfun ("clUnloadPlatformCompiler" %unload-platform-compiler) cl-error-code
+ (platform cl-platform-id))
+
+(cffi:defcfun ("clGetProgramInfo" %get-program-info) cl-int
+ (program cl-program)
+ (param-name cl-program-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetProgramBuildInfo" %get-program-build-info) cl-int
+ (program cl-program)
+ (device cl-device-id)
+ (param-name cl-program-build-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Kernel Object APIs
+
+(cffi:defcfun ("clCreateKernel" %create-kernel) cl-kernel
+ (program cl-program)
+ (kernel-name :string)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateKernelsInProgram" %create-kernels-in-program) cl-error-code
+ (program cl-program)
+ (num-kernels cl-uint)
+ (kernels (:pointer cl-kernel))
+ (num-kernels-ret (:pointer cl-uint)))
+
+(cffi:defcfun ("clCloneKernel" %clone-kernel) cl-kernel
+ (source-kernel cl-kernel)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainKernel" %retain-kernel) cl-error-code
+ (kernel cl-kernel))
+
+(cffi:defcfun ("clReleaseKernel" %release-kernel) cl-error-code
+ (kernel cl-kernel))
+
+(cffi:defcfun ("clSetKernelArg" %set-kernel-arg) cl-error-code
+ (kernel cl-kernel)
+ (arg-index cl-uint)
+ (arg-size :size)
+ (arg-value (:pointer :void)))
+
+(cffi:defcfun ("clSetKernelArgSVMPointer" set-kernel-arg-svm-pointer) cl-int
+ (kernel cl-kernel)
+ (arg-index cl-uint)
+ (arg-value (:pointer :void)))
+
+(cffi:defcfun ("clSetKernelExecInfo" set-kernel-exec-info) cl-int
+ (kernel cl-kernel)
+ (param-name cl-kernel-exec-info)
+ (param-value-size :size)
+ (param-value (:pointer :void)))
+
+(cffi:defcfun ("clGetKernelInfo" %get-kernel-info) cl-int
+ (kernel cl-kernel)
+ (param-name cl-kernel-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetKernelArgInfo" %get-kernel-arg-info) cl-int
+ (kernel cl-kernel)
+ (arg-indx cl-uint)
+ (param-name cl-kernel-arg-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetKernelWorkGroupInfo" %get-kernel-work-group-info) cl-int
+ (kernel cl-kernel)
+ (device cl-device-id)
+ (param-name cl-kernel-work-group-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clGetKernelSubGroupInfo" %get-kernel-sub-group-info) cl-int
+ (kernel cl-kernel)
+ (device cl-device-id)
+ (param-name cl-kernel-sub-group-info)
+ (input-value-size :size)
+ (input-value (:pointer :void))
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Event Object APIs
+
+(cffi:defcfun ("clWaitForEvents" %wait-for-events) cl-error-code
+ (num-events cl-uint)
+ (event-list (:pointer cl-event)))
+
+(cffi:defcfun ("clGetEventInfo" %get-event-info) cl-error-code
+ (event cl-event)
+ (param-name cl-event-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+(cffi:defcfun ("clCreateUserEvent" %create-user-event) cl-event
+ (context cl-context)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clRetainEvent" %retain-event) cl-error-code
+ (event cl-event))
+
+(cffi:defcfun ("clReleaseEvent" %release-event) cl-error-code
+ (event cl-event))
+
+(cffi:defcfun ("clSetUserEventStatus" %set-user-event-status) cl-error-code
+ (event cl-event)
+ (execution-status cl-int))
+
+(cffi:defcfun ("clSetEventCallback" set-event-callback) cl-int
+ (event cl-event)
+ (command-exec-callback-type cl-int)
+ (pfn-notify :pointer)
+ (user-data (:pointer :void)))
+
+;;; Profiling APIs
+
+(cffi:defcfun ("clGetEventProfilingInfo" %get-event-profiling-info) cl-error-code
+ (event cl-event)
+ (param-name cl-profiling-info)
+ (param-value-size :size)
+ (param-value (:pointer :void))
+ (param-value-size-ret (:pointer :size)))
+
+;;; Flush and Finish APIs
+
+(cffi:defcfun ("clFlush" %flush) cl-error-code
+ (command-queue cl-command-queue))
+
+(cffi:defcfun ("clFinish" %finish) cl-error-code
+ (command-queue cl-command-queue))
+
+;;; Enqueued Commands APIs
+
+(cffi:defcfun ("clEnqueueReadBuffer" %enqueue-read-buffer) cl-error-code
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (blocking-read cl-bool)
+ (offset :size)
+ (size :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueReadBufferRect" enqueue-read-buffer-rect) cl-int
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (blocking-read cl-bool)
+ (buffer-origin (:pointer :size))
+ (host-origin (:pointer :size))
+ (region (:pointer :size))
+ (buffer-row-pitch :size)
+ (buffer-slice-pitch :size)
+ (host-row-pitch :size)
+ (host-slice-pitch :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueWriteBuffer" enqueue-write-buffer) cl-int
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (blocking-write cl-bool)
+ (offset :size)
+ (size :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueWriteBufferRect" enqueue-write-buffer-rect) cl-int
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (blocking-write cl-bool)
+ (buffer-origin (:pointer :size))
+ (host-origin (:pointer :size))
+ (region (:pointer :size))
+ (buffer-row-pitch :size)
+ (buffer-slice-pitch :size)
+ (host-row-pitch :size)
+ (host-slice-pitch :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueFillBuffer" enqueue-fill-buffer) cl-int
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (pattern (:pointer :void))
+ (pattern-size :size)
+ (offset :size)
+ (size :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueCopyBuffer" enqueue-copy-buffer) cl-int
+ (command-queue cl-command-queue)
+ (src-buffer cl-mem)
+ (dst-buffer cl-mem)
+ (src-offset :size)
+ (dst-offset :size)
+ (size :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueCopyBufferRect" enqueue-copy-buffer-rect) cl-int
+ (command-queue cl-command-queue)
+ (src-buffer cl-mem)
+ (dst-buffer cl-mem)
+ (src-origin (:pointer :size))
+ (dst-origin (:pointer :size))
+ (region (:pointer :size))
+ (src-row-pitch :size)
+ (src-slice-pitch :size)
+ (dst-row-pitch :size)
+ (dst-slice-pitch :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueReadImage" enqueue-read-image) cl-int
+ (command-queue cl-command-queue)
+ (image cl-mem)
+ (blocking-read cl-bool)
+ (origin (:pointer :size))
+ (region (:pointer :size))
+ (row-pitch :size)
+ (slice-pitch :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueWriteImage" enqueue-write-image) cl-int
+ (command-queue cl-command-queue)
+ (image cl-mem)
+ (blocking-write cl-bool)
+ (origin (:pointer :size))
+ (region (:pointer :size))
+ (input-row-pitch :size)
+ (input-slice-pitch :size)
+ (ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueFillImage" enqueue-fill-image) cl-int
+ (command-queue cl-command-queue)
+ (image cl-mem)
+ (fill-color (:pointer :void))
+ (origin (:pointer :size))
+ (region (:pointer :size))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueCopyImage" enqueue-copy-image) cl-int
+ (command-queue cl-command-queue)
+ (src-image cl-mem)
+ (dst-image cl-mem)
+ (src-origin (:pointer :size))
+ (dst-origin (:pointer :size))
+ (region (:pointer :size))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueCopyImageToBuffer" enqueue-copy-image-to-buffer) cl-int
+ (command-queue cl-command-queue)
+ (src-image cl-mem)
+ (dst-buffer cl-mem)
+ (src-origin (:pointer :size))
+ (region (:pointer :size))
+ (dst-offset :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueCopyBufferToImage" enqueue-copy-buffer-to-image) cl-int
+ (command-queue cl-command-queue)
+ (src-buffer cl-mem)
+ (dst-image cl-mem)
+ (src-offset :size)
+ (dst-origin (:pointer :size))
+ (region (:pointer :size))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueMapBuffer" enqueue-map-buffer) (:pointer :void)
+ (command-queue cl-command-queue)
+ (buffer cl-mem)
+ (blocking-map cl-bool)
+ (map-flags cl-map-flags)
+ (offset :size)
+ (size :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clEnqueueMapImage" enqueue-map-image) (:pointer :void)
+ (command-queue cl-command-queue)
+ (image cl-mem)
+ (blocking-map cl-bool)
+ (map-flags cl-map-flags)
+ (origin (:pointer :size))
+ (region (:pointer :size))
+ (image-row-pitch (:pointer :size))
+ (image-slice-pitch (:pointer :size))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clEnqueueUnmapMemObject" enqueue-unmap-mem-object) cl-int
+ (command-queue cl-command-queue)
+ (memobj cl-mem)
+ (mapped-ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueMigrateMemObjects" enqueue-migrate-mem-objects) cl-int
+ (command-queue cl-command-queue)
+ (num-mem-objects cl-uint)
+ (mem-objects (:pointer cl-mem))
+ (flags cl-mem-migration-flags)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueNDRangeKernel" %enqueue-nd-range-kernel) cl-error-code
+ (command-queue cl-command-queue)
+ (kernel cl-kernel)
+ (work-dim cl-uint)
+ (global-work-offset (:pointer :size))
+ (global-work-size (:pointer :size))
+ (local-work-size (:pointer :size))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueNativeKernel" enqueue-native-kernel) cl-int
+ (command-queue cl-command-queue)
+ (user-func :pointer)
+ (args (:pointer :void))
+ (cb-args :size)
+ (num-mem-objects cl-uint)
+ (mem-list (:pointer cl-mem))
+ (args-mem-loc (:pointer (:pointer :void)))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueMarkerWithWaitList" enqueue-marker-with-wait-list) cl-int
+ (command-queue cl-command-queue)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueBarrierWithWaitList" enqueue-barrier-with-wait-list) cl-int
+ (command-queue cl-command-queue)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMFree" %enqueue-svm-free) cl-error-code
+ (command-queue cl-command-queue)
+ (num-svm-pointers cl-uint)
+ (svm-pointers (:pointer (:pointer :void)))
+ (pfn-free-func :pointer)
+ (user-data :pointer)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMMemcpy" %enqueue-svm-memcpy) cl-error-code
+ (command-queue cl-command-queue)
+ (blocking-copy cl-bool)
+ (dst-ptr (:pointer :void))
+ (src-ptr (:pointer :void))
+ (size :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMMemfill" %enqueue-svm-memfill) cl-error-code
+ (command-queue cl-command-queue)
+ (svm-ptr (:pointer :void))
+ (pattern (:pointer :void))
+ (pattern-size :size)
+ (size :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMMap" %enqueue-svm-map) cl-error-code
+ (command-queue cl-command-queue)
+ (blocking-map cl-bool)
+ (flags cl-map-flags)
+ (svm-ptr (:pointer :void))
+ (size :size)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMUnmap" %enqueue-svm-unmap) cl-error-code
+ (command-queue cl-command-queue)
+ (svm-ptr (:pointer :void))
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueSVMMigrateMem" %enqueue-svm-migrate-mem) cl-error-code
+ (command-queue cl-command-queue)
+ (num-svm-pointers cl-uint)
+ (svm-pointers (:pointer (:pointer :void)))
+ (sizes (:pointer :size))
+ (flags cl-mem-migration-flags)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))
+
+;;; Extension function access
+
+(cffi:defcfun ("clGetExtensionFunctionAddressForPlatform"
+ get-extension-function-address-for-platform)
+ (:pointer :void)
+ (platform cl-platform-id)
+ (func-name :string))
+
+;;; Deprecated OpenCL 1.0 APIs
+
+(cffi:defcfun ("clSetCommandQueueProperty" set-command-queue-property) cl-int
+ (command-queue cl-command-queue)
+ (properties cl-command-queue-properties)
+ (enable cl-bool)
+ (old-properties (:pointer cl-command-queue-properties)))
+
+;;; Deprecated OpenCL 1.1 APIs
+
+(cffi:defcfun ("clCreateImage2D" create-image-2d) cl-mem
+ (context cl-context)
+ (flags cl-mem-flags)
+ (image-format (:pointer (:struct cl-image-format)))
+ (image-width :size)
+ (image-height :size)
+ (image-row-pitch :size)
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateImage3D" create-image-3d) cl-mem
+ (context cl-context)
+ (flags cl-mem-flags)
+ (image-format (:pointer (:struct cl-image-format)))
+ (image-width :size)
+ (image-height :size)
+ (image-depth :size)
+ (image-row-pitch :size)
+ (image-slice-pitch :size)
+ (host-ptr (:pointer :void))
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clEnqueueMarker" enqueue-marker) cl-int
+ (command-queue cl-command-queue)
+ (event (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueWaitForEvents" %enqueue-wait-for-events) cl-error-code
+ (command-queue cl-command-queue)
+ (num-events cl-uint)
+ (event-list (:pointer cl-event)))
+
+(cffi:defcfun ("clEnqueueBarrier" enqueue-barrier) cl-int
+ (command-queue cl-command-queue))
+
+(cffi:defcfun ("clUnloadCompiler" unload-compiler) cl-int)
+
+(cffi:defcfun ("clGetExtensionFunctionAddress" get-extension-function-address) (:pointer :void)
+ (func-name :string))
+
+;;; Deprecated OpenCL 2.0 APIs
+
+(cffi:defcfun ("clCreateCommandQueue" %create-command-queue) cl-command-queue
+ (context cl-context)
+ (device cl-device-id)
+ (properties cl-command-queue-properties)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clCreateSampler" create-sampler) cl-sampler
+ (context cl-context)
+ (normalized-coords cl-bool)
+ (addressing-mode cl-addressing-mode)
+ (filter-mode cl-filter-mode)
+ (errcode-ret (:pointer cl-int)))
+
+(cffi:defcfun ("clEnqueueTask" enqueue-task) cl-int
+ (command-queue cl-command-queue)
+ (kernel cl-kernel)
+ (num-events-in-wait-list cl-uint)
+ (event-wait-list (:pointer cl-event))
+ (event (:pointer cl-event)))