Home | History | Annotate | Download | only in CL
      1 /*******************************************************************************
      2  * Copyright (c) 2008 - 2012 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 #ifndef __OPENCL_CL_H
     25 #define __OPENCL_CL_H
     26 
     27 #ifdef __APPLE__
     28 #include <OpenCL/cl_platform.h>
     29 #else
     30 #include <CL/cl_platform.h>
     31 #endif
     32 
     33 #ifdef __cplusplus
     34 extern "C" {
     35 #endif
     36 
     37 /******************************************************************************/
     38 
     39 typedef struct _cl_platform_id *    cl_platform_id;
     40 typedef struct _cl_device_id *      cl_device_id;
     41 typedef struct _cl_context *        cl_context;
     42 typedef struct _cl_command_queue *  cl_command_queue;
     43 typedef struct _cl_mem *            cl_mem;
     44 typedef struct _cl_program *        cl_program;
     45 typedef struct _cl_kernel *         cl_kernel;
     46 typedef struct _cl_event *          cl_event;
     47 typedef struct _cl_sampler *        cl_sampler;
     48 
     49 typedef 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. */
     50 typedef cl_ulong            cl_bitfield;
     51 typedef cl_bitfield         cl_device_type;
     52 typedef cl_uint             cl_platform_info;
     53 typedef cl_uint             cl_device_info;
     54 typedef cl_bitfield         cl_device_fp_config;
     55 typedef cl_uint             cl_device_mem_cache_type;
     56 typedef cl_uint             cl_device_local_mem_type;
     57 typedef cl_bitfield         cl_device_exec_capabilities;
     58 typedef cl_bitfield         cl_command_queue_properties;
     59 typedef intptr_t            cl_device_partition_property;
     60 typedef cl_bitfield         cl_device_affinity_domain;
     61 
     62 typedef intptr_t            cl_context_properties;
     63 typedef cl_uint             cl_context_info;
     64 typedef cl_uint             cl_command_queue_info;
     65 typedef cl_uint             cl_channel_order;
     66 typedef cl_uint             cl_channel_type;
     67 typedef cl_bitfield         cl_mem_flags;
     68 typedef cl_uint             cl_mem_object_type;
     69 typedef cl_uint             cl_mem_info;
     70 typedef cl_bitfield         cl_mem_migration_flags;
     71 typedef cl_uint             cl_image_info;
     72 typedef cl_uint             cl_buffer_create_type;
     73 typedef cl_uint             cl_addressing_mode;
     74 typedef cl_uint             cl_filter_mode;
     75 typedef cl_uint             cl_sampler_info;
     76 typedef cl_bitfield         cl_map_flags;
     77 typedef cl_uint             cl_program_info;
     78 typedef cl_uint             cl_program_build_info;
     79 typedef cl_uint             cl_program_binary_type;
     80 typedef cl_int              cl_build_status;
     81 typedef cl_uint             cl_kernel_info;
     82 typedef cl_uint             cl_kernel_arg_info;
     83 typedef cl_uint             cl_kernel_arg_address_qualifier;
     84 typedef cl_uint             cl_kernel_arg_access_qualifier;
     85 typedef cl_bitfield         cl_kernel_arg_type_qualifier;
     86 typedef cl_uint             cl_kernel_work_group_info;
     87 typedef cl_uint             cl_event_info;
     88 typedef cl_uint             cl_command_type;
     89 typedef cl_uint             cl_profiling_info;
     90 
     91 
     92 typedef struct _cl_image_format {
     93     cl_channel_order        image_channel_order;
     94     cl_channel_type         image_channel_data_type;
     95 } cl_image_format;
     96 
     97 typedef struct _cl_image_desc {
     98     cl_mem_object_type      image_type;
     99     size_t                  image_width;
    100     size_t                  image_height;
    101     size_t                  image_depth;
    102     size_t                  image_array_size;
    103     size_t                  image_row_pitch;
    104     size_t                  image_slice_pitch;
    105     cl_uint                 num_mip_levels;
    106     cl_uint                 num_samples;
    107     cl_mem                  buffer;
    108 } cl_image_desc;
    109 
    110 typedef struct _cl_buffer_region {
    111     size_t                  origin;
    112     size_t                  size;
    113 } cl_buffer_region;
    114 
    115 
    116 /******************************************************************************/
    117 
    118 /* Error Codes */
    119 #define CL_SUCCESS                                  0
    120 #define CL_DEVICE_NOT_FOUND                         -1
    121 #define CL_DEVICE_NOT_AVAILABLE                     -2
    122 #define CL_COMPILER_NOT_AVAILABLE                   -3
    123 #define CL_MEM_OBJECT_ALLOCATION_FAILURE            -4
    124 #define CL_OUT_OF_RESOURCES                         -5
    125 #define CL_OUT_OF_HOST_MEMORY                       -6
    126 #define CL_PROFILING_INFO_NOT_AVAILABLE             -7
    127 #define CL_MEM_COPY_OVERLAP                         -8
    128 #define CL_IMAGE_FORMAT_MISMATCH                    -9
    129 #define CL_IMAGE_FORMAT_NOT_SUPPORTED               -10
    130 #define CL_BUILD_PROGRAM_FAILURE                    -11
    131 #define CL_MAP_FAILURE                              -12
    132 #define CL_MISALIGNED_SUB_BUFFER_OFFSET             -13
    133 #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14
    134 #define CL_COMPILE_PROGRAM_FAILURE                  -15
    135 #define CL_LINKER_NOT_AVAILABLE                     -16
    136 #define CL_LINK_PROGRAM_FAILURE                     -17
    137 #define CL_DEVICE_PARTITION_FAILED                  -18
    138 #define CL_KERNEL_ARG_INFO_NOT_AVAILABLE            -19
    139 
    140 #define CL_INVALID_VALUE                            -30
    141 #define CL_INVALID_DEVICE_TYPE                      -31
    142 #define CL_INVALID_PLATFORM                         -32
    143 #define CL_INVALID_DEVICE                           -33
    144 #define CL_INVALID_CONTEXT                          -34
    145 #define CL_INVALID_QUEUE_PROPERTIES                 -35
    146 #define CL_INVALID_COMMAND_QUEUE                    -36
    147 #define CL_INVALID_HOST_PTR                         -37
    148 #define CL_INVALID_MEM_OBJECT                       -38
    149 #define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR          -39
    150 #define CL_INVALID_IMAGE_SIZE                       -40
    151 #define CL_INVALID_SAMPLER                          -41
    152 #define CL_INVALID_BINARY                           -42
    153 #define CL_INVALID_BUILD_OPTIONS                    -43
    154 #define CL_INVALID_PROGRAM                          -44
    155 #define CL_INVALID_PROGRAM_EXECUTABLE               -45
    156 #define CL_INVALID_KERNEL_NAME                      -46
    157 #define CL_INVALID_KERNEL_DEFINITION                -47
    158 #define CL_INVALID_KERNEL                           -48
    159 #define CL_INVALID_ARG_INDEX                        -49
    160 #define CL_INVALID_ARG_VALUE                        -50
    161 #define CL_INVALID_ARG_SIZE                         -51
    162 #define CL_INVALID_KERNEL_ARGS                      -52
    163 #define CL_INVALID_WORK_DIMENSION                   -53
    164 #define CL_INVALID_WORK_GROUP_SIZE                  -54
    165 #define CL_INVALID_WORK_ITEM_SIZE                   -55
    166 #define CL_INVALID_GLOBAL_OFFSET                    -56
    167 #define CL_INVALID_EVENT_WAIT_LIST                  -57
    168 #define CL_INVALID_EVENT                            -58
    169 #define CL_INVALID_OPERATION                        -59
    170 #define CL_INVALID_GL_OBJECT                        -60
    171 #define CL_INVALID_BUFFER_SIZE                      -61
    172 #define CL_INVALID_MIP_LEVEL                        -62
    173 #define CL_INVALID_GLOBAL_WORK_SIZE                 -63
    174 #define CL_INVALID_PROPERTY                         -64
    175 #define CL_INVALID_IMAGE_DESCRIPTOR                 -65
    176 #define CL_INVALID_COMPILER_OPTIONS                 -66
    177 #define CL_INVALID_LINKER_OPTIONS                   -67
    178 #define CL_INVALID_DEVICE_PARTITION_COUNT           -68
    179 
    180 /* OpenCL Version */
    181 #define CL_VERSION_1_0                              1
    182 #define CL_VERSION_1_1                              1
    183 #define CL_VERSION_1_2                              1
    184 
    185 /* cl_bool */
    186 #define CL_FALSE                                    0
    187 #define CL_TRUE                                     1
    188 #define CL_BLOCKING                                 CL_TRUE
    189 #define CL_NON_BLOCKING                             CL_FALSE
    190 
    191 /* cl_platform_info */
    192 #define CL_PLATFORM_PROFILE                         0x0900
    193 #define CL_PLATFORM_VERSION                         0x0901
    194 #define CL_PLATFORM_NAME                            0x0902
    195 #define CL_PLATFORM_VENDOR                          0x0903
    196 #define CL_PLATFORM_EXTENSIONS                      0x0904
    197 
    198 /* cl_device_type - bitfield */
    199 #define CL_DEVICE_TYPE_DEFAULT                      (1 << 0)
    200 #define CL_DEVICE_TYPE_CPU                          (1 << 1)
    201 #define CL_DEVICE_TYPE_GPU                          (1 << 2)
    202 #define CL_DEVICE_TYPE_ACCELERATOR                  (1 << 3)
    203 #define CL_DEVICE_TYPE_CUSTOM                       (1 << 4)
    204 #define CL_DEVICE_TYPE_ALL                          0xFFFFFFFF
    205 
    206 /* cl_device_info */
    207 #define CL_DEVICE_TYPE                              0x1000
    208 #define CL_DEVICE_VENDOR_ID                         0x1001
    209 #define CL_DEVICE_MAX_COMPUTE_UNITS                 0x1002
    210 #define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS          0x1003
    211 #define CL_DEVICE_MAX_WORK_GROUP_SIZE               0x1004
    212 #define CL_DEVICE_MAX_WORK_ITEM_SIZES               0x1005
    213 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR       0x1006
    214 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT      0x1007
    215 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT        0x1008
    216 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG       0x1009
    217 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT      0x100A
    218 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE     0x100B
    219 #define CL_DEVICE_MAX_CLOCK_FREQUENCY               0x100C
    220 #define CL_DEVICE_ADDRESS_BITS                      0x100D
    221 #define CL_DEVICE_MAX_READ_IMAGE_ARGS               0x100E
    222 #define CL_DEVICE_MAX_WRITE_IMAGE_ARGS              0x100F
    223 #define CL_DEVICE_MAX_MEM_ALLOC_SIZE                0x1010
    224 #define CL_DEVICE_IMAGE2D_MAX_WIDTH                 0x1011
    225 #define CL_DEVICE_IMAGE2D_MAX_HEIGHT                0x1012
    226 #define CL_DEVICE_IMAGE3D_MAX_WIDTH                 0x1013
    227 #define CL_DEVICE_IMAGE3D_MAX_HEIGHT                0x1014
    228 #define CL_DEVICE_IMAGE3D_MAX_DEPTH                 0x1015
    229 #define CL_DEVICE_IMAGE_SUPPORT                     0x1016
    230 #define CL_DEVICE_MAX_PARAMETER_SIZE                0x1017
    231 #define CL_DEVICE_MAX_SAMPLERS                      0x1018
    232 #define CL_DEVICE_MEM_BASE_ADDR_ALIGN               0x1019
    233 #define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE          0x101A
    234 #define CL_DEVICE_SINGLE_FP_CONFIG                  0x101B
    235 #define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE             0x101C
    236 #define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE         0x101D
    237 #define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE             0x101E
    238 #define CL_DEVICE_GLOBAL_MEM_SIZE                   0x101F
    239 #define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE          0x1020
    240 #define CL_DEVICE_MAX_CONSTANT_ARGS                 0x1021
    241 #define CL_DEVICE_LOCAL_MEM_TYPE                    0x1022
    242 #define CL_DEVICE_LOCAL_MEM_SIZE                    0x1023
    243 #define CL_DEVICE_ERROR_CORRECTION_SUPPORT          0x1024
    244 #define CL_DEVICE_PROFILING_TIMER_RESOLUTION        0x1025
    245 #define CL_DEVICE_ENDIAN_LITTLE                     0x1026
    246 #define CL_DEVICE_AVAILABLE                         0x1027
    247 #define CL_DEVICE_COMPILER_AVAILABLE                0x1028
    248 #define CL_DEVICE_EXECUTION_CAPABILITIES            0x1029
    249 #define CL_DEVICE_QUEUE_PROPERTIES                  0x102A
    250 #define CL_DEVICE_NAME                              0x102B
    251 #define CL_DEVICE_VENDOR                            0x102C
    252 #define CL_DRIVER_VERSION                           0x102D
    253 #define CL_DEVICE_PROFILE                           0x102E
    254 #define CL_DEVICE_VERSION                           0x102F
    255 #define CL_DEVICE_EXTENSIONS                        0x1030
    256 #define CL_DEVICE_PLATFORM                          0x1031
    257 #define CL_DEVICE_DOUBLE_FP_CONFIG                  0x1032
    258 /* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */
    259 #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF       0x1034
    260 #define CL_DEVICE_HOST_UNIFIED_MEMORY               0x1035
    261 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR          0x1036
    262 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT         0x1037
    263 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT           0x1038
    264 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG          0x1039
    265 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT         0x103A
    266 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE        0x103B
    267 #define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF          0x103C
    268 #define CL_DEVICE_OPENCL_C_VERSION                  0x103D
    269 #define CL_DEVICE_LINKER_AVAILABLE                  0x103E
    270 #define CL_DEVICE_BUILT_IN_KERNELS                  0x103F
    271 #define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE             0x1040
    272 #define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE              0x1041
    273 #define CL_DEVICE_PARENT_DEVICE                     0x1042
    274 #define CL_DEVICE_PARTITION_MAX_SUB_DEVICES         0x1043
    275 #define CL_DEVICE_PARTITION_PROPERTIES              0x1044
    276 #define CL_DEVICE_PARTITION_AFFINITY_DOMAIN         0x1045
    277 #define CL_DEVICE_PARTITION_TYPE                    0x1046
    278 #define CL_DEVICE_REFERENCE_COUNT                   0x1047
    279 #define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC       0x1048
    280 #define CL_DEVICE_PRINTF_BUFFER_SIZE                0x1049
    281 #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT             0x104A
    282 #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT      0x104B
    283 
    284 /* cl_device_fp_config - bitfield */
    285 #define CL_FP_DENORM                                (1 << 0)
    286 #define CL_FP_INF_NAN                               (1 << 1)
    287 #define CL_FP_ROUND_TO_NEAREST                      (1 << 2)
    288 #define CL_FP_ROUND_TO_ZERO                         (1 << 3)
    289 #define CL_FP_ROUND_TO_INF                          (1 << 4)
    290 #define CL_FP_FMA                                   (1 << 5)
    291 #define CL_FP_SOFT_FLOAT                            (1 << 6)
    292 #define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT         (1 << 7)
    293 
    294 /* cl_device_mem_cache_type */
    295 #define CL_NONE                                     0x0
    296 #define CL_READ_ONLY_CACHE                          0x1
    297 #define CL_READ_WRITE_CACHE                         0x2
    298 
    299 /* cl_device_local_mem_type */
    300 #define CL_LOCAL                                    0x1
    301 #define CL_GLOBAL                                   0x2
    302 
    303 /* cl_device_exec_capabilities - bitfield */
    304 #define CL_EXEC_KERNEL                              (1 << 0)
    305 #define CL_EXEC_NATIVE_KERNEL                       (1 << 1)
    306 
    307 /* cl_command_queue_properties - bitfield */
    308 #define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE      (1 << 0)
    309 #define CL_QUEUE_PROFILING_ENABLE                   (1 << 1)
    310 
    311 /* cl_context_info  */
    312 #define CL_CONTEXT_REFERENCE_COUNT                  0x1080
    313 #define CL_CONTEXT_DEVICES                          0x1081
    314 #define CL_CONTEXT_PROPERTIES                       0x1082
    315 #define CL_CONTEXT_NUM_DEVICES                      0x1083
    316 
    317 /* cl_context_properties */
    318 #define CL_CONTEXT_PLATFORM                         0x1084
    319 #define CL_CONTEXT_INTEROP_USER_SYNC                0x1085
    320 
    321 /* cl_device_partition_property */
    322 #define CL_DEVICE_PARTITION_EQUALLY                 0x1086
    323 #define CL_DEVICE_PARTITION_BY_COUNTS               0x1087
    324 #define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END      0x0
    325 #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN      0x1088
    326 
    327 /* cl_device_affinity_domain */
    328 #define CL_DEVICE_AFFINITY_DOMAIN_NUMA                     (1 << 0)
    329 #define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE                 (1 << 1)
    330 #define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE                 (1 << 2)
    331 #define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE                 (1 << 3)
    332 #define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE                 (1 << 4)
    333 #define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE       (1 << 5)
    334 
    335 /* cl_command_queue_info */
    336 #define CL_QUEUE_CONTEXT                            0x1090
    337 #define CL_QUEUE_DEVICE                             0x1091
    338 #define CL_QUEUE_REFERENCE_COUNT                    0x1092
    339 #define CL_QUEUE_PROPERTIES                         0x1093
    340 
    341 /* cl_mem_flags - bitfield */
    342 #define CL_MEM_READ_WRITE                           (1 << 0)
    343 #define CL_MEM_WRITE_ONLY                           (1 << 1)
    344 #define CL_MEM_READ_ONLY                            (1 << 2)
    345 #define CL_MEM_USE_HOST_PTR                         (1 << 3)
    346 #define CL_MEM_ALLOC_HOST_PTR                       (1 << 4)
    347 #define CL_MEM_COPY_HOST_PTR                        (1 << 5)
    348 /* reserved                                         (1 << 6)    */
    349 #define CL_MEM_HOST_WRITE_ONLY                      (1 << 7)
    350 #define CL_MEM_HOST_READ_ONLY                       (1 << 8)
    351 #define CL_MEM_HOST_NO_ACCESS                       (1 << 9)
    352 
    353 /* cl_mem_migration_flags - bitfield */
    354 #define CL_MIGRATE_MEM_OBJECT_HOST                  (1 << 0)
    355 #define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED     (1 << 1)
    356 
    357 /* cl_channel_order */
    358 #define CL_R                                        0x10B0
    359 #define CL_A                                        0x10B1
    360 #define CL_RG                                       0x10B2
    361 #define CL_RA                                       0x10B3
    362 #define CL_RGB                                      0x10B4
    363 #define CL_RGBA                                     0x10B5
    364 #define CL_BGRA                                     0x10B6
    365 #define CL_ARGB                                     0x10B7
    366 #define CL_INTENSITY                                0x10B8
    367 #define CL_LUMINANCE                                0x10B9
    368 #define CL_Rx                                       0x10BA
    369 #define CL_RGx                                      0x10BB
    370 #define CL_RGBx                                     0x10BC
    371 #define CL_DEPTH                                    0x10BD
    372 #define CL_DEPTH_STENCIL                            0x10BE
    373 
    374 /* cl_channel_type */
    375 #define CL_SNORM_INT8                               0x10D0
    376 #define CL_SNORM_INT16                              0x10D1
    377 #define CL_UNORM_INT8                               0x10D2
    378 #define CL_UNORM_INT16                              0x10D3
    379 #define CL_UNORM_SHORT_565                          0x10D4
    380 #define CL_UNORM_SHORT_555                          0x10D5
    381 #define CL_UNORM_INT_101010                         0x10D6
    382 #define CL_SIGNED_INT8                              0x10D7
    383 #define CL_SIGNED_INT16                             0x10D8
    384 #define CL_SIGNED_INT32                             0x10D9
    385 #define CL_UNSIGNED_INT8                            0x10DA
    386 #define CL_UNSIGNED_INT16                           0x10DB
    387 #define CL_UNSIGNED_INT32                           0x10DC
    388 #define CL_HALF_FLOAT                               0x10DD
    389 #define CL_FLOAT                                    0x10DE
    390 #define CL_UNORM_INT24                              0x10DF
    391 
    392 /* cl_mem_object_type */
    393 #define CL_MEM_OBJECT_BUFFER                        0x10F0
    394 #define CL_MEM_OBJECT_IMAGE2D                       0x10F1
    395 #define CL_MEM_OBJECT_IMAGE3D                       0x10F2
    396 #define CL_MEM_OBJECT_IMAGE2D_ARRAY                 0x10F3
    397 #define CL_MEM_OBJECT_IMAGE1D                       0x10F4
    398 #define CL_MEM_OBJECT_IMAGE1D_ARRAY                 0x10F5
    399 #define CL_MEM_OBJECT_IMAGE1D_BUFFER                0x10F6
    400 
    401 /* cl_mem_info */
    402 #define CL_MEM_TYPE                                 0x1100
    403 #define CL_MEM_FLAGS                                0x1101
    404 #define CL_MEM_SIZE                                 0x1102
    405 #define CL_MEM_HOST_PTR                             0x1103
    406 #define CL_MEM_MAP_COUNT                            0x1104
    407 #define CL_MEM_REFERENCE_COUNT                      0x1105
    408 #define CL_MEM_CONTEXT                              0x1106
    409 #define CL_MEM_ASSOCIATED_MEMOBJECT                 0x1107
    410 #define CL_MEM_OFFSET                               0x1108
    411 
    412 /* cl_image_info */
    413 #define CL_IMAGE_FORMAT                             0x1110
    414 #define CL_IMAGE_ELEMENT_SIZE                       0x1111
    415 #define CL_IMAGE_ROW_PITCH                          0x1112
    416 #define CL_IMAGE_SLICE_PITCH                        0x1113
    417 #define CL_IMAGE_WIDTH                              0x1114
    418 #define CL_IMAGE_HEIGHT                             0x1115
    419 #define CL_IMAGE_DEPTH                              0x1116
    420 #define CL_IMAGE_ARRAY_SIZE                         0x1117
    421 #define CL_IMAGE_BUFFER                             0x1118
    422 #define CL_IMAGE_NUM_MIP_LEVELS                     0x1119
    423 #define CL_IMAGE_NUM_SAMPLES                        0x111A
    424 
    425 /* cl_addressing_mode */
    426 #define CL_ADDRESS_NONE                             0x1130
    427 #define CL_ADDRESS_CLAMP_TO_EDGE                    0x1131
    428 #define CL_ADDRESS_CLAMP                            0x1132
    429 #define CL_ADDRESS_REPEAT                           0x1133
    430 #define CL_ADDRESS_MIRRORED_REPEAT                  0x1134
    431 
    432 /* cl_filter_mode */
    433 #define CL_FILTER_NEAREST                           0x1140
    434 #define CL_FILTER_LINEAR                            0x1141
    435 
    436 /* cl_sampler_info */
    437 #define CL_SAMPLER_REFERENCE_COUNT                  0x1150
    438 #define CL_SAMPLER_CONTEXT                          0x1151
    439 #define CL_SAMPLER_NORMALIZED_COORDS                0x1152
    440 #define CL_SAMPLER_ADDRESSING_MODE                  0x1153
    441 #define CL_SAMPLER_FILTER_MODE                      0x1154
    442 
    443 /* cl_map_flags - bitfield */
    444 #define CL_MAP_READ                                 (1 << 0)
    445 #define CL_MAP_WRITE                                (1 << 1)
    446 #define CL_MAP_WRITE_INVALIDATE_REGION              (1 << 2)
    447 
    448 /* cl_program_info */
    449 #define CL_PROGRAM_REFERENCE_COUNT                  0x1160
    450 #define CL_PROGRAM_CONTEXT                          0x1161
    451 #define CL_PROGRAM_NUM_DEVICES                      0x1162
    452 #define CL_PROGRAM_DEVICES                          0x1163
    453 #define CL_PROGRAM_SOURCE                           0x1164
    454 #define CL_PROGRAM_BINARY_SIZES                     0x1165
    455 #define CL_PROGRAM_BINARIES                         0x1166
    456 #define CL_PROGRAM_NUM_KERNELS                      0x1167
    457 #define CL_PROGRAM_KERNEL_NAMES                     0x1168
    458 
    459 /* cl_program_build_info */
    460 #define CL_PROGRAM_BUILD_STATUS                     0x1181
    461 #define CL_PROGRAM_BUILD_OPTIONS                    0x1182
    462 #define CL_PROGRAM_BUILD_LOG                        0x1183
    463 #define CL_PROGRAM_BINARY_TYPE                      0x1184
    464 
    465 /* cl_program_binary_type */
    466 #define CL_PROGRAM_BINARY_TYPE_NONE                 0x0
    467 #define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT      0x1
    468 #define CL_PROGRAM_BINARY_TYPE_LIBRARY              0x2
    469 #define CL_PROGRAM_BINARY_TYPE_EXECUTABLE           0x4
    470 
    471 /* cl_build_status */
    472 #define CL_BUILD_SUCCESS                            0
    473 #define CL_BUILD_NONE                               -1
    474 #define CL_BUILD_ERROR                              -2
    475 #define CL_BUILD_IN_PROGRESS                        -3
    476 
    477 /* cl_kernel_info */
    478 #define CL_KERNEL_FUNCTION_NAME                     0x1190
    479 #define CL_KERNEL_NUM_ARGS                          0x1191
    480 #define CL_KERNEL_REFERENCE_COUNT                   0x1192
    481 #define CL_KERNEL_CONTEXT                           0x1193
    482 #define CL_KERNEL_PROGRAM                           0x1194
    483 #define CL_KERNEL_ATTRIBUTES                        0x1195
    484 
    485 /* cl_kernel_arg_info */
    486 #define CL_KERNEL_ARG_ADDRESS_QUALIFIER             0x1196
    487 #define CL_KERNEL_ARG_ACCESS_QUALIFIER              0x1197
    488 #define CL_KERNEL_ARG_TYPE_NAME                     0x1198
    489 #define CL_KERNEL_ARG_TYPE_QUALIFIER                0x1199
    490 #define CL_KERNEL_ARG_NAME                          0x119A
    491 
    492 /* cl_kernel_arg_address_qualifier */
    493 #define CL_KERNEL_ARG_ADDRESS_GLOBAL                0x119B
    494 #define CL_KERNEL_ARG_ADDRESS_LOCAL                 0x119C
    495 #define CL_KERNEL_ARG_ADDRESS_CONSTANT              0x119D
    496 #define CL_KERNEL_ARG_ADDRESS_PRIVATE               0x119E
    497 
    498 /* cl_kernel_arg_access_qualifier */
    499 #define CL_KERNEL_ARG_ACCESS_READ_ONLY              0x11A0
    500 #define CL_KERNEL_ARG_ACCESS_WRITE_ONLY             0x11A1
    501 #define CL_KERNEL_ARG_ACCESS_READ_WRITE             0x11A2
    502 #define CL_KERNEL_ARG_ACCESS_NONE                   0x11A3
    503 
    504 /* cl_kernel_arg_type_qualifer */
    505 #define CL_KERNEL_ARG_TYPE_NONE                     0
    506 #define CL_KERNEL_ARG_TYPE_CONST                    (1 << 0)
    507 #define CL_KERNEL_ARG_TYPE_RESTRICT                 (1 << 1)
    508 #define CL_KERNEL_ARG_TYPE_VOLATILE                 (1 << 2)
    509 
    510 /* cl_kernel_work_group_info */
    511 #define CL_KERNEL_WORK_GROUP_SIZE                   0x11B0
    512 #define CL_KERNEL_COMPILE_WORK_GROUP_SIZE           0x11B1
    513 #define CL_KERNEL_LOCAL_MEM_SIZE                    0x11B2
    514 #define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3
    515 #define CL_KERNEL_PRIVATE_MEM_SIZE                  0x11B4
    516 #define CL_KERNEL_GLOBAL_WORK_SIZE                  0x11B5
    517 
    518 /* cl_event_info  */
    519 #define CL_EVENT_COMMAND_QUEUE                      0x11D0
    520 #define CL_EVENT_COMMAND_TYPE                       0x11D1
    521 #define CL_EVENT_REFERENCE_COUNT                    0x11D2
    522 #define CL_EVENT_COMMAND_EXECUTION_STATUS           0x11D3
    523 #define CL_EVENT_CONTEXT                            0x11D4
    524 
    525 /* cl_command_type */
    526 #define CL_COMMAND_NDRANGE_KERNEL                   0x11F0
    527 #define CL_COMMAND_TASK                             0x11F1
    528 #define CL_COMMAND_NATIVE_KERNEL                    0x11F2
    529 #define CL_COMMAND_READ_BUFFER                      0x11F3
    530 #define CL_COMMAND_WRITE_BUFFER                     0x11F4
    531 #define CL_COMMAND_COPY_BUFFER                      0x11F5
    532 #define CL_COMMAND_READ_IMAGE                       0x11F6
    533 #define CL_COMMAND_WRITE_IMAGE                      0x11F7
    534 #define CL_COMMAND_COPY_IMAGE                       0x11F8
    535 #define CL_COMMAND_COPY_IMAGE_TO_BUFFER             0x11F9
    536 #define CL_COMMAND_COPY_BUFFER_TO_IMAGE             0x11FA
    537 #define CL_COMMAND_MAP_BUFFER                       0x11FB
    538 #define CL_COMMAND_MAP_IMAGE                        0x11FC
    539 #define CL_COMMAND_UNMAP_MEM_OBJECT                 0x11FD
    540 #define CL_COMMAND_MARKER                           0x11FE
    541 #define CL_COMMAND_ACQUIRE_GL_OBJECTS               0x11FF
    542 #define CL_COMMAND_RELEASE_GL_OBJECTS               0x1200
    543 #define CL_COMMAND_READ_BUFFER_RECT                 0x1201
    544 #define CL_COMMAND_WRITE_BUFFER_RECT                0x1202
    545 #define CL_COMMAND_COPY_BUFFER_RECT                 0x1203
    546 #define CL_COMMAND_USER                             0x1204
    547 #define CL_COMMAND_BARRIER                          0x1205
    548 #define CL_COMMAND_MIGRATE_MEM_OBJECTS              0x1206
    549 #define CL_COMMAND_FILL_BUFFER                      0x1207
    550 #define CL_COMMAND_FILL_IMAGE                       0x1208
    551 
    552 /* command execution status */
    553 #define CL_COMPLETE                                 0x0
    554 #define CL_RUNNING                                  0x1
    555 #define CL_SUBMITTED                                0x2
    556 #define CL_QUEUED                                   0x3
    557 
    558 /* cl_buffer_create_type  */
    559 #define CL_BUFFER_CREATE_TYPE_REGION                0x1220
    560 
    561 /* cl_profiling_info  */
    562 #define CL_PROFILING_COMMAND_QUEUED                 0x1280
    563 #define CL_PROFILING_COMMAND_SUBMIT                 0x1281
    564 #define CL_PROFILING_COMMAND_START                  0x1282
    565 #define CL_PROFILING_COMMAND_END                    0x1283
    566 
    567 /********************************************************************************************************/
    568 
    569 /* Platform API */
    570 extern CL_API_ENTRY cl_int CL_API_CALL
    571 clGetPlatformIDs(cl_uint          /* num_entries */,
    572                  cl_platform_id * /* platforms */,
    573                  cl_uint *        /* num_platforms */) CL_API_SUFFIX__VERSION_1_0;
    574 
    575 extern CL_API_ENTRY cl_int CL_API_CALL
    576 clGetPlatformInfo(cl_platform_id   /* platform */,
    577                   cl_platform_info /* param_name */,
    578                   size_t           /* param_value_size */,
    579                   void *           /* param_value */,
    580                   size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    581 
    582 /* Device APIs */
    583 extern CL_API_ENTRY cl_int CL_API_CALL
    584 clGetDeviceIDs(cl_platform_id   /* platform */,
    585                cl_device_type   /* device_type */,
    586                cl_uint          /* num_entries */,
    587                cl_device_id *   /* devices */,
    588                cl_uint *        /* num_devices */) CL_API_SUFFIX__VERSION_1_0;
    589 
    590 extern CL_API_ENTRY cl_int CL_API_CALL
    591 clGetDeviceInfo(cl_device_id    /* device */,
    592                 cl_device_info  /* param_name */,
    593                 size_t          /* param_value_size */,
    594                 void *          /* param_value */,
    595                 size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    596 
    597 extern CL_API_ENTRY cl_int CL_API_CALL
    598 clCreateSubDevices(cl_device_id                         /* in_device */,
    599                    const cl_device_partition_property * /* properties */,
    600                    cl_uint                              /* num_devices */,
    601                    cl_device_id *                       /* out_devices */,
    602                    cl_uint *                            /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2;
    603 
    604 extern CL_API_ENTRY cl_int CL_API_CALL
    605 clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2;
    606 
    607 extern CL_API_ENTRY cl_int CL_API_CALL
    608 clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2;
    609 
    610 /* Context APIs  */
    611 extern CL_API_ENTRY cl_context CL_API_CALL
    612 clCreateContext(const cl_context_properties * /* properties */,
    613                 cl_uint                 /* num_devices */,
    614                 const cl_device_id *    /* devices */,
    615                 void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *),
    616                 void *                  /* user_data */,
    617                 cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    618 
    619 extern CL_API_ENTRY cl_context CL_API_CALL
    620 clCreateContextFromType(const cl_context_properties * /* properties */,
    621                         cl_device_type          /* device_type */,
    622                         void (CL_CALLBACK *     /* pfn_notify*/ )(const char *, const void *, size_t, void *),
    623                         void *                  /* user_data */,
    624                         cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    625 
    626 extern CL_API_ENTRY cl_int CL_API_CALL
    627 clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;
    628 
    629 extern CL_API_ENTRY cl_int CL_API_CALL
    630 clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;
    631 
    632 extern CL_API_ENTRY cl_int CL_API_CALL
    633 clGetContextInfo(cl_context         /* context */,
    634                  cl_context_info    /* param_name */,
    635                  size_t             /* param_value_size */,
    636                  void *             /* param_value */,
    637                  size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    638 
    639 /* Command Queue APIs */
    640 extern CL_API_ENTRY cl_command_queue CL_API_CALL
    641 clCreateCommandQueue(cl_context                     /* context */,
    642                      cl_device_id                   /* device */,
    643                      cl_command_queue_properties    /* properties */,
    644                      cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    645 
    646 extern CL_API_ENTRY cl_int CL_API_CALL
    647 clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;
    648 
    649 extern CL_API_ENTRY cl_int CL_API_CALL
    650 clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;
    651 
    652 extern CL_API_ENTRY cl_int CL_API_CALL
    653 clGetCommandQueueInfo(cl_command_queue      /* command_queue */,
    654                       cl_command_queue_info /* param_name */,
    655                       size_t                /* param_value_size */,
    656                       void *                /* param_value */,
    657                       size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    658 
    659 /* Memory Object APIs */
    660 extern CL_API_ENTRY cl_mem CL_API_CALL
    661 clCreateBuffer(cl_context   /* context */,
    662                cl_mem_flags /* flags */,
    663                size_t       /* size */,
    664                void *       /* host_ptr */,
    665                cl_int *     /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    666 
    667 extern CL_API_ENTRY cl_mem CL_API_CALL
    668 clCreateSubBuffer(cl_mem                   /* buffer */,
    669                   cl_mem_flags             /* flags */,
    670                   cl_buffer_create_type    /* buffer_create_type */,
    671                   const void *             /* buffer_create_info */,
    672                   cl_int *                 /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
    673 
    674 extern CL_API_ENTRY cl_mem CL_API_CALL
    675 clCreateImage(cl_context              /* context */,
    676               cl_mem_flags            /* flags */,
    677               const cl_image_format * /* image_format */,
    678               const cl_image_desc *   /* image_desc */,
    679               void *                  /* host_ptr */,
    680               cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
    681 
    682 extern CL_API_ENTRY cl_int CL_API_CALL
    683 clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;
    684 
    685 extern CL_API_ENTRY cl_int CL_API_CALL
    686 clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;
    687 
    688 extern CL_API_ENTRY cl_int CL_API_CALL
    689 clGetSupportedImageFormats(cl_context           /* context */,
    690                            cl_mem_flags         /* flags */,
    691                            cl_mem_object_type   /* image_type */,
    692                            cl_uint              /* num_entries */,
    693                            cl_image_format *    /* image_formats */,
    694                            cl_uint *            /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0;
    695 
    696 extern CL_API_ENTRY cl_int CL_API_CALL
    697 clGetMemObjectInfo(cl_mem           /* memobj */,
    698                    cl_mem_info      /* param_name */,
    699                    size_t           /* param_value_size */,
    700                    void *           /* param_value */,
    701                    size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    702 
    703 extern CL_API_ENTRY cl_int CL_API_CALL
    704 clGetImageInfo(cl_mem           /* image */,
    705                cl_image_info    /* param_name */,
    706                size_t           /* param_value_size */,
    707                void *           /* param_value */,
    708                size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    709 
    710 extern CL_API_ENTRY cl_int CL_API_CALL
    711 clSetMemObjectDestructorCallback(  cl_mem /* memobj */,
    712                                     void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/),
    713                                     void * /*user_data */ )             CL_API_SUFFIX__VERSION_1_1;
    714 
    715 /* Sampler APIs */
    716 extern CL_API_ENTRY cl_sampler CL_API_CALL
    717 clCreateSampler(cl_context          /* context */,
    718                 cl_bool             /* normalized_coords */,
    719                 cl_addressing_mode  /* addressing_mode */,
    720                 cl_filter_mode      /* filter_mode */,
    721                 cl_int *            /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    722 
    723 extern CL_API_ENTRY cl_int CL_API_CALL
    724 clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;
    725 
    726 extern CL_API_ENTRY cl_int CL_API_CALL
    727 clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;
    728 
    729 extern CL_API_ENTRY cl_int CL_API_CALL
    730 clGetSamplerInfo(cl_sampler         /* sampler */,
    731                  cl_sampler_info    /* param_name */,
    732                  size_t             /* param_value_size */,
    733                  void *             /* param_value */,
    734                  size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    735 
    736 /* Program Object APIs  */
    737 extern CL_API_ENTRY cl_program CL_API_CALL
    738 clCreateProgramWithSource(cl_context        /* context */,
    739                           cl_uint           /* count */,
    740                           const char **     /* strings */,
    741                           const size_t *    /* lengths */,
    742                           cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    743 
    744 extern CL_API_ENTRY cl_program CL_API_CALL
    745 clCreateProgramWithBinary(cl_context                     /* context */,
    746                           cl_uint                        /* num_devices */,
    747                           const cl_device_id *           /* device_list */,
    748                           const size_t *                 /* lengths */,
    749                           const unsigned char **         /* binaries */,
    750                           cl_int *                       /* binary_status */,
    751                           cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    752 
    753 extern CL_API_ENTRY cl_program CL_API_CALL
    754 clCreateProgramWithBuiltInKernels(cl_context            /* context */,
    755                                   cl_uint               /* num_devices */,
    756                                   const cl_device_id *  /* device_list */,
    757                                   const char *          /* kernel_names */,
    758                                   cl_int *              /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
    759 
    760 extern CL_API_ENTRY cl_int CL_API_CALL
    761 clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;
    762 
    763 extern CL_API_ENTRY cl_int CL_API_CALL
    764 clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;
    765 
    766 extern CL_API_ENTRY cl_int CL_API_CALL
    767 clBuildProgram(cl_program           /* program */,
    768                cl_uint              /* num_devices */,
    769                const cl_device_id * /* device_list */,
    770                const char *         /* options */,
    771                void (CL_CALLBACK *  /* pfn_notify */)(cl_program /* program */, void * /* user_data */),
    772                void *               /* user_data */) CL_API_SUFFIX__VERSION_1_0;
    773 
    774 extern CL_API_ENTRY cl_int CL_API_CALL
    775 clCompileProgram(cl_program           /* program */,
    776                  cl_uint              /* num_devices */,
    777                  const cl_device_id * /* device_list */,
    778                  const char *         /* options */,
    779                  cl_uint              /* num_input_headers */,
    780                  const cl_program *   /* input_headers */,
    781                  const char **        /* header_include_names */,
    782                  void (CL_CALLBACK *  /* pfn_notify */)(cl_program /* program */, void * /* user_data */),
    783                  void *               /* user_data */) CL_API_SUFFIX__VERSION_1_2;
    784 
    785 extern CL_API_ENTRY cl_program CL_API_CALL
    786 clLinkProgram(cl_context           /* context */,
    787               cl_uint              /* num_devices */,
    788               const cl_device_id * /* device_list */,
    789               const char *         /* options */,
    790               cl_uint              /* num_input_programs */,
    791               const cl_program *   /* input_programs */,
    792               void (CL_CALLBACK *  /* pfn_notify */)(cl_program /* program */, void * /* user_data */),
    793               void *               /* user_data */,
    794               cl_int *             /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2;
    795 
    796 
    797 extern CL_API_ENTRY cl_int CL_API_CALL
    798 clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2;
    799 
    800 extern CL_API_ENTRY cl_int CL_API_CALL
    801 clGetProgramInfo(cl_program         /* program */,
    802                  cl_program_info    /* param_name */,
    803                  size_t             /* param_value_size */,
    804                  void *             /* param_value */,
    805                  size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    806 
    807 extern CL_API_ENTRY cl_int CL_API_CALL
    808 clGetProgramBuildInfo(cl_program            /* program */,
    809                       cl_device_id          /* device */,
    810                       cl_program_build_info /* param_name */,
    811                       size_t                /* param_value_size */,
    812                       void *                /* param_value */,
    813                       size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    814 
    815 /* Kernel Object APIs */
    816 extern CL_API_ENTRY cl_kernel CL_API_CALL
    817 clCreateKernel(cl_program      /* program */,
    818                const char *    /* kernel_name */,
    819                cl_int *        /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
    820 
    821 extern CL_API_ENTRY cl_int CL_API_CALL
    822 clCreateKernelsInProgram(cl_program     /* program */,
    823                          cl_uint        /* num_kernels */,
    824                          cl_kernel *    /* kernels */,
    825                          cl_uint *      /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0;
    826 
    827 extern CL_API_ENTRY cl_int CL_API_CALL
    828 clRetainKernel(cl_kernel    /* kernel */) CL_API_SUFFIX__VERSION_1_0;
    829 
    830 extern CL_API_ENTRY cl_int CL_API_CALL
    831 clReleaseKernel(cl_kernel   /* kernel */) CL_API_SUFFIX__VERSION_1_0;
    832 
    833 extern CL_API_ENTRY cl_int CL_API_CALL
    834 clSetKernelArg(cl_kernel    /* kernel */,
    835                cl_uint      /* arg_index */,
    836                size_t       /* arg_size */,
    837                const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0;
    838 
    839 extern CL_API_ENTRY cl_int CL_API_CALL
    840 clGetKernelInfo(cl_kernel       /* kernel */,
    841                 cl_kernel_info  /* param_name */,
    842                 size_t          /* param_value_size */,
    843                 void *          /* param_value */,
    844                 size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    845 
    846 extern CL_API_ENTRY cl_int CL_API_CALL
    847 clGetKernelArgInfo(cl_kernel       /* kernel */,
    848                    cl_uint         /* arg_indx */,
    849                    cl_kernel_arg_info  /* param_name */,
    850                    size_t          /* param_value_size */,
    851                    void *          /* param_value */,
    852                    size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2;
    853 
    854 extern CL_API_ENTRY cl_int CL_API_CALL
    855 clGetKernelWorkGroupInfo(cl_kernel                  /* kernel */,
    856                          cl_device_id               /* device */,
    857                          cl_kernel_work_group_info  /* param_name */,
    858                          size_t                     /* param_value_size */,
    859                          void *                     /* param_value */,
    860                          size_t *                   /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    861 
    862 /* Event Object APIs */
    863 extern CL_API_ENTRY cl_int CL_API_CALL
    864 clWaitForEvents(cl_uint             /* num_events */,
    865                 const cl_event *    /* event_list */) CL_API_SUFFIX__VERSION_1_0;
    866 
    867 extern CL_API_ENTRY cl_int CL_API_CALL
    868 clGetEventInfo(cl_event         /* event */,
    869                cl_event_info    /* param_name */,
    870                size_t           /* param_value_size */,
    871                void *           /* param_value */,
    872                size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    873 
    874 extern CL_API_ENTRY cl_event CL_API_CALL
    875 clCreateUserEvent(cl_context    /* context */,
    876                   cl_int *      /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
    877 
    878 extern CL_API_ENTRY cl_int CL_API_CALL
    879 clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;
    880 
    881 extern CL_API_ENTRY cl_int CL_API_CALL
    882 clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;
    883 
    884 extern CL_API_ENTRY cl_int CL_API_CALL
    885 clSetUserEventStatus(cl_event   /* event */,
    886                      cl_int     /* execution_status */) CL_API_SUFFIX__VERSION_1_1;
    887 
    888 extern CL_API_ENTRY cl_int CL_API_CALL
    889 clSetEventCallback( cl_event    /* event */,
    890                     cl_int      /* command_exec_callback_type */,
    891                     void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *),
    892                     void *      /* user_data */) CL_API_SUFFIX__VERSION_1_1;
    893 
    894 /* Profiling APIs */
    895 extern CL_API_ENTRY cl_int CL_API_CALL
    896 clGetEventProfilingInfo(cl_event            /* event */,
    897                         cl_profiling_info   /* param_name */,
    898                         size_t              /* param_value_size */,
    899                         void *              /* param_value */,
    900                         size_t *            /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
    901 
    902 /* Flush and Finish APIs */
    903 extern CL_API_ENTRY cl_int CL_API_CALL
    904 clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;
    905 
    906 extern CL_API_ENTRY cl_int CL_API_CALL
    907 clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;
    908 
    909 /* Enqueued Commands APIs */
    910 extern CL_API_ENTRY cl_int CL_API_CALL
    911 clEnqueueReadBuffer(cl_command_queue    /* command_queue */,
    912                     cl_mem              /* buffer */,
    913                     cl_bool             /* blocking_read */,
    914                     size_t              /* offset */,
    915                     size_t              /* size */,
    916                     void *              /* ptr */,
    917                     cl_uint             /* num_events_in_wait_list */,
    918                     const cl_event *    /* event_wait_list */,
    919                     cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;
    920 
    921 extern CL_API_ENTRY cl_int CL_API_CALL
    922 clEnqueueReadBufferRect(cl_command_queue    /* command_queue */,
    923                         cl_mem              /* buffer */,
    924                         cl_bool             /* blocking_read */,
    925                         const size_t *      /* buffer_offset */,
    926                         const size_t *      /* host_offset */,
    927                         const size_t *      /* region */,
    928                         size_t              /* buffer_row_pitch */,
    929                         size_t              /* buffer_slice_pitch */,
    930                         size_t              /* host_row_pitch */,
    931                         size_t              /* host_slice_pitch */,
    932                         void *              /* ptr */,
    933                         cl_uint             /* num_events_in_wait_list */,
    934                         const cl_event *    /* event_wait_list */,
    935                         cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;
    936 
    937 extern CL_API_ENTRY cl_int CL_API_CALL
    938 clEnqueueWriteBuffer(cl_command_queue   /* command_queue */,
    939                      cl_mem             /* buffer */,
    940                      cl_bool            /* blocking_write */,
    941                      size_t             /* offset */,
    942                      size_t             /* size */,
    943                      const void *       /* ptr */,
    944                      cl_uint            /* num_events_in_wait_list */,
    945                      const cl_event *   /* event_wait_list */,
    946                      cl_event *         /* event */) CL_API_SUFFIX__VERSION_1_0;
    947 
    948 extern CL_API_ENTRY cl_int CL_API_CALL
    949 clEnqueueWriteBufferRect(cl_command_queue    /* command_queue */,
    950                          cl_mem              /* buffer */,
    951                          cl_bool             /* blocking_write */,
    952                          const size_t *      /* buffer_offset */,
    953                          const size_t *      /* host_offset */,
    954                          const size_t *      /* region */,
    955                          size_t              /* buffer_row_pitch */,
    956                          size_t              /* buffer_slice_pitch */,
    957                          size_t              /* host_row_pitch */,
    958                          size_t              /* host_slice_pitch */,
    959                          const void *        /* ptr */,
    960                          cl_uint             /* num_events_in_wait_list */,
    961                          const cl_event *    /* event_wait_list */,
    962                          cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;
    963 
    964 extern CL_API_ENTRY cl_int CL_API_CALL
    965 clEnqueueFillBuffer(cl_command_queue   /* command_queue */,
    966                     cl_mem             /* buffer */,
    967                     const void *       /* pattern */,
    968                     size_t             /* pattern_size */,
    969                     size_t             /* offset */,
    970                     size_t             /* size */,
    971                     cl_uint            /* num_events_in_wait_list */,
    972                     const cl_event *   /* event_wait_list */,
    973                     cl_event *         /* event */) CL_API_SUFFIX__VERSION_1_2;
    974 
    975 extern CL_API_ENTRY cl_int CL_API_CALL
    976 clEnqueueCopyBuffer(cl_command_queue    /* command_queue */,
    977                     cl_mem              /* src_buffer */,
    978                     cl_mem              /* dst_buffer */,
    979                     size_t              /* src_offset */,
    980                     size_t              /* dst_offset */,
    981                     size_t              /* size */,
    982                     cl_uint             /* num_events_in_wait_list */,
    983                     const cl_event *    /* event_wait_list */,
    984                     cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;
    985 
    986 extern CL_API_ENTRY cl_int CL_API_CALL
    987 clEnqueueCopyBufferRect(cl_command_queue    /* command_queue */,
    988                         cl_mem              /* src_buffer */,
    989                         cl_mem              /* dst_buffer */,
    990                         const size_t *      /* src_origin */,
    991                         const size_t *      /* dst_origin */,
    992                         const size_t *      /* region */,
    993                         size_t              /* src_row_pitch */,
    994                         size_t              /* src_slice_pitch */,
    995                         size_t              /* dst_row_pitch */,
    996                         size_t              /* dst_slice_pitch */,
    997                         cl_uint             /* num_events_in_wait_list */,
    998                         const cl_event *    /* event_wait_list */,
    999                         cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;
   1000 
   1001 extern CL_API_ENTRY cl_int CL_API_CALL
   1002 clEnqueueReadImage(cl_command_queue     /* command_queue */,
   1003                    cl_mem               /* image */,
   1004                    cl_bool              /* blocking_read */,
   1005                    const size_t *       /* origin[3] */,
   1006                    const size_t *       /* region[3] */,
   1007                    size_t               /* row_pitch */,
   1008                    size_t               /* slice_pitch */,
   1009                    void *               /* ptr */,
   1010                    cl_uint              /* num_events_in_wait_list */,
   1011                    const cl_event *     /* event_wait_list */,
   1012                    cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;
   1013 
   1014 extern CL_API_ENTRY cl_int CL_API_CALL
   1015 clEnqueueWriteImage(cl_command_queue    /* command_queue */,
   1016                     cl_mem              /* image */,
   1017                     cl_bool             /* blocking_write */,
   1018                     const size_t *      /* origin[3] */,
   1019                     const size_t *      /* region[3] */,
   1020                     size_t              /* input_row_pitch */,
   1021                     size_t              /* input_slice_pitch */,
   1022                     const void *        /* ptr */,
   1023                     cl_uint             /* num_events_in_wait_list */,
   1024                     const cl_event *    /* event_wait_list */,
   1025                     cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;
   1026 
   1027 extern CL_API_ENTRY cl_int CL_API_CALL
   1028 clEnqueueFillImage(cl_command_queue   /* command_queue */,
   1029                    cl_mem             /* image */,
   1030                    const void *       /* fill_color */,
   1031                    const size_t *     /* origin[3] */,
   1032                    const size_t *     /* region[3] */,
   1033                    cl_uint            /* num_events_in_wait_list */,
   1034                    const cl_event *   /* event_wait_list */,
   1035                    cl_event *         /* event */) CL_API_SUFFIX__VERSION_1_2;
   1036 
   1037 extern CL_API_ENTRY cl_int CL_API_CALL
   1038 clEnqueueCopyImage(cl_command_queue     /* command_queue */,
   1039                    cl_mem               /* src_image */,
   1040                    cl_mem               /* dst_image */,
   1041                    const size_t *       /* src_origin[3] */,
   1042                    const size_t *       /* dst_origin[3] */,
   1043                    const size_t *       /* region[3] */,
   1044                    cl_uint              /* num_events_in_wait_list */,
   1045                    const cl_event *     /* event_wait_list */,
   1046                    cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;
   1047 
   1048 extern CL_API_ENTRY cl_int CL_API_CALL
   1049 clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */,
   1050                            cl_mem           /* src_image */,
   1051                            cl_mem           /* dst_buffer */,
   1052                            const size_t *   /* src_origin[3] */,
   1053                            const size_t *   /* region[3] */,
   1054                            size_t           /* dst_offset */,
   1055                            cl_uint          /* num_events_in_wait_list */,
   1056                            const cl_event * /* event_wait_list */,
   1057                            cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;
   1058 
   1059 extern CL_API_ENTRY cl_int CL_API_CALL
   1060 clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */,
   1061                            cl_mem           /* src_buffer */,
   1062                            cl_mem           /* dst_image */,
   1063                            size_t           /* src_offset */,
   1064                            const size_t *   /* dst_origin[3] */,
   1065                            const size_t *   /* region[3] */,
   1066                            cl_uint          /* num_events_in_wait_list */,
   1067                            const cl_event * /* event_wait_list */,
   1068                            cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;
   1069 
   1070 extern CL_API_ENTRY void * CL_API_CALL
   1071 clEnqueueMapBuffer(cl_command_queue /* command_queue */,
   1072                    cl_mem           /* buffer */,
   1073                    cl_bool          /* blocking_map */,
   1074                    cl_map_flags     /* map_flags */,
   1075                    size_t           /* offset */,
   1076                    size_t           /* size */,
   1077                    cl_uint          /* num_events_in_wait_list */,
   1078                    const cl_event * /* event_wait_list */,
   1079                    cl_event *       /* event */,
   1080                    cl_int *         /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
   1081 
   1082 extern CL_API_ENTRY void * CL_API_CALL
   1083 clEnqueueMapImage(cl_command_queue  /* command_queue */,
   1084                   cl_mem            /* image */,
   1085                   cl_bool           /* blocking_map */,
   1086                   cl_map_flags      /* map_flags */,
   1087                   const size_t *    /* origin[3] */,
   1088                   const size_t *    /* region[3] */,
   1089                   size_t *          /* image_row_pitch */,
   1090                   size_t *          /* image_slice_pitch */,
   1091                   cl_uint           /* num_events_in_wait_list */,
   1092                   const cl_event *  /* event_wait_list */,
   1093                   cl_event *        /* event */,
   1094                   cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
   1095 
   1096 extern CL_API_ENTRY cl_int CL_API_CALL
   1097 clEnqueueUnmapMemObject(cl_command_queue /* command_queue */,
   1098                         cl_mem           /* memobj */,
   1099                         void *           /* mapped_ptr */,
   1100                         cl_uint          /* num_events_in_wait_list */,
   1101                         const cl_event *  /* event_wait_list */,
   1102                         cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;
   1103 
   1104 extern CL_API_ENTRY cl_int CL_API_CALL
   1105 clEnqueueMigrateMemObjects(cl_command_queue       /* command_queue */,
   1106                            cl_uint                /* num_mem_objects */,
   1107                            const cl_mem *         /* mem_objects */,
   1108                            cl_mem_migration_flags /* flags */,
   1109                            cl_uint                /* num_events_in_wait_list */,
   1110                            const cl_event *       /* event_wait_list */,
   1111                            cl_event *             /* event */) CL_API_SUFFIX__VERSION_1_2;
   1112 
   1113 extern CL_API_ENTRY cl_int CL_API_CALL
   1114 clEnqueueNDRangeKernel(cl_command_queue /* command_queue */,
   1115                        cl_kernel        /* kernel */,
   1116                        cl_uint          /* work_dim */,
   1117                        const size_t *   /* global_work_offset */,
   1118                        const size_t *   /* global_work_size */,
   1119                        const size_t *   /* local_work_size */,
   1120                        cl_uint          /* num_events_in_wait_list */,
   1121                        const cl_event * /* event_wait_list */,
   1122                        cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;
   1123 
   1124 extern CL_API_ENTRY cl_int CL_API_CALL
   1125 clEnqueueTask(cl_command_queue  /* command_queue */,
   1126               cl_kernel         /* kernel */,
   1127               cl_uint           /* num_events_in_wait_list */,
   1128               const cl_event *  /* event_wait_list */,
   1129               cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;
   1130 
   1131 extern CL_API_ENTRY cl_int CL_API_CALL
   1132 clEnqueueNativeKernel(cl_command_queue  /* command_queue */,
   1133 					  void (CL_CALLBACK * /*user_func*/)(void *),
   1134                       void *            /* args */,
   1135                       size_t            /* cb_args */,
   1136                       cl_uint           /* num_mem_objects */,
   1137                       const cl_mem *    /* mem_list */,
   1138                       const void **     /* args_mem_loc */,
   1139                       cl_uint           /* num_events_in_wait_list */,
   1140                       const cl_event *  /* event_wait_list */,
   1141                       cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;
   1142 
   1143 extern CL_API_ENTRY cl_int CL_API_CALL
   1144 clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */,
   1145                             cl_uint           /* num_events_in_wait_list */,
   1146                             const cl_event *  /* event_wait_list */,
   1147                             cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_2;
   1148 
   1149 extern CL_API_ENTRY cl_int CL_API_CALL
   1150 clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */,
   1151                              cl_uint           /* num_events_in_wait_list */,
   1152                              const cl_event *  /* event_wait_list */,
   1153                              cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_2;
   1154 
   1155 
   1156 /* Extension function access
   1157  *
   1158  * Returns the extension function address for the given function name,
   1159  * or NULL if a valid function can not be found.  The client must
   1160  * check to make sure the address is not NULL, before using or
   1161  * calling the returned function address.
   1162  */
   1163 extern CL_API_ENTRY void * CL_API_CALL
   1164 clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */,
   1165                                          const char *   /* func_name */) CL_API_SUFFIX__VERSION_1_2;
   1166 
   1167 
   1168 /* Deprecated OpenCL 1.1 APIs */
   1169 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
   1170 clCreateImage2D(cl_context              /* context */,
   1171                 cl_mem_flags            /* flags */,
   1172                 const cl_image_format * /* image_format */,
   1173                 size_t                  /* image_width */,
   1174                 size_t                  /* image_height */,
   1175                 size_t                  /* image_row_pitch */,
   1176                 void *                  /* host_ptr */,
   1177                 cl_int *                /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1178 
   1179 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
   1180 clCreateImage3D(cl_context              /* context */,
   1181                 cl_mem_flags            /* flags */,
   1182                 const cl_image_format * /* image_format */,
   1183                 size_t                  /* image_width */,
   1184                 size_t                  /* image_height */,
   1185                 size_t                  /* image_depth */,
   1186                 size_t                  /* image_row_pitch */,
   1187                 size_t                  /* image_slice_pitch */,
   1188                 void *                  /* host_ptr */,
   1189                 cl_int *                /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1190 
   1191 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
   1192 clEnqueueMarker(cl_command_queue    /* command_queue */,
   1193                 cl_event *          /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1194 
   1195 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
   1196 clEnqueueWaitForEvents(cl_command_queue /* command_queue */,
   1197                         cl_uint          /* num_events */,
   1198                         const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1199 
   1200 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
   1201 clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1202 
   1203 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
   1204 clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1205 
   1206 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL
   1207 clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
   1208 
   1209 #ifdef __cplusplus
   1210 }
   1211 #endif
   1212 
   1213 #endif  /* __OPENCL_CL_H */
   1214 
   1215