summaryrefslogtreecommitdiff
path: root/src/package.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/package.lisp')
-rw-r--r--src/package.lisp247
1 files changed, 247 insertions, 0 deletions
diff --git a/src/package.lisp b/src/package.lisp
new file mode 100644
index 0000000..ce8dc38
--- /dev/null
+++ b/src/package.lisp
@@ -0,0 +1,247 @@
+(defpackage #:ocl-ffi
+ (:use #:cl)
+ (:export
+ ;; Platform APIs
+ %get-platform-ids
+ %get-platform-info
+
+ ;; Device APIs
+ %get-device-ids
+ %get-device-info
+ %create-sub-devices
+ %retain-device
+ %release-device
+ %set-default-device-command-queue
+ %get-device-and-host-timer
+ %get-host-timer
+
+ ;; Context APIs
+ %create-context
+ %create-context-from-type
+ %retain-context
+ %release-context
+ %get-context-info
+ set-context-destructor-callback
+
+ ;; Command Queue APIs
+ %create-command-queue-with-properties
+ %retain-command-queue
+ %release-command-queue
+ %get-command-queue-info
+
+ ;; Memory Object APIs
+ %create-buffer
+ create-sub-buffer
+ create-image
+ %create-pipe
+ create-buffer-with-properties
+ create-image-with-properties
+ %retain-mem-object
+ %release-mem-object
+ %get-supported-image-formats
+ %get-mem-object-info
+ %get-image-info
+ %get-pipe-info
+ set-mem-object-destructor-callback
+
+ ;; SVM Allocation APIs
+ svm-alloc
+ svm-free
+
+ ;; Sampler APIs
+ %create-sampler-with-properties
+ %retain-sampler
+ %release-sampler
+ %get-sampler-info
+
+ ;; Program Object APIs
+ %create-program-with-source
+ create-program-with-binary
+ create-program-with-built-in-kernels
+ create-program-with-il
+ %retain-program
+ %release-program
+ %build-program
+ %compile-program
+ %link-program
+ set-program-release-callback
+ set-program-specialization-constant
+ %unload-platform-compiler
+ %get-program-info
+ %get-program-build-info
+
+ ;; Kernel Object APIs
+ %create-kernel
+ %create-kernels-in-program
+ %clone-kernel
+ %retain-kernel
+ %release-kernel
+ %set-kernel-arg
+ set-kernel-arg-svm-pointer
+ set-kernel-exec-info
+ %get-kernel-info
+ %get-kernel-arg-info
+ %get-kernel-work-group-info
+ %get-kernel-sub-group-info
+
+ ;; Event Object APIs
+ %wait-for-events
+ %get-event-info
+ %create-user-event
+ %retain-event
+ %release-event
+ %set-user-event-status
+ set-event-callback
+
+ ;; Profiling APIs
+ %get-event-profiling-info
+
+ ;; Flush and Finish APIs
+ %flush
+ %finish
+
+ ;; Enqueued Commands APIs
+ %enqueue-read-buffer
+ enqueue-read-buffer-rect
+ enqueue-write-buffer
+ enqueue-write-buffer-rect
+ enqueue-fill-buffer
+ enqueue-copy-buffer
+ enqueue-copy-buffer-rect
+ enqueue-read-image
+ enqueue-write-image
+ enqueue-fill-image
+ enqueue-copy-image
+ enqueue-copy-image-to-buffer
+ enqueue-copy-buffer-to-image
+ enqueue-map-buffer
+ enqueue-map-image
+ enqueue-unmap-mem-object
+ enqueue-migrate-mem-objects
+ %enqueue-nd-range-kernel
+ enqueue-native-kernel
+ enqueue-marker-with-wait-list
+ enqueue-barrier-with-wait-list
+ %enqueue-svm-free
+ %enqueue-svm-memcpy
+ %enqueue-svm-memfill
+ %enqueue-svm-map
+ %enqueue-svm-unmap
+ %enqueue-svm-migrate-mem
+
+ ;; Extension function access
+ get-extension-function-address-for-platform
+
+ ;; Deprecated OpenCL 1.0 APIs
+ set-command-queue-property
+
+ ;; Deprecated OpenCL 1.1 APIs
+ create-image-2d
+ create-image-3d
+ enqueue-marker
+ %enqueue-wait-for-events
+ enqueue-barrier
+ unload-compiler
+ get-extension-function-address
+
+ ;; Deprecated OpenCL 2.0 APIs
+ %create-command-queue
+ create-sampler
+ enqueue-task
+
+ ;; Types
+ cl-char
+ cl-uchar
+ cl-short
+ cl-ushort
+ cl-int
+ cl-uint
+ cl-long
+ cl-ulong
+
+ cl-half
+ cl-float
+ cl-double
+
+ cl-platform-id
+ cl-device-id
+ cl-context
+ cl-command-queue
+ cl-mem
+ cl-program
+ cl-kernel
+ cl-event
+ cl-sampler
+
+ cl-error-code
+ cl-bool
+ cl-bitfield
+ cl-properties
+
+ cl-platform-info
+ cl-device-info
+
+ cl-device-mem-cache-type
+ cl-device-local-mem-type
+ cl-context-info
+ cl-command-queue-info
+ cl-channel-order
+ cl-channel-type
+ cl-mem-object-type
+ cl-mem-info
+ cl-image-info
+ cl-pipe-info
+ cl-addressing-mode
+ cl-filter-mode
+ cl-sampler-info
+ cl-program-info
+ cl-program-build-info
+ cl-build-status
+ cl-kernel-info
+ cl-kernel-arg-info
+ cl-kernel-arg-address-qualifier
+ cl-kernel-arg-access-qualifier
+ cl-kernel-work-group-info
+ cl-kernel-sub-group-info
+ cl-kernel-exec-info
+ cl-event-info
+ cl-command-type
+ cl-buffer-create-type
+ cl-profiling-info
+ cl-khronos-vendor-id
+ cl-device-type
+ cl-device-fp-config
+ cl-device-exec-capabilities
+ cl-device-svm-capabilities
+ cl-command-queue-properties
+ cl-device-affinity-domain
+ cl-mem-flags
+ cl-svm-mem-flags
+ cl-mem-migration-flags
+ cl-program-binary-type
+ cl-map-flags
+ cl-kernel-arg-type-qualifier
+ cl-device-atomic-capabilities
+ cl-device-device-enqueue-capabilities
+ cl-mem-properties
+ cl-queue-properties
+ cl-device-partition-property
+ cl-context-properties
+ cl-pipe-properties
+ cl-sampler-properties
+ cl-version
+ cl-image-format
+ cl-buffer-region
+ cl-name-version
+ cl-image-desc))
+
+(defpackage #:ocl
+ (:use #:cl #:alexandria #:ocl-ffi))
+
+(in-package #:ocl)
+
+(cffi:define-foreign-library libopencl
+ (:unix (:or "libOpenCL.so" "/gnu/store/i70jq190cpc45crbnrw8g8lgb4djyi9r-opencl-icd-loader-2021.06.30/lib/libOpenCL.so"))
+ (t (:default "libOpenCL")))
+
+(cffi:use-foreign-library libopencl)