148 #if defined(USE_DX_INTEROP)
154 #if defined(USE_CL_DEVICE_FISSION)
158 #if defined(__APPLE__) || defined(__MACOSX)
159 #include <OpenCL/opencl.h>
169 #if !defined(CL_CALLBACK)
175 #if !defined(__NO_STD_VECTOR)
179 #if !defined(__NO_STD_STRING)
183 #if defined(linux) || defined(__APPLE__) || defined(__MACOSX)
196 #define __INIT_CL_EXT_FCN_PTR(name) \
198 pfn_##name = (PFN_##name) \
199 clGetExtensionFunctionAddress(#name); \
210 #if defined(__CL_ENABLE_EXCEPTIONS)
219 const char * errStr_;
224 Error(cl_int err,
const char * errStr = NULL) : err_(err), errStr_(errStr)
227 ~
Error() throw()
override {}
233 const char * what()
const throw()
override
235 if (errStr_ == NULL) {
247 cl_int err(
void)
const {
return err_; }
250 #define __ERR_STR(x) #x
252 #define __ERR_STR(x) NULL
253 #endif // __CL_ENABLE_EXCEPTIONS
256 #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS)
257 #define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo)
258 #define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo)
259 #define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs)
260 #define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs)
261 #define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo)
262 #define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo)
263 #define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo)
264 #define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo)
265 #define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo)
266 #define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo)
267 #define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo)
268 #define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo)
269 #define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo)
270 #define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo)
271 #define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo)
273 #define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext)
274 #define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType)
275 #define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats)
277 #define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer)
278 #define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer)
279 #define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer)
280 #define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo)
281 #define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D)
282 #define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D)
283 #define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler)
284 #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback)
286 #define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent)
287 #define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus)
288 #define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback)
289 #define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents)
291 #define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel)
292 #define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg)
293 #define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource)
294 #define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary)
295 #define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram)
296 #define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram)
298 #define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue)
299 #define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty)
300 #define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer)
301 #define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect)
302 #define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer)
303 #define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect)
304 #define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer)
305 #define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect)
306 #define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage)
307 #define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage)
308 #define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage)
309 #define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer)
310 #define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage)
311 #define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer)
312 #define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage)
313 #define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject)
314 #define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel)
315 #define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask)
316 #define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel)
317 #define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker)
318 #define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents)
319 #define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier)
320 #if defined(CL_VERSION_1_2)
321 #define __ENQUEUE_MARKER_WITH_WAIT_LIST_ERR \
322 __ERR_STR(clEnqueueMarkerWithWaitList)
323 #define __ENQUEUE_BARRIER_WITH_WAIT_LIST_ERR \
324 __ERR_STR(clEnqueueBarrierWithWaitList)
327 #define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects)
328 #define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects)
330 #define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler)
332 #define __FLUSH_ERR __ERR_STR(clFlush)
333 #define __FINISH_ERR __ERR_STR(clFinish)
335 #define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT)
336 #endif // __CL_USER_OVERRIDE_ERROR_STRINGS
357 str_ =
new char[size_+1];
359 memcpy(str_, str, size_ *
sizeof(
char));
370 size_= ::strlen(str);
371 str_ =
new char[size_ + 1];
373 memcpy(str_, str, (size_ + 1) *
sizeof(
char));
386 if (rhs.size_ == 0 || rhs.str_ == NULL) {
392 str_ =
new char[size_ + 1];
394 memcpy(str_, rhs.str_, (size_ + 1) *
sizeof(
char));
419 const char *
c_str(
void)
const {
return (str_) ? str_ :
"";}
422 #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING)
425 #elif !defined(__USE_DEV_STRING)
429 #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR)
431 #define VECTOR_CLASS std::vector
432 #elif !defined(__USE_DEV_VECTOR)
433 #define VECTOR_CLASS cl::vector
436 #if !defined(__MAX_DEFAULT_VECTOR_SIZE)
437 #define __MAX_DEFAULT_VECTOR_SIZE 10
444 template <
typename T,
unsigned int N = __MAX_DEFAULT_VECTOR_SIZE>
453 size_(static_cast<unsigned
int>(-1)),
495 memcpy(&data_[0], &vec.data_[0],
size() *
sizeof(
T));
503 for (
unsigned int i = 0; i <
size; i++) {
518 memcpy(&data_[0], &rhs.data_[0], size() *
sizeof(
T));
526 if (empty_ && vec.empty_) {
534 return memcmp(&data_[0], &vec.data_[0], size() *
sizeof(
T)) == 0 ?
true :
false;
537 operator T* () {
return data_; }
538 operator const T* ()
const {
return data_; }
552 return sizeof(
T) *
N;
590 initialized_ =
false;
604 i.initialized_ =
true;
613 i.index_ = vec.
size();
616 i.initialized_ =
true;
622 return ((vec_ == i.vec_) &&
623 (index_ == i.index_) &&
624 (initialized_ == i.initialized_));
629 return (!(*
this==i));
700 template <
typename Functor,
typename T>
711 template <
typename Func,
typename T>
714 static cl_int
get(Func
f, cl_uint
name, VECTOR_CLASS<T>*
param)
717 cl_int err =
f(
name, 0, NULL, &required);
722 T*
value = (
T*) alloca(required);
723 err =
f(
name, required, value, NULL);
728 param->assign(&value[0], &value[required/
sizeof(
T)]);
734 template <
typename Func>
749 binary_sizes = (
::size_t*)alloca(
sizeof(::
size_t)*nDevices);
755 values = (
char **) alloca(
sizeof(
char*)*nDevices);
756 for(cl_uint i = 0; i < nDevices; i++ )
758 if( binary_sizes[i] != 0 )
760 values[i]= (
char *)malloc(
sizeof(
char)*binary_sizes[i]);
767 err =
f(name,
sizeof(
char *)*nDevices, values, NULL);
772 param->assign(values,values+nDevices);
778 template <
typename Func>
784 cl_int err =
f(
name, 0, NULL, &required);
789 char*
value = (
char*) alloca(required);
790 err =
f(
name, required, value, NULL);
800 #define __GET_INFO_HELPER_WITH_RETAIN(CPP_TYPE) \
802 template <typename Func> \
803 struct GetInfoHelper<Func, CPP_TYPE> \
805 static cl_int get(Func f, cl_uint name, CPP_TYPE* param) \
807 cl_uint err = f(name, sizeof(CPP_TYPE), param, NULL); \
808 if (err != CL_SUCCESS) { \
812 return ReferenceHandler<CPP_TYPE::cl_type>::retain((*param)()); \
818 #define __PARAM_NAME_INFO_1_0(F) \
819 F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \
820 F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \
821 F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \
822 F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \
823 F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \
825 F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \
826 F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \
827 F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \
828 F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \
829 F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \
830 F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \
831 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \
832 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \
833 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \
834 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \
835 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \
836 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \
837 F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \
838 F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_bitfield) \
839 F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \
840 F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \
841 F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \
842 F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \
843 F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \
844 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \
845 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \
846 F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \
847 F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \
848 F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \
849 F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \
850 F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \
851 F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \
852 F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \
853 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \
854 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\
855 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \
856 F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \
857 F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \
858 F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \
859 F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \
860 F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \
861 F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \
862 F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \
863 F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \
864 F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \
865 F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \
866 F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \
867 F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \
868 F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \
869 F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \
870 F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \
871 F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \
872 F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \
873 F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \
874 F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \
876 F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \
877 F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS<Device>) \
878 F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS<cl_context_properties>) \
880 F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \
881 F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \
882 F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \
883 F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_uint) \
885 F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \
886 F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \
887 F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \
888 F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \
890 F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \
891 F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \
892 F(cl_mem_info, CL_MEM_SIZE, ::size_t) \
893 F(cl_mem_info, CL_MEM_HOST_PTR, void*) \
894 F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \
895 F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \
896 F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \
898 F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \
899 F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \
900 F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \
901 F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \
902 F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \
903 F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \
904 F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \
906 F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \
907 F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \
908 F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_addressing_mode) \
909 F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_filter_mode) \
910 F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_bool) \
912 F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \
913 F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \
914 F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \
915 F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS<cl_device_id>) \
916 F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \
917 F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \
918 F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS<char *>) \
920 F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \
921 F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \
922 F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \
924 F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \
925 F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \
926 F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \
927 F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \
928 F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \
930 F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \
931 F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \
932 F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \
934 F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \
935 F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \
936 F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \
937 F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties)
939 #if defined(CL_VERSION_1_1)
940 #define __PARAM_NAME_INFO_1_1(F) \
941 F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\
942 F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \
943 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \
944 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \
945 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \
946 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \
947 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \
948 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \
949 F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \
950 F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \
951 F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \
952 F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \
953 F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \
955 F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \
956 F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \
958 F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \
959 F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \
961 F(cl_event_info, CL_EVENT_CONTEXT, cl::Context)
962 #endif // CL_VERSION_1_1
964 #if defined(USE_CL_DEVICE_FISSION)
965 #define __PARAM_NAME_DEVICE_FISSION(F) \
966 F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \
967 F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS<cl_device_partition_property_ext>) \
968 F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS<cl_device_partition_property_ext>) \
969 F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \
970 F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS<cl_device_partition_property_ext>)
971 #endif // USE_CL_DEVICE_FISSION
973 template <
typename enum_type, cl_
int Name>
976 #define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \
979 struct param_traits<detail:: token,param_name> \
981 enum { value = param_name }; \
982 typedef T param_type; \
986 #if defined(CL_VERSION_1_1)
988 #endif // CL_VERSION_1_1
990 #if defined(USE_CL_DEVICE_FISSION)
992 #endif // USE_CL_DEVICE_FISSION
994 #ifdef CL_PLATFORM_ICD_SUFFIX_KHR
998 #ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD
1002 #ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV
1005 #ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV
1008 #ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV
1011 #ifdef CL_DEVICE_WARP_SIZE_NV
1014 #ifdef CL_DEVICE_GPU_OVERLAP_NV
1017 #ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV
1020 #ifdef CL_DEVICE_INTEGRATED_MEMORY_NV
1026 template <
typename Func,
typename T>
1033 template <
typename Func,
typename Arg0>
1039 {
return f_(
arg0_, param, size, value, size_ret); }
1042 template <
typename Func,
typename Arg0,
typename Arg1>
1048 {
return f_(
arg0_,
arg1_, param, size, value, size_ret); }
1051 template <
typename Func,
typename Arg0,
typename T>
1057 ::get(f0, name, param);
1060 template <
typename Func,
typename Arg0,
typename Arg1,
typename T>
1066 ::get(f0, name, param);
1069 template<
typename T>
1158 template <
typename T>
1215 #if defined(__CL_ENABLE_EXCEPTIONS)
1216 static inline cl_int errHandler (
1218 const char * errStr = NULL)
1221 throw Error(err, errStr);
1226 static inline cl_int errHandler (cl_int err,
const char * errStr = NULL)
1230 #endif // __CL_ENABLE_EXCEPTIONS
1248 #if 0 // Silence -Wdeprecated-copy warnings.
1286 template <
typename T>
1289 return detail::errHandler(
1291 __GET_DEVICE_INFO_ERR);
1294 template <cl_
int name>
typename
1307 #if defined(USE_CL_DEVICE_FISSION)
1308 cl_int createSubDevices(
1310 VECTOR_CLASS<Device>* devices)
1320 static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL;
1324 cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n);
1326 return detail::errHandler(err, __CREATE_SUB_DEVICES);
1329 cl_device_id*
ids = (cl_device_id*) alloca(n *
sizeof(cl_device_id));
1330 err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL);
1332 return detail::errHandler(err, __CREATE_SUB_DEVICES);
1335 devices->assign(&ids[0], &ids[n]);
1371 return detail::errHandler(
1373 __GET_PLATFORM_INFO_ERR);
1376 template <cl_
int name>
typename
1391 VECTOR_CLASS<Device>* devices)
const
1396 return detail::errHandler(err, __GET_DEVICE_IDS_ERR);
1399 cl_device_id* ids = (cl_device_id*) alloca(n *
sizeof(cl_device_id));
1402 return detail::errHandler(err, __GET_DEVICE_IDS_ERR);
1405 devices->assign(&ids[0], &ids[n]);
1409 #if defined(USE_DX_INTEROP)
1437 VECTOR_CLASS<Device>* devices)
const
1444 cl_uint num_entries,
1445 cl_device_id * devices,
1446 cl_uint* num_devices);
1448 static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL;
1452 cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(
1461 return detail::errHandler(err, __GET_DEVICE_IDS_ERR);
1464 cl_device_id* ids = (cl_device_id*) alloca(n *
sizeof(cl_device_id));
1465 err = pfn_clGetDeviceIDsFromD3D10KHR(
1474 return detail::errHandler(err, __GET_DEVICE_IDS_ERR);
1477 devices->assign(&ids[0], &ids[n]);
1483 VECTOR_CLASS<Platform>* platforms)
1488 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR);
1495 return detail::errHandler(err, __GET_PLATFORM_IDS_ERR);
1498 platforms->assign(&ids[0], &ids[n]);
1503 #if defined(CL_VERSION_1_2)
1504 static inline cl_int
1507 return ::clUnloadPlatformCompiler(platform);
1510 static inline cl_int
1521 const VECTOR_CLASS<Device>& devices,
1533 properties, (cl_uint) devices.size(),
1534 (cl_device_id*) &devices.front(),
1537 detail::errHandler(error, __CREATE_CONTEXT_ERR);
1556 properties, type, notifyFptr,
data, &error);
1558 detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR);
1584 template <
typename T>
1587 return detail::errHandler(
1589 __GET_CONTEXT_INFO_ERR);
1592 template <cl_
int name>
typename
1608 VECTOR_CLASS<ImageFormat>* formats)
const
1619 return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR);
1632 return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR);
1635 formats->assign(&value[0], &value[numEntries]);
1668 template <
typename T>
1671 return detail::errHandler(
1673 __GET_EVENT_INFO_ERR);
1676 template <cl_
int name>
typename
1689 template <
typename T>
1694 __GET_EVENT_PROFILE_INFO_ERR);
1697 template <cl_
int name>
typename
1703 cl_int
result = getProfilingInfo(
name, ¶m);
1712 return detail::errHandler(
1714 __WAIT_FOR_EVENTS_ERR);
1717 #if defined(CL_VERSION_1_1)
1720 void (
CL_CALLBACK * pfn_notify)(cl_event, cl_int,
void *),
1721 void * user_data = NULL)
1723 return detail::errHandler(
1724 ::clSetEventCallback(
1729 __SET_EVENT_CALLBACK_ERR);
1736 return detail::errHandler(
1738 (cl_uint) events.size(), (cl_event*)&events.front()),
1739 __WAIT_FOR_EVENTS_ERR);
1745 #if defined(CL_VERSION_1_1)
1749 class CE_API UserEvent :
public Event
1754 cl_int * err = NULL)
1757 object_ = ::clCreateUserEvent(
1761 detail::errHandler(error, __CREATE_USER_EVENT_ERR);
1767 UserEvent() : Event() { }
1769 UserEvent(
const UserEvent&
event) : Event(event) { }
1771 UserEvent& operator = (
const UserEvent& rhs)
1779 cl_int setStatus(cl_int status)
1781 return detail::errHandler(
1782 ::clSetUserEventStatus(object_,status),
1783 __SET_USER_EVENT_STATUS_ERR);
1788 inline static cl_int
1789 WaitForEvents(
const VECTOR_CLASS<Event>& events)
1791 return detail::errHandler(
1793 (cl_uint) events.size(), (cl_event*)&events.front()),
1794 __WAIT_FOR_EVENTS_ERR);
1823 template <
typename T>
1826 return detail::errHandler(
1828 __GET_MEM_OBJECT_INFO_ERR);
1831 template <cl_
int name>
typename
1844 #if defined(CL_VERSION_1_1)
1845 cl_int setDestructorCallback(
1847 void * user_data = NULL)
1849 return detail::errHandler(
1850 ::clSetMemObjectDestructorCallback(
1854 __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR);
1872 void* host_ptr = NULL,
1878 detail::errHandler(error, __CREATE_BUFFER_ERR);
1904 #if defined(CL_VERSION_1_1)
1907 cl_buffer_create_type buffer_create_type,
1908 const void * buffer_create_info,
1909 cl_int * err = NULL)
1913 result.
object_ = ::clCreateSubBuffer(
1920 detail::errHandler(error, __CREATE_SUBBUFFER_ERR);
1930 #if defined (USE_DX_INTEROP)
1931 class CE_API BufferD3D10 :
public Buffer
1936 cl_int* errcode_ret);
1941 ID3D10Buffer* bufobj,
1942 cl_int * err = NULL)
1944 static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL;
1948 object_ = pfn_clCreateFromD3D10BufferKHR(
1954 detail::errHandler(error, __CREATE_GL_BUFFER_ERR);
1960 BufferD3D10() : Buffer() { }
1962 BufferD3D10(
const BufferD3D10&
buffer) : Buffer(buffer) { }
1966 BufferD3D10& operator = (
const BufferD3D10& rhs)
1974 BufferD3D10& operator = (
const cl_mem& rhs)
1992 cl_int * err = NULL)
2001 detail::errHandler(error, __CREATE_GL_BUFFER_ERR);
2031 return detail::errHandler(
2033 __GET_GL_OBJECT_INFO_ERR);
2047 cl_int * err = NULL)
2056 detail::errHandler(error, __CREATE_GL_BUFFER_ERR);
2086 return detail::errHandler(
2088 __GET_GL_OBJECT_INFO_ERR);
2119 template <
typename T>
2122 return detail::errHandler(
2124 __GET_IMAGE_INFO_ERR);
2127 template <cl_
int name>
typename
2153 ::
size_t row_pitch = 0,
2154 void* host_ptr = NULL,
2158 #if defined(CL_VERSION_1_2)
2159 cl_image_desc image_desc;
2160 image_desc.image_width =
width;
2161 image_desc.image_height =
height;
2162 image_desc.image_row_pitch = row_pitch;
2164 object_ = ::clCreateImage(
2165 context(), flags, &format, &image_desc, host_ptr, &error);
2168 context(), flags,&format, width, height, row_pitch, host_ptr, &error);
2171 detail::errHandler(error, __CREATE_IMAGE2D_ERR);
2210 cl_int * err = NULL)
2213 #if defined(CL_VERSION_1_2)
2214 object_ = ::clCreateFromGLTexture(
2231 detail::errHandler(error, __CREATE_GL_BUFFER_ERR);
2271 ::
size_t row_pitch = 0,
2272 ::
size_t slice_pitch = 0,
2273 void* host_ptr = NULL,
2277 #if defined(CL_VERSION_1_2)
2278 cl_image_desc image_desc;
2280 image_desc.image_width =
width;
2281 image_desc.image_height =
height;
2282 image_desc.image_depth =
depth;
2283 image_desc.image_array_size = 1;
2284 image_desc.image_row_pitch = row_pitch;
2285 image_desc.image_slice_pitch = slice_pitch;
2286 image_desc.num_mip_levels = 0;
2287 image_desc.num_samples = 0;
2288 image_desc.buffer = NULL;
2290 object_ = ::clCreateImage(
2291 context(), flags, &format, &image_desc, host_ptr, &error);
2294 context(), flags, &format, width, height, depth, row_pitch,
2295 slice_pitch, host_ptr, &error);
2298 detail::errHandler(error, __CREATE_IMAGE3D_ERR);
2337 cl_int * err = NULL)
2340 #if defined(CL_VERSION_1_2)
2341 object_ = ::clCreateFromGLTexture(
2358 detail::errHandler(error, __CREATE_GL_BUFFER_ERR);
2408 detail::errHandler(error, __CREATE_SAMPLER_ERR);
2432 template <
typename T>
2435 return detail::errHandler(
2437 __GET_SAMPLER_INFO_ERR);
2440 template <cl_
int name>
typename
2467 cl_uint dimensions_;
2487 NDRange(::
size_t size0, ::
size_t size1, ::
size_t size2)
2495 operator const ::size_t*()
const {
return (const ::size_t*) sizes_; }
2499 static const NDRange NullRange;
2512 template <
typename T>
2515 static ::size_t
size(
const T&) {
return sizeof(
T); }
2529 inline LocalSpaceArg
2566 template <
typename T>
2569 return detail::errHandler(
2571 __GET_KERNEL_INFO_ERR);
2574 template <cl_
int name>
typename
2587 template <
typename T>
2591 return detail::errHandler(
2594 __GET_KERNEL_WORK_GROUP_INFO_ERR);
2597 template <cl_
int name>
typename
2603 cl_int
result = getWorkGroupInfo(device, name, ¶m);
2610 template <
typename T>
2613 return detail::errHandler(
2619 __SET_KERNEL_ARGS_ERR);
2624 return detail::errHandler(
2626 __SET_KERNEL_ARGS_ERR);
2649 typedef VECTOR_CLASS<std::pair<const void*, ::size_t> >
Binaries;
2650 typedef VECTOR_CLASS<std::pair<const char*, ::size_t> >
Sources;
2659 const ::size_t n = (
::size_t)sources.size();
2661 const char**
strings = (
const char**) alloca(n *
sizeof(
const char*));
2663 for (::
size_t i = 0; i <
n; ++i) {
2664 strings[i] = sources[(
int)i].
first;
2665 lengths[i] = sources[(
int)i].second;
2669 context(), (cl_uint)n, strings, lengths, &error);
2671 detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR);
2679 const VECTOR_CLASS<Device>& devices,
2680 const Binaries& binaries,
2681 VECTOR_CLASS<cl_int>* binaryStatus = NULL,
2685 const ::size_t n = binaries.size();
2687 const unsigned char** images = (
const unsigned char**) alloca(n *
sizeof(
const void*));
2689 for (::
size_t i = 0; i <
n; ++i) {
2690 images[i] = (
const unsigned char*)binaries[(
int)i].first;
2691 lengths[i] = binaries[(
int)i].second;
2695 context(), (cl_uint) devices.size(),
2696 (cl_device_id*)&devices.front(),
2697 lengths, images, binaryStatus != NULL
2698 ? (cl_int*) &binaryStatus->front()
2701 detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR);
2728 const VECTOR_CLASS<Device>& devices,
2729 const char* options = NULL,
2730 void (
CL_CALLBACK * notifyFptr)(cl_program,
void *) = NULL,
2731 void*
data = NULL)
const
2733 return detail::errHandler(
2738 (cl_device_id*)&devices.front(),
2742 __BUILD_PROGRAM_ERR);
2745 template <
typename T>
2748 return detail::errHandler(
2750 __GET_PROGRAM_INFO_ERR);
2753 template <cl_
int name>
typename
2766 template <
typename T>
2770 return detail::errHandler(
2773 __GET_PROGRAM_BUILD_INFO_ERR);
2776 template <cl_
int name>
typename
2782 cl_int
result = getBuildInfo(device,
name, ¶m);
2794 return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR);
2799 object_, numKernels, (
cl_kernel*) value, NULL);
2801 return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR);
2804 kernels->assign(&value[0], &value[numKernels]);
2810 inline VECTOR_CLASS<char *> cl::Program::getInfo<CL_PROGRAM_BINARIES>(cl_int* err)
const
2812 VECTOR_CLASS< ::size_t>
sizes = getInfo<CL_PROGRAM_BINARY_SIZES>();
2813 VECTOR_CLASS<char *> binaries;
2814 for (VECTOR_CLASS< ::size_t>::iterator
s = sizes.begin();
s != sizes.end(); ++
s)
2819 binaries.push_back(ptr);
2836 detail::errHandler(error, __CREATE_KERNEL_ERR);
2858 context(), device(), properties, &error);
2860 detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);
2886 template <
typename T>
2889 return detail::errHandler(
2892 __GET_COMMAND_QUEUE_INFO_ERR);
2895 template <cl_
int name>
typename
2914 const VECTOR_CLASS<Event>* events = NULL,
2918 cl_int err = detail::errHandler(
2920 object_,
buffer(), blocking, offset, size,
2922 (events != NULL) ? (cl_uint) events->
size() : 0,
2923 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
2924 (
event != NULL) ? &tmp : NULL),
2925 __ENQUEUE_READ_BUFFER_ERR);
2939 const VECTOR_CLASS<Event>* events = NULL,
2943 cl_int err = detail::errHandler(
2945 object_,
buffer(), blocking, offset, size,
2947 (events != NULL) ? (cl_uint) events->
size() : 0,
2948 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
2949 (
event != NULL) ? &tmp : NULL),
2950 __ENQUEUE_WRITE_BUFFER_ERR);
2961 ::
size_t src_offset,
2962 ::
size_t dst_offset,
2964 const VECTOR_CLASS<Event>* events = NULL,
2968 cl_int err = detail::errHandler(
2970 object_,
src(),
dst(), src_offset, dst_offset, size,
2971 (events != NULL) ? (cl_uint) events->
size() : 0,
2972 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
2973 (
event != NULL) ? &tmp : NULL),
2974 __ENQEUE_COPY_BUFFER_ERR);
2982 #if defined(CL_VERSION_1_1)
2983 cl_int enqueueReadBufferRect(
2989 ::
size_t buffer_row_pitch,
2990 ::
size_t buffer_slice_pitch,
2991 ::
size_t host_row_pitch,
2992 ::
size_t host_slice_pitch,
2994 const VECTOR_CLASS<Event>* events = NULL,
2998 cl_int err = detail::errHandler(
2999 ::clEnqueueReadBufferRect(
3003 (const ::size_t *)buffer_offset,
3004 (const ::size_t *)host_offset,
3005 (const ::size_t *)region,
3011 (events != NULL) ? (cl_uint) events->
size() : 0,
3012 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3013 (
event != NULL) ? &tmp : NULL),
3014 __ENQUEUE_READ_BUFFER_RECT_ERR);
3023 cl_int enqueueWriteBufferRect(
3024 const Buffer& buffer,
3026 const size_t<3>& buffer_offset,
3027 const size_t<3>& host_offset,
3028 const size_t<3>& region,
3029 ::
size_t buffer_row_pitch,
3030 ::
size_t buffer_slice_pitch,
3031 ::
size_t host_row_pitch,
3032 ::
size_t host_slice_pitch,
3034 const VECTOR_CLASS<Event>* events = NULL,
3035 Event*
event = NULL)
const
3038 cl_int err = detail::errHandler(
3039 ::clEnqueueWriteBufferRect(
3043 (const ::size_t *)buffer_offset,
3044 (const ::size_t *)host_offset,
3045 (const ::size_t *)region,
3051 (events != NULL) ? (cl_uint) events->size() : 0,
3052 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3053 (
event != NULL) ? &tmp : NULL),
3054 __ENQUEUE_WRITE_BUFFER_RECT_ERR);
3062 cl_int enqueueCopyBufferRect(
3065 const size_t<3>& src_origin,
3066 const size_t<3>& dst_origin,
3067 const size_t<3>& region,
3068 ::
size_t src_row_pitch,
3069 ::
size_t src_slice_pitch,
3070 ::
size_t dst_row_pitch,
3071 ::
size_t dst_slice_pitch,
3072 const VECTOR_CLASS<Event>* events = NULL,
3073 Event*
event = NULL)
const
3076 cl_int err = detail::errHandler(
3077 ::clEnqueueCopyBufferRect(
3081 (const ::size_t *)src_origin,
3082 (const ::size_t *)dst_origin,
3083 (const ::size_t *)region,
3088 (events != NULL) ? (cl_uint) events->size() : 0,
3089 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3090 (
event != NULL) ? &tmp : NULL),
3091 __ENQEUE_COPY_BUFFER_RECT_ERR);
3106 ::
size_t slice_pitch,
3108 const VECTOR_CLASS<Event>* events = NULL,
3112 cl_int err = detail::errHandler(
3114 object_,
image(), blocking, (const ::size_t *) origin,
3115 (const ::size_t *) region, row_pitch, slice_pitch, ptr,
3116 (events != NULL) ? (cl_uint) events->
size() : 0,
3117 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3118 (
event != NULL) ? &tmp : NULL),
3119 __ENQUEUE_READ_IMAGE_ERR);
3133 ::
size_t slice_pitch,
3135 const VECTOR_CLASS<Event>* events = NULL,
3139 cl_int err = detail::errHandler(
3141 object_,
image(), blocking, (const ::size_t *) origin,
3142 (const ::size_t *) region, row_pitch, slice_pitch, ptr,
3143 (events != NULL) ? (cl_uint) events->
size() : 0,
3144 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3145 (
event != NULL) ? &tmp : NULL),
3146 __ENQUEUE_WRITE_IMAGE_ERR);
3160 const VECTOR_CLASS<Event>* events = NULL,
3164 cl_int err = detail::errHandler(
3166 object_,
src(),
dst(), (const ::size_t *) src_origin,
3167 (const ::size_t *)dst_origin, (const ::size_t *) region,
3168 (events != NULL) ? (cl_uint) events->
size() : 0,
3169 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3170 (
event != NULL) ? &tmp : NULL),
3171 __ENQUEUE_COPY_IMAGE_ERR);
3184 ::
size_t dst_offset,
3185 const VECTOR_CLASS<Event>* events = NULL,
3189 cl_int err = detail::errHandler(
3191 object_,
src(),
dst(), (const ::size_t *) src_origin,
3192 (const ::size_t *) region, dst_offset,
3193 (events != NULL) ? (cl_uint) events->
size() : 0,
3194 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3195 (
event != NULL) ? &tmp : NULL),
3196 __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR);
3207 ::
size_t src_offset,
3210 const VECTOR_CLASS<Event>* events = NULL,
3214 cl_int err = detail::errHandler(
3216 object_,
src(),
dst(), src_offset,
3217 (const ::size_t *) dst_origin, (const ::size_t *) region,
3218 (events != NULL) ? (cl_uint) events->
size() : 0,
3219 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3220 (
event != NULL) ? &tmp : NULL),
3221 __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR);
3235 const VECTOR_CLASS<Event>* events = NULL,
3237 cl_int* err = NULL)
const
3241 object_,
buffer(), blocking, flags, offset, size,
3242 (events != NULL) ? (cl_uint) events->
size() : 0,
3243 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3247 detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);
3255 const Image& buffer,
3260 ::
size_t * row_pitch,
3261 ::
size_t * slice_pitch,
3262 const VECTOR_CLASS<Event>* events = NULL,
3264 cl_int* err = NULL)
const
3268 object_,
buffer(), blocking, flags,
3269 (const ::size_t *) origin, (const ::size_t *) region,
3270 row_pitch, slice_pitch,
3271 (events != NULL) ? (cl_uint) events->
size() : 0,
3272 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3276 detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR);
3284 const Memory& memory,
3286 const VECTOR_CLASS<Event>* events = NULL,
3290 cl_int err = detail::errHandler(
3292 object_, memory(), mapped_ptr,
3293 (events != NULL) ? (cl_uint) events->size() : 0,
3294 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3295 (
event != NULL) ? &tmp : NULL),
3296 __ENQUEUE_UNMAP_MEM_OBJECT_ERR);
3309 const VECTOR_CLASS<Event>* events = NULL,
3313 cl_int err = detail::errHandler(
3315 object_, kernel(), (cl_uint) global.
dimensions(),
3316 offset.
dimensions() != 0 ? (const ::size_t*) offset : NULL,
3317 (const ::size_t*) global,
3318 local.
dimensions() != 0 ? (const ::size_t*) local : NULL,
3319 (events != NULL) ? (cl_uint) events->size() : 0,
3320 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3321 (
event != NULL) ? &tmp : NULL),
3322 __ENQUEUE_NDRANGE_KERNEL_ERR);
3332 const VECTOR_CLASS<Event>* events = NULL,
3336 cl_int err = detail::errHandler(
3339 (events != NULL) ? (cl_uint) events->size() : 0,
3340 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3341 (
event != NULL) ? &tmp : NULL),
3342 __ENQUEUE_TASK_ERR);
3354 void (*userFptr)(
void *),
3358 std::pair<void*, ::size_t>
args,
3359 const VECTOR_CLASS<Memory>* mem_objects = NULL,
3360 const VECTOR_CLASS<const void*>* mem_locs = NULL,
3361 const VECTOR_CLASS<Event>* events = NULL,
3364 cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0)
3365 ? (
cl_mem*) alloca(mem_objects->size() *
sizeof(
cl_mem))
3369 for (
unsigned int i = 0; i < mem_objects->size(); i++) {
3370 mems[i] = ((*mem_objects)[i])();
3375 cl_int err = detail::errHandler(
3377 object_, userFptr, args.first, args.second,
3378 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0,
3380 (mem_locs != NULL) ? (
const void **) &mem_locs->front() : NULL,
3381 (events != NULL) ? (cl_uint) events->size() : 0,
3382 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3383 (
event != NULL) ? &tmp : NULL),
3384 __ENQUEUE_NATIVE_KERNEL);
3392 #if defined(CL_VERSION_1_2)
3393 cl_int enqueueMarkerWithWaitList(
3394 const VECTOR_CLASS<Event>& events,
Event*
event = NULL)
const
3396 return detail::errHandler(
3397 ::clEnqueueMarkerWithWaitList(
3399 (cl_uint) events.size(),
3400 (
const cl_event*) &events.front(),
3402 __ENQUEUE_MARKER_WITH_WAIT_LIST_ERR);
3407 return detail::errHandler(
3409 __ENQUEUE_MARKER_ERR);
3414 return detail::errHandler(
3417 (cl_uint) events.size(),
3418 (
const cl_event*) &events.front()),
3419 __ENQUEUE_WAIT_FOR_EVENTS_ERR);
3424 const VECTOR_CLASS<Memory>* mem_objects = NULL,
3425 const VECTOR_CLASS<Event>* events = NULL,
3429 cl_int err = detail::errHandler(
3432 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0,
3433 (mem_objects != NULL) ? (
const cl_mem *) &mem_objects->front(): NULL,
3434 (events != NULL) ? (cl_uint) events->size() : 0,
3435 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3436 (
event != NULL) ? &tmp : NULL),
3437 __ENQUEUE_ACQUIRE_GL_ERR);
3446 const VECTOR_CLASS<Memory>* mem_objects = NULL,
3447 const VECTOR_CLASS<Event>* events = NULL,
3451 cl_int err = detail::errHandler(
3454 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0,
3455 (mem_objects != NULL) ? (
const cl_mem *) &mem_objects->front(): NULL,
3456 (events != NULL) ? (cl_uint) events->size() : 0,
3457 (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL,
3458 (
event != NULL) ? &tmp : NULL),
3459 __ENQUEUE_RELEASE_GL_ERR);
3467 #if defined (USE_DX_INTEROP)
3470 const cl_mem* mem_objects, cl_uint num_events_in_wait_list,
3471 const cl_event* event_wait_list, cl_event*
event);
3474 const cl_mem* mem_objects, cl_uint num_events_in_wait_list,
3475 const cl_event* event_wait_list, cl_event*
event);
3477 cl_int enqueueAcquireD3D10Objects(
3478 const VECTOR_CLASS<Memory>* mem_objects = NULL,
3479 const VECTOR_CLASS<Event>* events = NULL,
3482 static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL;
3486 cl_int err = detail::errHandler(
3487 pfn_clEnqueueAcquireD3D10ObjectsKHR(
3489 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0,
3490 (mem_objects != NULL) ? (
const cl_mem *) &mem_objects->front(): NULL,
3491 (events != NULL) ? (cl_uint) events->
size() : 0,
3492 (events != NULL) ? (cl_event*) &events->front() : NULL,
3493 (
event != NULL) ? &tmp : NULL),
3494 __ENQUEUE_ACQUIRE_GL_ERR);
3502 cl_int enqueueReleaseD3D10Objects(
3507 static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL;
3511 cl_int err = detail::errHandler(
3512 pfn_clEnqueueReleaseD3D10ObjectsKHR(
3514 (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0,
3515 (mem_objects != NULL) ? (
const cl_mem *) &mem_objects->front(): NULL,
3516 (events != NULL) ? (cl_uint) events->size() : 0,
3517 (events != NULL) ? (cl_event*) &events->front() : NULL,
3518 (
event != NULL) ? &tmp : NULL),
3519 __ENQUEUE_RELEASE_GL_ERR);
3528 #if defined(CL_VERSION_1_2)
3529 cl_int enqueueBarrierWithWaitList(
3530 const VECTOR_CLASS<Event>& events,
Event*
event = NULL)
const
3532 return detail::errHandler(
3533 ::clEnqueueBarrierWithWaitList(
3535 (cl_uint) events.size(),
3536 (
const cl_event*) &events.front(),
3538 __ENQUEUE_BARRIER_ERR);
3543 return detail::errHandler(
3545 __ENQUEUE_BARRIER_ERR);
3551 return detail::errHandler(::
clFlush(object_), __FLUSH_ERR);
3556 return detail::errHandler(::
clFinish(object_), __FINISH_ERR);
3570 const std::vector<cl::Event>* events,
3615 inline Event operator()(
const VECTOR_CLASS<Event>* events = NULL);
3617 template<
typename A1>
3618 inline Event operator()(
3620 const VECTOR_CLASS<Event>* events = NULL);
3622 template<
class A1,
class A2>
3623 inline Event operator()(
3626 const VECTOR_CLASS<Event>* events = NULL);
3628 template<
class A1,
class A2,
class A3>
3629 inline Event operator()(
3633 const VECTOR_CLASS<Event>* events = NULL);
3635 template<
class A1,
class A2,
class A3,
class A4>
3636 inline Event operator()(
3641 const VECTOR_CLASS<Event>* events = NULL);
3643 template<
class A1,
class A2,
class A3,
class A4,
class A5>
3644 inline Event operator()(
3650 const VECTOR_CLASS<Event>* events = NULL);
3652 template<
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
3653 inline Event operator()(
3660 const VECTOR_CLASS<Event>* events = NULL);
3662 template<
class A1,
class A2,
class A3,
class A4,
3663 class A5,
class A6,
class A7>
3664 inline Event operator()(
3672 const VECTOR_CLASS<Event>* events = NULL);
3674 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3675 class A6,
class A7,
class A8>
3676 inline Event operator()(
3685 const VECTOR_CLASS<Event>* events = NULL);
3687 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3688 class A6,
class A7,
class A8,
class A9>
3689 inline Event operator()(
3699 const VECTOR_CLASS<Event>* events = NULL);
3701 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3702 class A6,
class A7,
class A8,
class A9,
class A10>
3703 inline Event operator()(
3714 const VECTOR_CLASS<Event>* events = NULL);
3716 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3717 class A6,
class A7,
class A8,
class A9,
class A10,
3719 inline Event operator()(
3731 const VECTOR_CLASS<Event>* events = NULL);
3733 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3734 class A6,
class A7,
class A8,
class A9,
class A10,
3735 class A11,
class A12>
3736 inline Event operator()(
3749 const VECTOR_CLASS<Event>* events = NULL);
3751 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3752 class A6,
class A7,
class A8,
class A9,
class A10,
3753 class A11,
class A12,
class A13>
3754 inline Event operator()(
3768 const VECTOR_CLASS<Event>* events = NULL);
3770 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3771 class A6,
class A7,
class A8,
class A9,
class A10,
3772 class A11,
class A12,
class A13,
class A14>
3773 inline Event operator()(
3788 const VECTOR_CLASS<Event>* events = NULL);
3790 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3791 class A6,
class A7,
class A8,
class A9,
class A10,
3792 class A11,
class A12,
class A13,
class A14,
class A15>
3793 inline Event operator()(
3809 const VECTOR_CLASS<Event>* events = NULL);
3811 template<
class A1,
class A2,
class A3,
class A4,
class A5,
3812 class A6,
class A7,
class A8,
class A9,
class A10,
3813 class A11,
class A12,
class A13,
class A14,
class A15,
3815 inline Event operator()(
3832 const VECTOR_CLASS<Event>* events = NULL);
3858 kernel_ = rhs.kernel_;
3859 queue_ = rhs.queue_;
3860 offset_ = rhs.offset_;
3861 global_ = rhs.global_;
3862 local_ = rhs.local_;
3868 kernel_(rhs.kernel_),
3870 offset_(rhs.offset_),
3871 global_(rhs.global_),
3891 template<
typename A1>
3894 const VECTOR_CLASS<Event>* )
3911 template<
typename A1,
typename A2>
3915 const VECTOR_CLASS<Event>* )
3933 template<
typename A1,
typename A2,
typename A3>
3938 const VECTOR_CLASS<Event>* )
3957 template<
typename A1,
typename A2,
typename A3,
typename A4>
3963 const VECTOR_CLASS<Event>* )
3983 template<
typename A1,
typename A2,
typename A3,
typename A4,
typename A5>
3990 const VECTOR_CLASS<Event>* )
4011 template<
typename A1,
typename A2,
typename A3,
typename A4,
typename A5,
4020 const VECTOR_CLASS<Event>* )
4042 template<
typename A1,
typename A2,
typename A3,
typename A4,
4043 typename A5,
typename A6,
typename A7>
4052 const VECTOR_CLASS<Event>* )
4075 template<
typename A1,
typename A2,
typename A3,
typename A4,
typename A5,
4076 typename A6,
typename A7,
typename A8>
4086 const VECTOR_CLASS<Event>* )
4110 template<
typename A1,
typename A2,
typename A3,
typename A4,
typename A5,
4111 typename A6,
typename A7,
typename A8,
typename A9>
4122 const VECTOR_CLASS<Event>* )
4147 template<
typename A1,
typename A2,
typename A3,
typename A4,
typename A5,
4148 typename A6,
typename A7,
typename A8,
typename A9,
typename A10>
4160 const VECTOR_CLASS<Event>* )
4186 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4187 class A6,
class A7,
class A8,
class A9,
class A10,
4201 const VECTOR_CLASS<Event>* )
4228 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4229 class A6,
class A7,
class A8,
class A9,
class A10,
4230 class A11,
class A12>
4244 const VECTOR_CLASS<Event>* )
4272 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4273 class A6,
class A7,
class A8,
class A9,
class A10,
4274 class A11,
class A12,
class A13>
4289 const VECTOR_CLASS<Event>* )
4318 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4319 class A6,
class A7,
class A8,
class A9,
class A10,
4320 class A11,
class A12,
class A13,
class A14>
4336 const VECTOR_CLASS<Event>* )
4366 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4367 class A6,
class A7,
class A8,
class A9,
class A10,
4368 class A11,
class A12,
class A13,
class A14,
class A15>
4385 const VECTOR_CLASS<Event>* )
4416 template<
class A1,
class A2,
class A3,
class A4,
class A5,
4417 class A6,
class A7,
class A8,
class A9,
class A10,
4418 class A11,
class A12,
class A13,
class A14,
class A15,
4437 const VECTOR_CLASS<Event>* )
4469 #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS)
4470 #undef __GET_DEVICE_INFO_ERR
4471 #undef __GET_PLATFORM_INFO_ERR
4472 #undef __GET_DEVICE_IDS_ERR
4473 #undef __GET_CONTEXT_INFO_ERR
4474 #undef __GET_EVENT_INFO_ERR
4475 #undef __GET_EVENT_PROFILE_INFO_ERR
4476 #undef __GET_MEM_OBJECT_INFO_ERR
4477 #undef __GET_IMAGE_INFO_ERR
4478 #undef __GET_SAMPLER_INFO_ERR
4479 #undef __GET_KERNEL_INFO_ERR
4480 #undef __GET_KERNEL_WORK_GROUP_INFO_ERR
4481 #undef __GET_PROGRAM_INFO_ERR
4482 #undef __GET_PROGRAM_BUILD_INFO_ERR
4483 #undef __GET_COMMAND_QUEUE_INFO_ERR
4485 #undef __CREATE_CONTEXT_ERR
4486 #undef __CREATE_CONTEXT_FROM_TYPE_ERR
4487 #undef __GET_SUPPORTED_IMAGE_FORMATS_ERR
4489 #undef __CREATE_BUFFER_ERR
4490 #undef __CREATE_SUBBUFFER_ERR
4491 #undef __CREATE_IMAGE2D_ERR
4492 #undef __CREATE_IMAGE3D_ERR
4493 #undef __CREATE_SAMPLER_ERR
4494 #undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR
4496 #undef __CREATE_USER_EVENT_ERR
4497 #undef __SET_USER_EVENT_STATUS_ERR
4498 #undef __SET_EVENT_CALLBACK_ERR
4500 #undef __WAIT_FOR_EVENTS_ERR
4502 #undef __CREATE_KERNEL_ERR
4503 #undef __SET_KERNEL_ARGS_ERR
4504 #undef __CREATE_PROGRAM_WITH_SOURCE_ERR
4505 #undef __CREATE_PROGRAM_WITH_BINARY_ERR
4506 #undef __BUILD_PROGRAM_ERR
4507 #undef __CREATE_KERNELS_IN_PROGRAM_ERR
4509 #undef __CREATE_COMMAND_QUEUE_ERR
4510 #undef __SET_COMMAND_QUEUE_PROPERTY_ERR
4511 #undef __ENQUEUE_READ_BUFFER_ERR
4512 #undef __ENQUEUE_WRITE_BUFFER_ERR
4513 #undef __ENQUEUE_READ_BUFFER_RECT_ERR
4514 #undef __ENQUEUE_WRITE_BUFFER_RECT_ERR
4515 #undef __ENQEUE_COPY_BUFFER_ERR
4516 #undef __ENQEUE_COPY_BUFFER_RECT_ERR
4517 #undef __ENQUEUE_READ_IMAGE_ERR
4518 #undef __ENQUEUE_WRITE_IMAGE_ERR
4519 #undef __ENQUEUE_COPY_IMAGE_ERR
4520 #undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR
4521 #undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR
4522 #undef __ENQUEUE_MAP_BUFFER_ERR
4523 #undef __ENQUEUE_MAP_IMAGE_ERR
4524 #undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR
4525 #undef __ENQUEUE_NDRANGE_KERNEL_ERR
4526 #undef __ENQUEUE_TASK_ERR
4527 #undef __ENQUEUE_NATIVE_KERNEL
4529 #undef __UNLOAD_COMPILER_ERR
4530 #endif //__CL_USER_OVERRIDE_ERROR_STRINGS
4532 #undef __GET_INFO_HELPER_WITH_RETAIN
4535 #undef __INIT_CL_EXT_FCN_PTR
4536 #undef __CREATE_SUB_DEVICES
4538 #if defined(USE_CL_DEVICE_FISSION)
4539 #undef __PARAM_NAME_DEVICE_FISSION
4540 #endif // USE_CL_DEVICE_FISSION
struct _cl_device_id * cl_device_id
unsigned int capacity() const
Image2D(const Context &context, cl_mem_flags flags, ImageFormat format,::size_t width,::size_t height,::size_t row_pitch=0, void *host_ptr=NULL, cl_int *err=NULL)
Image3D(const cl_mem &image3D)
const T & front(void) const
void push_back(const T &x)
CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo(cl_event, cl_profiling_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
#define __GET_INFO_HELPER_WITH_RETAIN(CPP_TYPE)
CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event) CL_API_SUFFIX__VERSION_1_0
Image2D(const cl_mem &image2D)
detail::param_traits< detail::cl_context_info, name >::param_type getInfo(cl_int *err=NULL) const
struct _cl_context * cl_context
Memory & operator=(const Memory &rhs)
NDRange(::size_t size0,::size_t size1,::size_t size2)
static cl_int retain(cl_sampler sampler)
CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel(cl_program, const char *, cl_int *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
GLuint GLdouble GLdouble GLint GLint order
KernelFunctor & operator=(const KernelFunctor &rhs)
CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel) CL_API_SUFFIX__VERSION_1_0
::size_t length(void) const
Memory(const Memory &memory)
CL_API_ENTRY void *CL_API_CALL clEnqueueMapImage(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t *, const size_t *, size_t *, size_t *, cl_uint, const cl_event *, cl_event *, cl_int *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clGetGLObjectInfo(cl_mem, cl_gl_object_type *, cl_GLuint *) CL_API_SUFFIX__VERSION_1_0
cl_uint cl_mem_object_type
cl_uint cl_program_build_info
cl_ulong cl_device_partition_property_ext
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
Image & operator=(const Image &rhs)
#define CL_MEM_OBJECT_IMAGE3D
cl_uint cl_addressing_mode
Context(cl_device_type type, cl_context_properties *properties=NULL, void(CL_CALLBACK *notifyFptr)(const char *, const void *,::size_t, void *)=NULL, void *data=NULL, cl_int *err=NULL)
static iterator end(vector< T, N > &vec)
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clEnqueueMarker(cl_command_queue, cl_event *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithSource(cl_context, cl_uint, const char **, const size_t *, cl_int *) CL_API_SUFFIX__VERSION_1_0
static cl_int release(cl_kernel kernel)
static cl_int retain(cl_command_queue queue)
CommandQueue(const CommandQueue &commandQueue)
void * enqueueMapImage(const Image &buffer, cl_bool blocking, cl_map_flags flags, const size_t< 3 > &origin, const size_t< 3 > ®ion,::size_t *row_pitch,::size_t *slice_pitch, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL, cl_int *err=NULL) const
cl_int getBuildInfo(const Device &device, cl_program_build_info name, T *param) const
KernelFunctor(const Kernel &kernel, const CommandQueue &queue, const NDRange &offset, const NDRange &global, const NDRange &local)
cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, VECTOR_CLASS< ImageFormat > *formats) const
CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo(cl_device_id, cl_device_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
cl_int getInfo(cl_mem_info name, T *param) const
CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem) CL_API_SUFFIX__VERSION_1_0
detail::param_traits< detail::cl_device_info, name >::param_type getInfo(cl_int *err=NULL) const
Local address raper for use with Kernel::setArg.
CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program) CL_API_SUFFIX__VERSION_1_0
detail::param_traits< detail::cl_kernel_work_group_info, name >::param_type getWorkGroupInfo(const Device &device, cl_int *err=NULL) const
BufferGL(const BufferGL &buffer)
static cl_int release(cl_mem memory)
void * enqueueMapBuffer(const Buffer &buffer, cl_bool blocking, cl_map_flags flags,::size_t offset,::size_t size, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL, cl_int *err=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler) CL_API_SUFFIX__VERSION_1_0
LocalSpaceArg __local(::size_t size)
#define CL_PLATFORM_ICD_SUFFIX_KHR
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
cl_int getInfo(cl_program_info name, T *param) const
::size_t size(const LocalSpaceArg &value)
Memory interface for cl_mem.
CommandQueue(const cl_command_queue &commandQueue)
cl_int getInfo(cl_sampler_info name, T *param) const
GLenum GLsizei GLenum GLenum const void * image
cl_int enqueueWaitForEvents(const VECTOR_CLASS< Event > &events) const
Program(const cl_program &program)
CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context, cl_mem_flags, size_t, void *, cl_int *) CL_API_SUFFIX__VERSION_1_0
detail::param_traits< detail::cl_program_info, name >::param_type getInfo(cl_int *err=NULL) const
Image3D(const Context &context, cl_mem_flags flags, ImageFormat format,::size_t width,::size_t height,::size_t depth,::size_t row_pitch=0,::size_t slice_pitch=0, void *host_ptr=NULL, cl_int *err=NULL)
Kernel(const Kernel &kernel)
Image3D(const Image3D &image3D)
cl_int enqueueWriteBuffer(const Buffer &buffer, cl_bool blocking,::size_t offset,::size_t size, const void *ptr, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
static cl_int retain(cl_device_id)
Buffer(const Context &context, cl_mem_flags flags,::size_t size, void *host_ptr=NULL, cl_int *err=NULL)
CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context) CL_API_SUFFIX__VERSION_1_0
GLbitfield GLuint program
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage2D(cl_context, cl_mem_flags, const cl_image_format *, size_t, size_t, size_t, void *, cl_int *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
GLuint const GLchar * name
CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue, cl_kernel, cl_uint, const size_t *, const size_t *, const size_t *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
cl_int enqueueCopyBuffer(const Buffer &src, const Buffer &dst,::size_t src_offset,::size_t dst_offset,::size_t size, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
vector(unsigned int size, const T &val=T())
cl_uint cl_d3d10_device_source_khr
CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLRenderbuffer(cl_context, cl_mem_flags, cl_GLuint, cl_int *) CL_API_SUFFIX__VERSION_1_0
#define CL_PROGRAM_BINARIES
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage3D(cl_context, cl_mem_flags, const cl_image_format *, size_t, size_t, size_t, size_t, size_t, void *, cl_int *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
VECTOR_CLASS< std::pair< const void *,::size_t > > Binaries
Image3D & operator=(const Image3D &rhs)
CL_API_ENTRY cl_int CL_API_CALL clBuildProgram(cl_program, cl_uint, const cl_device_id *, const char *, void(CL_CALLBACK *)(cl_program, void *), void *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary(cl_context, cl_uint, const cl_device_id *, const size_t *, const unsigned char **, cl_int *, cl_int *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program) CL_API_SUFFIX__VERSION_1_0
#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV
CommandQueue(const Context &context, const Device &device, cl_command_queue_properties properties=0, cl_int *err=NULL)
cl_int enqueueCopyImage(const Image &src, const Image &dst, const size_t< 3 > &src_origin, const size_t< 3 > &dst_origin, const size_t< 3 > ®ion, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
string(char *str,::size_t size)
CL_API_ENTRY cl_int CL_API_CALL clGetEventInfo(cl_event, cl_event_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
vector(const vector< T, N > &vec)
Buffer(const Buffer &buffer)
static cl_int release(cl_sampler sampler)
bool operator!=(iterator i)
static cl_int release(cl_program program)
CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType(const cl_context_properties *, cl_device_type, void(CL_CALLBACK *)(const char *, const void *, size_t, void *), void *, cl_int *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clGetProgramBuildInfo(cl_program, cl_device_id, cl_program_build_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
struct _cl_platform_id * cl_platform_id
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
Image(const cl_mem &image)
bool operator==(vector< T, N > &vec)
GLenum GLsizei GLsizei GLint * values
Device(const Device &device)
cl_int getInfo(cl_event_info name, T *param) const
#define CL_DEVICE_INTEGRATED_MEMORY_NV
#define CL_DEVICE_REGISTERS_PER_BLOCK_NV
GLint GLint GLsizei GLsizei GLsizei depth
cl_int setArg(cl_uint index,::size_t size, void *argPtr)
cl_uint cl_command_queue_info
Event interface for cl_event.
Program(const Context &context, const Sources &sources, cl_int *err=NULL)
CL_API_ENTRY cl_int CL_API_CALL clGetCommandQueueInfo(cl_command_queue, cl_command_queue_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
Buffer & operator=(const Buffer &rhs)
cl_int getImageInfo(cl_image_info name, T *param) const
Program(const Context &context, const VECTOR_CLASS< Device > &devices, const Binaries &binaries, VECTOR_CLASS< cl_int > *binaryStatus=NULL, cl_int *err=NULL)
string(const string &rhs)
cl_int getObjectInfo(cl_gl_object_type *type, GLuint *gl_object_name)
Image3DGL(const Image3DGL &image)
string & operator=(const string &rhs)
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clEnqueueWaitForEvents(cl_command_queue, cl_uint, const cl_event *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo(cl_context, cl_context_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
static cl_int retain(cl_program program)
Image2DGL(const Context &context, cl_mem_flags flags, GLenum target, GLint miplevel, GLuint texobj, cl_int *err=NULL)
BufferGL(const Context &context, cl_mem_flags flags, GLuint bufobj, cl_int *err=NULL)
cl_uint cl_d3d10_device_set_khr
cl_bitfield cl_device_type
const T & back(void) const
CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer(cl_command_queue, cl_mem, cl_mem, const size_t *, const size_t *, size_t, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
cl_int enqueueWriteImage(const Image &image, cl_bool blocking, const size_t< 3 > &origin, const size_t< 3 > ®ion,::size_t row_pitch,::size_t slice_pitch, void *ptr, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
static cl_int retain(cl_mem memory)
CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLBuffer(cl_context, cl_mem_flags, cl_GLuint, int *) CL_API_SUFFIX__VERSION_1_0
cl_int enqueueCopyBufferToImage(const Buffer &src, const Image &dst,::size_t src_offset, const size_t< 3 > &dst_origin, const size_t< 3 > ®ion, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue) CL_API_SUFFIX__VERSION_1_0
static cl_int retain(cl_kernel kernel)
CL_API_ENTRY void *CL_API_CALL clEnqueueMapBuffer(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event *, cl_event *, cl_int *) CL_API_SUFFIX__VERSION_1_0
static cl_int get(Functor f, cl_uint name, T *param)
CL_API_ENTRY cl_int CL_API_CALL clEnqueueUnmapMemObject(cl_command_queue, cl_mem, void *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
detail::param_traits< detail::cl_event_info, name >::param_type getInfo(cl_int *err=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue) CL_API_SUFFIX__VERSION_1_0
struct _cl_kernel * cl_kernel
cl_int getProfilingInfo(cl_profiling_info name, T *param) const
detail::param_traits< detail::cl_mem_info, name >::param_type getInfo(cl_int *err=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs(cl_platform_id, cl_device_type, cl_uint, cl_device_id *, cl_uint *) CL_API_SUFFIX__VERSION_1_0
cl_bitfield cl_command_queue_properties
CL_API_ENTRY cl_int CL_API_CALL clGetImageInfo(cl_mem, cl_image_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
GLsizei const GLchar *const * string
T & operator[](int index)
cl_int enqueueBarrier() const
BufferRenderGL(const BufferGL &buffer)
cl_int operator()(cl_uint param,::size_t size, void *value,::size_t *size_ret)
detail::param_traits< detail::cl_image_info, name >::param_type getImageInfo(cl_int *err=NULL) const
BufferRenderGL(const Context &context, cl_mem_flags flags, GLuint bufobj, cl_int *err=NULL)
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
#define CL_PROGRAM_BINARY_SIZES
Sampler(const cl_sampler &sampler)
CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT(cl_device_id, const cl_device_partition_property_ext *, cl_uint, cl_device_id *, cl_uint *) CL_EXT_SUFFIX__VERSION_1_1
Image2D(const Image2D &image2D)
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
#define CL_INVALID_PLATFORM
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL clCreateSampler(cl_context, cl_bool, cl_addressing_mode, cl_filter_mode, cl_int *) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED
Device(const cl_device_id &device)
Image2DGL(const cl_mem &image)
cl_int getWorkGroupInfo(const Device &device, cl_kernel_work_group_info name, T *param) const
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int *) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED
Sampler(const Sampler &sampler)
#define CL_DEVICE_GPU_OVERLAP_NV
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateFromGLTexture2D(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects(cl_command_queue, cl_uint, const cl_mem *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
cl_int enqueueMarker(Event *event=NULL) const
Image3DGL(const cl_mem &image)
CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel, cl_uint, size_t, const void *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clGetPlatformIDs(cl_uint, cl_platform_id *, cl_uint *) CL_API_SUFFIX__VERSION_1_0
GLsizei const GLchar *const * strings
cl_int enqueueNDRangeKernel(const Kernel &kernel, const NDRange &offset, const NDRange &global, const NDRange &local, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
static void * ptr(LocalSpaceArg &)
unsigned int size(void) const
BufferGL(const cl_mem &buffer)
CL_API_ENTRY cl_context CL_API_CALL clCreateContext(const cl_context_properties *, cl_uint, const cl_device_id *, void(CL_CALLBACK *)(const char *, const void *, size_t, void *), void *, cl_int *) CL_API_SUFFIX__VERSION_1_0
detail::param_traits< detail::cl_kernel_info, name >::param_type getInfo(cl_int *err=NULL) const
CE_API cl_int ce_enqueueKernel(const cl::CommandQueue &queue, const cl::Kernel &kernel, const cl::NDRange &offset, const cl::NDRange &global, const cl::NDRange &local, const std::vector< cl::Event > *events, cl::Event *event)
GLint GLsizei GLsizei height
VECTOR_CLASS< std::pair< const char *,::size_t > > Sources
CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler) CL_API_SUFFIX__VERSION_1_0
Fixed sized vector implementation that mirroring std::vector functionality.
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL clEnqueueTask(cl_command_queue, cl_kernel, cl_uint, const cl_event *, cl_event *) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED
struct _cl_sampler * cl_sampler
Context(const Context &context)
Buffer(const cl_mem &buffer)
#define __PARAM_NAME_INFO_1_0(F)
Program(const Program &program)
cl_type operator()() const
cl_int enqueueNativeKernel(void(CL_CALLBACK *userFptr)(void *), std::pair< void *,::size_t > args, const VECTOR_CLASS< Memory > *mem_objects=NULL, const VECTOR_CLASS< const void * > *mem_locs=NULL, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
Memory(const cl_mem &memory)
CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats(cl_context, cl_mem_flags, cl_mem_object_type, cl_uint, cl_image_format *, cl_uint *) CL_API_SUFFIX__VERSION_1_0
Image2DGL(const Image2DGL &image)
CL_API_ENTRY cl_int CL_API_CALL clGetPlatformInfo(cl_platform_id, cl_platform_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clGetSamplerInfo(cl_sampler, cl_sampler_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clGetProgramInfo(cl_program, cl_program_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
#define CL_DEVICE_WARP_SIZE_NV
GLint GLint GLsizei GLint GLenum format
detail::param_traits< detail::cl_sampler_info, name >::param_type getInfo(cl_int *err=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue) CL_API_SUFFIX__VERSION_1_0
#define __INIT_CL_EXT_FCN_PTR(name)
CommandQueue interface for cl_command_queue.
cl_int getInfo(Func f, cl_uint name, T *param)
cl_int getInfo(Func f, const Arg0 &arg0, const Arg1 &arg1, cl_uint name, T *param)
Context(const cl_context &context)
Sampler(const Context &context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, cl_int *err=NULL)
unsigned int max_size(void) const
const char * c_str(void) const
vector< T, N > & operator=(const vector< T, N > &rhs)
cl_int enqueueUnmapMemObject(const Memory &memory, void *mapped_ptr, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
static cl_int release(cl_command_queue queue)
intptr_t cl_context_properties
Wrapper(const cl_type &obj)
struct _cl_event * cl_event
class CE_API KernelFunctor
cl_int getObjectInfo(cl_gl_object_type *type, GLuint *gl_object_name)
struct _cl_command_queue * cl_command_queue
#define CL_PROGRAM_NUM_DEVICES
CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage(cl_command_queue, cl_mem, cl_mem, size_t, const size_t *, const size_t *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
bool operator==(iterator i)
cl_int createKernels(VECTOR_CLASS< Kernel > *kernels)
Event(const Event &event)
cl_int operator()(cl_uint param,::size_t size, void *value,::size_t *size_ret)
cl_int build(const VECTOR_CLASS< Device > &devices, const char *options=NULL, void(CL_CALLBACK *notifyFptr)(cl_program, void *)=NULL, void *data=NULL) const
cl_int getInfo(cl_device_info name, T *param) const
CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents(cl_uint, const cl_event *) CL_API_SUFFIX__VERSION_1_0
Image3DGL(const Context &context, cl_mem_flags flags, GLenum target, GLint miplevel, GLuint texobj, cl_int *err=NULL)
GLuint GLuint GLuint arg1
void assign(I start, I end)
#define CL_INVALID_DEVICE
CL_API_ENTRY cl_int CL_API_CALL clEnqueueNativeKernel(cl_command_queue, void(CL_CALLBACK *)(void *), void *, size_t, cl_uint, const cl_mem *, const void **, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
Sampler interface for cl_sampler.
static cl_int retain(cl_event event)
CL_API_ENTRY cl_int CL_API_CALL clGetMemObjectInfo(cl_mem, cl_mem_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
Kernel functor interface.
detail::param_traits< detail::cl_program_build_info, name >::param_type getBuildInfo(const Device &device, cl_int *err=NULL) const
::size_t size(void) const
cl_int enqueueCopyImageToBuffer(const Image &src, const Buffer &dst, const size_t< 3 > &src_origin, const size_t< 3 > ®ion,::size_t dst_offset, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
Wrapper(const Wrapper< cl_type > &rhs)
GA_API const UT_StringHolder N
Base class interface for all images.
Wrapper< cl_type > & operator=(const Wrapper< cl_type > &rhs)
GLsizei const GLfloat * value
cl_int getInfo(cl_context_info name, T *param) const
static cl_int release(cl_event event)
#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV
**If you just want to fire and args
CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects(cl_command_queue, cl_uint, const cl_mem *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
BufferRenderGL(const cl_mem &buffer)
CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue, cl_mem, cl_bool, const size_t *, const size_t *, size_t, size_t, const void *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
Image interface for 2D images.
cl_int enqueueReadBuffer(const Buffer &buffer, cl_bool blocking,::size_t offset,::size_t size, void *ptr, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue, cl_mem, cl_mem, const size_t *, const size_t *, const size_t *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
cl_int setArg(cl_uint index, T value)
cl_uint cl_kernel_work_group_info
cl_int getInfo(cl_kernel_info name, T *param) const
Kernel interface that implements cl_kernel.
Event(const cl_event &event)
Image interface for 3D images.
Memory buffer interface for GL interop with renderbuffer.
KernelFunctor bind(const CommandQueue &queue, const NDRange &offset, const NDRange &global, const NDRange &local)
detail::param_traits< detail::cl_profiling_info, name >::param_type getProfilingInfo(cl_int *err=NULL) const
cl_int enqueueAcquireGLObjects(const VECTOR_CLASS< Memory > *mem_objects=NULL, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
struct _cl_program * cl_program
NDRange(::size_t size0,::size_t size1)
CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateFromGLTexture3D(cl_context, cl_mem_flags, cl_GLenum, cl_GLint, cl_GLuint, cl_int *) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T)
CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV
Event operator()(const VECTOR_CLASS< Event > *events=NULL)
Device interface for cl_device_id.
Event & operator=(const Event &rhs)
#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD
cl_int enqueueTask(const Kernel &kernel, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue) CL_API_SUFFIX__VERSION_1_0
cl_int enqueueReleaseGLObjects(const VECTOR_CLASS< Memory > *mem_objects=NULL, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
static cl_int waitForEvents(const VECTOR_CLASS< Event > &events)
::size_t dimensions() const
Program interface that implements cl_program.
detail::param_traits< detail::cl_command_queue_info, name >::param_type getInfo(cl_int *err=NULL) const
cl_int getInfo(cl_command_queue_info name, T *param) const
static cl_int retain(cl_context context)
size_t class used to interface between C++ and OpenCL C calls that require arrays of size_t values...
static cl_int release(cl_device_id)
Simple string class, that provides a limited subset of std::string functionality but avoids many of t...
CL_API_ENTRY cl_int CL_API_CALL clGetKernelInfo(cl_kernel, cl_kernel_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
cl_uint cl_gl_object_type
Context(const VECTOR_CLASS< Device > &devices, cl_context_properties *properties=NULL, void(CL_CALLBACK *notifyFptr)(const char *, const void *,::size_t, void *)=NULL, void *data=NULL, cl_int *err=NULL)
Memory buffer interface for GL interop.
Kernel(const cl_kernel &kernel)
2D image interface for GL interop.
static iterator begin(vector< T, N > &vec)
static cl_int release(cl_context context)
Image2D & operator=(const Image2D &rhs)
cl_int enqueueReadImage(const Image &image, cl_bool blocking, const size_t< 3 > &origin, const size_t< 3 > ®ion,::size_t row_pitch,::size_t slice_pitch, void *ptr, const VECTOR_CLASS< Event > *events=NULL, Event *event=NULL) const
CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue, cl_mem, cl_bool, const size_t *, const size_t *, size_t, size_t, void *, cl_uint, const cl_event *, cl_event *) CL_API_SUFFIX__VERSION_1_0
T operator[](int index) const
Image(const Image &image)
GLsizei GLenum GLenum GLuint GLenum GLsizei * lengths
Iterator class for vectors.
cl_uint cl_profiling_info
CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void *, size_t *) CL_API_SUFFIX__VERSION_1_0
CL_API_ENTRY cl_int CL_API_CALL clCreateKernelsInProgram(cl_program, cl_uint, cl_kernel *, cl_uint *) CL_API_SUFFIX__VERSION_1_0