forked from Zyko0/go-opencl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.go
83 lines (76 loc) · 3.97 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package pureCL
import (
"github.com/ebitengine/purego"
)
func SetHandle(handleExternal uintptr) {
handle = handleExternal
}
func Init(version Version, paths ...string) error {
err := loadLibrary(paths)
if err != nil {
return err
}
// Platform
err = registerLibFuncWithoutPanic(&GetPlatformIDs, handle, "clGetPlatformIDs", nil)
err = registerLibFuncWithoutPanic(&GetPlatformInfo, handle, "clGetPlatformInfo", err)
// Device
err = registerLibFuncWithoutPanic(&GetDeviceIDs, handle, "clGetDeviceIDs", err)
err = registerLibFuncWithoutPanic(&GetDeviceInfo, handle, "clGetDeviceInfo", err)
err = registerLibFuncWithoutPanic(&ReleaseDevice, handle, "clReleaseDevice", err)
// Event
err = registerLibFuncWithoutPanic(&ReleaseEvent, handle, "clReleaseEvent", err)
err = registerLibFuncWithoutPanic(&WaitForEvents, handle, "clWaitForEvents", err)
// Context
err = registerLibFuncWithoutPanic(&CreateContext, handle, "clCreateContext", err)
err = registerLibFuncWithoutPanic(&ReleaseContext, handle, "clReleaseContext", err)
err = registerLibFuncWithoutPanic(&CreateProgramWithSource, handle, "clCreateProgramWithSource", err)
err = registerLibFuncWithoutPanic(&CreateBuffer, handle, "clCreateBuffer", err)
err = registerLibFuncWithoutPanic(&CreateImage2D, handle, "clCreateImage2D", err)
err = registerLibFuncWithoutPanic(&CreateImage3D, handle, "clCreateImage3D", err)
err = registerLibFuncWithoutPanic(&CreateImage, handle, "clCreateImage", err)
// Command queue
if version == Version2_0 || version == Version3_0 {
err = registerLibFuncWithoutPanic(&CreateCommandQueueWithProperties, handle, "clCreateCommandQueueWithProperties", err)
}
err = registerLibFuncWithoutPanic(&CreateCommandQueue, handle, "clCreateCommandQueue", err)
err = registerLibFuncWithoutPanic(&EnqueueBarrier, handle, "clEnqueueBarrier", err)
err = registerLibFuncWithoutPanic(&EnqueueNDRangeKernel, handle, "clEnqueueNDRangeKernel", err)
err = registerLibFuncWithoutPanic(&EnqueueReadBuffer, handle, "clEnqueueReadBuffer", err)
err = registerLibFuncWithoutPanic(&EnqueueWriteBuffer, handle, "clEnqueueWriteBuffer", err)
err = initUnsupported(handle, err)
err = registerLibFuncWithoutPanic(&EnqueueUnmapMemObject, handle, "clEnqueueUnmapMemObject", err)
err = registerLibFuncWithoutPanic(&FinishCommandQueue, handle, "clFinish", err)
err = registerLibFuncWithoutPanic(&FlushCommandQueue, handle, "clFlush", err)
err = registerLibFuncWithoutPanic(&ReleaseCommandQueue, handle, "clReleaseCommandQueue", err)
// Program
err = registerLibFuncWithoutPanic(&BuildProgram, handle, "clBuildProgram", err)
err = registerLibFuncWithoutPanic(&GetProgramBuildInfo, handle, "clGetProgramBuildInfo", err)
err = registerLibFuncWithoutPanic(&GetProgramInfo, handle, "clGetProgramInfo", err)
err = registerLibFuncWithoutPanic(&CreateKernel, handle, "clCreateKernel", err)
err = registerLibFuncWithoutPanic(&ReleaseProgram, handle, "clReleaseProgram", err)
// Kernel
err = registerLibFuncWithoutPanic(&SetKernelArg, handle, "clSetKernelArg", err)
err = registerLibFuncWithoutPanic(&ReleaseKernel, handle, "clReleaseKernel", err)
// Buffer
err = registerLibFuncWithoutPanic(&GetMemObjectInfo, handle, "clGetMemObjectInfo", err)
err = registerLibFuncWithoutPanic(&ReleaseMemObject, handle, "clReleaseMemObject", err)
if err != nil {
err = ErrJoin(err, purego.Dlclose(handle))
}
return err
}
func InitializeGLSharing(paths ...string) error {
err := loadLibrary(paths)
if err != nil {
return err
}
err = registerLibFuncWithoutPanic(&CreateFromGLTexture, handle, "clCreateFromGLTexture", err)
err = registerLibFuncWithoutPanic(&EnqueueAcquireGLObjects, handle, "clEnqueueAcquireGLObjects", err)
err = registerLibFuncWithoutPanic(&EnqueueReleaseGLObjects, handle, "clEnqueueReleaseGLObjects", err)
err = registerLibFuncWithoutPanic(&GetGLObjectInfo, handle, "clGetGLObjectInfo", err)
err = registerLibFuncWithoutPanic(&GetGLTextureInfo, handle, "clGetGLTextureInfo", err)
if err != nil {
err = ErrJoin(err, purego.Dlclose(handle))
}
return err
}