Mercurial > projects > cl4d
comparison opencl/c/cl.d @ 1:5b5ace425b37
* moved c.opencl to c.cl
* updated c.cl_gl
+ c.d3d10
author | Trass3r |
---|---|
date | Wed, 14 Apr 2010 13:52:17 +0200 |
parents | opencl/c/opencl.d@3cea44337083 |
children | 01d502efe0c4 |
comparison
equal
deleted
inserted
replaced
0:3cea44337083 | 1:5b5ace425b37 |
---|---|
1 /******************************************************************************* | |
2 * Copyright (c) 2008-2009 The Khronos Group Inc. | |
3 * | |
4 * Permission is hereby granted, free of charge, to any person obtaining a | |
5 * copy of this software and/or associated documentation files (the | |
6 * "Materials"), to deal in the Materials without restriction, including | |
7 * without limitation the rights to use, copy, modify, merge, publish, | |
8 * distribute, sublicense, and/or sell copies of the Materials, and to | |
9 * permit persons to whom the Materials are furnished to do so, subject to | |
10 * the following conditions: | |
11 * | |
12 * The above copyright notice and this permission notice shall be included | |
13 * in all copies or substantial portions of the Materials. | |
14 * | |
15 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | |
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
21 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. | |
22 ******************************************************************************/ | |
23 | |
24 // $Revision: 9283 $ on $Date: 2009-10-14 10:18:57 -0700 (Wed, 14 Oct 2009) $ | |
25 | |
26 module opencl.c.opencl; | |
27 | |
28 public import opencl.c.platform; | |
29 | |
30 extern(C): | |
31 | |
32 alias const(void)* | |
33 cl_platform_id, | |
34 cl_device_id, | |
35 cl_context, | |
36 cl_command_queue, | |
37 cl_mem, | |
38 cl_program, | |
39 cl_kernel, | |
40 cl_event, | |
41 cl_sampler; | |
42 | |
43 alias cl_uint cl_bool; // WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. | |
44 alias cl_ulong cl_bitfield; | |
45 alias cl_bitfield cl_device_type; | |
46 alias cl_uint cl_platform_info; | |
47 alias cl_uint cl_device_info; | |
48 alias cl_bitfield cl_device_address_info; | |
49 alias cl_bitfield cl_device_fp_config; | |
50 alias cl_uint cl_device_mem_cache_type; | |
51 alias cl_uint cl_device_local_mem_type; | |
52 alias cl_bitfield cl_device_exec_capabilities; | |
53 alias cl_bitfield cl_command_queue_properties; | |
54 | |
55 alias cl_bitfield cl_context_properties; | |
56 alias cl_uint cl_context_info; | |
57 alias cl_uint cl_command_queue_info; | |
58 alias cl_uint cl_channel_order; | |
59 alias cl_uint cl_channel_type; | |
60 alias cl_bitfield cl_mem_flags; | |
61 alias cl_uint cl_mem_object_type; | |
62 alias cl_uint cl_mem_info; | |
63 alias cl_uint cl_image_info; | |
64 alias cl_uint cl_addressing_mode; | |
65 alias cl_uint cl_filter_mode; | |
66 alias cl_uint cl_sampler_info; | |
67 alias cl_bitfield cl_map_flags; | |
68 alias cl_uint cl_program_info; | |
69 alias cl_uint cl_program_build_info; | |
70 alias cl_uint cl_build_status; | |
71 alias cl_uint cl_kernel_info; | |
72 alias cl_uint cl_kernel_work_group_info; | |
73 alias cl_uint cl_event_info; | |
74 alias cl_uint cl_command_type; | |
75 alias cl_uint cl_profiling_info; | |
76 | |
77 struct cl_image_format | |
78 { | |
79 cl_channel_order image_channel_order; | |
80 cl_channel_type image_channel_data_type; | |
81 } | |
82 | |
83 /******************************************************************************/ | |
84 | |
85 enum | |
86 { | |
87 // Error Codes | |
88 CL_SUCCESS = 0, | |
89 CL_DEVICE_NOT_FOUND = -1, | |
90 CL_DEVICE_NOT_AVAILABLE = -2, | |
91 CL_COMPILER_NOT_AVAILABLE = -3, | |
92 CL_MEM_OBJECT_ALLOCATION_FAILURE = -4, | |
93 CL_OUT_OF_RESOURCES = -5, | |
94 CL_OUT_OF_HOST_MEMORY = -6, | |
95 CL_PROFILING_INFO_NOT_AVAILABLE = -7, | |
96 CL_MEM_COPY_OVERLAP = -8, | |
97 CL_IMAGE_FORMAT_MISMATCH = -9, | |
98 CL_IMAGE_FORMAT_NOT_SUPPORTED = -10, | |
99 CL_BUILD_PROGRAM_FAILURE = -11, | |
100 CL_MAP_FAILURE = -12, | |
101 | |
102 CL_INVALID_VALUE = -30, | |
103 CL_INVALID_DEVICE_TYPE = -31, | |
104 CL_INVALID_PLATFORM = -32, | |
105 CL_INVALID_DEVICE = -33, | |
106 CL_INVALID_CONTEXT = -34, | |
107 CL_INVALID_QUEUE_PROPERTIES = -35, | |
108 CL_INVALID_COMMAND_QUEUE = -36, | |
109 CL_INVALID_HOST_PTR = -37, | |
110 CL_INVALID_MEM_OBJECT = -38, | |
111 CL_INVALID_IMAGE_FORMAT_DESCRIPTOR = -39, | |
112 CL_INVALID_IMAGE_SIZE = -40, | |
113 CL_INVALID_SAMPLER = -41, | |
114 CL_INVALID_BINARY = -42, | |
115 CL_INVALID_BUILD_OPTIONS = -43, | |
116 CL_INVALID_PROGRAM = -44, | |
117 CL_INVALID_PROGRAM_EXECUTABLE = -45, | |
118 CL_INVALID_KERNEL_NAME = -46, | |
119 CL_INVALID_KERNEL_DEFINITION = -47, | |
120 CL_INVALID_KERNEL = -48, | |
121 CL_INVALID_ARG_INDEX = -49, | |
122 CL_INVALID_ARG_VALUE = -50, | |
123 CL_INVALID_ARG_SIZE = -51, | |
124 CL_INVALID_KERNEL_ARGS = -52, | |
125 CL_INVALID_WORK_DIMENSION = -53, | |
126 CL_INVALID_WORK_GROUP_SIZE = -54, | |
127 CL_INVALID_WORK_ITEM_SIZE = -55, | |
128 CL_INVALID_GLOBAL_OFFSET = -56, | |
129 CL_INVALID_EVENT_WAIT_LIST = -57, | |
130 CL_INVALID_EVENT = -58, | |
131 CL_INVALID_OPERATION = -59, | |
132 CL_INVALID_GL_OBJECT = -60, | |
133 CL_INVALID_BUFFER_SIZE = -61, | |
134 CL_INVALID_MIP_LEVEL = -62, | |
135 CL_INVALID_GLOBAL_WORK_SIZE = -63, | |
136 | |
137 // OpenCL Version | |
138 CL_VERSION_1_0 = 1, | |
139 | |
140 // cl_bool | |
141 CL_FALSE = 0, | |
142 CL_TRUE = 1, | |
143 | |
144 // cl_platform_info | |
145 CL_PLATFORM_PROFILE = 0x0900, | |
146 CL_PLATFORM_VERSION = 0x0901, | |
147 CL_PLATFORM_NAME = 0x0902, | |
148 CL_PLATFORM_VENDOR = 0x0903, | |
149 CL_PLATFORM_EXTENSIONS = 0x0904, | |
150 | |
151 // cl_device_type - bitfield | |
152 CL_DEVICE_TYPE_DEFAULT = (1 << 0), | |
153 CL_DEVICE_TYPE_CPU = (1 << 1), | |
154 CL_DEVICE_TYPE_GPU = (1 << 2), | |
155 CL_DEVICE_TYPE_ACCELERATOR = (1 << 3), | |
156 CL_DEVICE_TYPE_ALL = 0xFFFFFFFF, | |
157 | |
158 // cl_device_info | |
159 CL_DEVICE_TYPE = 0x1000, | |
160 CL_DEVICE_VENDOR_ID = 0x1001, | |
161 CL_DEVICE_MAX_COMPUTE_UNITS = 0x1002, | |
162 CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 0x1003, | |
163 CL_DEVICE_MAX_WORK_GROUP_SIZE = 0x1004, | |
164 CL_DEVICE_MAX_WORK_ITEM_SIZES = 0x1005, | |
165 CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR = 0x1006, | |
166 CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT = 0x1007, | |
167 CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT = 0x1008, | |
168 CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG = 0x1009, | |
169 CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT = 0x100A, | |
170 CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE = 0x100B, | |
171 CL_DEVICE_MAX_CLOCK_FREQUENCY = 0x100C, | |
172 CL_DEVICE_ADDRESS_BITS = 0x100D, | |
173 CL_DEVICE_MAX_READ_IMAGE_ARGS = 0x100E, | |
174 CL_DEVICE_MAX_WRITE_IMAGE_ARGS = 0x100F, | |
175 CL_DEVICE_MAX_MEM_ALLOC_SIZE = 0x1010, | |
176 CL_DEVICE_IMAGE2D_MAX_WIDTH = 0x1011, | |
177 CL_DEVICE_IMAGE2D_MAX_HEIGHT = 0x1012, | |
178 CL_DEVICE_IMAGE3D_MAX_WIDTH = 0x1013, | |
179 CL_DEVICE_IMAGE3D_MAX_HEIGHT = 0x1014, | |
180 CL_DEVICE_IMAGE3D_MAX_DEPTH = 0x1015, | |
181 CL_DEVICE_IMAGE_SUPPORT = 0x1016, | |
182 CL_DEVICE_MAX_PARAMETER_SIZE = 0x1017, | |
183 CL_DEVICE_MAX_SAMPLERS = 0x1018, | |
184 CL_DEVICE_MEM_BASE_ADDR_ALIGN = 0x1019, | |
185 CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE = 0x101A, | |
186 CL_DEVICE_SINGLE_FP_CONFIG = 0x101B, | |
187 CL_DEVICE_GLOBAL_MEM_CACHE_TYPE = 0x101C, | |
188 CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE = 0x101D, | |
189 CL_DEVICE_GLOBAL_MEM_CACHE_SIZE = 0x101E, | |
190 CL_DEVICE_GLOBAL_MEM_SIZE = 0x101F, | |
191 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE = 0x1020, | |
192 CL_DEVICE_MAX_CONSTANT_ARGS = 0x1021, | |
193 CL_DEVICE_LOCAL_MEM_TYPE = 0x1022, | |
194 CL_DEVICE_LOCAL_MEM_SIZE = 0x1023, | |
195 CL_DEVICE_ERROR_CORRECTION_SUPPORT = 0x1024, | |
196 CL_DEVICE_PROFILING_TIMER_RESOLUTION = 0x1025, | |
197 CL_DEVICE_ENDIAN_LITTLE = 0x1026, | |
198 CL_DEVICE_AVAILABLE = 0x1027, | |
199 CL_DEVICE_COMPILER_AVAILABLE = 0x1028, | |
200 CL_DEVICE_EXECUTION_CAPABILITIES = 0x1029, | |
201 CL_DEVICE_QUEUE_PROPERTIES = 0x102A, | |
202 CL_DEVICE_NAME = 0x102B, | |
203 CL_DEVICE_VENDOR = 0x102C, | |
204 CL_DRIVER_VERSION = 0x102D, | |
205 CL_DEVICE_PROFILE = 0x102E, | |
206 CL_DEVICE_VERSION = 0x102F, | |
207 CL_DEVICE_EXTENSIONS = 0x1030, | |
208 CL_DEVICE_PLATFORM = 0x1031, | |
209 | |
210 // cl_device_fp_config - bitfield | |
211 CL_FP_DENORM = (1 << 0), | |
212 CL_FP_INF_NAN = (1 << 1), | |
213 CL_FP_ROUND_TO_NEAREST = (1 << 2), | |
214 CL_FP_ROUND_TO_ZERO = (1 << 3), | |
215 CL_FP_ROUND_TO_INF = (1 << 4), | |
216 CL_FP_FMA = (1 << 5), | |
217 | |
218 // cl_device_mem_cache_type | |
219 CL_NONE = 0x0, | |
220 CL_READ_ONLY_CACHE = 0x1, | |
221 CL_READ_WRITE_CACHE = 0x2, | |
222 | |
223 // cl_device_local_mem_type | |
224 CL_LOCAL = 0x1, | |
225 CL_GLOBAL = 0x2, | |
226 | |
227 // cl_device_exec_capabilities - bitfield | |
228 CL_EXEC_KERNEL = (1 << 0), | |
229 CL_EXEC_NATIVE_KERNEL = (1 << 1), | |
230 | |
231 // cl_command_queue_properties - bitfield | |
232 CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 << 0), | |
233 CL_QUEUE_PROFILING_ENABLE = (1 << 1), | |
234 | |
235 // cl_context_info | |
236 CL_CONTEXT_REFERENCE_COUNT = 0x1080, | |
237 CL_CONTEXT_DEVICES = 0x1081, | |
238 CL_CONTEXT_PROPERTIES = 0x1082, | |
239 | |
240 // cl_context_properties | |
241 CL_CONTEXT_PLATFORM = 0x1084, | |
242 | |
243 // cl_command_queue_info | |
244 CL_QUEUE_CONTEXT = 0x1090, | |
245 CL_QUEUE_DEVICE = 0x1091, | |
246 CL_QUEUE_REFERENCE_COUNT = 0x1092, | |
247 CL_QUEUE_PROPERTIES = 0x1093, | |
248 | |
249 // cl_mem_flags - bitfield | |
250 CL_MEM_READ_WRITE = (1 << 0), | |
251 CL_MEM_WRITE_ONLY = (1 << 1), | |
252 CL_MEM_READ_ONLY = (1 << 2), | |
253 CL_MEM_USE_HOST_PTR = (1 << 3), | |
254 CL_MEM_ALLOC_HOST_PTR = (1 << 4), | |
255 CL_MEM_COPY_HOST_PTR = (1 << 5), | |
256 | |
257 // cl_channel_order | |
258 CL_R = 0x10B0, | |
259 CL_A = 0x10B1, | |
260 CL_RG = 0x10B2, | |
261 CL_RA = 0x10B3, | |
262 CL_RGB = 0x10B4, | |
263 CL_RGBA = 0x10B5, | |
264 CL_BGRA = 0x10B6, | |
265 CL_ARGB = 0x10B7, | |
266 CL_INTENSITY = 0x10B8, | |
267 CL_LUMINANCE = 0x10B9, | |
268 | |
269 // cl_channel_type | |
270 CL_SNORM_INT8 = 0x10D0, | |
271 CL_SNORM_INT16 = 0x10D1, | |
272 CL_UNORM_INT8 = 0x10D2, | |
273 CL_UNORM_INT16 = 0x10D3, | |
274 CL_UNORM_SHORT_565 = 0x10D4, | |
275 CL_UNORM_SHORT_555 = 0x10D5, | |
276 CL_UNORM_INT_101010 = 0x10D6, | |
277 CL_SIGNED_INT8 = 0x10D7, | |
278 CL_SIGNED_INT16 = 0x10D8, | |
279 CL_SIGNED_INT32 = 0x10D9, | |
280 CL_UNSIGNED_INT8 = 0x10DA, | |
281 CL_UNSIGNED_INT16 = 0x10DB, | |
282 CL_UNSIGNED_INT32 = 0x10DC, | |
283 CL_HALF_FLOAT = 0x10DD, | |
284 CL_FLOAT = 0x10DE, | |
285 | |
286 // cl_mem_object_type | |
287 CL_MEM_OBJECT_BUFFER = 0x10F0, | |
288 CL_MEM_OBJECT_IMAGE2D = 0x10F1, | |
289 CL_MEM_OBJECT_IMAGE3D = 0x10F2, | |
290 | |
291 // cl_mem_info | |
292 CL_MEM_TYPE = 0x1100, | |
293 CL_MEM_FLAGS = 0x1101, | |
294 CL_MEM_SIZE = 0x1102, | |
295 CL_MEM_HOST_PTR = 0x1103, | |
296 CL_MEM_MAP_COUNT = 0x1104, | |
297 CL_MEM_REFERENCE_COUNT = 0x1105, | |
298 CL_MEM_CONTEXT = 0x1106, | |
299 | |
300 // cl_image_info | |
301 CL_IMAGE_FORMAT = 0x1110, | |
302 CL_IMAGE_ELEMENT_SIZE = 0x1111, | |
303 CL_IMAGE_ROW_PITCH = 0x1112, | |
304 CL_IMAGE_SLICE_PITCH = 0x1113, | |
305 CL_IMAGE_WIDTH = 0x1114, | |
306 CL_IMAGE_HEIGHT = 0x1115, | |
307 CL_IMAGE_DEPTH = 0x1116, | |
308 | |
309 // cl_addressing_mode | |
310 CL_ADDRESS_NONE = 0x1130, | |
311 CL_ADDRESS_CLAMP_TO_EDGE = 0x1131, | |
312 CL_ADDRESS_CLAMP = 0x1132, | |
313 CL_ADDRESS_REPEAT = 0x1133, | |
314 | |
315 // cl_filter_mode | |
316 CL_FILTER_NEAREST = 0x1140, | |
317 CL_FILTER_LINEAR = 0x1141, | |
318 | |
319 // cl_sampler_info | |
320 CL_SAMPLER_REFERENCE_COUNT = 0x1150, | |
321 CL_SAMPLER_CONTEXT = 0x1151, | |
322 CL_SAMPLER_NORMALIZED_COORDS = 0x1152, | |
323 CL_SAMPLER_ADDRESSING_MODE = 0x1153, | |
324 CL_SAMPLER_FILTER_MODE = 0x1154, | |
325 | |
326 // cl_map_flags - bitfield | |
327 CL_MAP_READ = (1 << 0), | |
328 CL_MAP_WRITE = (1 << 1), | |
329 | |
330 // cl_program_info | |
331 CL_PROGRAM_REFERENCE_COUNT = 0x1160, | |
332 CL_PROGRAM_CONTEXT = 0x1161, | |
333 CL_PROGRAM_NUM_DEVICES = 0x1162, | |
334 CL_PROGRAM_DEVICES = 0x1163, | |
335 CL_PROGRAM_SOURCE = 0x1164, | |
336 CL_PROGRAM_BINARY_SIZES = 0x1165, | |
337 CL_PROGRAM_BINARIES = 0x1166, | |
338 | |
339 // cl_program_build_info | |
340 CL_PROGRAM_BUILD_STATUS = 0x1181, | |
341 CL_PROGRAM_BUILD_OPTIONS = 0x1182, | |
342 CL_PROGRAM_BUILD_LOG = 0x1183, | |
343 | |
344 // cl_build_status | |
345 CL_BUILD_SUCCESS = 0, | |
346 CL_BUILD_NONE = -1, | |
347 CL_BUILD_ERROR = -2, | |
348 CL_BUILD_IN_PROGRESS = -3, | |
349 | |
350 // cl_kernel_info | |
351 CL_KERNEL_FUNCTION_NAME = 0x1190, | |
352 CL_KERNEL_NUM_ARGS = 0x1191, | |
353 CL_KERNEL_REFERENCE_COUNT = 0x1192, | |
354 CL_KERNEL_CONTEXT = 0x1193, | |
355 CL_KERNEL_PROGRAM = 0x1194, | |
356 | |
357 // cl_kernel_work_group_info | |
358 CL_KERNEL_WORK_GROUP_SIZE = 0x11B0, | |
359 CL_KERNEL_COMPILE_WORK_GROUP_SIZE = 0x11B1, | |
360 CL_KERNEL_LOCAL_MEM_SIZE = 0x11B2, | |
361 | |
362 // cl_event_info | |
363 CL_EVENT_COMMAND_QUEUE = 0x11D0, | |
364 CL_EVENT_COMMAND_TYPE = 0x11D1, | |
365 CL_EVENT_REFERENCE_COUNT = 0x11D2, | |
366 CL_EVENT_COMMAND_EXECUTION_STATUS = 0x11D3, | |
367 | |
368 // cl_command_type | |
369 CL_COMMAND_NDRANGE_KERNEL = 0x11F0, | |
370 CL_COMMAND_TASK = 0x11F1, | |
371 CL_COMMAND_NATIVE_KERNEL = 0x11F2, | |
372 CL_COMMAND_READ_BUFFER = 0x11F3, | |
373 CL_COMMAND_WRITE_BUFFER = 0x11F4, | |
374 CL_COMMAND_COPY_BUFFER = 0x11F5, | |
375 CL_COMMAND_READ_IMAGE = 0x11F6, | |
376 CL_COMMAND_WRITE_IMAGE = 0x11F7, | |
377 CL_COMMAND_COPY_IMAGE = 0x11F8, | |
378 CL_COMMAND_COPY_IMAGE_TO_BUFFER = 0x11F9, | |
379 CL_COMMAND_COPY_BUFFER_TO_IMAGE = 0x11FA, | |
380 CL_COMMAND_MAP_BUFFER = 0x11FB, | |
381 CL_COMMAND_MAP_IMAGE = 0x11FC, | |
382 CL_COMMAND_UNMAP_MEM_OBJECT = 0x11FD, | |
383 CL_COMMAND_MARKER = 0x11FE, | |
384 CL_COMMAND_ACQUIRE_GL_OBJECTS = 0x11FF, | |
385 CL_COMMAND_RELEASE_GL_OBJECTS = 0x1200, | |
386 | |
387 // command execution status | |
388 CL_COMPLETE = 0x0, | |
389 CL_RUNNING = 0x1, | |
390 CL_SUBMITTED = 0x2, | |
391 CL_QUEUED = 0x3, | |
392 | |
393 // cl_profiling_info | |
394 CL_PROFILING_COMMAND_QUEUED = 0x1280, | |
395 CL_PROFILING_COMMAND_SUBMIT = 0x1281, | |
396 CL_PROFILING_COMMAND_START = 0x1282, | |
397 CL_PROFILING_COMMAND_END = 0x1283 | |
398 } | |
399 | |
400 /********************************************************************************************************/ | |
401 | |
402 // Platform API | |
403 cl_int clGetPlatformIDs( | |
404 cl_uint num_entries, | |
405 cl_platform_id* platforms, | |
406 cl_uint* num_platforms | |
407 ); | |
408 | |
409 cl_int clGetPlatformInfo( | |
410 cl_platform_id platform, | |
411 cl_platform_info param_name, | |
412 size_t param_value_size, | |
413 void* param_value, | |
414 size_t* param_value_size_ret | |
415 ); | |
416 | |
417 // Device APIs | |
418 cl_int clGetDeviceIDs( | |
419 cl_platform_id platform, | |
420 cl_device_type device_type, | |
421 cl_uint num_entries, | |
422 cl_device_id* devices, | |
423 cl_uint* num_devices | |
424 ); | |
425 | |
426 cl_int clGetDeviceInfo( | |
427 cl_device_id device, | |
428 cl_device_info param_name, | |
429 size_t param_value_size, | |
430 void* param_value, | |
431 size_t* param_value_size_ret | |
432 ); | |
433 | |
434 // Context APIs | |
435 | |
436 typedef void function( | |
437 const(char)*, | |
438 const(void)*, | |
439 size_t, | |
440 const(void)* | |
441 ) cl_logging_fn; | |
442 | |
443 cl_context clCreateContext( | |
444 const(cl_context_properties)* properties, | |
445 cl_uint num_devices, | |
446 const(cl_device_id)* devices, | |
447 cl_logging_fn pfn_notify, | |
448 void* user_data, | |
449 cl_int* errcode_ret | |
450 ); | |
451 | |
452 cl_context clCreateContextFromType( | |
453 const(cl_context_properties)* properties, | |
454 cl_device_type device_type, | |
455 cl_logging_fn pfn_notify, | |
456 void* user_data, | |
457 cl_int* errcode_ret | |
458 ); | |
459 | |
460 cl_int clRetainContext( | |
461 cl_context context | |
462 ); | |
463 | |
464 cl_int clReleaseContext( | |
465 cl_context context | |
466 ); | |
467 | |
468 cl_int clGetContextInfo( | |
469 cl_context context, | |
470 cl_context_info param_name, | |
471 size_t param_value_size, | |
472 void* param_value, | |
473 size_t* param_value_size_ret | |
474 ); | |
475 | |
476 // Command Queue APIs | |
477 cl_command_queue clCreateCommandQueue( | |
478 cl_context context, | |
479 cl_device_id device, | |
480 cl_command_queue_properties properties, | |
481 cl_int* errcode_ret | |
482 ); | |
483 | |
484 cl_int clRetainCommandQueue( | |
485 cl_command_queue command_queue | |
486 ); | |
487 | |
488 cl_int clReleaseCommandQueue( | |
489 cl_command_queue command_queue | |
490 ); | |
491 | |
492 cl_int clGetCommandQueueInfo( | |
493 cl_command_queue command_queue, | |
494 cl_command_queue_info param_name, | |
495 size_t param_value_size, | |
496 void * param_value, | |
497 size_t * param_value_size_ret | |
498 ); | |
499 | |
500 cl_int clSetCommandQueueProperty( | |
501 cl_command_queue command_queue, | |
502 cl_command_queue_properties properties, | |
503 cl_bool enable, | |
504 cl_command_queue_properties* old_properties | |
505 ); | |
506 | |
507 // Memory Object APIs | |
508 cl_mem clCreateBuffer( | |
509 cl_context context, | |
510 cl_mem_flags flags, | |
511 size_t size, | |
512 void * host_ptr, | |
513 cl_int * errcode_ret | |
514 ); | |
515 | |
516 cl_mem clCreateImage2D( | |
517 cl_context context, | |
518 cl_mem_flags flags, | |
519 const(cl_image_format)* image_format, | |
520 size_t image_width, | |
521 size_t image_height, | |
522 size_t image_row_pitch, | |
523 void* host_ptr, | |
524 cl_int* errcode_ret | |
525 ); | |
526 | |
527 cl_mem clCreateImage3D( | |
528 cl_context context, | |
529 cl_mem_flags flags, | |
530 const(cl_image_format)* image_format, | |
531 size_t image_width, | |
532 size_t image_height, | |
533 size_t image_depth, | |
534 size_t image_row_pitch, | |
535 size_t image_slice_pitch, | |
536 void* host_ptr, | |
537 cl_int* errcode_ret | |
538 ); | |
539 | |
540 cl_int clRetainMemObject( | |
541 cl_mem memobj | |
542 ); | |
543 | |
544 cl_int clReleaseMemObject( | |
545 cl_mem memobj | |
546 ); | |
547 | |
548 cl_int clGetSupportedImageFormats( | |
549 cl_context context, | |
550 cl_mem_flags flags, | |
551 cl_mem_object_type image_type, | |
552 cl_uint num_entries, | |
553 cl_image_format* image_formats, | |
554 cl_uint* num_image_formats | |
555 ); | |
556 | |
557 cl_int clGetMemObjectInfo( | |
558 cl_mem memobj, | |
559 cl_mem_info param_name, | |
560 size_t param_value_size, | |
561 void* param_value, | |
562 size_t* param_value_size_ret | |
563 ); | |
564 | |
565 cl_int clGetImageInfo( | |
566 cl_mem image, | |
567 cl_image_info param_name, | |
568 size_t param_value_size, | |
569 void * param_value, | |
570 size_t * param_value_size_ret | |
571 ); | |
572 | |
573 // Sampler APIs | |
574 cl_sampler clCreateSampler( | |
575 cl_context context, | |
576 cl_bool normalized_coords, | |
577 cl_addressing_mode addressing_mode, | |
578 cl_filter_mode filter_mode, | |
579 cl_int* errcode_ret | |
580 ); | |
581 | |
582 cl_int clRetainSampler( | |
583 cl_sampler sampler | |
584 ); | |
585 | |
586 cl_int clReleaseSampler( | |
587 cl_sampler sampler | |
588 ); | |
589 | |
590 cl_int clGetSamplerInfo( | |
591 cl_sampler sampler, | |
592 cl_sampler_info param_name, | |
593 size_t param_value_size, | |
594 void* param_value, | |
595 size_t* param_value_size_ret | |
596 ); | |
597 | |
598 // Program Object APIs | |
599 cl_program clCreateProgramWithSource( | |
600 cl_context context, | |
601 cl_uint count, | |
602 const(char*)* strings, | |
603 const(size_t)* lengths, | |
604 cl_int* errcode_ret | |
605 ); | |
606 | |
607 cl_program clCreateProgramWithBinary( | |
608 cl_context context, | |
609 cl_uint num_devices, | |
610 const(cl_device_id)* device_list, | |
611 const(size_t)* lengths, | |
612 const(ubyte*)* binaries, | |
613 cl_int* binary_status, | |
614 cl_int* errcode_ret | |
615 ); | |
616 | |
617 cl_int clRetainProgram( | |
618 cl_program program | |
619 ); | |
620 | |
621 cl_int clReleaseProgram( | |
622 cl_program program | |
623 ); | |
624 | |
625 cl_int clBuildProgram( | |
626 cl_program program, | |
627 cl_uint num_devices, | |
628 const(cl_device_id)* device_list, | |
629 const(char)* options, | |
630 void function( | |
631 cl_program program, | |
632 void* user_data | |
633 ) pfn_notify, | |
634 void* user_data | |
635 ); | |
636 | |
637 cl_int clUnloadCompiler(); | |
638 | |
639 cl_int clGetProgramInfo( | |
640 cl_program program, | |
641 cl_program_info param_name, | |
642 size_t param_value_size, | |
643 void* param_value, | |
644 size_t* param_value_size_ret | |
645 ); | |
646 | |
647 cl_int clGetProgramBuildInfo( | |
648 cl_program program, | |
649 cl_device_id device, | |
650 cl_program_build_info param_name, | |
651 size_t param_value_size, | |
652 void* param_value, | |
653 size_t* param_value_size_ret | |
654 ); | |
655 | |
656 // Kernel Object APIs | |
657 cl_kernel clCreateKernel( | |
658 cl_program program, | |
659 const(char)* kernel_name, | |
660 cl_int* errcode_ret | |
661 ); | |
662 | |
663 cl_int clCreateKernelsInProgram( | |
664 cl_program program, | |
665 cl_uint num_kernels, | |
666 cl_kernel* kernels, | |
667 cl_uint* num_kernels_ret | |
668 ); | |
669 | |
670 cl_int clRetainKernel( | |
671 cl_kernel kernel | |
672 ); | |
673 | |
674 cl_int clReleaseKernel( | |
675 cl_kernel kernel | |
676 ); | |
677 | |
678 cl_int clSetKernelArg( | |
679 cl_kernel kernel, | |
680 cl_uint arg_indx, | |
681 size_t arg_size, | |
682 const(void)* arg_value | |
683 ); | |
684 | |
685 cl_int clGetKernelInfo( | |
686 cl_kernel kernel, | |
687 cl_kernel_info param_name, | |
688 size_t param_value_size, | |
689 void* param_value, | |
690 size_t* param_value_size_ret | |
691 ); | |
692 | |
693 cl_int clGetKernelWorkGroupInfo( | |
694 cl_kernel kernel, | |
695 cl_device_id device, | |
696 cl_kernel_work_group_info param_name, | |
697 size_t param_value_size, | |
698 void* param_value, | |
699 size_t* param_value_size_ret | |
700 ); | |
701 | |
702 // Event Object APIs | |
703 cl_int clWaitForEvents( | |
704 cl_uint num_events, | |
705 const(cl_event)* event_list | |
706 ); | |
707 | |
708 cl_int clGetEventInfo( | |
709 cl_event event, | |
710 cl_event_info param_name, | |
711 size_t param_value_size, | |
712 void* param_value, | |
713 size_t* param_value_size_ret | |
714 ); | |
715 | |
716 cl_int clRetainEvent( | |
717 cl_event event | |
718 ); | |
719 | |
720 cl_int clReleaseEvent( | |
721 cl_event event | |
722 ); | |
723 | |
724 // Profiling APIs | |
725 cl_int clGetEventProfilingInfo( | |
726 cl_event event, | |
727 cl_profiling_info param_name, | |
728 size_t param_value_size, | |
729 void* param_value, | |
730 size_t* param_value_size_ret | |
731 ); | |
732 | |
733 // Flush and Finish APIs | |
734 cl_int clFlush( | |
735 cl_command_queue command_queue | |
736 ); | |
737 | |
738 cl_int clFinish( | |
739 cl_command_queue command_queue | |
740 ); | |
741 | |
742 // Enqueued Commands APIs | |
743 cl_int clEnqueueReadBuffer( | |
744 cl_command_queue command_queue, | |
745 cl_mem buffer, | |
746 cl_bool blocking_read, | |
747 size_t offset, | |
748 size_t cb, | |
749 void * ptr, | |
750 cl_uint num_events_in_wait_list, | |
751 const(cl_event)* event_wait_list, | |
752 cl_event* event | |
753 ); | |
754 | |
755 cl_int clEnqueueWriteBuffer( | |
756 cl_command_queue command_queue, | |
757 cl_mem buffer, | |
758 cl_bool blocking_write, | |
759 size_t offset, | |
760 size_t cb, | |
761 const(void)* ptr, | |
762 cl_uint num_events_in_wait_list, | |
763 const(cl_event)* event_wait_list, | |
764 cl_event* event | |
765 ); | |
766 | |
767 cl_int clEnqueueCopyBuffer( | |
768 cl_command_queue command_queue, | |
769 cl_mem src_buffer, | |
770 cl_mem dst_buffer, | |
771 size_t src_offset, | |
772 size_t dst_offset, | |
773 size_t cb, | |
774 cl_uint num_events_in_wait_list, | |
775 const(cl_event)* event_wait_list, | |
776 cl_event* event | |
777 ); | |
778 | |
779 cl_int clEnqueueReadImage( | |
780 cl_command_queue command_queue, | |
781 cl_mem image, | |
782 cl_bool blocking_read, | |
783 const(size_t)* origin[3], | |
784 const(size_t)* region[3], | |
785 size_t row_pitch, | |
786 size_t slice_pitch, | |
787 void* ptr, | |
788 cl_uint num_events_in_wait_list, | |
789 const(cl_event)* event_wait_list, | |
790 cl_event* event | |
791 ); | |
792 | |
793 cl_int clEnqueueWriteImage( | |
794 cl_command_queue command_queue, | |
795 cl_mem image, | |
796 cl_bool blocking_write, | |
797 const(size_t)* origin[3], | |
798 const(size_t)* region[3], | |
799 size_t input_row_pitch, | |
800 size_t input_slice_pitch, | |
801 const(void)* ptr, | |
802 cl_uint num_events_in_wait_list, | |
803 const(cl_event)* event_wait_list, | |
804 cl_event* event | |
805 ); | |
806 | |
807 cl_int clEnqueueCopyImage( | |
808 cl_command_queue command_queue, | |
809 cl_mem src_image, | |
810 cl_mem dst_image, | |
811 const(size_t)* src_origin[3], | |
812 const(size_t)* dst_origin[3], | |
813 const(size_t)* region[3], | |
814 cl_uint num_events_in_wait_list, | |
815 const(cl_event)* event_wait_list, | |
816 cl_event* event | |
817 ); | |
818 | |
819 cl_int clEnqueueCopyImageToBuffer( | |
820 cl_command_queue command_queue, | |
821 cl_mem src_image, | |
822 cl_mem dst_buffer, | |
823 const(size_t)* src_origin[3], | |
824 const(size_t)* region[3], | |
825 size_t dst_offset, | |
826 cl_uint num_events_in_wait_list, | |
827 const(cl_event)* event_wait_list, | |
828 cl_event* event | |
829 ); | |
830 | |
831 cl_int clEnqueueCopyBufferToImage( | |
832 cl_command_queue command_queue, | |
833 cl_mem src_buffer, | |
834 cl_mem dst_image, | |
835 size_t src_offset, | |
836 const(size_t)* dst_origin[3], | |
837 const(size_t)* region[3], | |
838 cl_uint num_events_in_wait_list, | |
839 const(cl_event)* event_wait_list, | |
840 cl_event* event | |
841 ); | |
842 | |
843 void* clEnqueueMapBuffer( | |
844 cl_command_queue command_queue, | |
845 cl_mem buffer, | |
846 cl_bool blocking_map, | |
847 cl_map_flags map_flags, | |
848 size_t offset, | |
849 size_t cb, | |
850 cl_uint num_events_in_wait_list, | |
851 const(cl_event)* event_wait_list, | |
852 cl_event* event, | |
853 cl_int* errcode_ret | |
854 ); | |
855 | |
856 void* clEnqueueMapImage( | |
857 cl_command_queue command_queue, | |
858 cl_mem image, | |
859 cl_bool blocking_map, | |
860 cl_map_flags map_flags, | |
861 const(size_t)* origin[3], | |
862 const(size_t)* region[3], | |
863 size_t* image_row_pitch, | |
864 size_t* image_slice_pitch, | |
865 cl_uint num_events_in_wait_list, | |
866 const(cl_event)* event_wait_list, | |
867 cl_event* event, | |
868 cl_int* errcode_ret | |
869 ); | |
870 | |
871 cl_int clEnqueueUnmapMemObject( | |
872 cl_command_queue command_queue, | |
873 cl_mem memobj, | |
874 void* mapped_ptr, | |
875 cl_uint num_events_in_wait_list, | |
876 const(cl_event)* event_wait_list, | |
877 cl_event* event | |
878 ); | |
879 | |
880 cl_int clEnqueueNDRangeKernel( | |
881 cl_command_queue command_queue, | |
882 cl_kernel kernel, | |
883 cl_uint work_dim, | |
884 const(size_t)* global_work_offset, | |
885 const(size_t)* global_work_size, | |
886 const(size_t)* local_work_size, | |
887 cl_uint num_events_in_wait_list, | |
888 const(cl_event)* event_wait_list, | |
889 cl_event* event | |
890 ); | |
891 | |
892 cl_int clEnqueueTask( | |
893 cl_command_queue command_queue, | |
894 cl_kernel kernel, | |
895 cl_uint num_events_in_wait_list, | |
896 const(cl_event)* event_wait_list, | |
897 cl_event* event | |
898 ); | |
899 | |
900 cl_int clEnqueueNativeKernel( | |
901 cl_command_queue command_queue, | |
902 void function( | |
903 void* | |
904 ) user_func, | |
905 void* args, | |
906 size_t cb_args, | |
907 cl_uint num_mem_objects, | |
908 const(cl_mem)* mem_list, | |
909 const(void*)* args_mem_loc, | |
910 cl_uint num_events_in_wait_list, | |
911 const(cl_event)* event_wait_list, | |
912 cl_event* event | |
913 ); | |
914 | |
915 cl_int clEnqueueMarker( | |
916 cl_command_queue command_queue, | |
917 cl_event* event | |
918 ); | |
919 | |
920 cl_int clEnqueueWaitForEvents( | |
921 cl_command_queue command_queue, | |
922 cl_uint num_events, | |
923 const(cl_event)* event_list | |
924 ); | |
925 | |
926 cl_int clEnqueueBarrier( | |
927 cl_command_queue command_queue | |
928 ); | |
929 | |
930 //Extension function access | |
931 // | |
932 // Returns the extension function address for the given function name, | |
933 // or NULL if a valid function can not be found. The client must | |
934 // check to make sure the address is not NULL, before using or | |
935 // calling the returned function address. | |
936 // | |
937 void* clGetExtensionFunctionAddress(const(char)* func_name); |