1 // DerelictCL - a Derelict based dynamic binding for OpenCL 2 // written in the D programming language 3 // 4 // Copyright: MeinMein 2013-2014. 5 // License: Boost License 1.0 6 // (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // Authors: Gerbrand Kamphuis (meinmein.com), 9 // Marvin Meeng (meinmein.com). 10 module derelict.opencl.functions; 11 12 private 13 { 14 import derelict.opencl.types; 15 } 16 17 extern(System) 18 { 19 // OpenCL 1.0 20 alias @nogc nothrow cl_int function(cl_uint, cl_platform_id*, cl_uint*) da_clGetPlatformIDs; 21 alias @nogc nothrow cl_int function(cl_platform_id, cl_platform_info, size_t, void*, size_t*) da_clGetPlatformInfo; 22 alias @nogc nothrow cl_int function(cl_platform_id, cl_device_type, cl_uint, cl_device_id*, cl_uint*) da_clGetDeviceIDs; 23 alias @nogc nothrow cl_int function(cl_device_id, cl_device_info, size_t, void*, size_t*) da_clGetDeviceInfo; 24 alias @nogc nothrow cl_context function(const(cl_context_properties*), cl_uint, const(cl_device_id*), void function(const(char*), const(void*), size_t, void*), void*, cl_int*) da_clCreateContext; 25 alias @nogc nothrow cl_context function(const(cl_context_properties*), cl_device_type, void function(const(char*), const(void*), size_t, void*), void*, cl_int*) da_clCreateContextFromType; 26 alias @nogc nothrow cl_int function(cl_context) da_clRetainContext; 27 alias @nogc nothrow cl_int function(cl_context) da_clReleaseContext; 28 alias @nogc nothrow cl_int function(cl_context, cl_context_info, size_t, void*, size_t*) da_clGetContextInfo; 29 alias @nogc nothrow cl_command_queue function(cl_context, cl_device_id, cl_command_queue_properties, cl_int*) da_clCreateCommandQueue; 30 alias @nogc nothrow cl_int function(cl_command_queue) da_clRetainCommandQueue; 31 alias @nogc nothrow cl_int function(cl_command_queue) da_clReleaseCommandQueue; 32 alias @nogc nothrow cl_int function(cl_command_queue, cl_command_queue_info, size_t, void*, size_t*) da_clGetCommandQueueInfo; 33 alias @nogc nothrow cl_mem function(cl_context, cl_mem_flags, size_t, void*, cl_int*) da_clCreateBuffer; 34 alias @nogc nothrow cl_int function(cl_mem) da_clRetainMemObject; 35 alias @nogc nothrow cl_int function(cl_mem) da_clReleaseMemObject; 36 alias @nogc nothrow cl_int function(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format*, cl_uint*) da_clGetSupportedImageFormats; 37 alias @nogc nothrow cl_int function(cl_mem, cl_mem_info, size_t, void*, size_t*) da_clGetMemObjectInfo; 38 alias @nogc nothrow cl_int function(cl_mem, cl_image_info, size_t, void*, size_t*) da_clGetImageInfo; 39 alias @nogc nothrow cl_sampler function(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int*) da_clCreateSampler; 40 alias @nogc nothrow cl_int function(cl_sampler) da_clRetainSampler; 41 alias @nogc nothrow cl_int function(cl_sampler) da_clReleaseSampler; 42 alias @nogc nothrow cl_int function(cl_sampler, cl_sampler_info, size_t, void*, size_t*) da_clGetSamplerInfo; 43 alias @nogc nothrow cl_program function(cl_context, cl_uint, const(char*)*, const(size_t*), cl_int*) da_clCreateProgramWithSource; 44 alias @nogc nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(size_t*), const(ubyte*)*, cl_int*, cl_int*) da_clCreateProgramWithBinary; 45 alias @nogc nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(char*), cl_int*) da_clCreateProgramWithBuiltInKernels; 46 alias @nogc nothrow cl_int function(cl_program) da_clRetainProgram; 47 alias @nogc nothrow cl_int function(cl_program) da_clReleaseProgram; 48 alias @nogc nothrow cl_int function(cl_program, cl_uint, const(cl_device_id*), const(char*), void function(cl_program, void*), void*) da_clBuildProgram; 49 alias @nogc nothrow cl_int function(cl_program, cl_program_info, size_t, void*, size_t*) da_clGetProgramInfo; 50 alias @nogc nothrow cl_int function(cl_program, cl_device_id, cl_program_build_info, size_t, void*, size_t*) da_clGetProgramBuildInfo; 51 alias @nogc nothrow cl_kernel function(cl_program, const(char*), cl_int*) da_clCreateKernel; 52 alias @nogc nothrow cl_int function(cl_program, cl_uint, cl_kernel*, cl_uint*) da_clCreateKernelsInProgram; 53 alias @nogc nothrow cl_int function(cl_kernel) da_clRetainKernel; 54 alias @nogc nothrow cl_int function(cl_kernel) da_clReleaseKernel; 55 alias @nogc nothrow cl_int function(cl_kernel, cl_uint, size_t, const(void*)) da_clSetKernelArg; 56 alias @nogc nothrow cl_int function(cl_kernel, cl_kernel_info, size_t, void*, size_t*) da_clGetKernelInfo; 57 alias @nogc nothrow cl_int function(cl_kernel, cl_uint, cl_kernel_arg_info, size_t, void*, size_t*) da_clGetKernelArgInfo; 58 alias @nogc nothrow cl_int function(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void*, size_t*) da_clGetKernelWorkGroupInfo; 59 alias @nogc nothrow cl_int function(cl_uint, const(cl_event*)) da_clWaitForEvents; 60 alias @nogc nothrow cl_int function(cl_event, cl_event_info, size_t, void*, size_t*) da_clGetEventInfo; 61 alias @nogc nothrow cl_int function(cl_event) da_clRetainEvent; 62 alias @nogc nothrow cl_int function(cl_event) da_clReleaseEvent; 63 alias @nogc nothrow cl_int function(cl_event, cl_profiling_info, size_t, void*, size_t*) da_clGetEventProfilingInfo; 64 alias @nogc nothrow cl_int function(cl_command_queue) da_clFlush; 65 alias @nogc nothrow cl_int function(cl_command_queue) da_clFinish; 66 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadBuffer; 67 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteBuffer; 68 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBuffer; 69 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadImage; 70 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteImage; 71 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyImage; 72 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyImageToBuffer; 73 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, size_t, const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBufferToImage; 74 alias @nogc nothrow void* function(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const(cl_event*), cl_event*, cl_int*) da_clEnqueueMapBuffer; 75 alias @nogc nothrow void* function(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const(size_t*), const(size_t*), size_t*, size_t*, cl_uint, const(cl_event*), cl_event*, cl_int*) da_clEnqueueMapImage; 76 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueUnmapMemObject; 77 alias @nogc nothrow cl_int function(cl_command_queue, cl_kernel, cl_uint, const(size_t*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueNDRangeKernel; 78 alias @nogc nothrow cl_int function(cl_command_queue, cl_kernel, cl_uint, const(cl_event*), cl_event*) da_clEnqueueTask; 79 alias @nogc nothrow cl_int function(cl_command_queue, void function(void*), void*, size_t, cl_uint, const(cl_mem*), const(void*)*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueNativeKernel; 80 // OpenCL 1.0 Deprecated in 1.1 81 alias @nogc nothrow cl_int function(cl_command_queue, cl_command_queue_properties, cl_bool, cl_command_queue_properties*) da_clSetCommandQueueProperty; 82 // OpenCL 1.1 83 alias @nogc nothrow cl_mem function(cl_mem, cl_mem_flags, cl_buffer_create_type, const(void*), cl_int*) da_clCreateSubBuffer; 84 alias @nogc nothrow cl_int function(cl_mem, void function(cl_mem, void*), void*) da_clSetMemObjectDestructorCallback; 85 alias @nogc nothrow cl_event function(cl_context, cl_int*) da_clCreateUserEvent; 86 alias @nogc nothrow cl_int function(cl_event, cl_int) da_clSetUserEventStatus; 87 alias @nogc nothrow cl_int function( cl_event, cl_int, void function(cl_event, cl_int, void*), void*) da_clSetEventCallback; 88 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, void*, cl_uint, const(cl_event*), cl_event*) da_clEnqueueReadBufferRect; 89 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_bool, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, const(void*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueWriteBufferRect; 90 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, cl_mem, const(size_t*), const(size_t*), const(size_t*), size_t, size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueCopyBufferRect; 91 // OpenCL 1.1 Deprecated in 1.2 92 alias @nogc nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), size_t, size_t, size_t, void*, cl_int*) da_clCreateImage2D; 93 alias @nogc nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), size_t, size_t, size_t, size_t, size_t, void*, cl_int*) da_clCreateImage3D; 94 alias @nogc nothrow cl_int function(cl_command_queue, cl_event*) da_clEnqueueMarker; 95 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*)) da_clEnqueueWaitForEvents; 96 alias @nogc nothrow cl_int function(cl_command_queue) da_clEnqueueBarrier; 97 alias @nogc nothrow cl_int function() da_clUnloadCompiler; 98 alias @nogc nothrow void* function(const(char*)) da_clGetExtensionFunctionAddress; 99 // OpenCL 1.2 100 alias @nogc nothrow cl_int function(cl_device_id, const(cl_device_partition_property*), cl_uint, cl_device_id*, cl_uint*) da_clCreateSubDevices; 101 alias @nogc nothrow cl_int function(cl_device_id) da_clRetainDevice; 102 alias @nogc nothrow cl_int function(cl_device_id) da_clReleaseDevice; 103 alias @nogc nothrow cl_mem function(cl_context, cl_mem_flags, const(cl_image_format*), const(cl_image_desc*), void*, cl_int*) da_clCreateImage; 104 alias @nogc nothrow cl_int function(cl_program, cl_uint, const(cl_device_id*), const(char*), cl_uint, const(cl_program*), const(char*)*, void function(cl_program, void*), void*) da_clCompileProgram; 105 alias @nogc nothrow cl_program function(cl_context, cl_uint, const(cl_device_id*), const(char*), cl_uint, const(cl_program*), void function(cl_program, void*), void*, cl_int* ) da_clLinkProgram; 106 alias @nogc nothrow cl_int function(cl_platform_id) da_clUnloadPlatformCompiler; 107 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, const(void*), size_t, size_t, size_t, cl_uint, const(cl_event*), cl_event*) da_clEnqueueFillBuffer; 108 alias @nogc nothrow cl_int function(cl_command_queue, cl_mem, const(void*), const(size_t*), const(size_t*), cl_uint, const(cl_event*), cl_event*) da_clEnqueueFillImage; 109 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, const(cl_mem*), cl_mem_migration_flags, cl_uint, const(cl_event*), cl_event*) da_clEnqueueMigrateMemObjects; 110 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*), cl_event*) da_clEnqueueMarkerWithWaitList; 111 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, const(cl_event*), cl_event*) da_clEnqueueBarrierWithWaitList; 112 alias @nogc nothrow void* function(cl_platform_id, const(char*)) da_clGetExtensionFunctionAddressForPlatform; 113 // OpenCL 2.0 114 alias @nogc nothrow cl_command_queue function(cl_context, cl_device_id, const cl_queue_properties *, cl_int*) da_clCreateCommandQueueWithProperties; 115 alias @nogc nothrow cl_mem function(cl_context, cl_mem_flags, cl_uint, cl_uint, const cl_pipe_properties*, cl_int*) da_clCreatePipe; 116 alias @nogc nothrow cl_int function(cl_mem, cl_pipe_info, size_t, void*, size_t*) da_clGetPipeInfo; 117 alias @nogc nothrow void* function(cl_context, cl_svm_mem_flags, size_t, cl_uint) da_clSVMAlloc; 118 alias @nogc nothrow void function(cl_context, void*) da_clSVMFree; 119 alias @nogc nothrow cl_sampler function(cl_context, const cl_sampler_properties*, cl_int*) da_clCreateSamplerWithProperties; 120 alias @nogc nothrow cl_int function(cl_kernel, cl_uint, void*) da_clSetKernelArgSVMPointer; 121 alias @nogc nothrow cl_int function(cl_kernel, cl_kernel_exec_info, size_t, const void *) da_clSetKernelExecInfo; 122 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, void**, void function(cl_command_queue, cl_uint, void**, void*), void*, cl_uint, const cl_event*, cl_event*) da_clEnqueueSVMFree; 123 alias @nogc nothrow cl_int function(cl_command_queue, cl_bool, void*, const void*, size_t, cl_uint, const cl_event*, cl_event*) da_clEnqueueSVMMemcpy; 124 alias @nogc nothrow cl_int function(cl_command_queue,void*, const void*, size_t,size_t, cl_uint, const cl_event*, cl_event*) da_clEnqueueSVMMemFill; 125 alias @nogc nothrow cl_int function(cl_command_queue, cl_bool, cl_map_flags, void*, size_t, cl_uint, const cl_event*, cl_event*) da_clEnqueueSVMMap; 126 alias @nogc nothrow cl_int function(cl_command_queue, void *, cl_uint,const cl_event*, cl_event*) da_clEnqueueSVMUnmap; 127 // OpenCL 2.1 128 alias @nogc nothrow cl_int function(cl_context, cl_device_id, cl_command_queue) da_clSetDefaultDeviceCommandQueue; 129 alias @nogc nothrow cl_int function(cl_device_id, cl_ulong*, cl_ulong*) da_clGetDeviceAndHostTimer; 130 alias @nogc nothrow cl_int function(cl_device_id, cl_ulong*) da_clGetHostTimer; 131 alias @nogc nothrow cl_program function(cl_context, const void*, size_t, cl_int*) da_clCreateProgramWithIL; 132 alias @nogc nothrow cl_kernel function(cl_kernel, cl_int*) da_clCloneKernel; 133 alias @nogc nothrow cl_int function(cl_kernel, cl_device_id, cl_kernel_sub_group_info, size_t, const void*, size_t, void*, size_t*) da_clGetKernelSubGroupInfo; 134 alias @nogc nothrow cl_int function(cl_command_queue, cl_uint, const void**, const size_t*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*) da_clEnqueueSVMMigrateMem; 135 alias @nogc nothrow cl_int function(cl_program, void function(cl_program, void*), void*) da_clSetProgramReleaseCallback; 136 alias @nogc nothrow cl_int function(cl_program, cl_uint, size_t, const void*) da_clSetProgramSpecializationConstant; 137 } 138 struct OpenCLFunc 139 { 140 int added, dep, removed; 141 this(int _added, int _dep = 0, int _rem = 0) 142 { 143 added = _added; 144 dep = _dep; 145 removed = _rem; 146 } 147 } 148 __gshared 149 { 150 @OpenCLFunc(10) 151 { 152 // OpenCL 1.0 153 da_clGetPlatformIDs clGetPlatformIDs; 154 da_clGetPlatformInfo clGetPlatformInfo; 155 da_clGetDeviceIDs clGetDeviceIDs; 156 da_clGetDeviceInfo clGetDeviceInfo; 157 da_clCreateContext clCreateContext; 158 da_clCreateContextFromType clCreateContextFromType; 159 da_clRetainContext clRetainContext; 160 da_clReleaseContext clReleaseContext; 161 da_clGetContextInfo clGetContextInfo; 162 //da_clCreateCommandQueue clCreateCommandQueue; // removed in 2.0 163 da_clRetainCommandQueue clRetainCommandQueue; 164 da_clReleaseCommandQueue clReleaseCommandQueue; 165 da_clGetCommandQueueInfo clGetCommandQueueInfo; 166 da_clCreateBuffer clCreateBuffer; 167 da_clRetainMemObject clRetainMemObject; 168 da_clReleaseMemObject clReleaseMemObject; 169 da_clGetSupportedImageFormats clGetSupportedImageFormats; 170 da_clGetMemObjectInfo clGetMemObjectInfo; 171 da_clGetImageInfo clGetImageInfo; 172 //da_clCreateSampler clCreateSampler; 173 da_clRetainSampler clRetainSampler; 174 da_clReleaseSampler clReleaseSampler; 175 da_clGetSamplerInfo clGetSamplerInfo; 176 da_clCreateProgramWithSource clCreateProgramWithSource; 177 da_clCreateProgramWithBinary clCreateProgramWithBinary; 178 da_clRetainProgram clRetainProgram; 179 da_clReleaseProgram clReleaseProgram; 180 da_clBuildProgram clBuildProgram; 181 da_clGetProgramInfo clGetProgramInfo; 182 da_clGetProgramBuildInfo clGetProgramBuildInfo; 183 da_clCreateKernel clCreateKernel; 184 da_clCreateKernelsInProgram clCreateKernelsInProgram; 185 da_clRetainKernel clRetainKernel; 186 da_clReleaseKernel clReleaseKernel; 187 da_clSetKernelArg clSetKernelArg; 188 da_clGetKernelInfo clGetKernelInfo; 189 da_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo; 190 da_clWaitForEvents clWaitForEvents; 191 da_clGetEventInfo clGetEventInfo; 192 da_clRetainEvent clRetainEvent; 193 da_clReleaseEvent clReleaseEvent; 194 da_clGetEventProfilingInfo clGetEventProfilingInfo; 195 da_clFlush clFlush; 196 da_clFinish clFinish; 197 da_clEnqueueReadBuffer clEnqueueReadBuffer; 198 da_clEnqueueWriteBuffer clEnqueueWriteBuffer; 199 da_clEnqueueCopyBuffer clEnqueueCopyBuffer; 200 da_clEnqueueReadImage clEnqueueReadImage; 201 da_clEnqueueWriteImage clEnqueueWriteImage; 202 da_clEnqueueCopyImage clEnqueueCopyImage; 203 da_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer; 204 da_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage; 205 da_clEnqueueMapBuffer clEnqueueMapBuffer; 206 da_clEnqueueMapImage clEnqueueMapImage; 207 da_clEnqueueUnmapMemObject clEnqueueUnmapMemObject; 208 da_clEnqueueNDRangeKernel clEnqueueNDRangeKernel; 209 //da_clEnqueueTask clEnqueueTask; 210 da_clEnqueueNativeKernel clEnqueueNativeKernel; 211 } 212 // OpenCL 1.0 Deprecated in 1.1 213 @OpenCLFunc(10,11) da_clSetCommandQueueProperty clSetCommandQueueProperty; 214 215 // OpenCL 1.0 Removed in 2.0 216 @OpenCLFunc(10,20) 217 { 218 // Replaced by their .*WithProperties counterparts 219 da_clCreateCommandQueue clCreateCommandQueue; 220 da_clCreateSampler clCreateSampler; 221 222 da_clEnqueueTask clEnqueueTask; 223 } 224 225 @OpenCLFunc(11) 226 { 227 // OpenCL 1.1 228 da_clCreateSubBuffer clCreateSubBuffer; 229 da_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback; 230 da_clCreateUserEvent clCreateUserEvent; 231 da_clSetUserEventStatus clSetUserEventStatus; 232 da_clSetEventCallback clSetEventCallback; 233 da_clEnqueueReadBufferRect clEnqueueReadBufferRect; 234 da_clEnqueueWriteBufferRect clEnqueueWriteBufferRect; 235 da_clEnqueueCopyBufferRect clEnqueueCopyBufferRect; 236 } 237 238 @OpenCLFunc(11,12) 239 { 240 // OpenCL 1.1 Deprecated in 1.2 241 da_clCreateImage2D clCreateImage2D; 242 da_clCreateImage3D clCreateImage3D; 243 da_clEnqueueMarker clEnqueueMarker; 244 da_clEnqueueWaitForEvents clEnqueueWaitForEvents; 245 da_clEnqueueBarrier clEnqueueBarrier; 246 da_clUnloadCompiler clUnloadCompiler; 247 da_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; 248 } 249 250 @OpenCLFunc(12) 251 { 252 // OpenCL 1.2 253 da_clCreateSubDevices clCreateSubDevices; 254 da_clRetainDevice clRetainDevice; 255 da_clReleaseDevice clReleaseDevice; 256 da_clCreateImage clCreateImage; 257 da_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels; 258 da_clCompileProgram clCompileProgram; 259 da_clLinkProgram clLinkProgram; 260 da_clUnloadPlatformCompiler clUnloadPlatformCompiler; 261 da_clGetKernelArgInfo clGetKernelArgInfo; 262 da_clEnqueueFillBuffer clEnqueueFillBuffer; 263 da_clEnqueueFillImage clEnqueueFillImage; 264 da_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects; 265 da_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList; 266 da_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList; 267 da_clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform; 268 } 269 270 @OpenCLFunc(20) 271 { 272 da_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties; 273 da_clCreatePipe clCreatePipe; 274 da_clGetPipeInfo clGetPipeInfo; 275 da_clSVMAlloc clSVMAlloc; 276 da_clSVMFree clSVMFree; 277 da_clCreateSamplerWithProperties clCreateSamplerWithProperties; 278 da_clSetKernelArgSVMPointer clSetKernelArgSVMPointer; 279 da_clSetKernelExecInfo clSetKernelExecInfo; 280 da_clEnqueueSVMFree clEnqueueSVMFree; 281 da_clEnqueueSVMMemcpy clEnqueueSVMMemcpy; 282 da_clEnqueueSVMMemFill clEnqueueSVMMemFill; 283 da_clEnqueueSVMMap clEnqueueSVMMap; 284 da_clEnqueueSVMUnmap clEnqueueSVMUnmap; 285 } 286 287 @OpenCLFunc(21) 288 { 289 da_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue; 290 da_clGetDeviceAndHostTimer clGetDeviceAndHostTimer; // actually get timestamps 291 da_clGetHostTimer clGetHostTimer; // ditto 292 da_clCreateProgramWithIL clCreateProgramWithIL; 293 da_clCloneKernel clCloneKernel; 294 da_clGetKernelSubGroupInfo clGetKernelSubGroupInfo; 295 da_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem; 296 } 297 @OpenCLFunc(22) 298 { 299 da_clSetProgramReleaseCallback clSetProgramReleaseCallback; 300 da_clSetProgramSpecializationConstant clSetProgramSpecializationConstant; 301 } 302 303 }