CL.pas 129 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607
  1. (*******************************************************************************
  2. * Copyright (c) 2011 The Khronos Group Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and/or associated documentation files (the
  6. * "Materials"), to deal in the Materials without restriction, including
  7. * without limitation the rights to use, copy, modify, merge, publish,
  8. * distribute, sublicense, and/or sell copies of the Materials, and to
  9. * permit persons to whom the Materials are furnished to do so, subject to
  10. * the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be included
  13. * in all copies or substantial portions of the Materials.
  14. *
  15. * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  18. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  19. * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  20. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  21. * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  22. ******************************************************************************)
  23. (************************************************************************)
  24. (* *)
  25. (* OpenCL1.2 and Delphi and Windows *)
  26. (* *)
  27. (* headers versions: 0.07 *)
  28. (* file name : CL.pas *)
  29. (* last modify : 10.12.11 *)
  30. (* license : BSD *)
  31. (* *)
  32. (* created by : Maksym Tymkovych (niello) *)
  33. (* Site : www.niello.org.ua *)
  34. (* e-mail : [email protected] *)
  35. (* ICQ : 446-769-253 *)
  36. (* *)
  37. (* updated by : Alexander Kiselev (Igroman) *)
  38. (* Site : http://Igroman14.livejournal.com *)
  39. (* e-mail : [email protected] *)
  40. (* ICQ : 207-381-695 *)
  41. (* (c) 2010 *)
  42. (* *)
  43. (********************** Copyright (c) niello 2008-2011 ******************)
  44. //OpenCL 1.0 for Delphi 7-2010
  45. //Fixed By Dmitry Belkevich
  46. //Site www.makhaon.com
  47. //E-mail [email protected]
  48. //(c) 2009
  49. //Beta release 1.0
  50. unit CL;
  51. interface
  52. {$INCLUDE OpenCL.inc}
  53. uses
  54. {$IFDEF WINDOWS}
  55. Windows,
  56. {$ENDIF}
  57. CL_Platform;
  58. {$IFDEF WINDOWS}
  59. const
  60. OpenCLLibName = 'OpenCL.dll';
  61. {$ENDIF}
  62. {$IFDEF LINUX}
  63. const
  64. OpenCLLibName = 'libOpenCL.so';
  65. {$ENDIF}
  66. {$IFDEF DARWIN}
  67. {$linkframework OpenCL}//Not yet?
  68. {$ENDIF}
  69. {$IFDEF DEFINE_8087CW_NOT_IMPLEMENTED}
  70. var
  71. Default8087CW: Word = $133F;
  72. {$ENDIF}
  73. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'types'}{$ENDIF}
  74. type
  75. TSize_t = Longword;
  76. PSize_t = ^TSize_t;
  77. PIntPtr_t = ^TIntPtr_t;
  78. TIntPtr_t = ^Integer;
  79. TSizet = array [0..2] of TSize_t;
  80. PSizet = ^TSizet;
  81. TCL_platform_id = record
  82. end;
  83. PCL_platform_id = ^TCL_platform_id;
  84. PPCL_platform_id = ^PCL_platform_id;
  85. TCL_device_id = record
  86. end;
  87. PCL_device_id = ^TCL_device_id;
  88. PPCL_device_id = ^PCL_device_id;
  89. TCL_context = record
  90. end;
  91. PCL_context = ^TCL_context;
  92. TCL_command_queue = record
  93. end;
  94. PCL_command_queue = ^TCL_command_queue;
  95. TCL_mem = record
  96. end;
  97. PCL_mem = ^TCL_mem;
  98. PPCL_mem = ^PCL_mem;
  99. TCL_program = record
  100. end;
  101. PCL_program = ^TCL_program;
  102. PPCL_program = ^PCL_program;
  103. TCL_kernel = record
  104. end;
  105. PCL_kernel = ^TCL_kernel;
  106. PPCL_kernel = ^PCL_kernel;
  107. TCL_event = record
  108. end;
  109. PCL_event = ^TCL_event;
  110. PPCL_event = ^PCL_event;
  111. TCL_sampler = record
  112. end;
  113. PCL_sampler = ^TCL_sampler;
  114. TCL_bool = TCL_uint; (* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. *)
  115. PCL_bool = ^TCL_bool;
  116. TCL_bitfield = TCL_ulong;
  117. PCL_bitfield = ^TCL_bitfield;
  118. TCL_device_type = TCL_bitfield;
  119. PCL_device_type = ^TCL_device_type;
  120. TCL_platform_info = TCL_uint;
  121. PCL_platform_info = ^TCL_platform_info;
  122. TCL_device_info = TCL_uint;
  123. PCL_device_info = ^TCL_device_info;
  124. TCL_device_address_info = TCL_bitfield;
  125. PCL_device_address_info = ^TCL_device_address_info;
  126. TCL_device_fp_config = TCL_bitfield;
  127. PCL_device_fp_config = ^TCL_device_fp_config;
  128. TCL_device_mem_cache_type = TCL_uint;
  129. PCL_device_mem_cache_type = ^TCL_device_mem_cache_type;
  130. TCL_device_local_mem_type = TCL_uint;
  131. PCL_device_local_mem_type = ^TCL_device_local_mem_type;
  132. TCL_device_exec_capabilities = TCL_bitfield;
  133. PCL_device_exec_capabilities = ^TCL_device_exec_capabilities;
  134. TCL_command_queue_properties = TCL_bitfield;
  135. PCL_command_queue_properties = ^TCL_command_queue_properties;
  136. PCL_device_partition_property = ^TCL_device_partition_property;
  137. TCL_device_partition_property = TIntPtr_t; //intptr_t
  138. PCL_device_affinity_domain = ^TCL_device_affinity_domain;
  139. TCL_device_affinity_domain = TCL_bitfield;
  140. PCL_context_properties = PInteger;
  141. PPCL_context_properties = ^PCL_context_properties;
  142. TCL_context_info = TCL_uint;
  143. PCL_context_info = ^TCL_context_info;
  144. TCL_queue_properties = TCL_uint;
  145. PCL_queue_properties = ^TCL_queue_properties;
  146. TCL_command_queue_info = TCL_uint;
  147. PCL_command_queue_info = ^TCL_command_queue_info;
  148. TCL_channel_order = TCL_uint;
  149. PCL_channel_order = ^TCL_channel_order;
  150. TCL_channel_type = TCL_uint;
  151. PCL_channel_type = ^TCL_channel_type;
  152. TCL_mem_flags = TCL_bitfield;
  153. PCL_mem_flags = ^TCL_mem_flags;
  154. TCL_svm_mem_flags = TCL_bitfield;
  155. PCL_svm_mem_flags = ^TCL_svm_mem_flags;
  156. TCL_mem_object_type = TCL_uint;
  157. PCL_mem_object_type = ^TCL_mem_object_type;
  158. TCL_mem_info = TCL_uint;
  159. PCL_mem_info = ^TCL_mem_info;
  160. TCL_mem_migration_flags = TCL_bitfield;
  161. PCL_mem_migration_flags = ^TCL_mem_migration_flags;
  162. TCL_image_info = TCL_uint;
  163. PCL_image_info = ^TCL_image_info;
  164. TCL_buffer_create_type = TCL_uint;
  165. PCL_buffer_create_type = ^TCL_buffer_create_type;
  166. TCL_addressing_mode = TCL_uint;
  167. PCL_addressing_mode = ^TCL_addressing_mode;
  168. TCL_filter_mode = TCL_uint;
  169. PCL_filter_mode = ^TCL_filter_mode;
  170. TCL_sampler_info = TCL_uint;
  171. PCL_sampler_info = ^TCL_sampler_info;
  172. TCL_map_flags = TCL_bitfield;
  173. PCL_map_flags = ^TCL_map_flags;
  174. TCL_pipe_properties = TIntPtr_t; //intptr_t
  175. PCL_pipe_properties = ^TCL_pipe_properties;
  176. TCL_pipe_info = TCL_uint;
  177. PCL_pipe_info = TCL_pipe_info;
  178. TCL_program_info = TCL_uint;
  179. PCL_program_info = ^TCL_program_info;
  180. TCL_program_build_info = TCL_uint;
  181. PCL_program_build_info = ^TCL_program_build_info;
  182. TCL_build_status = TCL_int;
  183. PCL_build_status = ^TCL_build_status;
  184. TCL_kernel_info = TCL_uint;
  185. PCL_kernel_info = ^TCL_kernel_info;
  186. TCL_kernel_arg_info = TCL_uint;
  187. PCL_kernel_arg_info = ^TCL_kernel_arg_info;
  188. TCL__kernel_arg_address_qualifier = TCL_uint;
  189. PCL__kernel_arg_address_qualifier = ^TCL__kernel_arg_address_qualifier;
  190. TCL__kernel_arg_access_qualifier = TCL_uint;
  191. PCL__kernel_arg_access_qualifier = ^TCL__kernel_arg_access_qualifier;
  192. TCL_kernel_work_group_info = TCL_uint;
  193. PCL_kernel_work_group_info = ^TCL_kernel_work_group_info;
  194. TCL_event_info = TCL_uint;
  195. PCL_event_info = ^TCL_event_info;
  196. TCL_command_type = TCL_uint;
  197. PCL_command_type = ^TCL_command_type;
  198. TCL_profiling_info = TCL_uint;
  199. PCL_profiling_info = ^TCL_profiling_info;
  200. TCL_sampler_properties = TCL_bitfield;
  201. PCL_sampler_properties = ^TCL_sampler_properties;
  202. TCL_kernel_exec_info = TCL_uint;
  203. PCL_kernel_exec_info = ^TCL_kernel_exec_info;
  204. TCL_image_format = packed record
  205. Image_channel_order: TCL_channel_order;
  206. Image_channel_data_type: TCl_channel_type;
  207. end;
  208. PCL_image_format = ^TCL_image_format;
  209. TCL_image_desc = packed record
  210. image_type: TCL_mem_object_type;
  211. image_width,
  212. image_height,
  213. image_depth,
  214. image_array_size,
  215. image_row_pitch,
  216. image_slice_pitch: TSize_t;
  217. num_mip_levels: TCL_uint;
  218. num_samples: TCL_uint;
  219. buffer: Pcl_mem;
  220. end;
  221. PCL_image_desc = ^TCL_image_desc;
  222. PCL_buffer_region = ^TCL_buffer_region;
  223. TCL_buffer_region = packed record
  224. origin: TSize_t;
  225. size: TSize_t;
  226. end;
  227. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  228. //******************************************************************************/
  229. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'const'}{$ENDIF}
  230. const
  231. (* Error Codes *)
  232. CL_SUCCESS = 0;
  233. CL_DEVICE_NOT_FOUND = -1;
  234. CL_DEVICE_NOT_AVAILABLE = -2;
  235. CL_COMPILER_NOT_AVAILABLE = -3;
  236. CL_MEM_OBJECT_ALLOCATION_FAILURE = -4;
  237. CL_OUT_OF_RESOURCES = -5;
  238. CL_OUT_OF_HOST_MEMORY = -6;
  239. CL_PROFILING_INFO_NOT_AVAILABLE = -7;
  240. CL_MEM_COPY_OVERLAP = -8;
  241. CL_IMAGE_FORMAT_MISMATCH = -9;
  242. CL_IMAGE_FORMAT_NOT_SUPPORTED = -10;
  243. CL_BUILD_PROGRAM_FAILURE = -11;
  244. CL_MAP_FAILURE = -12;
  245. CL_MISALIGNED_SUB_BUFFER_OFFSET = -13;
  246. CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST = -14;
  247. CL_COMPILE_PROGRAM_FAILURE = -15;
  248. CL_LINKER_NOT_AVAILABLE = -16;
  249. CL_LINK_PROGRAM_FAILURE = -17;
  250. CL_DEVICE_PARTITION_FAILED = -18;
  251. CL_KERNEL_ARG_INFO_NOT_AVAILABLE = -19;
  252. CL_INVALID_VALUE = -30;
  253. CL_INVALID_DEVICE_TYPE = -31;
  254. CL_INVALID_PLATFORM = -32;
  255. CL_INVALID_DEVICE = -33;
  256. CL_INVALID_CONTEXT = -34;
  257. CL_INVALID_QUEUE_PROPERTIES = -35;
  258. CL_INVALID_COMMAND_QUEUE = -36;
  259. CL_INVALID_HOST_PTR = -37;
  260. CL_INVALID_MEM_OBJECT = -38;
  261. CL_INVALID_IMAGE_FORMAT_DESCRIPTOR = -39;
  262. CL_INVALID_IMAGE_SIZE = -40;
  263. CL_INVALID_SAMPLER = -41;
  264. CL_INVALID_BINARY = -42;
  265. CL_INVALID_BUILD_OPTIONS = -43;
  266. CL_INVALID_PROGRAM = -44;
  267. CL_INVALID_PROGRAM_EXECUTABLE = -45;
  268. CL_INVALID_KERNEL_NAME = -46;
  269. CL_INVALID_KERNEL_DEFINITION = -47;
  270. CL_INVALID_KERNEL = -48;
  271. CL_INVALID_ARG_INDEX = -49;
  272. CL_INVALID_ARG_VALUE = -50;
  273. CL_INVALID_ARG_SIZE = -51;
  274. CL_INVALID_KERNEL_ARGS = -52;
  275. CL_INVALID_WORK_DIMENSION = -53;
  276. CL_INVALID_WORK_GROUP_SIZE = -54;
  277. CL_INVALID_WORK_ITEM_SIZE = -55;
  278. CL_INVALID_GLOBAL_OFFSET = -56;
  279. CL_INVALID_EVENT_WAIT_LIST = -57;
  280. CL_INVALID_EVENT = -58;
  281. CL_INVALID_OPERATION = -59;
  282. CL_INVALID_GL_OBJECT = -60;
  283. CL_INVALID_BUFFER_SIZE = -61;
  284. CL_INVALID_MIP_LEVEL = -62;
  285. CL_INVALID_GLOBAL_WORK_SIZE = -63;
  286. CL_INVALID_PROPERTY = -64;
  287. CL_INVALID_IMAGE_DESCRIPTOR = -65;
  288. CL_INVALID_COMPILER_OPTIONS = -66;
  289. CL_INVALID_LINKER_OPTIONS = -67;
  290. CL_INVALID_DEVICE_PARTITION_COUNT = -68;
  291. CL_INVALID_PIPE_SIZE = -69;
  292. CL_INVALID_DEVICE_QUEUE = -70;
  293. (* OpenCL Version *)
  294. CL_VERSION_1_0 = 1;
  295. CL_VERSION_1_1 = 1;
  296. CL_VERSION_1_2 = 1;
  297. CL_VERSION_2_0 = 1;
  298. (* cl_bool *)
  299. CL_FALSE = 0;
  300. CL_TRUE = 1;
  301. CL_BLOCKING = CL_TRUE;
  302. CL_NON_BLOCKING = CL_FALSE;
  303. (* cl_platform_info *)
  304. CL_PLATFORM_PROFILE = $0900;
  305. CL_PLATFORM_VERSION = $0901;
  306. CL_PLATFORM_NAME = $0902;
  307. CL_PLATFORM_VENDOR = $0903;
  308. CL_PLATFORM_EXTENSIONS = $0904;
  309. (* cl_device_type - bitfield *)
  310. CL_DEVICE_TYPE_DEFAULT = (1 shl 0);
  311. CL_DEVICE_TYPE_CPU = (1 shl 1);
  312. CL_DEVICE_TYPE_GPU = (1 shl 2);
  313. CL_DEVICE_TYPE_ACCELERATOR = (1 shl 3);
  314. CL_DEVICE_TYPE_CUSTOM = (1 shl 4);
  315. CL_DEVICE_TYPE_ALL = $FFFFFFFF;
  316. (* cl_device_info *)
  317. CL_DEVICE_TYPE = $1000;
  318. CL_DEVICE_VENDOR_ID = $1001;
  319. CL_DEVICE_MAX_COMPUTE_UNITS = $1002;
  320. CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = $1003;
  321. CL_DEVICE_MAX_WORK_GROUP_SIZE = $1004;
  322. CL_DEVICE_MAX_WORK_ITEM_SIZES = $1005;
  323. CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR = $1006;
  324. CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT = $1007;
  325. CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT = $1008;
  326. CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG = $1009;
  327. CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT = $100A;
  328. CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE = $100B;
  329. CL_DEVICE_MAX_CLOCK_FREQUENCY = $100C;
  330. CL_DEVICE_ADDRESS_BITS = $100D;
  331. CL_DEVICE_MAX_READ_IMAGE_ARGS = $100E;
  332. CL_DEVICE_MAX_WRITE_IMAGE_ARGS = $100F;
  333. CL_DEVICE_MAX_MEM_ALLOC_SIZE = $1010;
  334. CL_DEVICE_IMAGE2D_MAX_WIDTH = $1011;
  335. CL_DEVICE_IMAGE2D_MAX_HEIGHT = $1012;
  336. CL_DEVICE_IMAGE3D_MAX_WIDTH = $1013;
  337. CL_DEVICE_IMAGE3D_MAX_HEIGHT = $1014;
  338. CL_DEVICE_IMAGE3D_MAX_DEPTH = $1015;
  339. CL_DEVICE_IMAGE_SUPPORT = $1016;
  340. CL_DEVICE_MAX_PARAMETER_SIZE = $1017;
  341. CL_DEVICE_MAX_SAMPLERS = $1018;
  342. CL_DEVICE_MEM_BASE_ADDR_ALIGN = $1019;
  343. CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE = $101A;
  344. CL_DEVICE_SINGLE_FP_CONFIG = $101B;
  345. CL_DEVICE_GLOBAL_MEM_CACHE_TYPE = $101C;
  346. CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE = $101D;
  347. CL_DEVICE_GLOBAL_MEM_CACHE_SIZE = $101E;
  348. CL_DEVICE_GLOBAL_MEM_SIZE = $101F;
  349. CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE = $1020;
  350. CL_DEVICE_MAX_CONSTANT_ARGS = $1021;
  351. CL_DEVICE_LOCAL_MEM_TYPE = $1022;
  352. CL_DEVICE_LOCAL_MEM_SIZE = $1023;
  353. CL_DEVICE_ERROR_CORRECTION_SUPPORT = $1024;
  354. CL_DEVICE_PROFILING_TIMER_RESOLUTION = $1025;
  355. CL_DEVICE_ENDIAN_LITTLE = $1026;
  356. CL_DEVICE_AVAILABLE = $1027;
  357. CL_DEVICE_COMPILER_AVAILABLE = $1028;
  358. CL_DEVICE_EXECUTION_CAPABILITIES = $1029;
  359. CL_DEVICE_QUEUE_PROPERTIES = $102A;
  360. CL_DEVICE_NAME = $102B;
  361. CL_DEVICE_VENDOR = $102C;
  362. CL_DRIVER_VERSION = $102D;
  363. CL_DEVICE_PROFILE = $102E;
  364. CL_DEVICE_VERSION = $102F;
  365. CL_DEVICE_EXTENSIONS = $1030;
  366. CL_DEVICE_PLATFORM = $1031;
  367. CL_DEVICE_DOUBLE_FP_CONFIG = $1032;
  368. (* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG *)
  369. CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF = $1034;
  370. CL_DEVICE_HOST_UNIFIED_MEMORY = $1035;
  371. CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR = $1036;
  372. CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT = $1037;
  373. CL_DEVICE_NATIVE_VECTOR_WIDTH_INT = $1038;
  374. CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG = $1039;
  375. CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT = $103A;
  376. CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE = $103B;
  377. CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF = $103C;
  378. CL_DEVICE_OPENCL_C_VERSION = $103D;
  379. CL_DEVICE_LINKER_AVAILABLE = $103E;
  380. CL_DEVICE_BUILT_IN_KERNELS = $103F;
  381. CL_DEVICE_IMAGE_MAX_BUFFER_SIZE = $1040;
  382. CL_DEVICE_IMAGE_MAX_ARRAY_SIZE = $1041;
  383. CL_DEVICE_PARENT_DEVICE = $1042;
  384. CL_DEVICE_PARTITION_MAX_SUB_DEVICES = $1043;
  385. CL_DEVICE_PARTITION_PROPERTIES = $1044;
  386. CL_DEVICE_PARTITION_AFFINITY_DOMAIN = $1045;
  387. CL_DEVICE_PARTITION_TYPE = $1046;
  388. CL_DEVICE_REFERENCE_COUNT = $1047;
  389. CL_DEVICE_PREFERRED_INTEROP_USER_SYNC = $1048;
  390. CL_DEVICE_PRINTF_BUFFER_SIZE = $1049;
  391. CL_DEVICE_IMAGE_PITCH_ALIGNMENT = $104A;
  392. CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT = $104B;
  393. CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS = $104C;
  394. CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE = $104D;
  395. CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES = $104E;
  396. CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE = $104F;
  397. CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE = $1050;
  398. CL_DEVICE_MAX_ON_DEVICE_QUEUES = $1051;
  399. CL_DEVICE_MAX_ON_DEVICE_EVENTS = $1052;
  400. CL_DEVICE_SVM_CAPABILITIES = $1053;
  401. CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE = $1054;
  402. CL_DEVICE_MAX_PIPE_ARGS = $1055;
  403. CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS = $1056;
  404. CL_DEVICE_PIPE_MAX_PACKET_SIZE = $1057;
  405. CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT= $1058;
  406. CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT = $1059;
  407. CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT = $105A;
  408. (* cl_device_fp_config - bitfield *)
  409. CL_FP_DENORM = (1 shl 0);
  410. CL_FP_INF_NAN = (1 shl 1);
  411. CL_FP_ROUND_TO_NEAREST = (1 shl 2);
  412. CL_FP_ROUND_TO_ZERO = (1 shl 3);
  413. CL_FP_ROUND_TO_INF = (1 shl 4);
  414. CL_FP_FMA = (1 shl 5);
  415. CL_FP_SOFT_FLOAT = (1 shl 6);
  416. CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT = (1 shl 7);
  417. (* cl_device_mem_cache_type *)
  418. CL_NONE = $0;
  419. CL_READ_ONLY_CACHE = $1;
  420. CL_READ_WRITE_CACHE = $2;
  421. (* cl_device_local_mem_type *)
  422. CL_LOCAL = $1;
  423. CL_GLOBAL = $2;
  424. (* cl_device_exec_capabilities - bitfield *)
  425. CL_EXEC_KERNEL = (1 shl 0);
  426. CL_EXEC_NATIVE_KERNEL = (1 shl 1);
  427. (* cl_command_queue_properties - bitfield *)
  428. CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 shl 0);
  429. CL_QUEUE_PROFILING_ENABLE = (1 shl 1);
  430. CL_QUEUE_ON_DEVICE = (1 shl 2);
  431. CL_QUEUE_ON_DEVICE_DEFAULT = (1 shl 3);
  432. (* cl_context_info *)
  433. CL_CONTEXT_REFERENCE_COUNT = $1080;
  434. CL_CONTEXT_DEVICES = $1081;
  435. CL_CONTEXT_PROPERTIES = $1082;
  436. CL_CONTEXT_NUM_DEVICES = $1083;
  437. (* cl_context_properties *)
  438. CL_CONTEXT_PLATFORM = $1084;
  439. CL_CONTEXT_INTEROP_USER_SYNC = $1085;
  440. (* cl_device_partition_property *)
  441. CL_DEVICE_PARTITION_EQUALLY = $1086;
  442. CL_DEVICE_PARTITION_BY_COUNTS = $1087;
  443. CL_DEVICE_PARTITION_BY_COUNTS_LIST_END = $0;
  444. CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN = $1088;
  445. (* cl_device_affinity_domain *)
  446. CL_DEVICE_AFFINITY_DOMAIN_NUMA = (1 shl 0);
  447. CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE = (1 shl 1);
  448. CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE = (1 shl 2);
  449. CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE = (1 shl 3);
  450. CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE = (1 shl 4);
  451. CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE = (1 shl 5);
  452. (* cl_command_queue_info *)
  453. CL_QUEUE_CONTEXT = $1090;
  454. CL_QUEUE_DEVICE = $1091;
  455. CL_QUEUE_REFERENCE_COUNT = $1092;
  456. CL_QUEUE_PROPERTIES = $1093;
  457. CL_QUEUE_SIZE = $1094;
  458. (* cl_mem_flags - bitfield *)
  459. CL_MEM_READ_WRITE = (1 shl 0);
  460. CL_MEM_WRITE_ONLY = (1 shl 1);
  461. CL_MEM_READ_ONLY = (1 shl 2);
  462. CL_MEM_USE_HOST_PTR = (1 shl 3);
  463. CL_MEM_ALLOC_HOST_PTR = (1 shl 4);
  464. CL_MEM_COPY_HOST_PTR = (1 shl 5);
  465. // reserved = (1 shl 6);
  466. CL_MEM_HOST_WRITE_ONLY = (1 shl 7);
  467. CL_MEM_HOST_READ_ONLY = (1 shl 8);
  468. CL_MEM_HOST_NO_ACCESS = (1 shl 9);
  469. CL_MEM_SVM_FINE_GRAIN_BUFFER = (1 shl 10); //* used by cl_svm_mem_flags only */
  470. CL_MEM_SVM_ATOMICS = (1 shl 11); //* used by cl_svm_mem_flags only */
  471. (* cl_mem_migration_flags - bitfield *)
  472. CL_MIGRATE_MEM_OBJECT_HOST = (1 shl 0);
  473. CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED = (1 shl 1);
  474. (* cl_channel_order *)
  475. CL_R = $10B0;
  476. CL_A = $10B1;
  477. CL_RG = $10B2;
  478. CL_RA = $10B3;
  479. CL_RGB = $10B4;
  480. CL_RGBA = $10B5;
  481. CL_BGRA = $10B6;
  482. CL_ARGB = $10B7;
  483. CL_INTENSITY = $10B8;
  484. CL_LUMINANCE = $10B9;
  485. CL_Rx = $10BA;
  486. CL_RGx = $10BB;
  487. CL_RGBx = $10BC;
  488. CL_DEPTH = $10BD;
  489. CL_DEPTH_STENCIL = $10BE;
  490. CL_sRGB = $10BF;
  491. CL_sRGBx = $10C0;
  492. CL_sRGBA = $10C1;
  493. CL_sBGRA = $10C2;
  494. CL_ABGR = $10C3;
  495. (* cl_channel_type *)
  496. CL_SNORM_INT8 = $10D0;
  497. CL_SNORM_INT16 = $10D1;
  498. CL_UNORM_INT8 = $10D2;
  499. CL_UNORM_INT16 = $10D3;
  500. CL_UNORM_SHORT_565 = $10D4;
  501. CL_UNORM_SHORT_555 = $10D5;
  502. CL_UNORM_INT_101010 = $10D6;
  503. CL_SIGNED_INT8 = $10D7;
  504. CL_SIGNED_INT16 = $10D8;
  505. CL_SIGNED_INT32 = $10D9;
  506. CL_UNSIGNED_INT8 = $10DA;
  507. CL_UNSIGNED_INT16 = $10DB;
  508. CL_UNSIGNED_INT32 = $10DC;
  509. CL_HALF_FLOAT = $10DD;
  510. CL_FLOAT = $10DE;
  511. CL_UNORM_INT24 = $10DF;
  512. (* cl_mem_object_type *)
  513. CL_MEM_OBJECT_BUFFER = $10F0;
  514. CL_MEM_OBJECT_IMAGE2D = $10F1;
  515. CL_MEM_OBJECT_IMAGE3D = $10F2;
  516. CL_MEM_OBJECT_IMAGE2D_ARRAY = $10F3;
  517. CL_MEM_OBJECT_IMAGE1D = $10F4;
  518. CL_MEM_OBJECT_IMAGE1D_ARRAY = $10F5;
  519. CL_MEM_OBJECT_IMAGE1D_BUFFER = $10F6;
  520. CL_MEM_OBJECT_PIPE = $10F7;
  521. (* cl_mem_info *)
  522. CL_MEM_TYPE = $1100;
  523. CL_MEM_FLAGS = $1101;
  524. CL_MEM_SIZE = $1102;
  525. CL_MEM_HOST_PTR = $1103;
  526. CL_MEM_MAP_COUNT = $1104;
  527. CL_MEM_REFERENCE_COUNT = $1105;
  528. CL_MEM_CONTEXT = $1106;
  529. CL_MEM_ASSOCIATED_MEMOBJECT = $1107;
  530. CL_MEM_OFFSET = $1108;
  531. CL_MEM_USES_SVM_POINTER = $1109;
  532. (* cl_image_info *)
  533. CL_IMAGE_FORMAT = $1110;
  534. CL_IMAGE_ELEMENT_SIZE = $1111;
  535. CL_IMAGE_ROW_PITCH = $1112;
  536. CL_IMAGE_SLICE_PITCH = $1113;
  537. CL_IMAGE_WIDTH = $1114;
  538. CL_IMAGE_HEIGHT = $1115;
  539. CL_IMAGE_DEPTH = $1116;
  540. CL_IMAGE_ARRAY_SIZE = $1117;
  541. CL_IMAGE_BUFFER = $1118;
  542. CL_IMAGE_NUM_MIP_LEVELS = $1119;
  543. CL_IMAGE_NUM_SAMPLES = $111A;
  544. (* cl_pipe_info *)
  545. CL_PIPE_PACKET_SIZE = $1120;
  546. CL_PIPE_MAX_PACKETS = $1121;
  547. (* cl_addressing_mode *)
  548. CL_ADDRESS_NONE = $1130;
  549. CL_ADDRESS_CLAMP_TO_EDGE = $1131;
  550. CL_ADDRESS_CLAMP = $1132;
  551. CL_ADDRESS_REPEAT = $1133;
  552. CL_ADDRESS_MIRRORED_REPEAT = $1134;
  553. (* cl_filter_mode *)
  554. CL_FILTER_NEAREST = $1140;
  555. CL_FILTER_LINEAR = $1141;
  556. (* cl_sampler_info *)
  557. CL_SAMPLER_REFERENCE_COUNT = $1150;
  558. CL_SAMPLER_CONTEXT = $1151;
  559. CL_SAMPLER_NORMALIZED_COORDS = $1152;
  560. CL_SAMPLER_ADDRESSING_MODE = $1153;
  561. CL_SAMPLER_FILTER_MODE = $1154;
  562. CL_SAMPLER_MIP_FILTER_MODE = $1155;
  563. CL_SAMPLER_LOD_MIN = $1156;
  564. CL_SAMPLER_LOD_MAX = $1157;
  565. (* cl_map_flags - bitfield *)
  566. CL_MAP_READ = (1 shl 0);
  567. CL_MAP_WRITE = (1 shl 1);
  568. CL_MAP_WRITE_INVALIDATE_REGION = (1 shl 2);
  569. (* cl_program_info *)
  570. CL_PROGRAM_REFERENCE_COUNT = $1160;
  571. CL_PROGRAM_CONTEXT = $1161;
  572. CL_PROGRAM_NUM_DEVICES = $1162;
  573. CL_PROGRAM_DEVICES = $1163;
  574. CL_PROGRAM_SOURCE = $1164;
  575. CL_PROGRAM_BINARY_SIZES = $1165;
  576. CL_PROGRAM_BINARIES = $1166;
  577. CL_PROGRAM_NUM_KERNELS = $1167;
  578. CL_PROGRAM_KERNEL_NAMES = $1168;
  579. (* cl_program_build_info *)
  580. CL_PROGRAM_BUILD_STATUS = $1181;
  581. CL_PROGRAM_BUILD_OPTIONS = $1182;
  582. CL_PROGRAM_BUILD_LOG = $1183;
  583. CL_PROGRAM_BINARY_TYPE = $1184;
  584. CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE = $1185;
  585. (* cl_program_binary_type *)
  586. CL_PROGRAM_BINARY_TYPE_NONE = $0;
  587. CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT = $1;
  588. CL_PROGRAM_BINARY_TYPE_LIBRARY = $2;
  589. CL_PROGRAM_BINARY_TYPE_EXECUTABLE = $4;
  590. (* cl_build_status *)
  591. CL_BUILD_SUCCESS = 0;
  592. CL_BUILD_NONE = -1;
  593. CL_BUILD_ERROR = -2;
  594. CL_BUILD_IN_PROGRESS = -3;
  595. (* cl_kernel_info *)
  596. CL_KERNEL_FUNCTION_NAME = $1190;
  597. CL_KERNEL_NUM_ARGS = $1191;
  598. CL_KERNEL_REFERENCE_COUNT = $1192;
  599. CL_KERNEL_CONTEXT = $1193;
  600. CL_KERNEL_PROGRAM = $1194;
  601. CL_KERNEL_ATTRIBUTES = $1195;
  602. (* cl_kernel_arg_info *)
  603. CL_KERNEL_ARG_ADDRESS_QUALIFIER = $1196;
  604. CL_KERNEL_ARG_ACCESS_QUALIFIER = $1197;
  605. CL_KERNEL_ARG_TYPE_NAME = $1198;
  606. CL_KERNEL_ARG_TYPE_QUALIFIER = $1199;
  607. CL_KERNEL_ARG_NAME = $119A;
  608. (* cl_kernel_arg_address_qualifier *)
  609. CL_KERNEL_ARG_ADDRESS_GLOBAL = $119B;
  610. CL_KERNEL_ARG_ADDRESS_LOCAL = $119C;
  611. CL_KERNEL_ARG_ADDRESS_CONSTANT = $119D;
  612. CL_KERNEL_ARG_ADDRESS_PRIVATE = $119E;
  613. (* cl_kernel_arg_access_qualifier *)
  614. CL_KERNEL_ARG_ACCESS_READ_ONLY = $11A0;
  615. CL_KERNEL_ARG_ACCESS_WRITE_ONLY = $11A1;
  616. CL_KERNEL_ARG_ACCESS_READ_WRITE = $11A2;
  617. CL_KERNEL_ARG_ACCESS_NONE = $11A3;
  618. (* cl_kernel_arg_type_qualifer *)
  619. CL_KERNEL_ARG_TYPE_NONE = 0;
  620. CL_KERNEL_ARG_TYPE_CONST = (1 shl 0);
  621. CL_KERNEL_ARG_TYPE_RESTRICT = (1 shl 1);
  622. CL_KERNEL_ARG_TYPE_VOLATILE = (1 shl 2);
  623. CL_KERNEL_ARG_TYPE_PIPE = (1 shl 3);
  624. (* cl_kernel_work_group_info *)
  625. CL_KERNEL_WORK_GROUP_SIZE = $11B0;
  626. CL_KERNEL_COMPILE_WORK_GROUP_SIZE = $11B1;
  627. CL_KERNEL_LOCAL_MEM_SIZE = $11B2;
  628. CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE = $11B3;
  629. CL_KERNEL_PRIVATE_MEM_SIZE = $11B4;
  630. CL_KERNEL_GLOBAL_WORK_SIZE = $11B5;
  631. (* cl_kernel_exec_info *)
  632. CL_KERNEL_EXEC_INFO_SVM_PTRS = $11B6;
  633. CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM = $11B7;
  634. (* cl_event_info *)
  635. CL_EVENT_COMMAND_QUEUE = $11D0;
  636. CL_EVENT_COMMAND_TYPE = $11D1;
  637. CL_EVENT_REFERENCE_COUNT = $11D2;
  638. CL_EVENT_COMMAND_EXECUTION_STATUS = $11D3;
  639. CL_EVENT_CONTEXT = $11D4;
  640. (* cl_command_type *)
  641. CL_COMMAND_NDRANGE_KERNEL = $11F0;
  642. CL_COMMAND_TASK = $11F1;
  643. CL_COMMAND_NATIVE_KERNEL = $11F2;
  644. CL_COMMAND_READ_BUFFER = $11F3;
  645. CL_COMMAND_WRITE_BUFFER = $11F4;
  646. CL_COMMAND_COPY_BUFFER = $11F5;
  647. CL_COMMAND_READ_IMAGE = $11F6;
  648. CL_COMMAND_WRITE_IMAGE = $11F7;
  649. CL_COMMAND_COPY_IMAGE = $11F8;
  650. CL_COMMAND_COPY_IMAGE_TO_BUFFER = $11F9;
  651. CL_COMMAND_COPY_BUFFER_TO_IMAGE = $11FA;
  652. CL_COMMAND_MAP_BUFFER = $11FB;
  653. CL_COMMAND_MAP_IMAGE = $11FC;
  654. CL_COMMAND_UNMAP_MEM_OBJECT = $11FD;
  655. CL_COMMAND_MARKER = $11FE;
  656. CL_COMMAND_ACQUIRE_GL_OBJECTS = $11FF;
  657. CL_COMMAND_RELEASE_GL_OBJECTS = $1200;
  658. CL_COMMAND_READ_BUFFER_RECT = $1201;
  659. CL_COMMAND_WRITE_BUFFER_RECT = $1202;
  660. CL_COMMAND_COPY_BUFFER_RECT = $1203;
  661. CL_COMMAND_USER = $1204;
  662. CL_COMMAND_BARRIER = $1205;
  663. CL_COMMAND_MIGRATE_MEM_OBJECTS = $1206;
  664. CL_COMMAND_FILL_BUFFER = $1207;
  665. CL_COMMAND_FILL_IMAGE = $1208;
  666. CL_COMMAND_SVM_FREE = $1209;
  667. CL_COMMAND_SVM_MEMCPY = $120A;
  668. CL_COMMAND_SVM_MEMFILL = $120B;
  669. CL_COMMAND_SVM_MAP = $120C;
  670. CL_COMMAND_SVM_UNMAP = $120D;
  671. (* command execution status *)
  672. CL_COMPLETE = $0;
  673. CL_RUNNING = $1;
  674. CL_SUBMITTED = $2;
  675. CL_QUEUED = $3;
  676. (* cl_buffer_create_type *)
  677. CL_BUFFER_CREATE_TYPE_REGION = $1220;
  678. (* cl_profiling_info *)
  679. CL_PROFILING_COMMAND_QUEUED = $1280;
  680. CL_PROFILING_COMMAND_SUBMIT = $1281;
  681. CL_PROFILING_COMMAND_START = $1282;
  682. CL_PROFILING_COMMAND_END = $1283;
  683. CL_PROFILING_COMMAND_COMPLETE = $1284;
  684. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  685. //********************************************************************************************************/
  686. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'Types proceduress'}{$ENDIF}
  687. type
  688. (* Platform API *)
  689. {$IFDEF CL_VERSION_1_0}
  690. TclGetPlatformIDs = function (
  691. num_entries: TCL_uint; (* num_entries *)
  692. platforms: PPCL_platform_id; (* platforms *)
  693. num_platforms: PCL_uint (* num_platforms *)
  694. ): TCL_int;
  695. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  696. {$ENDIF}
  697. {$IFDEF CL_VERSION_1_0}
  698. TclGetPlatformInfo = function (
  699. platform: PCL_platform_id; (* platform *)
  700. param_name: TCL_platform_info; (* param_name *)
  701. param_value_size: TSize_t; (* param_value_size *)
  702. param_value: Pointer; (* param_value *)
  703. param_value_size_ret: PSize_t (* param_value_size_ret *)
  704. ): TCL_int;
  705. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  706. {$ENDIF}
  707. (* Device APIs *)
  708. {$IFDEF CL_VERSION_1_0}
  709. TclGetDeviceIDs = function (
  710. platform: PCL_platform_id (* platform *);
  711. device_type: TCL_device_type; (* device_type *)
  712. num_entries: TCL_uint; (* num_entries *)
  713. devices: PPCL_device_id; (* devices *)
  714. num_devices: PCL_uint (* num_devices *)
  715. ): TCL_int;
  716. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  717. {$ENDIF}
  718. {$IFDEF CL_VERSION_1_0}
  719. TclGetDeviceInfo = function (
  720. device: PCL_device_id; (* device *)
  721. param_name: TCL_device_info; (* param_name *)
  722. param_value_size: TSize_t; (* param_value_size *)
  723. param_value: Pointer; (* param_value *)
  724. param_value_size_ret: PSize_t (* param_value_size_ret *)
  725. ): TCL_int;
  726. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  727. {$ENDIF}
  728. {$IFDEF CL_VERSION_1_2}
  729. TclCreateSubDevices = function (
  730. in_device: PCL_device_id; (* in_device *)
  731. const properties: PCL_device_partition_property;(* properties *)
  732. num_devices: TCL_uint; (* num_devices *)
  733. out_devices: PPCL_device_id; (* out_devices *)
  734. num_devices_ret: PCL_uint (* num_devices_ret *)
  735. ): TCL_int;
  736. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  737. {$ENDIF}
  738. {$IFDEF CL_VERSION_1_2}
  739. TclRetainDevice = function (device: PCL_device_id): TCL_int;{$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  740. {$ENDIF}
  741. {$IFDEF CL_VERSION_1_2}
  742. TclReleaseDevice = function (device: PCL_device_id): TCL_int;{$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  743. {$ENDIF}
  744. (* Context APIs *)
  745. {$IFDEF CL_VERSION_1_0}
  746. TContextNotify = procedure(const Name: PAnsiChar; const Data: Pointer; Size: TSize_t; Data2: Pointer); {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  747. {$ENDIF}
  748. {$IFDEF CL_VERSION_1_0}
  749. TclCreateContext = function (
  750. const properties: PPCL_context_properties; (* properties *)
  751. num_devices: TCL_uint; (* num_devices *)
  752. const devices: PPCL_device_id; (* devices *)
  753. pfn_notify: TContextNotify; (* pfn_notify *)
  754. user_data: Pointer; (* user_data *)
  755. errcode_ret: PCL_int (* errcode_ret *)
  756. ): PCL_context;
  757. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  758. {$ENDIF}
  759. {$IFDEF CL_VERSION_1_0}
  760. TclCreateContextFromType = function (
  761. const properties: PPCL_context_properties; (* properties *)
  762. device_type: TCL_device_type; (* device_type *)
  763. pfn_notify: TContextNotify; (*pfn_notify*)
  764. user_data: Pointer; (* user_data *)
  765. errcode_ret: PCL_int (* errcode_ret *)
  766. ): PCL_context;
  767. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  768. {$ENDIF}
  769. {$IFDEF CL_VERSION_1_0}
  770. TclRetainContext = function (context: PCL_context): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  771. {$ENDIF}
  772. {$IFDEF CL_VERSION_1_0}
  773. TclReleaseContext = function (context: PCL_context): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  774. {$ENDIF}
  775. {$IFDEF CL_VERSION_1_0}
  776. TclGetContextInfo = function (
  777. context: PCL_context; (* context *)
  778. param_name: TCL_context_info; (* param_name *)
  779. param_value_size: TSize_t; (* param_value_size *)
  780. param_value: Pointer; (* param_value *)
  781. param_value_size_ret: PSize_t (* param_value_size_ret *)
  782. ): TCL_int;
  783. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  784. {$ENDIF}
  785. (* Command Queue APIs *)
  786. {$IFDEF CL_VERSION_2_0}
  787. TclCreateCommandQueueWithProperties = function (
  788. context: PCL_context; (* context *)
  789. device: PCL_device_id; (* device *)
  790. const properties: PCL_queue_properties; (* properties *)
  791. errcode_ret: PCL_int (* errcode_ret *)
  792. ): PCL_command_queue;
  793. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  794. {$ENDIF}
  795. {$IFDEF CL_VERSION_1_0}
  796. TclCreateCommandQueue = function (
  797. context: PCL_context; (* context *)
  798. device: PCL_device_id; (* device *)
  799. properties: TCL_command_queue_properties; (* properties *)
  800. errcode_ret: PCL_int (* errcode_ret *)
  801. ): PCL_command_queue;
  802. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  803. {$ENDIF}
  804. {$IFDEF CL_VERSION_1_0}
  805. TclRetainCommandQueue = function (command_queue: PCL_command_queue): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  806. {$ENDIF}
  807. {$IFDEF CL_VERSION_1_0}
  808. TclReleaseCommandQueue = function (command_queue: PCL_command_queue): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  809. {$ENDIF}
  810. {$IFDEF CL_VERSION_1_0}
  811. TclGetCommandQueueInfo = function (
  812. command_queue: PCL_command_queue; (* command_queue *)
  813. param_name: TCL_command_queue_info; (* param_name *)
  814. param_value_size: TSize_t; (* param_value_size *)
  815. param_value: Pointer; (* param_value *)
  816. param_value_size_ret: PSize_t (* param_value_size_ret *)
  817. ): TCL_int;
  818. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  819. {$ENDIF}
  820. {$IFDEF CL_VERSION_1_0}
  821. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_0_APIS}
  822. (*
  823. * WARNING:
  824. * This API introduces mutable state into the OpenCL implementation. It has been REMOVED
  825. * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the
  826. * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably.
  827. * It is likely to be non-performant. Use of this API is not advised. Use at your own risk.
  828. *
  829. * Software developers previously relying on this API are instructed to set the command queue
  830. * properties when creating the queue, instead.
  831. *)
  832. TclSetCommandQueueProperty = function (
  833. command_queue: PCL_command_queue; (* command_queue *)
  834. properties: TCL_command_queue_properties; (* properties *)
  835. enable: TCL_bool; (* enable *)
  836. old_properties: PCL_command_queue_properties (* old_properties *)
  837. ): TCL_int;
  838. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  839. {$ENDIF}
  840. {$ENDIF}
  841. (* Memory Object APIs *)
  842. {$IFDEF CL_VERSION_1_0}
  843. TclCreateBuffer = function (
  844. context: PCL_context; (* context *)
  845. flags: TCL_mem_flags; (* flags *)
  846. size: TSize_t; (* size *)
  847. host_ptr: Pointer; (* host_ptr *)
  848. errcode_ret: PCL_int (* errcode_ret *)
  849. ): PCL_mem;
  850. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  851. {$ENDIF}
  852. {$IFDEF CL_VERSION_1_1}
  853. TclCreateSubBuffer = function(
  854. buffer: Pcl_mem; (* buffer *)
  855. flags: TCL_mem_flags; (* flags *)
  856. buffer_create_type: Tcl_buffer_create_type; (* buffer_create_type *)
  857. const buffer_create_info: Pointer; (* buffer_create_info *)
  858. errcode_ret: PCL_int (* errcode_ret *)
  859. ): PCL_mem;
  860. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  861. {$ENDIF}
  862. {$IFDEF CL_VERSION_1_2}
  863. TclCreateImage = function (
  864. context: PCL_context; (* context *)
  865. flags: TCL_mem_flags; (* flags *)
  866. const image_format: PCL_image_format; (* image_format *)
  867. const image_desc: PCL_image_desc; (* image_desc *)
  868. host_ptr: Pointer; (* host_ptr *)
  869. errcode_ret: PCL_int (* errcode_ret *)
  870. ): PCL_mem;
  871. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  872. {$ENDIF}
  873. {$IFDEF CL_VERSION_2_0}
  874. TclCreatePipe = function(
  875. context: PCL_context; (* context *)
  876. flags: TCL_mem_flags; (* flags *)
  877. pipe_packet_size: TCL_uint; (* pipe_packet_size *)
  878. pipe_max_packets: TCL_uint; (* pipe_max_packets *)
  879. const properties: PCL_pipe_properties; (* properties *)
  880. errcode_ret: PCL_int (* errcode_ret *)
  881. ): PCL_mem;
  882. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  883. {$ENDIF}
  884. {$IFDEF CL_VERSION_1_0}
  885. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  886. TclCreateImage2D = function (
  887. context: PCL_context; (* context *)
  888. flags: TCL_mem_flags; (* flags *)
  889. const image_format: PCL_image_format; (* image_format *)
  890. image_width: TSize_t; (* image_width *)
  891. image_height: TSize_t; (* image_height *)
  892. image_row_pitch: TSize_t; (* image_row_pitch *)
  893. host_ptr: Pointer; (* host_ptr *)
  894. errcode_ret: PCL_int (* errcode_ret *)
  895. ): PCL_mem;
  896. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  897. {$ENDIF}
  898. {$ENDIF}
  899. {$IFDEF CL_VERSION_1_0}
  900. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  901. TclCreateImage3D = function (
  902. context: PCL_context; (* context *)
  903. flags: TCL_mem_flags; (* flags *)
  904. const image_format: PCL_image_format; (* image_format *)
  905. image_width: TSize_t; (* image_width *)
  906. image_height: TSize_t; (* image_height *)
  907. image_depth: TSize_t; (* image_depth *)
  908. image_row_pitch: TSize_t; (* image_row_pitch *)
  909. image_slice_pitch: TSize_t; (* image_slice_pitch *)
  910. host_ptr: Pointer; (* host_ptr *)
  911. errcode_ret: PCL_int (* errcode_ret *)
  912. ): PCL_mem;
  913. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  914. {$ENDIF}
  915. {$ENDIF}
  916. {$IFDEF CL_VERSION_1_0}
  917. TclRetainMemObject = function (memobj: PCL_mem): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  918. {$ENDIF}
  919. {$IFDEF CL_VERSION_1_0}
  920. TclReleaseMemObject = function (memobj: PCL_mem): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  921. {$ENDIF}
  922. {$IFDEF CL_VERSION_1_0}
  923. TclGetSupportedImageFormats = function (
  924. context: PCL_context; (* context *)
  925. flags: TCL_mem_flags; (* flags *)
  926. image_type: TCL_mem_object_type; (* image_type *)
  927. num_entries: TCL_uint; (* num_entries *)
  928. image_formats: PCL_image_format; (* image_formats *)
  929. num_image_formats: PCL_uint (* num_image_formats *)
  930. ): TCL_int;
  931. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  932. {$ENDIF}
  933. {$IFDEF CL_VERSION_1_0}
  934. TclGetMemObjectInfo = function (
  935. memobj: PCL_mem; (* memobj *)
  936. param_name: TCL_mem_info; (* param_name *)
  937. param_value_size: TSize_t; (* param_value_size *)
  938. param_value: Pointer; (* param_value *)
  939. param_value_size_ret: PSize_t (* param_value_size_ret *)
  940. ): TCL_int;
  941. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  942. {$ENDIF}
  943. {$IFDEF CL_VERSION_1_0}
  944. TclGetImageInfo = function (
  945. image: PCL_mem; (* image *)
  946. param_name: TCL_image_info; (* param_name *)
  947. param_value_size: TSize_t; (* param_value_size *)
  948. param_value: Pointer; (* param_value *)
  949. param_value_size_ret: PSize_t (* param_value_size_ret *)
  950. ): TCL_int;
  951. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  952. {$ENDIF}
  953. {$IFDEF CL_VERSION_2_0}
  954. TclGetPipeInfo = function(
  955. pipe :PCL_mem; (* pipe *)
  956. param_name: PCL_pipe_info; (* param_name *)
  957. param_value_size: TSize_t; (* param_value_size *)
  958. param_value: Pointer; (* param_value *)
  959. param_value_size_ret: Psize_t (* param_value_size_ret *)
  960. ): TCL_int;
  961. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  962. {$ENDIF}
  963. {$IFDEF CL_VERSION_1_1}
  964. TMemObjectNotify = procedure(memob: PCL_mem; user_data: Pointer); {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  965. {$ENDIF}
  966. {$IFDEF CL_VERSION_1_1}
  967. TclSetMemObjectDestructorCallback = function(
  968. memobj: Pcl_mem; (* memobj *)
  969. pfn_notify: TMemObjectNotify; (* pfn_notify *)
  970. user_data: Pointer (*user_data *)
  971. ): TCL_int;
  972. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  973. {$ENDIF}
  974. (* SVM Allocation APIs *)
  975. {$IFDEF CL_VERSION_2_0}
  976. TclSVMAlloc = function(
  977. context: PCL_context; (* context *)
  978. flags: TCL_svm_mem_flags; (* flags *)
  979. size: TSize_t; (* size *)
  980. alignment: TCL_uint (* alignment *)
  981. ): Pointer;
  982. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  983. {$ENDIF}
  984. {$IFDEF CL_VERSION_2_0}
  985. TclSVMFree = procedure(
  986. context: PCL_context; (* context *)
  987. svm_pointer: Pointer (* svm_pointer *)
  988. );
  989. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  990. {$ENDIF}
  991. (* Sampler APIs *)
  992. {$IFDEF CL_VERSION_1_0}
  993. TclCreateSampler = function (
  994. context: PCL_context; (* context *)
  995. normalized_coords: TCL_bool; (* normalized_coords *)
  996. addressing_mode: TCL_addressing_mode; (* addressing_mode *)
  997. filter_mode: TCL_filter_mode; (* filter_mode *)
  998. errcode_ret: PCL_int (* errcode_ret *)
  999. ): PCL_sampler;
  1000. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1001. {$ENDIF}
  1002. {$IFDEF CL_VERSION_2_0}
  1003. TclCreateSamplerWithProperties = function (
  1004. context: PCL_context; (* context *)
  1005. const normalized_coords: PCL_sampler_properties;(* normalized_coords *)
  1006. errcode_ret: PCL_int (* errcode_ret *)
  1007. ): PCL_sampler;
  1008. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1009. {$ENDIF}
  1010. {$IFDEF CL_VERSION_1_0}
  1011. TclRetainSampler = function (sampler: PCL_sampler): TCL_sampler; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1012. {$ENDIF}
  1013. {$IFDEF CL_VERSION_1_0}
  1014. TclReleaseSampler = function (sampler: PCL_sampler): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1015. {$ENDIF}
  1016. {$IFDEF CL_VERSION_1_0}
  1017. TclGetSamplerInfo = function (
  1018. sampler: PCL_sampler; (* sampler *)
  1019. param_name: TCL_sampler_info; (* param_name *)
  1020. param_value_size: TSize_t; (* param_value_size *)
  1021. param_value: Pointer; (* param_value *)
  1022. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1023. ): TCL_int;
  1024. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1025. {$ENDIF}
  1026. (* Program Object APIs *)
  1027. {$IFDEF CL_VERSION_1_0}
  1028. TclCreateProgramWithSource = function (
  1029. context: PCL_context; (* context *)
  1030. count: TCL_uint; (* count *)
  1031. const strings: PPAnsiChar; (* strings *)
  1032. const lengths: PSize_t; (* lengths *)
  1033. errcode_ret: PCL_int (* errcode_ret *)
  1034. ): PCL_program;
  1035. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1036. {$ENDIF}
  1037. //type
  1038. PPByte = ^PByte;
  1039. {$IFDEF CL_VERSION_1_0}
  1040. TclCreateProgramWithBinary = function (
  1041. context: PCL_context; (* context *)
  1042. num_devices: TCL_uint; (* num_devices *)
  1043. const device_list: PCL_device_id; (* device_list *)
  1044. const lengths: PSize_t; (* lengths *)
  1045. const binaries: PPByte; (* binaries *)
  1046. binary_status: PCL_int; (* binary_status *)
  1047. errcode_ret: PCL_int (* errcode_ret *)
  1048. ): PCL_program;
  1049. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1050. {$ENDIF}
  1051. {$IFDEF CL_VERSION_1_2}
  1052. TclCreateProgramWithBuiltInKernels = function (
  1053. context: PCL_context; (* context *)
  1054. num_devices: TCL_uint; (* num_devices *)
  1055. const device_list: PCL_device_id; (* device_list *)
  1056. const kernel_names: PAnsiChar; (* kernel_names *)
  1057. errcode_ret: PCL_int (* errcode_ret *)
  1058. ): PCL_program;
  1059. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1060. {$ENDIF}
  1061. {$IFDEF CL_VERSION_1_0}
  1062. TclRetainProgram = function (_program: PCL_program): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1063. {$ENDIF}
  1064. {$IFDEF CL_VERSION_1_0}
  1065. TclReleaseProgram = function (_program: PCL_program): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1066. {$ENDIF}
  1067. //type
  1068. {$IFDEF CL_VERSION_1_0}
  1069. TProgramNotify = procedure(_program: PCL_program; user_data: Pointer); {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1070. {$ENDIF}
  1071. {$IFDEF CL_VERSION_1_0}
  1072. TclBuildProgram = function (
  1073. _program: PCL_program; (* program *)
  1074. num_devices: TCL_uint; (* num_devices *)
  1075. const device_list: PPCL_device_id; (* device_list *)
  1076. const options: PAnsiChar; (* options *)
  1077. pfn_notify: TProgramNotify; (* void (pfn_notify)*)
  1078. user_data: Pointer (* user_data *)
  1079. ): TCL_int;
  1080. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1081. {$ENDIF}
  1082. {$IFDEF CL_VERSION_1_0}
  1083. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1084. TclUnloadCompiler = function: TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1085. {$ENDIF}
  1086. {$ENDIF}
  1087. {$IFDEF CL_VERSION_1_2}
  1088. TclCompileProgram = function(
  1089. _program: PCL_program; (* program *)
  1090. num_devices: TCL_uint; (* num_devices *)
  1091. const device_list: PPCL_device_id; (* device_list *)
  1092. const options: PAnsiChar; (* options *)
  1093. num_input_headers: Tcl_uint; (* num_input_headers *)
  1094. const input_headers: PPCL_program; (* input_headers *)
  1095. const header_include_names: PPAnsiChar; (* header_include_names *)
  1096. pfn_notify: TProgramNotify; (* void (pfn_notify)*)
  1097. user_data: Pointer (* user_data *)
  1098. ): TCL_int;
  1099. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1100. {$ENDIF}
  1101. {$IFDEF CL_VERSION_1_2}
  1102. TclLinkProgram = function (
  1103. context: PCL_context; (* context *)
  1104. num_devices: TCL_uint; (* num_devices *)
  1105. const device_list: PPCL_device_id; (* device_list *)
  1106. const options: PAnsiChar; (* options *)
  1107. num_input_programs: Tcl_uint; (* num_input_programs *)
  1108. const input_programs: PPCL_program; (* input_programs *)
  1109. pfn_notify: TProgramNotify; (* void (pfn_notify)*)
  1110. user_data: Pointer; (* user_data *)
  1111. errcode_ret: PCL_int (* errcode_ret *)
  1112. ): PCL_program;
  1113. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1114. {$ENDIF}
  1115. {$IFDEF CL_VERSION_1_2}
  1116. TclUnloadPlatformCompiler = function (platform: PCL_platform_id): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1117. {$ENDIF}
  1118. {$IFDEF CL_VERSION_1_0}
  1119. TclGetProgramInfo = function (
  1120. _program: PCL_program; (* program *)
  1121. param_name: TCL_program_info; (* param_name *)
  1122. param_value_size: TSize_t; (* param_value_size *)
  1123. param_value: Pointer; (* param_value *)
  1124. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1125. ): TCL_int;
  1126. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1127. {$ENDIF}
  1128. {$IFDEF CL_VERSION_1_0}
  1129. TclGetProgramBuildInfo = function (
  1130. _program: PCL_program; (* program *)
  1131. device: PCL_device_id; (* device *)
  1132. param_name: TCL_program_build_info; (* param_name *)
  1133. param_value_size: TSize_t; (* param_value_size *)
  1134. param_value: Pointer; (* param_value *)
  1135. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1136. ): TCL_int;
  1137. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1138. {$ENDIF}
  1139. (* Kernel Object APIs *)
  1140. {$IFDEF CL_VERSION_1_0}
  1141. TclCreateKernel = function (
  1142. _program: PCL_program; (* program *)
  1143. const kernel_name: PAnsiChar; (* kernel_name *)
  1144. errcode_ret: PCL_int (* errcode_ret *)
  1145. ): PCL_kernel;
  1146. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1147. {$ENDIF}
  1148. {$IFDEF CL_VERSION_1_0}
  1149. TclCreateKernelsInProgram = function (
  1150. _program: PCL_program; (* program *)
  1151. num_kernels: TCL_uint; (* num_kernels *)
  1152. kernels: PPCL_kernel; (* kernels *)
  1153. num_kernels_ret: PCL_uint (* num_kernels_ret *)
  1154. ): TCL_int;
  1155. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1156. {$ENDIF}
  1157. {$IFDEF CL_VERSION_1_0}
  1158. TclRetainKernel = function (kernel: PCL_kernel): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1159. {$ENDIF}
  1160. {$IFDEF CL_VERSION_1_0}
  1161. TclReleaseKernel = function (kernel: PCL_kernel): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1162. {$ENDIF}
  1163. {$IFDEF CL_VERSION_1_0}
  1164. TclSetKernelArg = function (
  1165. kernel: PCL_kernel; (* kernel *)
  1166. arg_index: TCL_uint; (* arg_index *)
  1167. arg_size: TSize_t; (* arg_size *)
  1168. const arg_value: Pointer (* arg_value *)
  1169. ): TCL_int;
  1170. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1171. {$ENDIF}
  1172. {$IFDEF CL_VERSION_2_0}
  1173. TclSetKernelArgSVMPointer = function(
  1174. kernel: PCL_kernel; (* kernel *)
  1175. arg_index: TCL_uint; (* arg_index *)
  1176. const arg_value: Pointer (* arg_value *)
  1177. ): TCL_int;
  1178. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1179. {$ENDIF}
  1180. {$IFDEF CL_VERSION_2_0}
  1181. TclSetKernelExecInfo = function(
  1182. kernel: PCL_kernel; (* kernel *)
  1183. param_name: PCL_kernel_exec_info; (* param_name *)
  1184. param_value_size: TSize_t; (* param_value_size *)
  1185. const param_value : Pointer (* param_value *)
  1186. ): TCL_int;
  1187. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1188. {$ENDIF}
  1189. {$IFDEF CL_VERSION_1_0}
  1190. TclGetKernelInfo = function (
  1191. kernel: PCL_kernel; (* kernel *)
  1192. param_name: TCL_kernel_info; (* param_name *)
  1193. param_value_size: TSize_t; (* param_value_size *)
  1194. param_value: Pointer; (* param_value *)
  1195. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1196. ): TCL_int;
  1197. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1198. {$ENDIF}
  1199. {$IFDEF CL_VERSION_1_2}
  1200. TclGetKernelArgInfo = function (
  1201. kernel: PCL_kernel; (* kernel *)
  1202. arg_indx: Tcl_uint; (* arg_indx *)
  1203. param_name: TCL_kernel_arg_info; (* param_name *)
  1204. param_value_size: TSize_t; (* param_value_size *)
  1205. param_value: Pointer; (* param_value *)
  1206. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1207. ): TCL_int;
  1208. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1209. {$ENDIF}
  1210. {$IFDEF CL_VERSION_1_0}
  1211. TclGetKernelWorkGroupInfo = function (
  1212. kernel: PCL_kernel; (* kernel *)
  1213. device: PCL_device_id; (* device *)
  1214. param_name: TCL_kernel_work_group_info;(* param_name *)
  1215. param_value_size: TSize_t; (* param_value_size *)
  1216. param_value: Pointer; (* param_value *)
  1217. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1218. ): TCL_int;
  1219. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1220. {$ENDIF}
  1221. (* Event Object APIs *)
  1222. {$IFDEF CL_VERSION_1_0}
  1223. TclWaitForEvents = function (
  1224. num_events: TCL_uint; (* num_events *)
  1225. const event_list: PCL_event (* event_list *)
  1226. ): TCL_int;
  1227. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1228. {$ENDIF}
  1229. {$IFDEF CL_VERSION_1_0}
  1230. TclGetEventInfo = function (
  1231. event: PCL_event; (* event *)
  1232. param_name: PCL_event_info; (* param_name *)
  1233. param_value_size: TSize_t; (* param_value_size *)
  1234. param_value: Pointer; (* param_value *)
  1235. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1236. ): TCL_int;
  1237. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1238. {$ENDIF}
  1239. {$IFDEF CL_VERSION_1_1}
  1240. TclCreateUserEvent = function (
  1241. context: Pcl_context; (* context *)
  1242. errcode_ret: Pcl_int (* errcode_ret *)
  1243. ): PCL_event;
  1244. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1245. {$ENDIF}
  1246. {$IFDEF CL_VERSION_1_0}
  1247. TclRetainEvent = function (event: PCL_event): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1248. {$ENDIF}
  1249. {$IFDEF CL_VERSION_1_0}
  1250. TclReleaseEvent = function (event: PCL_event): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1251. {$ENDIF}
  1252. {$IFDEF CL_VERSION_1_1}
  1253. TclSetUserEventStatus = function (
  1254. event: Pcl_event; (* event *)
  1255. execution_status: Tcl_int (* execution_status *)
  1256. ): TCL_int;
  1257. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1258. {$ENDIF}
  1259. {$IFDEF CL_VERSION_1_1}
  1260. TclEventNotify = procedure (event: PCL_event; cl_int: TCL_int; p: Pointer);{$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1261. {$ENDIF}
  1262. {$IFDEF CL_VERSION_1_1}
  1263. TclSetEventCallback = function (
  1264. event: Pcl_event; (* event *)
  1265. command_exec_callback_type: Tcl_int; (* command_exec_callback_type *)
  1266. pfn_notify: TclEventNotify; (* pfn_notify *)
  1267. user_data: Pointer (* user_data *)
  1268. ): TCL_int;
  1269. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1270. {$ENDIF}
  1271. (* Profiling APIs *)
  1272. {$IFDEF CL_VERSION_1_0}
  1273. TclGetEventProfilingInfo = function (
  1274. event: PCL_event; (* event *)
  1275. param_name: TCL_profiling_info; (* param_name *)
  1276. param_value_size: TSize_t; (* param_value_size *)
  1277. param_value: Pointer; (* param_value *)
  1278. param_value_size_ret: PSize_t (* param_value_size_ret *)
  1279. ): TCL_int;
  1280. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1281. {$ENDIF}
  1282. (* Flush and Finish APIs *)
  1283. {$IFDEF CL_VERSION_1_0}
  1284. TclFlush = function (command_queue: PCL_command_queue): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1285. {$ENDIF}
  1286. {$IFDEF CL_VERSION_1_0}
  1287. TclFinish = function (command_queue: PCL_command_queue): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1288. {$ENDIF}
  1289. (* Enqueued Commands APIs *)
  1290. {$IFDEF CL_VERSION_1_0}
  1291. TclEnqueueReadBuffer = function (
  1292. command_queue: PCL_command_queue; (* command_queue *)
  1293. buffer: PCL_mem; (* buffer *)
  1294. blocking_read: TCL_bool; (* blocking_read *)
  1295. offset: TSize_t; (* offset *)
  1296. cb: TSize_t; (* cb *)
  1297. ptr: Pointer; (* ptr *)
  1298. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1299. const event_wait_list: PPCL_event; (* event_wait_list *)
  1300. event: PPCL_event (* event *)
  1301. ): TCL_int;
  1302. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1303. {$ENDIF}
  1304. {$IFDEF CL_VERSION_1_1}
  1305. TclEnqueueReadBufferRect = function(
  1306. command_queue: Pcl_command_queue; (* command_queue *)
  1307. buffer: Pcl_mem; (* buffer *)
  1308. blocking_read: Tcl_bool; (* blocking_read *)
  1309. const buffer_origin: PSize_t; (* buffer_origin *)
  1310. const host_origin: PSize_t; (* host_origin *)
  1311. const region: PSize_t; (* region *)
  1312. buffer_row_pitch: TSize_t; (* buffer_row_pitch *)
  1313. buffer_slice_pitch: TSize_t; (* buffer_slice_pitch *)
  1314. host_row_pitch: TSize_t; (* host_row_pitch *)
  1315. host_slice_pitch: TSize_t; (* host_slice_pitch *)
  1316. ptr: Pointer; (* ptr *)
  1317. num_events_in_wait_list: Tcl_uint; (* num_events_in_wait_list *)
  1318. const event_wait_list: PPcl_event; (* event_wait_list *)
  1319. event: PPcl_event (* event *)
  1320. ): TCL_int;
  1321. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1322. {$ENDIF}
  1323. {$IFDEF CL_VERSION_1_0}
  1324. TclEnqueueWriteBuffer = function (command_queue: PCL_command_queue; (* command_queue *)
  1325. buffer: PCL_mem; (* buffer *)
  1326. blocking_write: TCL_bool; (* blocking_write *)
  1327. offset: TSize_t; (* offset *)
  1328. cb: TSize_t; (* cb *)
  1329. const ptr: Pointer; (* ptr *)
  1330. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1331. const event_wait_list: PPCL_event; (* event_wait_list *)
  1332. event: PPCL_event (* event *)
  1333. ): TCL_int;
  1334. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1335. {$ENDIF}
  1336. {$IFDEF CL_VERSION_1_1}
  1337. TclEnqueueWriteBufferRect = function(
  1338. command_queue: Pcl_command_queue; (* command_queue *)
  1339. buffer: Pcl_mem; (* buffer *)
  1340. blocking_write: Tcl_bool; (* blocking_write *)
  1341. const buffer_origin: PSize_t; (* buffer_origin *)
  1342. const host_origin: PSize_t; (* host_origin *)
  1343. const region: PSize_t; (* region *)
  1344. buffer_row_pitch: TSize_t; (* buffer_row_pitch *)
  1345. buffer_slice_pitch: TSize_t; (* buffer_slice_pitch *)
  1346. host_row_pitch: TSize_t; (* host_row_pitch *)
  1347. host_slice_pitch: TSize_t; (* host_slice_pitch *)
  1348. ptr: Pointer; (* ptr *)
  1349. num_events_in_wait_list: Tcl_uint; (* num_events_in_wait_list *)
  1350. const event_wait_list: PPcl_event; (* event_wait_list *)
  1351. event: PPcl_event (* event *)
  1352. ): TCL_int;
  1353. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1354. {$ENDIF}
  1355. {$IFDEF CL_VERSION_1_2}
  1356. TclEnqueueFillBuffer = function (
  1357. command_queue: Pcl_command_queue; (* command_queue *)
  1358. buffer: Pcl_mem; (* buffer *)
  1359. const pattern: Pointer; (* pattern *)
  1360. pattern_size: TSize_t; (* pattern_size *)
  1361. offset: TSize_t; (* offset *)
  1362. size: TSize_t; (* size *)
  1363. num_events_in_wait_list: Tcl_uint; (* num_events_in_wait_list *)
  1364. const event_wait_list: PPcl_event; (* event_wait_list *)
  1365. event: PPcl_event (* event *)
  1366. ): TCL_int;
  1367. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1368. {$ENDIF}
  1369. {$IFDEF CL_VERSION_1_0}
  1370. TclEnqueueCopyBuffer = function (
  1371. command_queue: PCL_command_queue; (* command_queue *)
  1372. src_buffer: PCL_mem; (* src_buffer *)
  1373. dst_buffer: PCL_mem; (* dst_buffer *)
  1374. src_offset: TSize_t; (* src_offset *)
  1375. dst_offset: TSize_t; (* dst_offset *)
  1376. cb: TSize_t; (* cb *)
  1377. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1378. const event_wait_list: PPCL_event; (* event_wait_list *)
  1379. event: PPCL_event (* event *)
  1380. ): TCL_int;
  1381. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1382. {$ENDIF}
  1383. {$IFDEF CL_VERSION_1_1}
  1384. TclEnqueueCopyBufferRect = function (
  1385. command_queue: PCL_command_queue; (* command_queue *)
  1386. src_buffer: PCL_mem; (* src_buffer *)
  1387. dst_buffer: PCL_mem; (* dst_buffer *)
  1388. const src_origin: PSize_t; (* src_origin *)
  1389. const dst_origin: PSize_t; (* dst_origin *)
  1390. const region: PSize_t; (* region *)
  1391. src_row_pitch: TSize_t; (* src_row_pitch *)
  1392. src_slice_pitch: TSize_t; (* src_slice_pitch *)
  1393. dst_row_pitch: TSize_t; (* dst_row_pitch *)
  1394. dst_slice_pitch: TSize_t; (* dst_slice_pitch *)
  1395. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1396. const event_wait_list: PPCL_event; (* event_wait_list *)
  1397. event: PPCL_event (* event *)
  1398. ): TCL_int;
  1399. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1400. {$ENDIF}
  1401. {$IFDEF CL_VERSION_1_0}
  1402. TclEnqueueReadImage = function (
  1403. command_queue: PCL_command_queue; (* command_queue *)
  1404. image: PCL_mem; (* image *)
  1405. blocking_read: TCL_bool; (* blocking_read *)
  1406. const origin: PSizet; (* origin[3] *)
  1407. const region: PSizet; (* region[3] *)
  1408. row_pitch: TSize_t; (* row_pitch *)
  1409. slice_pitch: TSize_t; (* slice_pitch *)
  1410. ptr: Pointer; (* ptr *)
  1411. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1412. const event_wait_list: PPCL_event; (* event_wait_list *)
  1413. event: PPCL_event (* event *)
  1414. ): TCL_int;
  1415. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1416. {$ENDIF}
  1417. {$IFDEF CL_VERSION_1_0}
  1418. TclEnqueueWriteImage = function (
  1419. command_queue: PCL_command_queue; (* command_queue *)
  1420. image: PCL_mem; (* image *)
  1421. blocking_write: TCL_bool; (* blocking_write *)
  1422. const origin: PSizet; (* [3] *)
  1423. const region: PSizet; (* [3] *)
  1424. input_row_pitch: TSize_t; (* input_row_pitch *)
  1425. input_slice_pitch: TSize_t; (* input_slice_pitch *)
  1426. const ptr: Pointer; (* ptr *)
  1427. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1428. const event_wait_list: PPCL_event; (* event_wait_list *)
  1429. event: PPCL_event (* event *)
  1430. ): TCL_int;
  1431. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1432. {$ENDIF}
  1433. {$IFDEF CL_VERSION_1_2}
  1434. TclEnqueueFillImage = function(
  1435. command_queue: PCL_command_queue; (* command_queue *)
  1436. image: PCL_mem; (* image *)
  1437. const fill_color: Pointer; (* fill_color *)
  1438. // const size_t * /* origin[3] */,
  1439. //const size_t * /* region[3] */,
  1440. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1441. const event_wait_list: PPCL_event; (* event_wait_list *)
  1442. event: PPCL_event (* event *)
  1443. ): TCL_int;
  1444. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1445. {$ENDIF}
  1446. {$IFDEF CL_VERSION_1_0}
  1447. TclEnqueueCopyImage = function (
  1448. command_queue: PCL_command_queue; (* command_queue *)
  1449. src_image: PCL_mem; (* src_image *)
  1450. dst_image: PCL_mem; (* dst_image *)
  1451. const src_origin: PSizet; (* src_origin[3] *)
  1452. const dst_origin: PSizet; (* dst_origin[3] *)
  1453. const region: PSizet; (* region[3] *)
  1454. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1455. const event_wait_list: PPCL_event; (* event_wait_list *)
  1456. event: PPCL_event (* event *)
  1457. ): TCL_int;
  1458. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1459. {$ENDIF}
  1460. {$IFDEF CL_VERSION_1_0}
  1461. TclEnqueueCopyImageToBuffer = function (
  1462. command_queue: PCL_command_queue; (* command_queue *)
  1463. src_image: PCL_mem; (* src_image *)
  1464. dst_buffer: PCL_mem; (* dst_buffer *)
  1465. const src_origin: PSizet; (* [3] *)
  1466. const region: PSizet; (* [3] *)
  1467. dst_offset: TSize_t; (* dst_offset *)
  1468. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1469. const event_wait_list: PPCL_event; (* event_wait_list *)
  1470. event: PPCL_event (* event *)
  1471. ): TCL_int;
  1472. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1473. {$ENDIF}
  1474. {$IFDEF CL_VERSION_1_0}
  1475. TclEnqueueCopyBufferToImage = function (
  1476. command_queue: PCL_command_queue; (* command_queue *)
  1477. src_buffer: PCL_mem; (* src_buffer *)
  1478. dst_image: PCL_mem; (* dst_image *)
  1479. src_offset: TSize_t; (* src_offset *)
  1480. const dst_origin: PSizet; (* [3] *)
  1481. const region: PSizet; (* [3] *)
  1482. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1483. const event_wait_list: PPCL_event; (* event_wait_list *)
  1484. event: PPCL_event (* event *)
  1485. ): TCL_int;
  1486. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1487. {$ENDIF}
  1488. {$IFDEF CL_VERSION_1_0}
  1489. TclEnqueueMapBuffer = function (
  1490. command_queue: PCL_command_queue; (* command_queue *)
  1491. buffer: PCL_mem; (* buffer *)
  1492. blocking_map: TCL_bool; (* blocking_map *)
  1493. map_flags: TCL_map_flags; (* map_flags *)
  1494. offset: TSize_t; (* offset *)
  1495. cb: TSize_t; (* cb *)
  1496. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1497. const event_wait_list: PPCL_event; (* event_wait_list *)
  1498. event: PPCL_event; (* event *)
  1499. errcode_ret: PCL_int (* errcode_ret *)
  1500. ): Pointer;
  1501. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1502. {$ENDIF}
  1503. {$IFDEF CL_VERSION_1_0}
  1504. TclEnqueueMapImage = function (
  1505. command_queue: PCL_command_queue; (* command_queue *)
  1506. image: PCL_mem; (* image *)
  1507. blocking_map: TCL_bool; (* blocking_map *)
  1508. map_flags: TCL_map_flags; (* map_flags *)
  1509. const origin: PSizet; (* [3] *)
  1510. const region: PSizet; (* region[3] *)
  1511. image_row_pitch: PSize_t; (* image_row_pitch *)
  1512. image_slice_pitch: PSize_t; (* image_slice_pitch *)
  1513. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1514. const event_wait_list: PPCL_event; (* event_wait_list *)
  1515. event: PPCL_event; (* event *)
  1516. errcode_ret: PCL_int (* errcode_ret *)
  1517. ): Pointer;
  1518. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1519. {$ENDIF}
  1520. {$IFDEF CL_VERSION_1_0}
  1521. TclEnqueueUnmapMemObject = function (
  1522. command_queue: PCL_command_queue; (* command_queue *)
  1523. memobj: PCL_mem; (* memobj *)
  1524. mapped_ptr: Pointer; (* mapped_ptr *)
  1525. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1526. const event_wait_list: PPCL_event; (* event_wait_list *)
  1527. event: PPCL_event (* event *)
  1528. ): TCL_int;
  1529. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1530. {$ENDIF}
  1531. {$IFDEF CL_VERSION_1_2}
  1532. TclEnqueueMigrateMemObjects = function (
  1533. command_queue: PCL_command_queue; (* command_queue *)
  1534. num_mem_objects: Tcl_uint; (* num_mem_objects *)
  1535. const mem_objects: PPCL_mem; (* mem_objects *)
  1536. flags: Tcl_mem_migration_flags; (* flags *)
  1537. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1538. const event_wait_list: PPCL_event; (* event_wait_list *)
  1539. event: PPCL_event (* event *)
  1540. ): TCL_int;
  1541. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1542. {$ENDIF}
  1543. {$IFDEF CL_VERSION_1_0}
  1544. TclEnqueueNDRangeKernel = function (
  1545. command_queue: PCL_command_queue; (* command_queue *)
  1546. kernel: PCL_kernel; (* kernel *)
  1547. work_dim: TCL_uint; (* work_dim *)
  1548. const global_work_offset: PSize_t; (* global_work_offset *)
  1549. const global_work_size: PSize_t; (* global_work_size *)
  1550. const local_work_size: PSize_t; (* local_work_size *)
  1551. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1552. const event_wait_list: PPCL_event; (* event_wait_list *)
  1553. event: PPCL_event (* event *)
  1554. ): TCL_int;
  1555. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1556. {$ENDIF}
  1557. {$IFDEF CL_VERSION_1_0}
  1558. TclEnqueueTask = function (
  1559. command_queue: PCL_command_queue; (* command_queue *)
  1560. kernel: PCL_kernel; (* kernel *)
  1561. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1562. const event_wait_list: PPCL_event; (* event_wait_list *)
  1563. event: PPCL_event (* event *)
  1564. ): TCL_int;
  1565. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1566. {$ENDIF}
  1567. //type
  1568. {$IFDEF CL_VERSION_1_0}
  1569. TEnqueueUserProc = procedure(userdata: Pointer); {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1570. {$ENDIF}
  1571. {$IFDEF CL_VERSION_1_0}
  1572. TclEnqueueNativeKernel = function (
  1573. command_queue: PCL_command_queue; (* command_queue *)
  1574. user_func: TEnqueueUserProc; (*user_func*)
  1575. args: Pointer; (* args *)
  1576. cb_args: TSize_t; (* cb_args *)
  1577. num_mem_objects: TCL_uint; (* num_mem_objects *)
  1578. const mem_list: PPCL_mem; (* mem_list *)
  1579. const args_mem_loc: PPointer; (* args_mem_loc *)
  1580. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1581. const event_wait_list: PPCL_event; (* event_wait_list *)
  1582. event: PPCL_event (* event *)
  1583. ): TCL_int;
  1584. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1585. {$ENDIF}
  1586. {$IFDEF CL_VERSION_1_2}
  1587. TclEnqueueMarkerWithWaitList = function (
  1588. command_queue: PCL_command_queue; (* command_queue *)
  1589. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1590. const event_wait_list: PPCL_event; (* event_wait_list *)
  1591. event: PPCL_event (* event *)
  1592. ): TCL_int;
  1593. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1594. {$ENDIF}
  1595. {$IFDEF CL_VERSION_1_2}
  1596. TclEnqueueBarrierWithWaitList = function (
  1597. command_queue: PCL_command_queue; (* command_queue *)
  1598. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1599. const event_wait_list: PPCL_event; (* event_wait_list *)
  1600. event: PPCL_event (* event *)
  1601. ): TCL_int;
  1602. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1603. {$ENDIF}
  1604. {$IFDEF CL_VERSION_2_0}
  1605. TclEnqueueSVMFree = function(
  1606. command_queue: PCL_command_queue; (* command_queue *)
  1607. num_svm_pointers: TCL_uint; (* num_svm_pointers *)
  1608. svm_pointers: PPointer; (* svm_pointers[] *)
  1609. //void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */,
  1610. // cl_uint /* num_svm_pointers */,
  1611. // void *[] /* svm_pointers[] */,
  1612. // void * /* user_data */),
  1613. user_data: Pointer; (* user_data *)
  1614. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1615. const event_wait_list: PPCL_event; (* event_wait_list *)
  1616. event: PPCL_event (* event *)
  1617. ): TCL_int;
  1618. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1619. {$ENDIF}
  1620. {$IFDEF CL_VERSION_2_0}
  1621. TclEnqueueSVMMemcpy = function(
  1622. command_queue: PCL_command_queue; (* command_queue *)
  1623. blocking_copy: TCL_bool; (* blocking_copy *)
  1624. dst_ptr: Pointer; (* dst_ptr *)
  1625. const src_ptr: Pointer; (* src_ptr *)
  1626. size: TSize_t; (* size *)
  1627. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1628. const event_wait_list: PPCL_event; (* event_wait_list *)
  1629. event: PPCL_event (* event *)
  1630. ): TCL_int;
  1631. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1632. {$ENDIF}
  1633. {$IFDEF CL_VERSION_2_0}
  1634. TclEnqueueSVMMemFill = function(
  1635. command_queue: PCL_command_queue; (* command_queue *)
  1636. svm_ptr: Pointer; (* svm_ptr *)
  1637. const pattern: Pointer; (* pattern *)
  1638. pattern_size: TSize_t; (* pattern_size *)
  1639. size: TSize_t; (* size *)
  1640. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list */,
  1641. const event_wait_list: PPCL_event; (* event_wait_list *)
  1642. event: PPCL_event (* event *)
  1643. ): TCL_int;
  1644. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1645. {$ENDIF}
  1646. {$IFDEF CL_VERSION_2_0}
  1647. TclEnqueueSVMMap = function(
  1648. command_queue: PCL_command_queue; (* command_queue *)
  1649. blocking_map: TCL_bool; (* blocking_map *)
  1650. flags: TCL_map_flags; (* flags *)
  1651. svm_ptr: Pointer; (* svm_ptr *)
  1652. size: TSize_t; (* size *)
  1653. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1654. const event_wait_list: PPCL_event; (* event_wait_list *)
  1655. event: PPCL_event (* event *)
  1656. ): TCL_int;
  1657. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1658. {$ENDIF}
  1659. {$IFDEF CL_VERSION_2_0}
  1660. TclEnqueueSVMUnmap = function(
  1661. command_queue: PCL_command_queue; (* command_queue *)
  1662. svm_ptr: Pointer; (* svm_ptr *)
  1663. num_events_in_wait_list: TCL_uint; (* num_events_in_wait_list *)
  1664. const event_wait_list: PPCL_event; (* event_wait_list *)
  1665. event: PPCL_event (* event *)
  1666. ): TCL_int;
  1667. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1668. {$ENDIF}
  1669. {$IFDEF CL_VERSION_1_2}
  1670. TclSetPrintfCallback = function(
  1671. context: PCL_context; (* context *)
  1672. //void (CL_CALLBACK * /* pfn_notify */)(cl_context /* program */,
  1673. // cl_uint /*printf_data_len */,
  1674. // char * /* printf_data_ptr */,
  1675. // void * /* user_data */),
  1676. user_data: Pointer (* user_data *)
  1677. ): TCL_int;
  1678. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1679. {$ENDIF}
  1680. {$IFDEF CL_VERSION_1_0}
  1681. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1682. TclEnqueueMarker = function (
  1683. command_queue: PCL_command_queue; (* command_queue *)
  1684. event: PPCL_event (* event *)
  1685. ): TCL_int;
  1686. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1687. {$ENDIF}
  1688. {$ENDIF}
  1689. {$IFDEF CL_VERSION_1_0}
  1690. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1691. TclEnqueueWaitForEvents = function (
  1692. command_queue: PCL_command_queue; (* command_queue *)
  1693. num_events: TCL_uint; (* num_events *)
  1694. const event_list: PPCL_event (* event_list *)
  1695. ): TCL_int;
  1696. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1697. {$ENDIF}
  1698. {$ENDIF}
  1699. {$IFDEF CL_VERSION_1_0}
  1700. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1701. TclEnqueueBarrier = function (command_queue: PCL_command_queue (* command_queue *) ): TCL_int; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1702. {$ENDIF}
  1703. {$ENDIF}
  1704. (* Extension function access
  1705. *
  1706. * Returns the extension function address for the given function name,
  1707. * or NULL if a valid function can not be found. The client must
  1708. * check to make sure the address is not NULL, before using or
  1709. * calling the returned function address.
  1710. *)
  1711. {$IFDEF CL_VERSION_1_0}
  1712. TclGetExtensionFunctionAddress = function (const func_name: PAnsiChar): Pointer; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1713. {$ENDIF}
  1714. {$IFDEF CL_VERSION_1_2}
  1715. TclGetExtensionFunctionAddressForPlatform = function(
  1716. platform: PCL_platform_id; (* platform *)
  1717. const func_name: PAnsiChar (* func_name *)
  1718. ): Pointer; {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  1719. {$ENDIF}
  1720. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  1721. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'Var'}{$ENDIF}
  1722. var
  1723. (* Platform API *)
  1724. {$IFDEF CL_VERSION_1_0}
  1725. clGetPlatformIDs: TclGetPlatformIDs;
  1726. clGetPlatformInfo: TclGetPlatformInfo;
  1727. {$ENDIF}
  1728. (* Device APIs *)
  1729. {$IFDEF CL_VERSION_1_0}
  1730. clGetDeviceIDs: TclGetDeviceIDs;
  1731. clGetDeviceInfo: TclGetDeviceInfo;
  1732. {$ENDIF}
  1733. {$IFDEF CL_VERSION_1_2}
  1734. clCreateSubDevices: TclCreateSubDevices;
  1735. clRetainDevice: TclRetainDevice;
  1736. clReleaseDevice: TclReleaseDevice;
  1737. {$ENDIF}
  1738. (* Context APIs *)
  1739. {$IFDEF CL_VERSION_1_0}
  1740. clCreateContext: TclCreateContext;
  1741. clCreateContextFromType: TclCreateContextFromType;
  1742. clRetainContext: TclRetainContext;
  1743. clReleaseContext: TclReleaseContext;
  1744. clGetContextInfo: TclGetContextInfo;
  1745. {$ENDIF}
  1746. (* Command Queue APIs *)
  1747. {$IFDEF CL_VERSION_1_0}
  1748. clCreateCommandQueue: TclCreateCommandQueue;
  1749. clRetainCommandQueue: TclRetainCommandQueue;
  1750. clReleaseCommandQueue: TclReleaseCommandQueue;
  1751. clGetCommandQueueInfo: TclGetCommandQueueInfo;
  1752. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_0_APIS}
  1753. clSetCommandQueueProperty: TclSetCommandQueueProperty;
  1754. {$ENDIF}
  1755. {$ENDIF}
  1756. (* Memory Object APIs *)
  1757. {$IFDEF CL_VERSION_1_0}
  1758. clCreateBuffer: TclCreateBuffer;
  1759. {$ENDIF}
  1760. {$IFDEF CL_VERSION_1_1}
  1761. clCreateSubBuffer: TclCreateSubBuffer; // OpenCL 1.1
  1762. {$ENDIF}
  1763. {$IFDEF CL_VERSION_1_2}
  1764. clCreateImage: TclCreateImage;
  1765. {$ENDIF}
  1766. {$IFDEF CL_VERSION_1_0}
  1767. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1768. clCreateImage2D: TclCreateImage2D;
  1769. clCreateImage3D: TclCreateImage3D;
  1770. {$ENDIF}
  1771. clRetainMemObject: TclRetainMemObject;
  1772. clReleaseMemObject: TclReleaseMemObject;
  1773. clGetSupportedImageFormats: TclGetSupportedImageFormats;
  1774. clGetMemObjectInfo: TclGetMemObjectInfo;
  1775. clGetImageInfo: TclGetImageInfo;
  1776. {$ENDIF}
  1777. {$IFDEF CL_VERSION_1_1}
  1778. clSetMemObjectDestructorCallback: TclSetMemObjectDestructorCallback; // OpenCL 1.1
  1779. {$ENDIF}
  1780. (* Sampler APIs *)
  1781. {$IFDEF CL_VERSION_1_0}
  1782. clCreateSampler: TclCreateSampler;
  1783. clRetainSampler: TclRetainSampler;
  1784. clReleaseSampler: TclReleaseSampler;
  1785. clGetSamplerInfo: TclGetSamplerInfo;
  1786. {$ENDIF}
  1787. (* Program Object APIs *)
  1788. {$IFDEF CL_VERSION_1_0}
  1789. clCreateProgramWithSource: TclCreateProgramWithSource;
  1790. clCreateProgramWithBinary: TclCreateProgramWithBinary;
  1791. {$ENDIF}
  1792. {$IFDEF CL_VERSION_1_2}
  1793. clCreateProgramWithBuiltInKernels: TclCreateProgramWithBuiltInKernels;
  1794. {$ENDIF}
  1795. {$IFDEF CL_VERSION_1_0}
  1796. clRetainProgram: TclRetainProgram;
  1797. clReleaseProgram: TclReleaseProgram;
  1798. clBuildProgram: TclBuildProgram;
  1799. {$ENDIF}
  1800. {$IFDEF CL_VERSION_1_2}
  1801. clCompileProgram: TclCompileProgram;
  1802. clLinkProgram: TclLinkProgram;
  1803. clUnloadPlatformCompiler: TclUnloadPlatformCompiler;
  1804. {$ENDIF}
  1805. {$IFDEF CL_VERSION_1_0}
  1806. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1807. clUnloadCompiler: TclUnloadCompiler;
  1808. {$ENDIF}
  1809. clGetProgramInfo: TclGetProgramInfo;
  1810. clGetProgramBuildInfo: TclGetProgramBuildInfo;
  1811. {$ENDIF}
  1812. (* Kernel Object APIs *)
  1813. {$IFDEF CL_VERSION_1_0}
  1814. clCreateKernel: TclCreateKernel;
  1815. clCreateKernelsInProgram: TclCreateKernelsInProgram;
  1816. clRetainKernel: TclRetainKernel;
  1817. clReleaseKernel: TclReleaseKernel;
  1818. clSetKernelArg: TclSetKernelArg;
  1819. clGetKernelInfo: TclGetKernelInfo;
  1820. {$ENDIF}
  1821. {$IFDEF CL_VERSION_1_2}
  1822. clGetKernelArgInfo: TclGetKernelArgInfo;
  1823. {$ENDIF}
  1824. {$IFDEF CL_VERSION_1_0}
  1825. clGetKernelWorkGroupInfo: TclGetKernelWorkGroupInfo;
  1826. {$ENDIF}
  1827. (* Event Object APIs *)
  1828. {$IFDEF CL_VERSION_1_0}
  1829. clWaitForEvents: TclWaitForEvents;
  1830. clGetEventInfo: TclGetEventInfo;
  1831. {$ENDIF}
  1832. {$IFDEF CL_VERSION_1_1}
  1833. clCreateUserEvent: TclCreateUserEvent; // OpenCL 1.1
  1834. {$ENDIF}
  1835. {$IFDEF CL_VERSION_1_0}
  1836. clRetainEvent: TclRetainEvent;
  1837. clReleaseEvent: TclReleaseEvent;
  1838. {$ENDIF}
  1839. {$IFDEF CL_VERSION_1_1}
  1840. clSetUserEventStatus: TclSetUserEventStatus; // OpenCL 1.1
  1841. clSetEventCallback: TclSetEventCallback; // OpenCL 1.1
  1842. {$ENDIF}
  1843. (* Profiling APIs *)
  1844. {$IFDEF CL_VERSION_1_0}
  1845. clGetEventProfilingInfo: TclGetEventProfilingInfo;
  1846. {$ENDIF}
  1847. (* Flush and Finish APIs *)
  1848. {$IFDEF CL_VERSION_1_0}
  1849. clFlush: TclFlush;
  1850. clFinish: TclFinish;
  1851. {$ENDIF}
  1852. (* Enqueued Commands APIs *)
  1853. {$IFDEF CL_VERSION_1_0}
  1854. clEnqueueReadBuffer: TclEnqueueReadBuffer;
  1855. {$ENDIF}
  1856. {$IFDEF CL_VERSION_1_1}
  1857. clEnqueueReadBufferRect: TclEnqueueReadBufferRect; // OpenCL 1.1
  1858. {$ENDIF}
  1859. {$IFDEF CL_VERSION_1_0}
  1860. clEnqueueWriteBuffer: TclEnqueueWriteBuffer;
  1861. {$ENDIF}
  1862. {$IFDEF CL_VERSION_1_1}
  1863. clEnqueueWriteBufferRect: TclEnqueueWriteBufferRect; // OpenCL 1.1
  1864. {$ENDIF}
  1865. {$IFDEF CL_VERSION_1_2}
  1866. clEnqueueFillBuffer: TclEnqueueFillBuffer;
  1867. {$ENDIF}
  1868. {$IFDEF CL_VERSION_1_0}
  1869. clEnqueueCopyBuffer: TclEnqueueCopyBuffer;
  1870. {$ENDIF}
  1871. {$IFDEF CL_VERSION_1_1}
  1872. clEnqueueCopyBufferRect: TclEnqueueCopyBufferRect; //OpenCL 1.1
  1873. {$ENDIF}
  1874. {$IFDEF CL_VERSION_1_0}
  1875. clEnqueueReadImage: TclEnqueueReadImage;
  1876. clEnqueueWriteImage: TclEnqueueWriteImage;
  1877. {$ENDIF}
  1878. {$IFDEF CL_VERSION_1_2}
  1879. clEnqueueFillImage: TclEnqueueFillImage;
  1880. {$ENDIF}
  1881. {$IFDEF CL_VERSION_1_0}
  1882. clEnqueueCopyImage: TclEnqueueCopyImage;
  1883. clEnqueueCopyImageToBuffer: TclEnqueueCopyImageToBuffer;
  1884. clEnqueueCopyBufferToImage: TclEnqueueCopyBufferToImage;
  1885. clEnqueueMapBuffer: TclEnqueueMapBuffer;
  1886. clEnqueueMapImage: TclEnqueueMapImage;
  1887. clEnqueueUnmapMemObject: TclEnqueueUnmapMemObject;
  1888. {$ENDIF}
  1889. {$IFDEF CL_VERSION_1_2}
  1890. clEnqueueMigrateMemObjects: TclEnqueueMigrateMemObjects;
  1891. {$ENDIF}
  1892. {$IFDEF CL_VERSION_1_0}
  1893. clEnqueueNDRangeKernel: TclEnqueueNDRangeKernel;
  1894. clEnqueueTask: TclEnqueueTask;
  1895. clEnqueueNativeKernel: TclEnqueueNativeKernel;
  1896. {$ENDIF}
  1897. {$IFDEF CL_VERSION_1_2}
  1898. clEnqueueMarkerWithWaitList: TclEnqueueMarkerWithWaitList;
  1899. clEnqueueBarrierWithWaitList: TclEnqueueBarrierWithWaitList;
  1900. clSetPrintfCallback: TclSetPrintfCallback;
  1901. {$ENDIF}
  1902. {$IFDEF CL_VERSION_1_0}
  1903. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  1904. clEnqueueMarker: TclEnqueueMarker;
  1905. clEnqueueWaitForEvents: TclEnqueueWaitForEvents;
  1906. clEnqueueBarrier: TclEnqueueBarrier;
  1907. {$ENDIF}
  1908. {$ENDIF}
  1909. (* Extension function access
  1910. *
  1911. * Returns the extension function address for the given function name,
  1912. * or NULL if a valid function can not be found. The client must
  1913. * check to make sure the address is not NULL, before using or
  1914. * calling the returned function address.
  1915. *)
  1916. {$IFDEF CL_VERSION_1_0}
  1917. clGetExtensionFunctionAddress: TclGetExtensionFunctionAddress;
  1918. {$ENDIF}
  1919. {$IFDEF CL_VERSION_1_2}
  1920. clGetExtensionFunctionAddressForPlatform: TclGetExtensionFunctionAddressForPlatform;
  1921. {$ENDIF}
  1922. {$IFDEF CL_VERSION_2_0}
  1923. clCreateCommandQueueWithProperties: TclCreateCommandQueueWithProperties;
  1924. clCreatePipe: TclCreatePipe;
  1925. clGetPipeInfo: TclGetPipeInfo;
  1926. clSVMAlloc: TclSVMAlloc;
  1927. clSVMFree: TclSVMFree;
  1928. clCreateSamplerWithProperties: TclCreateSamplerWithProperties;
  1929. clSetKernelArgSVMPointer: TclSetKernelArgSVMPointer;
  1930. clSetKernelExecInfo: TclSetKernelExecInfo;
  1931. clEnqueueSVMFree: TclEnqueueSVMFree;
  1932. clEnqueueSVMMemcpy: TclEnqueueSVMMemcpy;
  1933. clEnqueueSVMMemFill: TclEnqueueSVMMemFill;
  1934. clEnqueueSVMMap: TclEnqueueSVMMap;
  1935. clEnqueueSVMUnmap: TclEnqueueSVMUnmap;
  1936. {$ENDIF}
  1937. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  1938. function oclGetProcAddress(ProcName: PAnsiChar; LibHandle: Pointer = nil): Pointer;
  1939. function InitOpenCL(LibName: String = OpenCLLibName): Boolean;
  1940. function GetString(const Status: TCL_int): AnsiString;
  1941. var
  1942. OCL_LibHandle: Pointer = nil;
  1943. implementation
  1944. {$IFDEF LINUX}
  1945. const
  1946. RTLD_LAZY = $001;
  1947. RTLD_NOW = $002;
  1948. RTLD_BINDING_MASK = $003;
  1949. // Seems to work on Debian / Fedora
  1950. LibraryLib = {$IFDEF LINUX} 'libdl.so.2'{$ELSE} 'c'{$ENDIF};
  1951. function dlopen(Name: PAnsiChar; Flags: LongInt): Pointer; cdecl; external LibraryLib name 'dlopen';
  1952. function dlclose(Lib: Pointer): LongInt; cdecl; external LibraryLib name 'dlclose';
  1953. function dlsym(Lib: Pointer; Name: PAnsiChar): Pointer; cdecl; external LibraryLib name 'dlsym';
  1954. {$ENDIF}
  1955. function oclLoadLibrary(Name: PChar): Pointer;
  1956. begin
  1957. {$IFDEF WINDOWS}
  1958. Result := Pointer(LoadLibrary(Name));
  1959. {$ENDIF}
  1960. {$IFDEF LINUX}
  1961. Result := dlopen(Name, RTLD_LAZY);
  1962. {$ENDIF}
  1963. end;
  1964. function oclFreeLibrary(LibHandle: Pointer): Boolean;
  1965. begin
  1966. if LibHandle = nil then
  1967. Result := False
  1968. else
  1969. {$IFDEF WINDOWS}
  1970. Result := FreeLibrary(HMODULE(LibHandle));
  1971. {$ENDIF}
  1972. {$IFDEF LINUX}
  1973. Result := dlclose(LibHandle) = 0;
  1974. {$ENDIF}
  1975. end;
  1976. function oclGetProcAddress(ProcName: PAnsiChar; LibHandle: Pointer = nil): Pointer;
  1977. begin
  1978. if LibHandle = nil then LibHandle := OCL_LibHandle;
  1979. {$IFDEF WINDOWS}
  1980. Result := GetProcAddress(HMODULE(LibHandle), ProcName);
  1981. {$ENDIF}
  1982. {$IFDEF LINUX}
  1983. Result := dlsym(LibHandle, ProcName);
  1984. {$ENDIF}
  1985. end;
  1986. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'InitOpenCL'}{$ENDIF}
  1987. function InitOpenCL(LibName: String): Boolean;
  1988. begin
  1989. Result := False;
  1990. // free opened libraries
  1991. if OCL_LibHandle <> nil then
  1992. oclFreeLibrary(OCL_LibHandle);
  1993. // load library
  1994. OCL_LibHandle := oclLoadLibrary(PChar(LibName));
  1995. // load CL functions
  1996. if (OCL_LibHandle <> nil) then
  1997. begin
  1998. (* Platform API *)
  1999. {$IFDEF CL_VERSION_1_0}
  2000. clGetPlatformIDs := TclGetPlatformIDs(oclGetProcAddress('clGetPlatformIDs', OCL_LibHandle));
  2001. clGetPlatformInfo := TclGetPlatformInfo(oclGetProcAddress('clGetPlatformInfo', OCL_LibHandle));
  2002. {$ENDIF}
  2003. (* Device APIs *)
  2004. {$IFDEF CL_VERSION_1_0}
  2005. clGetDeviceIDs := TclGetDeviceIDs(oclGetProcAddress('clGetDeviceIDs', OCL_LibHandle));
  2006. clGetDeviceInfo := TclGetDeviceInfo(oclGetProcAddress('clGetDeviceInfo', OCL_LibHandle));
  2007. {$ENDIF}
  2008. {$IFDEF CL_VERSION_1_2}
  2009. clCreateSubDevices := TclCreateSubDevices(oclGetProcAddress('clCreateSubDevices', OCL_LibHandle));
  2010. clRetainDevice := TclRetainDevice(oclGetProcAddress('clRetainDevice', OCL_LibHandle));
  2011. clReleaseDevice := TclReleaseDevice(oclGetProcAddress('clReleaseDevice', OCL_LibHandle));
  2012. {$ENDIF}
  2013. (* Context APIs *)
  2014. {$IFDEF CL_VERSION_1_0}
  2015. clCreateContext := TclCreateContext(oclGetProcAddress('clCreateContext', OCL_LibHandle));
  2016. clCreateContextFromType := TclCreateContextFromType(oclGetProcAddress('clCreateContextFromType', OCL_LibHandle));
  2017. clRetainContext := TclRetainContext(oclGetProcAddress('clRetainContext', OCL_LibHandle));
  2018. clReleaseContext := TclReleaseContext(oclGetProcAddress('clReleaseContext', OCL_LibHandle));
  2019. clGetContextInfo := TclGetContextInfo(oclGetProcAddress('clGetContextInfo', OCL_LibHandle));
  2020. {$ENDIF}
  2021. (* Command Queue APIs *)
  2022. {$IFDEF CL_VERSION_1_0}
  2023. clCreateCommandQueue := TclCreateCommandQueue(oclGetProcAddress('clCreateCommandQueue', OCL_LibHandle));
  2024. clRetainCommandQueue := TclRetainCommandQueue(oclGetProcAddress('clRetainCommandQueue', OCL_LibHandle));
  2025. clReleaseCommandQueue := TclReleaseCommandQueue(oclGetProcAddress('clReleaseCommandQueue', OCL_LibHandle));
  2026. clGetCommandQueueInfo := TclGetCommandQueueInfo(oclGetProcAddress('clGetCommandQueueInfo', OCL_LibHandle));
  2027. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_0_APIS}
  2028. clSetCommandQueueProperty := TclSetCommandQueueProperty(oclGetProcAddress('clSetCommandQueueProperty', OCL_LibHandle));
  2029. {$ENDIF}
  2030. {$ENDIF}
  2031. (* Memory Object APIs *)
  2032. {$IFDEF CL_VERSION_1_0}
  2033. clCreateBuffer := TclCreateBuffer(oclGetProcAddress('clCreateBuffer', OCL_LibHandle));
  2034. {$ENDIF}
  2035. {$IFDEF CL_VERSION_1_1}
  2036. clCreateSubBuffer := TclCreateSubBuffer(oclGetProcAddress('clCreateSubBuffer', OCL_LibHandle));
  2037. {$ENDIF}
  2038. {$IFDEF CL_VERSION_1_2}
  2039. clCreateImage := TclCreateImage(oclGetProcAddress('clCreateImage', OCL_LibHandle));
  2040. {$ENDIF}
  2041. {$IFDEF CL_VERSION_1_0}
  2042. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  2043. clCreateImage2D := TclCreateImage2D(oclGetProcAddress('clCreateImage2D', OCL_LibHandle));
  2044. clCreateImage3D := TclCreateImage3D(oclGetProcAddress('clCreateImage3D', OCL_LibHandle));
  2045. {$ENDIF}
  2046. clRetainMemObject := TclRetainMemObject(oclGetProcAddress('clRetainMemObject', OCL_LibHandle));
  2047. clReleaseMemObject := TclReleaseMemObject(oclGetProcAddress('clReleaseMemObject', OCL_LibHandle));
  2048. clGetSupportedImageFormats := TclGetSupportedImageFormats(oclGetProcAddress('clGetSupportedImageFormats', OCL_LibHandle));
  2049. clGetMemObjectInfo := TclGetMemObjectInfo(oclGetProcAddress('clGetMemObjectInfo', OCL_LibHandle));
  2050. clGetImageInfo := TclGetImageInfo(oclGetProcAddress('clGetImageInfo', OCL_LibHandle));
  2051. {$ENDIF}
  2052. {$IFDEF CL_VERSION_1_1}
  2053. clSetMemObjectDestructorCallback := TclSetMemObjectDestructorCallback(oclGetProcAddress('clSetMemObjectDestructorCallback', OCL_LibHandle));
  2054. {$ENDIF}
  2055. (* Sampler APIs *)
  2056. {$IFDEF CL_VERSION_1_0}
  2057. clCreateSampler := TclCreateSampler(oclGetProcAddress('clCreateSampler', OCL_LibHandle));
  2058. clRetainSampler := TclRetainSampler(oclGetProcAddress('clRetainSampler', OCL_LibHandle));
  2059. clReleaseSampler := TclReleaseSampler(oclGetProcAddress('clReleaseSampler', OCL_LibHandle));
  2060. clGetSamplerInfo := TclGetSamplerInfo(oclGetProcAddress('clGetSamplerInfo', OCL_LibHandle));
  2061. {$ENDIF}
  2062. (* Program Object APIs *)
  2063. {$IFDEF CL_VERSION_1_0}
  2064. clCreateProgramWithSource := TclCreateProgramWithSource(oclGetProcAddress('clCreateProgramWithSource', OCL_LibHandle));
  2065. clCreateProgramWithBinary := TclCreateProgramWithBinary(oclGetProcAddress('clCreateProgramWithBinary', OCL_LibHandle));
  2066. {$ENDIF}
  2067. {$IFDEF CL_VERSION_1_2}
  2068. clCreateProgramWithBuiltInKernels := TclCreateProgramWithBuiltInKernels(oclGetProcAddress('clCreateProgramWithBuiltInKernels', OCL_LibHandle));
  2069. {$ENDIF}
  2070. {$IFDEF CL_VERSION_1_0}
  2071. clRetainProgram := TclRetainProgram(oclGetProcAddress('clRetainProgram', OCL_LibHandle));
  2072. clReleaseProgram := TclReleaseProgram(oclGetProcAddress('clReleaseProgram', OCL_LibHandle));
  2073. clBuildProgram := TclBuildProgram(oclGetProcAddress('clBuildProgram', OCL_LibHandle));
  2074. {$ENDIF}
  2075. {$IFDEF CL_VERSION_1_2}
  2076. clCompileProgram := TclCompileProgram(oclGetProcAddress('clCompileProgram', OCL_LibHandle));
  2077. clLinkProgram := TclLinkProgram(oclGetProcAddress('clLinkProgram', OCL_LibHandle));
  2078. clUnloadPlatformCompiler := TclUnloadPlatformCompiler(oclGetProcAddress('clUnloadPlatformCompiler', OCL_LibHandle));
  2079. {$ENDIF}
  2080. {$IFDEF CL_VERSION_1_0}
  2081. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  2082. clUnloadCompiler := TclUnloadCompiler(oclGetProcAddress('clUnloadCompiler', OCL_LibHandle));
  2083. {$ENDIF}
  2084. clGetProgramInfo := TclGetProgramInfo(oclGetProcAddress('clGetProgramInfo', OCL_LibHandle));
  2085. clGetProgramBuildInfo := TclGetProgramBuildInfo(oclGetProcAddress('clGetProgramBuildInfo', OCL_LibHandle));
  2086. {$ENDIF}
  2087. (* Kernel Object APIs *)
  2088. {$IFDEF CL_VERSION_1_0}
  2089. clCreateKernel := TclCreateKernel(oclGetProcAddress('clCreateKernel', OCL_LibHandle));
  2090. clCreateKernelsInProgram := TclCreateKernelsInProgram(oclGetProcAddress('clCreateKernelsInProgram', OCL_LibHandle));
  2091. clRetainKernel := TclRetainKernel(oclGetProcAddress('clRetainKernel', OCL_LibHandle));
  2092. clReleaseKernel := TclReleaseKernel(oclGetProcAddress('clReleaseKernel', OCL_LibHandle));
  2093. clSetKernelArg := TclSetKernelArg(oclGetProcAddress('clSetKernelArg', OCL_LibHandle));
  2094. clGetKernelInfo := TclGetKernelInfo(oclGetProcAddress('clGetKernelInfo', OCL_LibHandle));
  2095. {$ENDIF}
  2096. {$IFDEF CL_VERSION_1_2}
  2097. clGetKernelArgInfo := TclGetKernelArgInfo(oclGetProcAddress('clGetKernelArgInfo', OCL_LibHandle));
  2098. {$ENDIF}
  2099. {$IFDEF CL_VERSION_1_0}
  2100. clGetKernelWorkGroupInfo := TclGetKernelWorkGroupInfo(oclGetProcAddress('clGetKernelWorkGroupInfo', OCL_LibHandle));
  2101. {$ENDIF}
  2102. (* Event Object APIs *)
  2103. {$IFDEF CL_VERSION_1_0}
  2104. clWaitForEvents := TclWaitForEvents(oclGetProcAddress('clWaitForEvents', OCL_LibHandle));
  2105. clGetEventInfo := TclGetEventInfo(oclGetProcAddress('clGetEventInfo', OCL_LibHandle));
  2106. {$ENDIF}
  2107. {$IFDEF CL_VERSION_1_1}
  2108. clCreateUserEvent := TclCreateUserEvent(oclGetProcAddress('clCreateUserEvent', OCL_LibHandle));
  2109. {$ENDIF}
  2110. {$IFDEF CL_VERSION_1_0}
  2111. clRetainEvent := TclRetainEvent(oclGetProcAddress('clRetainEvent', OCL_LibHandle));
  2112. clReleaseEvent := TclReleaseEvent(oclGetProcAddress('clReleaseEvent', OCL_LibHandle));
  2113. {$ENDIF}
  2114. {$IFDEF CL_VERSION_1_1}
  2115. clSetUserEventStatus := TclSetUserEventStatus(oclGetProcAddress('clSetUserEventStatus', OCL_LibHandle));
  2116. clSetEventCallback := TclSetEventCallback(oclGetProcAddress('clSetEventCallback', OCL_LibHandle));
  2117. {$ENDIF}
  2118. (* Profiling APIs *)
  2119. {$IFDEF CL_VERSION_1_0}
  2120. clGetEventProfilingInfo := TclGetEventProfilingInfo(oclGetProcAddress('clGetEventProfilingInfo', OCL_LibHandle));
  2121. {$ENDIF}
  2122. (* Flush and Finish APIs *)
  2123. {$IFDEF CL_VERSION_1_0}
  2124. clFlush := TclFlush(oclGetProcAddress('clFlush', OCL_LibHandle));
  2125. clFinish := TclFinish(oclGetProcAddress('clFinish', OCL_LibHandle));
  2126. {$ENDIF}
  2127. (* Enqueued Commands APIs *)
  2128. {$IFDEF CL_VERSION_1_0}
  2129. clEnqueueReadBuffer := TclEnqueueReadBuffer(oclGetProcAddress('clEnqueueReadBuffer', OCL_LibHandle));
  2130. {$ENDIF}
  2131. {$IFDEF CL_VERSION_1_1}
  2132. clEnqueueReadBufferRect := TclEnqueueReadBufferRect(oclGetProcAddress('clEnqueueReadBufferRect', OCL_LibHandle));
  2133. {$ENDIF}
  2134. {$IFDEF CL_VERSION_1_0}
  2135. clEnqueueWriteBuffer := TclEnqueueWriteBuffer(oclGetProcAddress('clEnqueueWriteBuffer', OCL_LibHandle));
  2136. {$ENDIF}
  2137. {$IFDEF CL_VERSION_1_2}
  2138. clEnqueueFillBuffer := TclEnqueueFillBuffer(oclGetProcAddress('clEnqueueFillBuffer', OCL_LibHandle));
  2139. {$ENDIF}
  2140. {$IFDEF CL_VERSION_1_1}
  2141. clEnqueueWriteBufferRect := TclEnqueueWriteBufferRect(oclGetProcAddress('clEnqueueWriteBufferRect', OCL_LibHandle));
  2142. {$ENDIF}
  2143. {$IFDEF CL_VERSION_1_0}
  2144. clEnqueueCopyBuffer := TclEnqueueCopyBuffer(oclGetProcAddress('clEnqueueCopyBuffer', OCL_LibHandle));
  2145. {$ENDIF}
  2146. {$IFDEF CL_VERSION_1_1}
  2147. clEnqueueCopyBufferRect := TclEnqueueCopyBufferRect(oclGetProcAddress('clEnqueueCopyBufferRect', OCL_LibHandle));
  2148. {$ENDIF}
  2149. {$IFDEF CL_VERSION_1_0}
  2150. clEnqueueReadImage := TclEnqueueReadImage(oclGetProcAddress('clEnqueueReadImage', OCL_LibHandle));
  2151. clEnqueueWriteImage := TclEnqueueWriteImage(oclGetProcAddress('clEnqueueWriteImage', OCL_LibHandle));
  2152. {$ENDIF}
  2153. {$IFDEF CL_VERSION_1_2}
  2154. clEnqueueFillImage := TclEnqueueFillImage(oclGetProcAddress('clEnqueueFillImage', OCL_LibHandle));
  2155. {$ENDIF}
  2156. {$IFDEF CL_VERSION_1_0}
  2157. clEnqueueCopyImage := TclEnqueueCopyImage(oclGetProcAddress('clEnqueueCopyImage', OCL_LibHandle));
  2158. clEnqueueCopyImageToBuffer := TclEnqueueCopyImageToBuffer(oclGetProcAddress('clEnqueueCopyImageToBuffer', OCL_LibHandle));
  2159. clEnqueueCopyBufferToImage := TclEnqueueCopyBufferToImage(oclGetProcAddress('clEnqueueCopyBufferToImage', OCL_LibHandle));
  2160. clEnqueueMapBuffer := TclEnqueueMapBuffer(oclGetProcAddress('clEnqueueMapBuffer', OCL_LibHandle));
  2161. clEnqueueMapImage := TclEnqueueMapImage(oclGetProcAddress('clEnqueueMapImage', OCL_LibHandle));
  2162. clEnqueueUnmapMemObject := TclEnqueueUnmapMemObject(oclGetProcAddress('clEnqueueUnmapMemObject', OCL_LibHandle));
  2163. {$ENDIF}
  2164. {$IFDEF CL_VERSION_1_2}
  2165. clEnqueueMigrateMemObjects := TclEnqueueMigrateMemObjects(oclGetProcAddress('clEnqueueMigrateMemObjects', OCL_LibHandle));
  2166. {$ENDIF}
  2167. {$IFDEF CL_VERSION_1_0}
  2168. clEnqueueNDRangeKernel := TclEnqueueNDRangeKernel(oclGetProcAddress('clEnqueueNDRangeKernel', OCL_LibHandle));
  2169. clEnqueueTask := TclEnqueueTask(oclGetProcAddress('clEnqueueTask', OCL_LibHandle));
  2170. clEnqueueNativeKernel := TclEnqueueNativeKernel(oclGetProcAddress('clEnqueueNativeKernel', OCL_LibHandle));
  2171. {$ENDIF}
  2172. {$IFDEF CL_VERSION_1_2}
  2173. clEnqueueMarkerWithWaitList := TclEnqueueMarkerWithWaitList(oclGetProcAddress('clEnqueueMarkerWithWaitList', OCL_LibHandle));
  2174. clEnqueueBarrierWithWaitList := TclEnqueueBarrierWithWaitList(oclGetProcAddress('clEnqueueBarrierWithWaitList', OCL_LibHandle));
  2175. clSetPrintfCallback := TclSetPrintfCallback(oclGetProcAddress('clSetPrintfCallback', OCL_LibHandle));
  2176. {$ENDIF}
  2177. {$IFDEF CL_VERSION_1_0}
  2178. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  2179. clEnqueueMarker := TclEnqueueMarker(oclGetProcAddress('clEnqueueMarker', OCL_LibHandle));
  2180. clEnqueueWaitForEvents := TclEnqueueWaitForEvents(oclGetProcAddress('clEnqueueWaitForEvents', OCL_LibHandle));
  2181. clEnqueueBarrier := TclEnqueueBarrier(oclGetProcAddress('clEnqueueBarrier', OCL_LibHandle));
  2182. {$ENDIF}
  2183. {$ENDIF}
  2184. //Extension function access
  2185. {$IFDEF CL_VERSION_1_0}
  2186. {$IFDEF CL_USE_DEPRECATED_OPENCL_1_1_APIS}
  2187. clGetExtensionFunctionAddress := TclGetExtensionFunctionAddress(oclGetProcAddress('clGetExtensionFunctionAddress', OCL_LibHandle));
  2188. {$ENDIF}
  2189. {$ENDIF}
  2190. {$IFDEF CL_VERSION_1_2}
  2191. clGetExtensionFunctionAddressForPlatform := TclGetExtensionFunctionAddressForPlatform(oclGetProcAddress('clGetExtensionFunctionAddressForPlatform', OCL_LibHandle));
  2192. {$ENDIF}
  2193. {$IFDEF CL_VERSION_2_0}
  2194. clCreateCommandQueueWithProperties := TclCreateCommandQueueWithProperties(oclGetProcAddress('clCreateCommandQueueWithProperties', OCL_LibHandle));
  2195. clCreatePipe := TclCreatePipe(oclGetProcAddress('clCreatePipe', OCL_LibHandle));
  2196. clGetPipeInfo := TclGetPipeInfo(oclGetProcAddress('clGetPipeInfo', OCL_LibHandle));
  2197. clSVMAlloc := TclSVMAlloc(oclGetProcAddress('clSVMAlloc', OCL_LibHandle));
  2198. clSVMFree := TclSVMFree(oclGetProcAddress('clSVMFree', OCL_LibHandle));
  2199. clCreateSamplerWithProperties := TclCreateSamplerWithProperties(oclGetProcAddress('clCreateSamplerWithProperties', OCL_LibHandle));
  2200. clSetKernelArgSVMPointer := TclSetKernelArgSVMPointer(oclGetProcAddress('clSetKernelArgSVMPointer', OCL_LibHandle));
  2201. clSetKernelExecInfo := TclSetKernelExecInfo(oclGetProcAddress('clSetKernelExecInfo', OCL_LibHandle));
  2202. clEnqueueSVMFree := TclEnqueueSVMFree(oclGetProcAddress('clEnqueueSVMFree', OCL_LibHandle));
  2203. clEnqueueSVMMemcpy := TclEnqueueSVMMemcpy(oclGetProcAddress('clEnqueueSVMMemcpy', OCL_LibHandle));
  2204. clEnqueueSVMMemFill := TclEnqueueSVMMemFill(oclGetProcAddress('clEnqueueSVMMemFill', OCL_LibHandle));
  2205. clEnqueueSVMMap := TclEnqueueSVMMap(oclGetProcAddress('clEnqueueSVMMap', OCL_LibHandle));
  2206. clEnqueueSVMUnmap := TclEnqueueSVMUnmap(oclGetProcAddress('clEnqueueSVMUnmap', OCL_LibHandle));
  2207. {$ENDIF}
  2208. Result := True;
  2209. end;
  2210. end;
  2211. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  2212. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$REGION 'GetString'}{$ENDIF}
  2213. function GetString(const Status: TCL_int): AnsiString;
  2214. begin
  2215. Result := '';
  2216. case Status of
  2217. CL_SUCCESS: Result := 'Success';
  2218. CL_DEVICE_NOT_FOUND: Result := 'device not found';
  2219. CL_DEVICE_NOT_AVAILABLE: Result := 'device not available';
  2220. CL_COMPILER_NOT_AVAILABLE: Result := 'compiler not available';
  2221. CL_MEM_OBJECT_ALLOCATION_FAILURE: Result := 'mem object allocation failure';
  2222. CL_OUT_OF_RESOURCES: Result := 'out of resources';
  2223. CL_OUT_OF_HOST_MEMORY: Result := 'out of host memory';
  2224. CL_PROFILING_INFO_NOT_AVAILABLE: Result := 'profiling info not available';
  2225. CL_MEM_COPY_OVERLAP: Result := 'mem copy overlap';
  2226. CL_IMAGE_FORMAT_MISMATCH: Result := 'image format mismatch';
  2227. CL_IMAGE_FORMAT_NOT_SUPPORTED: Result := 'image format not support';
  2228. CL_BUILD_PROGRAM_FAILURE: Result := 'build program failure';
  2229. CL_MAP_FAILURE: Result := 'map failure';
  2230. CL_MISALIGNED_SUB_BUFFER_OFFSET: Result := 'misaligned sub buffer offset';
  2231. CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST: Result := 'exec status error for events in wait list';
  2232. CL_COMPILE_PROGRAM_FAILURE: Result := 'compile program failure';
  2233. CL_LINKER_NOT_AVAILABLE: Result := 'linker not available';
  2234. CL_LINK_PROGRAM_FAILURE: Result := 'link program failure';
  2235. CL_DEVICE_PARTITION_FAILED: Result := 'device partition failed';
  2236. CL_KERNEL_ARG_INFO_NOT_AVAILABLE: Result := 'kernel arg info not available';
  2237. CL_INVALID_VALUE: Result := 'invalid value';
  2238. CL_INVALID_DEVICE_TYPE: Result := 'invalid device type';
  2239. CL_INVALID_PLATFORM: Result := 'invalid platform';
  2240. CL_INVALID_DEVICE: Result := 'invalid device';
  2241. CL_INVALID_CONTEXT: Result := 'invalid context';
  2242. CL_INVALID_QUEUE_PROPERTIES: Result := 'invalid queue properties';
  2243. CL_INVALID_COMMAND_QUEUE: Result := 'invalid command queue';
  2244. CL_INVALID_HOST_PTR: Result := 'invalid host ptr';
  2245. CL_INVALID_MEM_OBJECT: Result := 'invalid mem object';
  2246. CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: Result := 'invalid image format descriptor';
  2247. CL_INVALID_IMAGE_SIZE: Result := 'invalid image size';
  2248. CL_INVALID_SAMPLER: Result := 'invalid sampler';
  2249. CL_INVALID_BINARY: Result := 'invalid binary';
  2250. CL_INVALID_BUILD_OPTIONS: Result := 'invalid build options';
  2251. CL_INVALID_PROGRAM: Result := 'invalid program';
  2252. CL_INVALID_PROGRAM_EXECUTABLE: Result := 'invalid program executable';
  2253. CL_INVALID_KERNEL_NAME: Result := 'invalid kernel name';
  2254. CL_INVALID_KERNEL_DEFINITION: Result := 'invalid kernel definition';
  2255. CL_INVALID_KERNEL: Result := 'invalid kernel';
  2256. CL_INVALID_ARG_INDEX: Result := 'invalid arg index';
  2257. CL_INVALID_ARG_VALUE: Result := 'invalid arg value';
  2258. CL_INVALID_ARG_SIZE: Result := 'invalid arg size';
  2259. CL_INVALID_KERNEL_ARGS: Result := 'invalid kernel args';
  2260. CL_INVALID_WORK_DIMENSION: Result := 'invalid work dimension';
  2261. CL_INVALID_WORK_GROUP_SIZE: Result := 'invalid work group size';
  2262. CL_INVALID_WORK_ITEM_SIZE: Result := 'invalid work item size';
  2263. CL_INVALID_GLOBAL_OFFSET: Result := 'invalid global offset';
  2264. CL_INVALID_EVENT_WAIT_LIST: Result := 'invalid event wait list';
  2265. CL_INVALID_EVENT: Result := 'invalid event';
  2266. CL_INVALID_OPERATION: Result := 'invalid operation';
  2267. CL_INVALID_GL_OBJECT: Result := 'invalid gl object';
  2268. CL_INVALID_BUFFER_SIZE: Result := 'invalid buffer size';
  2269. CL_INVALID_MIP_LEVEL: Result := 'invalid mip level';
  2270. CL_INVALID_GLOBAL_WORK_SIZE: Result := 'invalid global work size';
  2271. CL_INVALID_PROPERTY: Result := 'invalid property';
  2272. CL_INVALID_IMAGE_DESCRIPTOR: Result := 'invalid image descriptor';
  2273. CL_INVALID_COMPILER_OPTIONS: Result := 'invalid compiler options';
  2274. CL_INVALID_LINKER_OPTIONS: Result := 'invalid linker options';
  2275. CL_INVALID_DEVICE_PARTITION_COUNT: Result := 'invalid device partiotion count';
  2276. end;
  2277. end;
  2278. {$IFNDEF DEFINE_REGION_NOT_IMPLEMENTED}{$ENDREGION}{$ENDIF}
  2279. initialization
  2280. {$IFDEF DEFINE_8087CW_NOT_IMPLEMENTED}
  2281. asm
  2282. MOV Default8087CW,AX
  2283. FLDCW Default8087CW
  2284. end;
  2285. {$ELSE}
  2286. Set8087CW($133F);
  2287. {$ENDIF}
  2288. end.