/*******************************************************************************
* Copyright (c) 2008-2010 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and/or associated documentation files (the
* "Materials"), to deal in the Materials without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Materials, and to
* permit persons to whom the Materials are furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
******************************************************************************/

/* $Revision: 11985 $ on $Date: 2010-07-15 11:16:06 -0700 (Thu, 15 Jul 2010) $ */

#ifndef __OPENCL_CL_H
#define __OPENCL_CL_H

#ifdef __APPLE__
#include <OpenCL/cl_platform.h>
#else
#include "cl_platform.h"
#endif	

#ifdef __cplusplus
extern "C" {
#endif

	/******************************************************************************/

	typedef struct _cl_platform_id *    cl_platform_id;
	typedef struct _cl_device_id *      cl_device_id;
	typedef struct _cl_context *        cl_context;
	typedef struct _cl_command_queue *  cl_command_queue;
	typedef struct _cl_mem *            cl_mem;
	typedef struct _cl_program *        cl_program;
	typedef struct _cl_kernel *         cl_kernel;
	typedef struct _cl_event *          cl_event;
	typedef struct _cl_sampler *        cl_sampler;

	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. */
	typedef cl_ulong            cl_bitfield;
	typedef cl_bitfield         cl_device_type;
	typedef cl_uint             cl_platform_info;
	typedef cl_uint             cl_device_info;
	typedef cl_bitfield         cl_device_fp_config;
	typedef cl_uint             cl_device_mem_cache_type;
	typedef cl_uint             cl_device_local_mem_type;
	typedef cl_bitfield         cl_device_exec_capabilities;
	typedef cl_bitfield         cl_command_queue_properties;

	typedef intptr_t			cl_context_properties;
	typedef cl_uint             cl_context_info;
	typedef cl_uint             cl_command_queue_info;
	typedef cl_uint             cl_channel_order;
	typedef cl_uint             cl_channel_type;
	typedef cl_bitfield         cl_mem_flags;
	typedef cl_uint             cl_mem_object_type;
	typedef cl_uint             cl_mem_info;
	typedef cl_uint             cl_image_info;
	typedef cl_uint             cl_buffer_create_type;
	typedef cl_uint             cl_addressing_mode;
	typedef cl_uint             cl_filter_mode;
	typedef cl_uint             cl_sampler_info;
	typedef cl_bitfield         cl_map_flags;
	typedef cl_uint             cl_program_info;
	typedef cl_uint             cl_program_build_info;
	typedef cl_int              cl_build_status;
	typedef cl_uint             cl_kernel_info;
	typedef cl_uint             cl_kernel_work_group_info;
	typedef cl_uint             cl_event_info;
	typedef cl_uint             cl_command_type;
	typedef cl_uint             cl_profiling_info;

	typedef struct _cl_image_format {
		cl_channel_order        image_channel_order;
		cl_channel_type         image_channel_data_type;
	} cl_image_format;


	typedef struct _cl_buffer_region {
		size_t                  origin;
		size_t                  size;
	} cl_buffer_region;

	/******************************************************************************/

	/* Error Codes */
#define CL_SUCCESS                                  0
#define CL_DEVICE_NOT_FOUND                         -1
#define CL_DEVICE_NOT_AVAILABLE                     -2
#define CL_COMPILER_NOT_AVAILABLE                   -3
#define CL_MEM_OBJECT_ALLOCATION_FAILURE            -4
#define CL_OUT_OF_RESOURCES                         -5
#define CL_OUT_OF_HOST_MEMORY                       -6
#define CL_PROFILING_INFO_NOT_AVAILABLE             -7
#define CL_MEM_COPY_OVERLAP                         -8
#define CL_IMAGE_FORMAT_MISMATCH                    -9
#define CL_IMAGE_FORMAT_NOT_SUPPORTED               -10
#define CL_BUILD_PROGRAM_FAILURE                    -11
#define CL_MAP_FAILURE                              -12
#define CL_MISALIGNED_SUB_BUFFER_OFFSET             -13
#define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14

#define CL_INVALID_VALUE                            -30
#define CL_INVALID_DEVICE_TYPE                      -31
#define CL_INVALID_PLATFORM                         -32
#define CL_INVALID_DEVICE                           -33
#define CL_INVALID_CONTEXT                          -34
#define CL_INVALID_QUEUE_PROPERTIES                 -35
#define CL_INVALID_COMMAND_QUEUE                    -36
#define CL_INVALID_HOST_PTR                         -37
#define CL_INVALID_MEM_OBJECT                       -38
#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR          -39
#define CL_INVALID_IMAGE_SIZE                       -40
#define CL_INVALID_SAMPLER                          -41
#define CL_INVALID_BINARY                           -42
#define CL_INVALID_BUILD_OPTIONS                    -43
#define CL_INVALID_PROGRAM                          -44
#define CL_INVALID_PROGRAM_EXECUTABLE               -45
#define CL_INVALID_KERNEL_NAME                      -46
#define CL_INVALID_KERNEL_DEFINITION                -47
#define CL_INVALID_KERNEL                           -48
#define CL_INVALID_ARG_INDEX                        -49
#define CL_INVALID_ARG_VALUE                        -50
#define CL_INVALID_ARG_SIZE                         -51
#define CL_INVALID_KERNEL_ARGS                      -52
#define CL_INVALID_WORK_DIMENSION                   -53
#define CL_INVALID_WORK_GROUP_SIZE                  -54
#define CL_INVALID_WORK_ITEM_SIZE                   -55
#define CL_INVALID_GLOBAL_OFFSET                    -56
#define CL_INVALID_EVENT_WAIT_LIST                  -57
#define CL_INVALID_EVENT                            -58
#define CL_INVALID_OPERATION                        -59
#define CL_INVALID_GL_OBJECT                        -60
#define CL_INVALID_BUFFER_SIZE                      -61
#define CL_INVALID_MIP_LEVEL                        -62
#define CL_INVALID_GLOBAL_WORK_SIZE                 -63
#define CL_INVALID_PROPERTY                         -64

	/* OpenCL Version */
#define CL_VERSION_1_0                              1
#define CL_VERSION_1_1                              1

	/* cl_bool */
#define CL_FALSE                                    0
#define CL_TRUE                                     1

	/* cl_platform_info */
#define CL_PLATFORM_PROFILE                         0x0900
#define CL_PLATFORM_VERSION                         0x0901
#define CL_PLATFORM_NAME                            0x0902
#define CL_PLATFORM_VENDOR                          0x0903
#define CL_PLATFORM_EXTENSIONS                      0x0904

	/* cl_device_type - bitfield */
#define CL_DEVICE_TYPE_DEFAULT                      (1 << 0)
#define CL_DEVICE_TYPE_CPU                          (1 << 1)
#define CL_DEVICE_TYPE_GPU                          (1 << 2)
#define CL_DEVICE_TYPE_ACCELERATOR                  (1 << 3)
#define CL_DEVICE_TYPE_ALL                          0xFFFFFFFF

	/* cl_device_info */
#define CL_DEVICE_TYPE                              0x1000
#define CL_DEVICE_VENDOR_ID                         0x1001
#define CL_DEVICE_MAX_COMPUTE_UNITS                 0x1002
#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS          0x1003
#define CL_DEVICE_MAX_WORK_GROUP_SIZE               0x1004
#define CL_DEVICE_MAX_WORK_ITEM_SIZES               0x1005
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR       0x1006
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT      0x1007
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT        0x1008
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG       0x1009
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT      0x100A
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE     0x100B
#define CL_DEVICE_MAX_CLOCK_FREQUENCY               0x100C
#define CL_DEVICE_ADDRESS_BITS                      0x100D
#define CL_DEVICE_MAX_READ_IMAGE_ARGS               0x100E
#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS              0x100F
#define CL_DEVICE_MAX_MEM_ALLOC_SIZE                0x1010
#define CL_DEVICE_IMAGE2D_MAX_WIDTH                 0x1011
#define CL_DEVICE_IMAGE2D_MAX_HEIGHT                0x1012
#define CL_DEVICE_IMAGE3D_MAX_WIDTH                 0x1013
#define CL_DEVICE_IMAGE3D_MAX_HEIGHT                0x1014
#define CL_DEVICE_IMAGE3D_MAX_DEPTH                 0x1015
#define CL_DEVICE_IMAGE_SUPPORT                     0x1016
#define CL_DEVICE_MAX_PARAMETER_SIZE                0x1017
#define CL_DEVICE_MAX_SAMPLERS                      0x1018
#define CL_DEVICE_MEM_BASE_ADDR_ALIGN               0x1019
#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE          0x101A
#define CL_DEVICE_SINGLE_FP_CONFIG                  0x101B
#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE             0x101C
#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE         0x101D
#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE             0x101E
#define CL_DEVICE_GLOBAL_MEM_SIZE                   0x101F
#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE          0x1020
#define CL_DEVICE_MAX_CONSTANT_ARGS                 0x1021
#define CL_DEVICE_LOCAL_MEM_TYPE                    0x1022
#define CL_DEVICE_LOCAL_MEM_SIZE                    0x1023
#define CL_DEVICE_ERROR_CORRECTION_SUPPORT          0x1024
#define CL_DEVICE_PROFILING_TIMER_RESOLUTION        0x1025
#define CL_DEVICE_ENDIAN_LITTLE                     0x1026
#define CL_DEVICE_AVAILABLE                         0x1027
#define CL_DEVICE_COMPILER_AVAILABLE                0x1028
#define CL_DEVICE_EXECUTION_CAPABILITIES            0x1029
#define CL_DEVICE_QUEUE_PROPERTIES                  0x102A
#define CL_DEVICE_NAME                              0x102B
#define CL_DEVICE_VENDOR                            0x102C
#define CL_DRIVER_VERSION                           0x102D
#define CL_DEVICE_PROFILE                           0x102E
#define CL_DEVICE_VERSION                           0x102F
#define CL_DEVICE_EXTENSIONS                        0x1030
#define CL_DEVICE_PLATFORM                          0x1031
	/* 0x1032 reserved for CL_DEVICE_DOUBLE_FP_CONFIG */
	/* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */
#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF       0x1034
#define CL_DEVICE_HOST_UNIFIED_MEMORY               0x1035
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR          0x1036
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT         0x1037
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT           0x1038
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG          0x1039
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT         0x103A
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE        0x103B
#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF          0x103C
#define CL_DEVICE_OPENCL_C_VERSION                  0x103D

	/* cl_device_fp_config - bitfield */
#define CL_FP_DENORM                                (1 << 0)
#define CL_FP_INF_NAN                               (1 << 1)
#define CL_FP_ROUND_TO_NEAREST                      (1 << 2)
#define CL_FP_ROUND_TO_ZERO                         (1 << 3)
#define CL_FP_ROUND_TO_INF                          (1 << 4)
#define CL_FP_FMA                                   (1 << 5)
#define CL_FP_SOFT_FLOAT                            (1 << 6)

	/* cl_device_mem_cache_type */
#define CL_NONE                                     0x0
#define CL_READ_ONLY_CACHE                          0x1
#define CL_READ_WRITE_CACHE                         0x2

	/* cl_device_local_mem_type */
#define CL_LOCAL                                    0x1
#define CL_GLOBAL                                   0x2

	/* cl_device_exec_capabilities - bitfield */
#define CL_EXEC_KERNEL                              (1 << 0)
#define CL_EXEC_NATIVE_KERNEL                       (1 << 1)

	/* cl_command_queue_properties - bitfield */
#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE      (1 << 0)
#define CL_QUEUE_PROFILING_ENABLE                   (1 << 1)

	/* cl_context_info  */
#define CL_CONTEXT_REFERENCE_COUNT                  0x1080
#define CL_CONTEXT_DEVICES                          0x1081
#define CL_CONTEXT_PROPERTIES                       0x1082
#define CL_CONTEXT_NUM_DEVICES                      0x1083

	/* cl_context_info + cl_context_properties */
#define CL_CONTEXT_PLATFORM                         0x1084

	/* cl_command_queue_info */
#define CL_QUEUE_CONTEXT                            0x1090
#define CL_QUEUE_DEVICE                             0x1091
#define CL_QUEUE_REFERENCE_COUNT                    0x1092
#define CL_QUEUE_PROPERTIES                         0x1093

	/* cl_mem_flags - bitfield */
#define CL_MEM_READ_WRITE                           (1 << 0)
#define CL_MEM_WRITE_ONLY                           (1 << 1)
#define CL_MEM_READ_ONLY                            (1 << 2)
#define CL_MEM_USE_HOST_PTR                         (1 << 3)
#define CL_MEM_ALLOC_HOST_PTR                       (1 << 4)
#define CL_MEM_COPY_HOST_PTR                        (1 << 5)

	/* cl_channel_order */
#define CL_R                                        0x10B0
#define CL_A                                        0x10B1
#define CL_RG                                       0x10B2
#define CL_RA                                       0x10B3
#define CL_RGB                                      0x10B4
#define CL_RGBA                                     0x10B5
#define CL_BGRA                                     0x10B6
#define CL_ARGB                                     0x10B7
#define CL_INTENSITY                                0x10B8
#define CL_LUMINANCE                                0x10B9
#define CL_Rx                                       0x10BA
#define CL_RGx                                      0x10BB
#define CL_RGBx                                     0x10BC

	/* cl_channel_type */
#define CL_SNORM_INT8                               0x10D0
#define CL_SNORM_INT16                              0x10D1
#define CL_UNORM_INT8                               0x10D2
#define CL_UNORM_INT16                              0x10D3
#define CL_UNORM_SHORT_565                          0x10D4
#define CL_UNORM_SHORT_555                          0x10D5
#define CL_UNORM_INT_101010                         0x10D6
#define CL_SIGNED_INT8                              0x10D7
#define CL_SIGNED_INT16                             0x10D8
#define CL_SIGNED_INT32                             0x10D9
#define CL_UNSIGNED_INT8                            0x10DA
#define CL_UNSIGNED_INT16                           0x10DB
#define CL_UNSIGNED_INT32                           0x10DC
#define CL_HALF_FLOAT                               0x10DD
#define CL_FLOAT                                    0x10DE

	/* cl_mem_object_type */
#define CL_MEM_OBJECT_BUFFER                        0x10F0
#define CL_MEM_OBJECT_IMAGE2D                       0x10F1
#define CL_MEM_OBJECT_IMAGE3D                       0x10F2

	/* cl_mem_info */
#define CL_MEM_TYPE                                 0x1100
#define CL_MEM_FLAGS                                0x1101
#define CL_MEM_SIZE                                 0x1102
#define CL_MEM_HOST_PTR                             0x1103
#define CL_MEM_MAP_COUNT                            0x1104
#define CL_MEM_REFERENCE_COUNT                      0x1105
#define CL_MEM_CONTEXT                              0x1106
#define CL_MEM_ASSOCIATED_MEMOBJECT                 0x1107
#define CL_MEM_OFFSET                               0x1108

	/* cl_image_info */
#define CL_IMAGE_FORMAT                             0x1110
#define CL_IMAGE_ELEMENT_SIZE                       0x1111
#define CL_IMAGE_ROW_PITCH                          0x1112
#define CL_IMAGE_SLICE_PITCH                        0x1113
#define CL_IMAGE_WIDTH                              0x1114
#define CL_IMAGE_HEIGHT                             0x1115
#define CL_IMAGE_DEPTH                              0x1116

	/* cl_addressing_mode */
#define CL_ADDRESS_NONE                             0x1130
#define CL_ADDRESS_CLAMP_TO_EDGE                    0x1131
#define CL_ADDRESS_CLAMP                            0x1132
#define CL_ADDRESS_REPEAT                           0x1133
#define CL_ADDRESS_MIRRORED_REPEAT                  0x1134

	/* cl_filter_mode */
#define CL_FILTER_NEAREST                           0x1140
#define CL_FILTER_LINEAR                            0x1141

	/* cl_sampler_info */
#define CL_SAMPLER_REFERENCE_COUNT                  0x1150
#define CL_SAMPLER_CONTEXT                          0x1151
#define CL_SAMPLER_NORMALIZED_COORDS                0x1152
#define CL_SAMPLER_ADDRESSING_MODE                  0x1153
#define CL_SAMPLER_FILTER_MODE                      0x1154

	/* cl_map_flags - bitfield */
#define CL_MAP_READ                                 (1 << 0)
#define CL_MAP_WRITE                                (1 << 1)

	/* cl_program_info */
#define CL_PROGRAM_REFERENCE_COUNT                  0x1160
#define CL_PROGRAM_CONTEXT                          0x1161
#define CL_PROGRAM_NUM_DEVICES                      0x1162
#define CL_PROGRAM_DEVICES                          0x1163
#define CL_PROGRAM_SOURCE                           0x1164
#define CL_PROGRAM_BINARY_SIZES                     0x1165
#define CL_PROGRAM_BINARIES                         0x1166

	/* cl_program_build_info */
#define CL_PROGRAM_BUILD_STATUS                     0x1181
#define CL_PROGRAM_BUILD_OPTIONS                    0x1182
#define CL_PROGRAM_BUILD_LOG                        0x1183

	/* cl_build_status */
#define CL_BUILD_SUCCESS                            0
#define CL_BUILD_NONE                               -1
#define CL_BUILD_ERROR                              -2
#define CL_BUILD_IN_PROGRESS                        -3

	/* cl_kernel_info */
#define CL_KERNEL_FUNCTION_NAME                     0x1190
#define CL_KERNEL_NUM_ARGS                          0x1191
#define CL_KERNEL_REFERENCE_COUNT                   0x1192
#define CL_KERNEL_CONTEXT                           0x1193
#define CL_KERNEL_PROGRAM                           0x1194

	/* cl_kernel_work_group_info */
#define CL_KERNEL_WORK_GROUP_SIZE                   0x11B0
#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE           0x11B1
#define CL_KERNEL_LOCAL_MEM_SIZE                    0x11B2
#define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3
#define CL_KERNEL_PRIVATE_MEM_SIZE                  0x11B4

	/* cl_event_info  */
#define CL_EVENT_COMMAND_QUEUE                      0x11D0
#define CL_EVENT_COMMAND_TYPE                       0x11D1
#define CL_EVENT_REFERENCE_COUNT                    0x11D2
#define CL_EVENT_COMMAND_EXECUTION_STATUS           0x11D3
#define CL_EVENT_CONTEXT                            0x11D4

	/* cl_command_type */
#define CL_COMMAND_NDRANGE_KERNEL                   0x11F0
#define CL_COMMAND_TASK                             0x11F1
#define CL_COMMAND_NATIVE_KERNEL                    0x11F2
#define CL_COMMAND_READ_BUFFER                      0x11F3
#define CL_COMMAND_WRITE_BUFFER                     0x11F4
#define CL_COMMAND_COPY_BUFFER                      0x11F5
#define CL_COMMAND_READ_IMAGE                       0x11F6
#define CL_COMMAND_WRITE_IMAGE                      0x11F7
#define CL_COMMAND_COPY_IMAGE                       0x11F8
#define CL_COMMAND_COPY_IMAGE_TO_BUFFER             0x11F9
#define CL_COMMAND_COPY_BUFFER_TO_IMAGE             0x11FA
#define CL_COMMAND_MAP_BUFFER                       0x11FB
#define CL_COMMAND_MAP_IMAGE                        0x11FC
#define CL_COMMAND_UNMAP_MEM_OBJECT                 0x11FD
#define CL_COMMAND_MARKER                           0x11FE
#define CL_COMMAND_ACQUIRE_GL_OBJECTS               0x11FF
#define CL_COMMAND_RELEASE_GL_OBJECTS               0x1200
#define CL_COMMAND_READ_BUFFER_RECT                 0x1201
#define CL_COMMAND_WRITE_BUFFER_RECT                0x1202
#define CL_COMMAND_COPY_BUFFER_RECT                 0x1203
#define CL_COMMAND_USER                             0x1204

	/* command execution status */
#define CL_COMPLETE                                 0x0
#define CL_RUNNING                                  0x1
#define CL_SUBMITTED                                0x2
#define CL_QUEUED                                   0x3

	/* cl_buffer_create_type  */
#define CL_BUFFER_CREATE_TYPE_REGION                0x1220

	/* cl_profiling_info  */
#define CL_PROFILING_COMMAND_QUEUED                 0x1280
#define CL_PROFILING_COMMAND_SUBMIT                 0x1281
#define CL_PROFILING_COMMAND_START                  0x1282
#define CL_PROFILING_COMMAND_END                    0x1283

	/********************************************************************************************************/

	/* Platform API */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetPlatformIDs(cl_uint          /* num_entries */,
		cl_platform_id * /* platforms */,
		cl_uint *        /* num_platforms */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetPlatformInfo(cl_platform_id   /* platform */,
		cl_platform_info /* param_name */,
		size_t           /* param_value_size */,
		void *           /* param_value */,
		size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Device APIs */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetDeviceIDs(cl_platform_id   /* platform */,
		cl_device_type   /* device_type */,
		cl_uint          /* num_entries */,
		cl_device_id *   /* devices */,
		cl_uint *        /* num_devices */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetDeviceInfo(cl_device_id    /* device */,
		cl_device_info  /* param_name */,
		size_t          /* param_value_size */,
		void *          /* param_value */,
		size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Context APIs  */
	extern CL_API_ENTRY cl_context CL_API_CALL
		clCreateContext(const cl_context_properties * /* properties */,
		cl_uint                       /* num_devices */,
		const cl_device_id *          /* devices */,
		void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *),
		void *                        /* user_data */,
		cl_int *                      /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_context CL_API_CALL
		clCreateContextFromType(const cl_context_properties * /* properties */,
		cl_device_type                /* device_type */,
		void (CL_CALLBACK *     /* pfn_notify*/)(const char *, const void *, size_t, void *),
		void *                        /* user_data */,
		cl_int *                      /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetContextInfo(cl_context         /* context */,
		cl_context_info    /* param_name */,
		size_t             /* param_value_size */,
		void *             /* param_value */,
		size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Command Queue APIs */
	extern CL_API_ENTRY cl_command_queue CL_API_CALL
		clCreateCommandQueue(cl_context                     /* context */,
		cl_device_id                   /* device */,
		cl_command_queue_properties    /* properties */,
		cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetCommandQueueInfo(cl_command_queue      /* command_queue */,
		cl_command_queue_info /* param_name */,
		size_t                /* param_value_size */,
		void *                /* param_value */,
		size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS
	#warning CL_USE_DEPRECATED_OPENCL_1_0_APIS is defined.These APIs are unsupported and untested in OpenCL 1.1!
	/*
	*  WARNING:
	*     This API introduces mutable state into the OpenCL implementation. It has been REMOVED
	*  to better facilitate thread safety.  The 1.0 API is not thread safe. It is not tested by the
	*  OpenCL 1.1 conformance test, and consequently may not work or may not work dependably.
	*  It is likely to be non-performant. Use of this API is not advised. Use at your own risk.
	*
	*  Software developers previously relying on this API are instructed to set the command queue
	*  properties when creating the queue, instead.
	*/
	extern CL_API_ENTRY cl_int CL_API_CALL
		clSetCommandQueueProperty(cl_command_queue              /* command_queue */,
		cl_command_queue_properties   /* properties */,
		cl_bool                        /* enable */,
		cl_command_queue_properties * /* old_properties */) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED;
#endif /* CL_USE_DEPRECATED_OPENCL_1_0_APIS */

	/* Memory Object APIs */
	extern CL_API_ENTRY cl_mem CL_API_CALL
		clCreateBuffer(cl_context   /* context */,
		cl_mem_flags /* flags */,
		size_t       /* size */,
		void *       /* host_ptr */,
		cl_int *     /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_mem CL_API_CALL
		clCreateSubBuffer(cl_mem                   /* buffer */,
		cl_mem_flags             /* flags */,
		cl_buffer_create_type    /* buffer_create_type */,
		const void *             /* buffer_create_info */,
		cl_int *                 /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_mem CL_API_CALL
		clCreateImage2D(cl_context              /* context */,
		cl_mem_flags            /* flags */,
		const cl_image_format * /* image_format */,
		size_t                  /* image_width */,
		size_t                  /* image_height */,
		size_t                  /* image_row_pitch */,
		void *                  /* host_ptr */,
		cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_mem CL_API_CALL
		clCreateImage3D(cl_context              /* context */,
		cl_mem_flags            /* flags */,
		const cl_image_format * /* image_format */,
		size_t                  /* image_width */,
		size_t                  /* image_height */,
		size_t                  /* image_depth */,
		size_t                  /* image_row_pitch */,
		size_t                  /* image_slice_pitch */,
		void *                  /* host_ptr */,
		cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetSupportedImageFormats(cl_context           /* context */,
		cl_mem_flags         /* flags */,
		cl_mem_object_type   /* image_type */,
		cl_uint              /* num_entries */,
		cl_image_format *    /* image_formats */,
		cl_uint *            /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetMemObjectInfo(cl_mem           /* memobj */,
		cl_mem_info      /* param_name */,
		size_t           /* param_value_size */,
		void *           /* param_value */,
		size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetImageInfo(cl_mem           /* image */,
		cl_image_info    /* param_name */,
		size_t           /* param_value_size */,
		void *           /* param_value */,
		size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clSetMemObjectDestructorCallback(cl_mem /* memobj */,
		void (CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/),
		void * /*user_data */)             CL_API_SUFFIX__VERSION_1_1;

	/* Sampler APIs  */
	extern CL_API_ENTRY cl_sampler CL_API_CALL
		clCreateSampler(cl_context          /* context */,
		cl_bool             /* normalized_coords */,
		cl_addressing_mode  /* addressing_mode */,
		cl_filter_mode      /* filter_mode */,
		cl_int *            /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetSamplerInfo(cl_sampler         /* sampler */,
		cl_sampler_info    /* param_name */,
		size_t             /* param_value_size */,
		void *             /* param_value */,
		size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Program Object APIs  */
	extern CL_API_ENTRY cl_program CL_API_CALL
		clCreateProgramWithSource(cl_context        /* context */,
		cl_uint           /* count */,
		const char **     /* strings */,
		const size_t *    /* lengths */,
		cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_program CL_API_CALL
		clCreateProgramWithBinary(cl_context                     /* context */,
		cl_uint                        /* num_devices */,
		const cl_device_id *           /* device_list */,
		const size_t *                 /* lengths */,
		const unsigned char **         /* binaries */,
		cl_int *                       /* binary_status */,
		cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clBuildProgram(cl_program           /* program */,
		cl_uint              /* num_devices */,
		const cl_device_id * /* device_list */,
		const char *         /* options */,
		void (CL_CALLBACK *  /* pfn_notify */)(cl_program /* program */, void * /* user_data */),
		void *               /* user_data */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetProgramInfo(cl_program         /* program */,
		cl_program_info    /* param_name */,
		size_t             /* param_value_size */,
		void *             /* param_value */,
		size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetProgramBuildInfo(cl_program            /* program */,
		cl_device_id          /* device */,
		cl_program_build_info /* param_name */,
		size_t                /* param_value_size */,
		void *                /* param_value */,
		size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Kernel Object APIs */
	extern CL_API_ENTRY cl_kernel CL_API_CALL
		clCreateKernel(cl_program      /* program */,
		const char *    /* kernel_name */,
		cl_int *        /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clCreateKernelsInProgram(cl_program     /* program */,
		cl_uint        /* num_kernels */,
		cl_kernel *    /* kernels */,
		cl_uint *      /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainKernel(cl_kernel    /* kernel */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseKernel(cl_kernel   /* kernel */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clSetKernelArg(cl_kernel    /* kernel */,
		cl_uint      /* arg_index */,
		size_t       /* arg_size */,
		const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetKernelInfo(cl_kernel       /* kernel */,
		cl_kernel_info  /* param_name */,
		size_t          /* param_value_size */,
		void *          /* param_value */,
		size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetKernelWorkGroupInfo(cl_kernel                  /* kernel */,
		cl_device_id               /* device */,
		cl_kernel_work_group_info  /* param_name */,
		size_t                     /* param_value_size */,
		void *                     /* param_value */,
		size_t *                   /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Event Object APIs  */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clWaitForEvents(cl_uint             /* num_events */,
		const cl_event *    /* event_list */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetEventInfo(cl_event         /* event */,
		cl_event_info    /* param_name */,
		size_t           /* param_value_size */,
		void *           /* param_value */,
		size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_event CL_API_CALL
		clCreateUserEvent(cl_context    /* context */,
		cl_int *      /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clSetUserEventStatus(cl_event   /* event */,
		cl_int     /* execution_status */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clSetEventCallback(cl_event    /* event */,
		cl_int      /* command_exec_callback_type */,
		void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *),
		void *      /* user_data */) CL_API_SUFFIX__VERSION_1_1;

	/* Profiling APIs  */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clGetEventProfilingInfo(cl_event            /* event */,
		cl_profiling_info   /* param_name */,
		size_t              /* param_value_size */,
		void *              /* param_value */,
		size_t *            /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;

	/* Flush and Finish APIs */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;

	/* Enqueued Commands APIs */
	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueReadBuffer(cl_command_queue    /* command_queue */,
		cl_mem              /* buffer */,
		cl_bool             /* blocking_read */,
		size_t              /* offset */,
		size_t              /* cb */,
		void *              /* ptr */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueReadBufferRect(cl_command_queue    /* command_queue */,
		cl_mem              /* buffer */,
		cl_bool             /* blocking_read */,
		const size_t *      /* buffer_origin */,
		const size_t *      /* host_origin */,
		const size_t *      /* region */,
		size_t              /* buffer_row_pitch */,
		size_t              /* buffer_slice_pitch */,
		size_t              /* host_row_pitch */,
		size_t              /* host_slice_pitch */,
		void *              /* ptr */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueWriteBuffer(cl_command_queue   /* command_queue */,
		cl_mem             /* buffer */,
		cl_bool            /* blocking_write */,
		size_t             /* offset */,
		size_t             /* cb */,
		const void *       /* ptr */,
		cl_uint            /* num_events_in_wait_list */,
		const cl_event *   /* event_wait_list */,
		cl_event *         /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueWriteBufferRect(cl_command_queue    /* command_queue */,
		cl_mem              /* buffer */,
		cl_bool             /* blocking_write */,
		const size_t *      /* buffer_origin */,
		const size_t *      /* host_origin */,
		const size_t *      /* region */,
		size_t              /* buffer_row_pitch */,
		size_t              /* buffer_slice_pitch */,
		size_t              /* host_row_pitch */,
		size_t              /* host_slice_pitch */,
		const void *        /* ptr */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueCopyBuffer(cl_command_queue    /* command_queue */,
		cl_mem              /* src_buffer */,
		cl_mem              /* dst_buffer */,
		size_t              /* src_offset */,
		size_t              /* dst_offset */,
		size_t              /* cb */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueCopyBufferRect(cl_command_queue    /* command_queue */,
		cl_mem              /* src_buffer */,
		cl_mem              /* dst_buffer */,
		const size_t *      /* src_origin */,
		const size_t *      /* dst_origin */,
		const size_t *      /* region */,
		size_t              /* src_row_pitch */,
		size_t              /* src_slice_pitch */,
		size_t              /* dst_row_pitch */,
		size_t              /* dst_slice_pitch */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_1;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueReadImage(cl_command_queue     /* command_queue */,
		cl_mem               /* image */,
		cl_bool              /* blocking_read */,
		const size_t *       /* origin[3] */,
		const size_t *       /* region[3] */,
		size_t               /* row_pitch */,
		size_t               /* slice_pitch */,
		void *               /* ptr */,
		cl_uint              /* num_events_in_wait_list */,
		const cl_event *     /* event_wait_list */,
		cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueWriteImage(cl_command_queue    /* command_queue */,
		cl_mem              /* image */,
		cl_bool             /* blocking_write */,
		const size_t *      /* origin[3] */,
		const size_t *      /* region[3] */,
		size_t              /* input_row_pitch */,
		size_t              /* input_slice_pitch */,
		const void *        /* ptr */,
		cl_uint             /* num_events_in_wait_list */,
		const cl_event *    /* event_wait_list */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueCopyImage(cl_command_queue     /* command_queue */,
		cl_mem               /* src_image */,
		cl_mem               /* dst_image */,
		const size_t *       /* src_origin[3] */,
		const size_t *       /* dst_origin[3] */,
		const size_t *       /* region[3] */,
		cl_uint              /* num_events_in_wait_list */,
		const cl_event *     /* event_wait_list */,
		cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */,
		cl_mem           /* src_image */,
		cl_mem           /* dst_buffer */,
		const size_t *   /* src_origin[3] */,
		const size_t *   /* region[3] */,
		size_t           /* dst_offset */,
		cl_uint          /* num_events_in_wait_list */,
		const cl_event * /* event_wait_list */,
		cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */,
		cl_mem           /* src_buffer */,
		cl_mem           /* dst_image */,
		size_t           /* src_offset */,
		const size_t *   /* dst_origin[3] */,
		const size_t *   /* region[3] */,
		cl_uint          /* num_events_in_wait_list */,
		const cl_event * /* event_wait_list */,
		cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY void * CL_API_CALL
		clEnqueueMapBuffer(cl_command_queue /* command_queue */,
		cl_mem           /* buffer */,
		cl_bool          /* blocking_map */,
		cl_map_flags     /* map_flags */,
		size_t           /* offset */,
		size_t           /* cb */,
		cl_uint          /* num_events_in_wait_list */,
		const cl_event * /* event_wait_list */,
		cl_event *       /* event */,
		cl_int *         /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY void * CL_API_CALL
		clEnqueueMapImage(cl_command_queue  /* command_queue */,
		cl_mem            /* image */,
		cl_bool           /* blocking_map */,
		cl_map_flags      /* map_flags */,
		const size_t *    /* origin[3] */,
		const size_t *    /* region[3] */,
		size_t *          /* image_row_pitch */,
		size_t *          /* image_slice_pitch */,
		cl_uint           /* num_events_in_wait_list */,
		const cl_event *  /* event_wait_list */,
		cl_event *        /* event */,
		cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueUnmapMemObject(cl_command_queue /* command_queue */,
		cl_mem           /* memobj */,
		void *           /* mapped_ptr */,
		cl_uint          /* num_events_in_wait_list */,
		const cl_event *  /* event_wait_list */,
		cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueNDRangeKernel(cl_command_queue /* command_queue */,
		cl_kernel        /* kernel */,
		cl_uint          /* work_dim */,
		const size_t *   /* global_work_offset */,
		const size_t *   /* global_work_size */,
		const size_t *   /* local_work_size */,
		cl_uint          /* num_events_in_wait_list */,
		const cl_event * /* event_wait_list */,
		cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueTask(cl_command_queue  /* command_queue */,
		cl_kernel         /* kernel */,
		cl_uint           /* num_events_in_wait_list */,
		const cl_event *  /* event_wait_list */,
		cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueNativeKernel(cl_command_queue  /* command_queue */,
		void (CL_CALLBACK *user_func)(void *),
		void *            /* args */,
		size_t            /* cb_args */,
		cl_uint           /* num_mem_objects */,
		const cl_mem *    /* mem_list */,
		const void **     /* args_mem_loc */,
		cl_uint           /* num_events_in_wait_list */,
		const cl_event *  /* event_wait_list */,
		cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueMarker(cl_command_queue    /* command_queue */,
		cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueWaitForEvents(cl_command_queue /* command_queue */,
		cl_uint          /* num_events */,
		const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0;

	extern CL_API_ENTRY cl_int CL_API_CALL
		clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;

	/* Extension function access
	*
	* Returns the extension function address for the given function name,
	* or NULL if a valid function can not be found.  The client must
	* check to make sure the address is not NULL, before using or
	* calling the returned function address.
	*/
	extern CL_API_ENTRY void * CL_API_CALL clGetExtensionFunctionAddress(const char * /* func_name */) CL_API_SUFFIX__VERSION_1_0;

#ifdef __cplusplus
}
#endif

#endif  /* __OPENCL_CL_H */
