cl_ext.h 79 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049
  1. /*******************************************************************************
  2. * Copyright (c) 2008-2020 The Khronos Group Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. ******************************************************************************/
  16. /* cl_ext.h contains OpenCL extensions which don't have external */
  17. /* (OpenGL, D3D) dependencies. */
  18. #ifndef __CL_EXT_H
  19. #define __CL_EXT_H
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. #include <CL/cl.h>
  24. /* cl_khr_fp64 extension - no extension #define since it has no functions */
  25. /* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */
  26. #if CL_TARGET_OPENCL_VERSION <= 110
  27. #define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032
  28. #endif
  29. /* cl_khr_fp16 extension - no extension #define since it has no functions */
  30. #define CL_DEVICE_HALF_FP_CONFIG 0x1033
  31. /* Memory object destruction
  32. *
  33. * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR
  34. *
  35. * Registers a user callback function that will be called when the memory object is deleted and its resources
  36. * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback
  37. * stack associated with memobj. The registered user callback functions are called in the reverse order in
  38. * which they were registered. The user callback functions are called and then the memory object is deleted
  39. * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be
  40. * notified when the memory referenced by host_ptr, specified when the memory object is created and used as
  41. * the storage bits for the memory object, can be reused or freed.
  42. *
  43. * The application may not call CL api's with the cl_mem object passed to the pfn_notify.
  44. *
  45. * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
  46. * before using.
  47. */
  48. #define cl_APPLE_SetMemObjectDestructor 1
  49. extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorAPPLE( cl_mem memobj,
  50. void (* pfn_notify)(cl_mem memobj, void * user_data),
  51. void * user_data) CL_API_SUFFIX__VERSION_1_0;
  52. /* Context Logging Functions
  53. *
  54. * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext().
  55. * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
  56. * before using.
  57. *
  58. * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger
  59. */
  60. #define cl_APPLE_ContextLoggingFunctions 1
  61. extern CL_API_ENTRY void CL_API_CALL clLogMessagesToSystemLogAPPLE( const char * errstr,
  62. const void * private_info,
  63. size_t cb,
  64. void * user_data) CL_API_SUFFIX__VERSION_1_0;
  65. /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */
  66. extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStdoutAPPLE( const char * errstr,
  67. const void * private_info,
  68. size_t cb,
  69. void * user_data) CL_API_SUFFIX__VERSION_1_0;
  70. /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */
  71. extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStderrAPPLE( const char * errstr,
  72. const void * private_info,
  73. size_t cb,
  74. void * user_data) CL_API_SUFFIX__VERSION_1_0;
  75. /************************
  76. * cl_khr_icd extension *
  77. ************************/
  78. #define cl_khr_icd 1
  79. /* cl_platform_info */
  80. #define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920
  81. /* Additional Error Codes */
  82. #define CL_PLATFORM_NOT_FOUND_KHR -1001
  83. extern CL_API_ENTRY cl_int CL_API_CALL
  84. clIcdGetPlatformIDsKHR(cl_uint num_entries,
  85. cl_platform_id * platforms,
  86. cl_uint * num_platforms);
  87. typedef cl_int
  88. (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries,
  89. cl_platform_id * platforms,
  90. cl_uint * num_platforms);
  91. /*******************************
  92. * cl_khr_il_program extension *
  93. *******************************/
  94. #define cl_khr_il_program 1
  95. /* New property to clGetDeviceInfo for retrieving supported intermediate
  96. * languages
  97. */
  98. #define CL_DEVICE_IL_VERSION_KHR 0x105B
  99. /* New property to clGetProgramInfo for retrieving for retrieving the IL of a
  100. * program
  101. */
  102. #define CL_PROGRAM_IL_KHR 0x1169
  103. extern CL_API_ENTRY cl_program CL_API_CALL
  104. clCreateProgramWithILKHR(cl_context context,
  105. const void * il,
  106. size_t length,
  107. cl_int * errcode_ret);
  108. typedef cl_program
  109. (CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context,
  110. const void * il,
  111. size_t length,
  112. cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  113. /* Extension: cl_khr_image2d_from_buffer
  114. *
  115. * This extension allows a 2D image to be created from a cl_mem buffer without
  116. * a copy. The type associated with a 2D image created from a buffer in an
  117. * OpenCL program is image2d_t. Both the sampler and sampler-less read_image
  118. * built-in functions are supported for 2D images and 2D images created from
  119. * a buffer. Similarly, the write_image built-ins are also supported for 2D
  120. * images created from a buffer.
  121. *
  122. * When the 2D image from buffer is created, the client must specify the
  123. * width, height, image format (i.e. channel order and channel data type)
  124. * and optionally the row pitch.
  125. *
  126. * The pitch specified must be a multiple of
  127. * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels.
  128. * The base address of the buffer must be aligned to
  129. * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels.
  130. */
  131. #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A
  132. #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B
  133. /**************************************
  134. * cl_khr_initialize_memory extension *
  135. **************************************/
  136. #define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030
  137. /**************************************
  138. * cl_khr_terminate_context extension *
  139. **************************************/
  140. #define CL_CONTEXT_TERMINATED_KHR -1121
  141. #define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031
  142. #define CL_CONTEXT_TERMINATE_KHR 0x2032
  143. #define cl_khr_terminate_context 1
  144. extern CL_API_ENTRY cl_int CL_API_CALL
  145. clTerminateContextKHR(cl_context context) CL_API_SUFFIX__VERSION_1_2;
  146. typedef cl_int
  147. (CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_API_SUFFIX__VERSION_1_2;
  148. /*
  149. * Extension: cl_khr_spir
  150. *
  151. * This extension adds support to create an OpenCL program object from a
  152. * Standard Portable Intermediate Representation (SPIR) instance
  153. */
  154. #define CL_DEVICE_SPIR_VERSIONS 0x40E0
  155. #define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1
  156. /*****************************************
  157. * cl_khr_create_command_queue extension *
  158. *****************************************/
  159. #define cl_khr_create_command_queue 1
  160. typedef cl_properties cl_queue_properties_khr;
  161. extern CL_API_ENTRY cl_command_queue CL_API_CALL
  162. clCreateCommandQueueWithPropertiesKHR(cl_context context,
  163. cl_device_id device,
  164. const cl_queue_properties_khr* properties,
  165. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  166. typedef cl_command_queue
  167. (CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context,
  168. cl_device_id device,
  169. const cl_queue_properties_khr* properties,
  170. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  171. /******************************************
  172. * cl_nv_device_attribute_query extension *
  173. ******************************************/
  174. /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */
  175. #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000
  176. #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001
  177. #define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002
  178. #define CL_DEVICE_WARP_SIZE_NV 0x4003
  179. #define CL_DEVICE_GPU_OVERLAP_NV 0x4004
  180. #define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005
  181. #define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006
  182. /*********************************
  183. * cl_amd_device_attribute_query *
  184. *********************************/
  185. #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
  186. #define CL_DEVICE_TOPOLOGY_AMD 0x4037
  187. #define CL_DEVICE_BOARD_NAME_AMD 0x4038
  188. #define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039
  189. #define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040
  190. #define CL_DEVICE_SIMD_WIDTH_AMD 0x4041
  191. #define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042
  192. #define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043
  193. #define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044
  194. #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045
  195. #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046
  196. #define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047
  197. #define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048
  198. #define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049
  199. #define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A
  200. #define CL_DEVICE_GFXIP_MINOR_AMD 0x404B
  201. #define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C
  202. #define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030
  203. #define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031
  204. #define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033
  205. #define CL_DEVICE_PCIE_ID_AMD 0x4034
  206. /*********************************
  207. * cl_arm_printf extension
  208. *********************************/
  209. #define CL_PRINTF_CALLBACK_ARM 0x40B0
  210. #define CL_PRINTF_BUFFERSIZE_ARM 0x40B1
  211. /***********************************
  212. * cl_ext_device_fission extension
  213. ***********************************/
  214. #define cl_ext_device_fission 1
  215. extern CL_API_ENTRY cl_int CL_API_CALL
  216. clReleaseDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
  217. typedef cl_int
  218. (CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
  219. extern CL_API_ENTRY cl_int CL_API_CALL
  220. clRetainDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
  221. typedef cl_int
  222. (CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
  223. typedef cl_ulong cl_device_partition_property_ext;
  224. extern CL_API_ENTRY cl_int CL_API_CALL
  225. clCreateSubDevicesEXT(cl_device_id in_device,
  226. const cl_device_partition_property_ext * properties,
  227. cl_uint num_entries,
  228. cl_device_id * out_devices,
  229. cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_1;
  230. typedef cl_int
  231. (CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device,
  232. const cl_device_partition_property_ext * properties,
  233. cl_uint num_entries,
  234. cl_device_id * out_devices,
  235. cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_1;
  236. /* cl_device_partition_property_ext */
  237. #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050
  238. #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051
  239. #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052
  240. #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053
  241. /* clDeviceGetInfo selectors */
  242. #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054
  243. #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055
  244. #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056
  245. #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057
  246. #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058
  247. /* error codes */
  248. #define CL_DEVICE_PARTITION_FAILED_EXT -1057
  249. #define CL_INVALID_PARTITION_COUNT_EXT -1058
  250. #define CL_INVALID_PARTITION_NAME_EXT -1059
  251. /* CL_AFFINITY_DOMAINs */
  252. #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1
  253. #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2
  254. #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3
  255. #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4
  256. #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10
  257. #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100
  258. /* cl_device_partition_property_ext list terminators */
  259. #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0)
  260. #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0)
  261. #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1)
  262. /***********************************
  263. * cl_ext_migrate_memobject extension definitions
  264. ***********************************/
  265. #define cl_ext_migrate_memobject 1
  266. typedef cl_bitfield cl_mem_migration_flags_ext;
  267. #define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1
  268. #define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040
  269. extern CL_API_ENTRY cl_int CL_API_CALL
  270. clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue,
  271. cl_uint num_mem_objects,
  272. const cl_mem * mem_objects,
  273. cl_mem_migration_flags_ext flags,
  274. cl_uint num_events_in_wait_list,
  275. const cl_event * event_wait_list,
  276. cl_event * event);
  277. typedef cl_int
  278. (CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue,
  279. cl_uint num_mem_objects,
  280. const cl_mem * mem_objects,
  281. cl_mem_migration_flags_ext flags,
  282. cl_uint num_events_in_wait_list,
  283. const cl_event * event_wait_list,
  284. cl_event * event);
  285. /*********************************
  286. * cl_ext_cxx_for_opencl extension
  287. *********************************/
  288. #define cl_ext_cxx_for_opencl 1
  289. #define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230
  290. /*********************************
  291. * cl_qcom_ext_host_ptr extension
  292. *********************************/
  293. #define cl_qcom_ext_host_ptr 1
  294. #define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29)
  295. #define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0
  296. #define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1
  297. #define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2
  298. #define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3
  299. #define CL_MEM_HOST_UNCACHED_QCOM 0x40A4
  300. #define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5
  301. #define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6
  302. #define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7
  303. typedef cl_uint cl_image_pitch_info_qcom;
  304. extern CL_API_ENTRY cl_int CL_API_CALL
  305. clGetDeviceImageInfoQCOM(cl_device_id device,
  306. size_t image_width,
  307. size_t image_height,
  308. const cl_image_format *image_format,
  309. cl_image_pitch_info_qcom param_name,
  310. size_t param_value_size,
  311. void *param_value,
  312. size_t *param_value_size_ret);
  313. typedef struct _cl_mem_ext_host_ptr
  314. {
  315. /* Type of external memory allocation. */
  316. /* Legal values will be defined in layered extensions. */
  317. cl_uint allocation_type;
  318. /* Host cache policy for this external memory allocation. */
  319. cl_uint host_cache_policy;
  320. } cl_mem_ext_host_ptr;
  321. /*******************************************
  322. * cl_qcom_ext_host_ptr_iocoherent extension
  323. ********************************************/
  324. /* Cache policy specifying io-coherence */
  325. #define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9
  326. /*********************************
  327. * cl_qcom_ion_host_ptr extension
  328. *********************************/
  329. #define CL_MEM_ION_HOST_PTR_QCOM 0x40A8
  330. typedef struct _cl_mem_ion_host_ptr
  331. {
  332. /* Type of external memory allocation. */
  333. /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */
  334. cl_mem_ext_host_ptr ext_host_ptr;
  335. /* ION file descriptor */
  336. int ion_filedesc;
  337. /* Host pointer to the ION allocated memory */
  338. void* ion_hostptr;
  339. } cl_mem_ion_host_ptr;
  340. /*********************************
  341. * cl_qcom_android_native_buffer_host_ptr extension
  342. *********************************/
  343. #define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6
  344. typedef struct _cl_mem_android_native_buffer_host_ptr
  345. {
  346. /* Type of external memory allocation. */
  347. /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */
  348. cl_mem_ext_host_ptr ext_host_ptr;
  349. /* Virtual pointer to the android native buffer */
  350. void* anb_ptr;
  351. } cl_mem_android_native_buffer_host_ptr;
  352. /******************************************
  353. * cl_img_yuv_image extension *
  354. ******************************************/
  355. /* Image formats used in clCreateImage */
  356. #define CL_NV21_IMG 0x40D0
  357. #define CL_YV12_IMG 0x40D1
  358. /******************************************
  359. * cl_img_cached_allocations extension *
  360. ******************************************/
  361. /* Flag values used by clCreateBuffer */
  362. #define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26)
  363. #define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27)
  364. /******************************************
  365. * cl_img_use_gralloc_ptr extension *
  366. ******************************************/
  367. #define cl_img_use_gralloc_ptr 1
  368. /* Flag values used by clCreateBuffer */
  369. #define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28)
  370. /* To be used by clGetEventInfo: */
  371. #define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2
  372. #define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3
  373. /* Error codes from clEnqueueAcquireGrallocObjectsIMG and clEnqueueReleaseGrallocObjectsIMG */
  374. #define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4
  375. #define CL_INVALID_GRALLOC_OBJECT_IMG 0x40D5
  376. extern CL_API_ENTRY cl_int CL_API_CALL
  377. clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue,
  378. cl_uint num_objects,
  379. const cl_mem * mem_objects,
  380. cl_uint num_events_in_wait_list,
  381. const cl_event * event_wait_list,
  382. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  383. extern CL_API_ENTRY cl_int CL_API_CALL
  384. clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue,
  385. cl_uint num_objects,
  386. const cl_mem * mem_objects,
  387. cl_uint num_events_in_wait_list,
  388. const cl_event * event_wait_list,
  389. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  390. /******************************************
  391. * cl_img_generate_mipmap extension *
  392. ******************************************/
  393. #define cl_img_generate_mipmap 1
  394. typedef cl_uint cl_mipmap_filter_mode_img;
  395. /* To be used by clEnqueueGenerateMipmapIMG */
  396. #define CL_MIPMAP_FILTER_ANY_IMG 0x0
  397. #define CL_MIPMAP_FILTER_BOX_IMG 0x1
  398. /* To be used by clGetEventInfo */
  399. #define CL_COMMAND_GENERATE_MIPMAP_IMG 0x40D6
  400. extern CL_API_ENTRY cl_int CL_API_CALL
  401. clEnqueueGenerateMipmapIMG(cl_command_queue command_queue,
  402. cl_mem src_image,
  403. cl_mem dst_image,
  404. cl_mipmap_filter_mode_img mipmap_filter_mode,
  405. const size_t *array_region,
  406. const size_t *mip_region,
  407. cl_uint num_events_in_wait_list,
  408. const cl_event *event_wait_list,
  409. cl_event *event) CL_API_SUFFIX__VERSION_1_2;
  410. /******************************************
  411. * cl_img_mem_properties extension *
  412. ******************************************/
  413. #define cl_img_mem_properties 1
  414. /* To be used by clCreateBufferWithProperties */
  415. #define CL_MEM_ALLOC_FLAGS_IMG 0x40D7
  416. /* To be used wiith the CL_MEM_ALLOC_FLAGS_IMG property */
  417. typedef cl_bitfield cl_mem_alloc_flags_img;
  418. /* To be used with cl_mem_alloc_flags_img */
  419. #define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG (1 << 0)
  420. /*********************************
  421. * cl_khr_subgroups extension
  422. *********************************/
  423. #define cl_khr_subgroups 1
  424. #if !defined(CL_VERSION_2_1)
  425. /* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h.
  426. In hindsight, there should have been a khr suffix on this type for
  427. the extension, but keeping it un-suffixed to maintain backwards
  428. compatibility. */
  429. typedef cl_uint cl_kernel_sub_group_info;
  430. #endif
  431. /* cl_kernel_sub_group_info */
  432. #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033
  433. #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034
  434. extern CL_API_ENTRY cl_int CL_API_CALL
  435. clGetKernelSubGroupInfoKHR(cl_kernel in_kernel,
  436. cl_device_id in_device,
  437. cl_kernel_sub_group_info param_name,
  438. size_t input_value_size,
  439. const void * input_value,
  440. size_t param_value_size,
  441. void * param_value,
  442. size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
  443. typedef cl_int
  444. (CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel,
  445. cl_device_id in_device,
  446. cl_kernel_sub_group_info param_name,
  447. size_t input_value_size,
  448. const void * input_value,
  449. size_t param_value_size,
  450. void * param_value,
  451. size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
  452. /*********************************
  453. * cl_khr_mipmap_image extension
  454. *********************************/
  455. /* cl_sampler_properties */
  456. #define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155
  457. #define CL_SAMPLER_LOD_MIN_KHR 0x1156
  458. #define CL_SAMPLER_LOD_MAX_KHR 0x1157
  459. /*********************************
  460. * cl_khr_priority_hints extension
  461. *********************************/
  462. /* This extension define is for backwards compatibility.
  463. It shouldn't be required since this extension has no new functions. */
  464. #define cl_khr_priority_hints 1
  465. typedef cl_uint cl_queue_priority_khr;
  466. /* cl_command_queue_properties */
  467. #define CL_QUEUE_PRIORITY_KHR 0x1096
  468. /* cl_queue_priority_khr */
  469. #define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0)
  470. #define CL_QUEUE_PRIORITY_MED_KHR (1<<1)
  471. #define CL_QUEUE_PRIORITY_LOW_KHR (1<<2)
  472. /*********************************
  473. * cl_khr_throttle_hints extension
  474. *********************************/
  475. /* This extension define is for backwards compatibility.
  476. It shouldn't be required since this extension has no new functions. */
  477. #define cl_khr_throttle_hints 1
  478. typedef cl_uint cl_queue_throttle_khr;
  479. /* cl_command_queue_properties */
  480. #define CL_QUEUE_THROTTLE_KHR 0x1097
  481. /* cl_queue_throttle_khr */
  482. #define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0)
  483. #define CL_QUEUE_THROTTLE_MED_KHR (1<<1)
  484. #define CL_QUEUE_THROTTLE_LOW_KHR (1<<2)
  485. /*********************************
  486. * cl_khr_subgroup_named_barrier
  487. *********************************/
  488. /* This extension define is for backwards compatibility.
  489. It shouldn't be required since this extension has no new functions. */
  490. #define cl_khr_subgroup_named_barrier 1
  491. /* cl_device_info */
  492. #define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035
  493. /*********************************
  494. * cl_khr_extended_versioning
  495. *********************************/
  496. #define cl_khr_extended_versioning 1
  497. #define CL_VERSION_MAJOR_BITS_KHR (10)
  498. #define CL_VERSION_MINOR_BITS_KHR (10)
  499. #define CL_VERSION_PATCH_BITS_KHR (12)
  500. #define CL_VERSION_MAJOR_MASK_KHR ((1 << CL_VERSION_MAJOR_BITS_KHR) - 1)
  501. #define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1)
  502. #define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1)
  503. #define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR))
  504. #define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR)
  505. #define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR)
  506. #define CL_MAKE_VERSION_KHR(major, minor, patch) \
  507. ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \
  508. (((minor) & CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \
  509. ((patch) & CL_VERSION_PATCH_MASK_KHR))
  510. typedef cl_uint cl_version_khr;
  511. #define CL_NAME_VERSION_MAX_NAME_SIZE_KHR 64
  512. typedef struct _cl_name_version_khr
  513. {
  514. cl_version_khr version;
  515. char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR];
  516. } cl_name_version_khr;
  517. /* cl_platform_info */
  518. #define CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906
  519. #define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR 0x0907
  520. /* cl_device_info */
  521. #define CL_DEVICE_NUMERIC_VERSION_KHR 0x105E
  522. #define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR 0x105F
  523. #define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR 0x1060
  524. #define CL_DEVICE_ILS_WITH_VERSION_KHR 0x1061
  525. #define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062
  526. /*********************************
  527. * cl_khr_device_uuid extension
  528. *********************************/
  529. #define cl_khr_device_uuid 1
  530. #define CL_UUID_SIZE_KHR 16
  531. #define CL_LUID_SIZE_KHR 8
  532. #define CL_DEVICE_UUID_KHR 0x106A
  533. #define CL_DRIVER_UUID_KHR 0x106B
  534. #define CL_DEVICE_LUID_VALID_KHR 0x106C
  535. #define CL_DEVICE_LUID_KHR 0x106D
  536. #define CL_DEVICE_NODE_MASK_KHR 0x106E
  537. /***************************************************************
  538. * cl_khr_pci_bus_info
  539. ***************************************************************/
  540. #define cl_khr_pci_bus_info 1
  541. typedef struct _cl_device_pci_bus_info_khr {
  542. cl_uint pci_domain;
  543. cl_uint pci_bus;
  544. cl_uint pci_device;
  545. cl_uint pci_function;
  546. } cl_device_pci_bus_info_khr;
  547. /* cl_device_info */
  548. #define CL_DEVICE_PCI_BUS_INFO_KHR 0x410F
  549. /***************************************************************
  550. * cl_khr_suggested_local_work_size
  551. ***************************************************************/
  552. #define cl_khr_suggested_local_work_size 1
  553. extern CL_API_ENTRY cl_int CL_API_CALL
  554. clGetKernelSuggestedLocalWorkSizeKHR(
  555. cl_command_queue command_queue,
  556. cl_kernel kernel,
  557. cl_uint work_dim,
  558. const size_t* global_work_offset,
  559. const size_t* global_work_size,
  560. size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0;
  561. typedef cl_int (CL_API_CALL *
  562. clGetKernelSuggestedLocalWorkSizeKHR_fn)(
  563. cl_command_queue command_queue,
  564. cl_kernel kernel,
  565. cl_uint work_dim,
  566. const size_t* global_work_offset,
  567. const size_t* global_work_size,
  568. size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0;
  569. /***************************************************************
  570. * cl_khr_integer_dot_product
  571. ***************************************************************/
  572. #define cl_khr_integer_dot_product 1
  573. typedef cl_bitfield cl_device_integer_dot_product_capabilities_khr;
  574. /* cl_device_integer_dot_product_capabilities_khr */
  575. #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED_KHR (1 << 0)
  576. #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_KHR (1 << 1)
  577. typedef struct _cl_device_integer_dot_product_acceleration_properties_khr {
  578. cl_bool signed_accelerated;
  579. cl_bool unsigned_accelerated;
  580. cl_bool mixed_signedness_accelerated;
  581. cl_bool accumulating_saturating_signed_accelerated;
  582. cl_bool accumulating_saturating_unsigned_accelerated;
  583. cl_bool accumulating_saturating_mixed_signedness_accelerated;
  584. } cl_device_integer_dot_product_acceleration_properties_khr;
  585. /* cl_device_info */
  586. #define CL_DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR 0x1073
  587. #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR 0x1074
  588. #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR 0x1075
  589. /***************************************************************
  590. * cl_khr_external_memory
  591. ***************************************************************/
  592. #define cl_khr_external_memory 1
  593. typedef cl_uint cl_external_memory_handle_type_khr;
  594. /* cl_platform_info */
  595. #define CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x2044
  596. /* cl_device_info */
  597. #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x204F
  598. /* cl_mem_properties */
  599. #define CL_DEVICE_HANDLE_LIST_KHR 0x2051
  600. #define CL_DEVICE_HANDLE_LIST_END_KHR 0
  601. /* cl_command_type */
  602. #define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR 0x2047
  603. #define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR 0x2048
  604. typedef cl_int (CL_API_CALL *
  605. clEnqueueAcquireExternalMemObjectsKHR_fn)(
  606. cl_command_queue command_queue,
  607. cl_uint num_mem_objects,
  608. const cl_mem* mem_objects,
  609. cl_uint num_events_in_wait_list,
  610. const cl_event* event_wait_list,
  611. cl_event* event) CL_API_SUFFIX__VERSION_3_0;
  612. typedef cl_int (CL_API_CALL *
  613. clEnqueueReleaseExternalMemObjectsKHR_fn)(
  614. cl_command_queue command_queue,
  615. cl_uint num_mem_objects,
  616. const cl_mem* mem_objects,
  617. cl_uint num_events_in_wait_list,
  618. const cl_event* event_wait_list,
  619. cl_event* event) CL_API_SUFFIX__VERSION_3_0;
  620. extern CL_API_ENTRY cl_int CL_API_CALL
  621. clEnqueueAcquireExternalMemObjectsKHR(
  622. cl_command_queue command_queue,
  623. cl_uint num_mem_objects,
  624. const cl_mem* mem_objects,
  625. cl_uint num_events_in_wait_list,
  626. const cl_event* event_wait_list,
  627. cl_event* event) CL_API_SUFFIX__VERSION_3_0;
  628. extern CL_API_ENTRY cl_int CL_API_CALL
  629. clEnqueueReleaseExternalMemObjectsKHR(
  630. cl_command_queue command_queue,
  631. cl_uint num_mem_objects,
  632. const cl_mem* mem_objects,
  633. cl_uint num_events_in_wait_list,
  634. const cl_event* event_wait_list,
  635. cl_event* event) CL_API_SUFFIX__VERSION_3_0;
  636. /***************************************************************
  637. * cl_khr_external_memory_dma_buf
  638. ***************************************************************/
  639. #define cl_khr_external_memory_dma_buf 1
  640. /* cl_external_memory_handle_type_khr */
  641. #define CL_EXTERNAL_MEMORY_HANDLE_DMA_BUF_KHR 0x2067
  642. /***************************************************************
  643. * cl_khr_external_memory_dx
  644. ***************************************************************/
  645. #define cl_khr_external_memory_dx 1
  646. /* cl_external_memory_handle_type_khr */
  647. #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR 0x2063
  648. #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KMT_KHR 0x2064
  649. #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_HEAP_KHR 0x2065
  650. #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_RESOURCE_KHR 0x2066
  651. /***************************************************************
  652. * cl_khr_external_memory_opaque_fd
  653. ***************************************************************/
  654. #define cl_khr_external_memory_opaque_fd 1
  655. /* cl_external_memory_handle_type_khr */
  656. #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR 0x2060
  657. /***************************************************************
  658. * cl_khr_external_memory_win32
  659. ***************************************************************/
  660. #define cl_khr_external_memory_win32 1
  661. /* cl_external_memory_handle_type_khr */
  662. #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KHR 0x2061
  663. #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2062
  664. /***************************************************************
  665. * cl_khr_external_semaphore
  666. ***************************************************************/
  667. #define cl_khr_external_semaphore 1
  668. typedef struct _cl_semaphore_khr * cl_semaphore_khr;
  669. typedef cl_uint cl_external_semaphore_handle_type_khr;
  670. /* cl_platform_info */
  671. #define CL_PLATFORM_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR 0x2037
  672. #define CL_PLATFORM_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x2038
  673. /* cl_device_info */
  674. #define CL_DEVICE_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR 0x204D
  675. #define CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x204E
  676. /* cl_semaphore_properties_khr */
  677. #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x203F
  678. #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR 0
  679. typedef cl_int (CL_API_CALL *
  680. clGetSemaphoreHandleForTypeKHR_fn)(
  681. cl_semaphore_khr sema_object,
  682. cl_device_id device,
  683. cl_external_semaphore_handle_type_khr handle_type,
  684. size_t handle_size,
  685. void* handle_ptr,
  686. size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2;
  687. extern CL_API_ENTRY cl_int CL_API_CALL
  688. clGetSemaphoreHandleForTypeKHR(
  689. cl_semaphore_khr sema_object,
  690. cl_device_id device,
  691. cl_external_semaphore_handle_type_khr handle_type,
  692. size_t handle_size,
  693. void* handle_ptr,
  694. size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2;
  695. /***************************************************************
  696. * cl_khr_external_semaphore_dx_fence
  697. ***************************************************************/
  698. #define cl_khr_external_semaphore_dx_fence 1
  699. /* cl_external_semaphore_handle_type_khr */
  700. #define CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR 0x2059
  701. /***************************************************************
  702. * cl_khr_external_semaphore_opaque_fd
  703. ***************************************************************/
  704. #define cl_khr_external_semaphore_opaque_fd 1
  705. /* cl_external_semaphore_handle_type_khr */
  706. #define CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR 0x2055
  707. /***************************************************************
  708. * cl_khr_external_semaphore_sync_fd
  709. ***************************************************************/
  710. #define cl_khr_external_semaphore_sync_fd 1
  711. /* cl_external_semaphore_handle_type_khr */
  712. #define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR 0x2058
  713. /***************************************************************
  714. * cl_khr_external_semaphore_win32
  715. ***************************************************************/
  716. #define cl_khr_external_semaphore_win32 1
  717. /* cl_external_semaphore_handle_type_khr */
  718. #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR 0x2056
  719. #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2057
  720. /***************************************************************
  721. * cl_khr_semaphore
  722. ***************************************************************/
  723. #define cl_khr_semaphore 1
  724. /* type cl_semaphore_khr */
  725. typedef cl_properties cl_semaphore_properties_khr;
  726. typedef cl_uint cl_semaphore_info_khr;
  727. typedef cl_uint cl_semaphore_type_khr;
  728. typedef cl_ulong cl_semaphore_payload_khr;
  729. /* cl_semaphore_type */
  730. #define CL_SEMAPHORE_TYPE_BINARY_KHR 1
  731. /* cl_platform_info */
  732. #define CL_PLATFORM_SEMAPHORE_TYPES_KHR 0x2036
  733. /* cl_device_info */
  734. #define CL_DEVICE_SEMAPHORE_TYPES_KHR 0x204C
  735. /* cl_semaphore_info_khr */
  736. #define CL_SEMAPHORE_CONTEXT_KHR 0x2039
  737. #define CL_SEMAPHORE_REFERENCE_COUNT_KHR 0x203A
  738. #define CL_SEMAPHORE_PROPERTIES_KHR 0x203B
  739. #define CL_SEMAPHORE_PAYLOAD_KHR 0x203C
  740. /* cl_semaphore_info_khr or cl_semaphore_properties_khr */
  741. #define CL_SEMAPHORE_TYPE_KHR 0x203D
  742. /* enum CL_DEVICE_HANDLE_LIST_KHR */
  743. /* enum CL_DEVICE_HANDLE_LIST_END_KHR */
  744. /* cl_command_type */
  745. #define CL_COMMAND_SEMAPHORE_WAIT_KHR 0x2042
  746. #define CL_COMMAND_SEMAPHORE_SIGNAL_KHR 0x2043
  747. /* Error codes */
  748. #define CL_INVALID_SEMAPHORE_KHR -1142
  749. typedef cl_semaphore_khr (CL_API_CALL *
  750. clCreateSemaphoreWithPropertiesKHR_fn)(
  751. cl_context context,
  752. const cl_semaphore_properties_khr* sema_props,
  753. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  754. typedef cl_int (CL_API_CALL *
  755. clEnqueueWaitSemaphoresKHR_fn)(
  756. cl_command_queue command_queue,
  757. cl_uint num_sema_objects,
  758. const cl_semaphore_khr* sema_objects,
  759. const cl_semaphore_payload_khr* sema_payload_list,
  760. cl_uint num_events_in_wait_list,
  761. const cl_event* event_wait_list,
  762. cl_event* event) CL_API_SUFFIX__VERSION_1_2;
  763. typedef cl_int (CL_API_CALL *
  764. clEnqueueSignalSemaphoresKHR_fn)(
  765. cl_command_queue command_queue,
  766. cl_uint num_sema_objects,
  767. const cl_semaphore_khr* sema_objects,
  768. const cl_semaphore_payload_khr* sema_payload_list,
  769. cl_uint num_events_in_wait_list,
  770. const cl_event* event_wait_list,
  771. cl_event* event) CL_API_SUFFIX__VERSION_1_2;
  772. typedef cl_int (CL_API_CALL *
  773. clGetSemaphoreInfoKHR_fn)(
  774. cl_semaphore_khr sema_object,
  775. cl_semaphore_info_khr param_name,
  776. size_t param_value_size,
  777. void* param_value,
  778. size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
  779. typedef cl_int (CL_API_CALL *
  780. clReleaseSemaphoreKHR_fn)(
  781. cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
  782. typedef cl_int (CL_API_CALL *
  783. clRetainSemaphoreKHR_fn)(
  784. cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
  785. extern CL_API_ENTRY cl_semaphore_khr CL_API_CALL
  786. clCreateSemaphoreWithPropertiesKHR(
  787. cl_context context,
  788. const cl_semaphore_properties_khr* sema_props,
  789. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  790. extern CL_API_ENTRY cl_int CL_API_CALL
  791. clEnqueueWaitSemaphoresKHR(
  792. cl_command_queue command_queue,
  793. cl_uint num_sema_objects,
  794. const cl_semaphore_khr* sema_objects,
  795. const cl_semaphore_payload_khr* sema_payload_list,
  796. cl_uint num_events_in_wait_list,
  797. const cl_event* event_wait_list,
  798. cl_event* event) CL_API_SUFFIX__VERSION_1_2;
  799. extern CL_API_ENTRY cl_int CL_API_CALL
  800. clEnqueueSignalSemaphoresKHR(
  801. cl_command_queue command_queue,
  802. cl_uint num_sema_objects,
  803. const cl_semaphore_khr* sema_objects,
  804. const cl_semaphore_payload_khr* sema_payload_list,
  805. cl_uint num_events_in_wait_list,
  806. const cl_event* event_wait_list,
  807. cl_event* event) CL_API_SUFFIX__VERSION_1_2;
  808. extern CL_API_ENTRY cl_int CL_API_CALL
  809. clGetSemaphoreInfoKHR(
  810. cl_semaphore_khr sema_object,
  811. cl_semaphore_info_khr param_name,
  812. size_t param_value_size,
  813. void* param_value,
  814. size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
  815. extern CL_API_ENTRY cl_int CL_API_CALL
  816. clReleaseSemaphoreKHR(
  817. cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
  818. extern CL_API_ENTRY cl_int CL_API_CALL
  819. clRetainSemaphoreKHR(
  820. cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
  821. /**********************************
  822. * cl_arm_import_memory extension *
  823. **********************************/
  824. #define cl_arm_import_memory 1
  825. typedef intptr_t cl_import_properties_arm;
  826. /* Default and valid proporties name for cl_arm_import_memory */
  827. #define CL_IMPORT_TYPE_ARM 0x40B2
  828. /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */
  829. #define CL_IMPORT_TYPE_HOST_ARM 0x40B3
  830. /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
  831. #define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4
  832. /* Protected memory property */
  833. #define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5
  834. /* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */
  835. #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2
  836. /* Data consistency with host property */
  837. #define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3
  838. /* Index of plane in a multiplanar hardware buffer */
  839. #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_PLANE_INDEX_ARM 0x41EF
  840. /* Index of layer in a multilayer hardware buffer */
  841. #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM 0x41F0
  842. /* Import memory size value to indicate a size for the whole buffer */
  843. #define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX
  844. /* This extension adds a new function that allows for direct memory import into
  845. * OpenCL via the clImportMemoryARM function.
  846. *
  847. * Memory imported through this interface will be mapped into the device's page
  848. * tables directly, providing zero copy access. It will never fall back to copy
  849. * operations and aliased buffers.
  850. *
  851. * Types of memory supported for import are specified as additional extension
  852. * strings.
  853. *
  854. * This extension produces cl_mem allocations which are compatible with all other
  855. * users of cl_mem in the standard API.
  856. *
  857. * This extension maps pages with the same properties as the normal buffer creation
  858. * function clCreateBuffer.
  859. */
  860. extern CL_API_ENTRY cl_mem CL_API_CALL
  861. clImportMemoryARM( cl_context context,
  862. cl_mem_flags flags,
  863. const cl_import_properties_arm *properties,
  864. void *memory,
  865. size_t size,
  866. cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  867. /******************************************
  868. * cl_arm_shared_virtual_memory extension *
  869. ******************************************/
  870. #define cl_arm_shared_virtual_memory 1
  871. /* Used by clGetDeviceInfo */
  872. #define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6
  873. /* Used by clGetMemObjectInfo */
  874. #define CL_MEM_USES_SVM_POINTER_ARM 0x40B7
  875. /* Used by clSetKernelExecInfoARM: */
  876. #define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8
  877. #define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9
  878. /* To be used by clGetEventInfo: */
  879. #define CL_COMMAND_SVM_FREE_ARM 0x40BA
  880. #define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB
  881. #define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC
  882. #define CL_COMMAND_SVM_MAP_ARM 0x40BD
  883. #define CL_COMMAND_SVM_UNMAP_ARM 0x40BE
  884. /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */
  885. #define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0)
  886. #define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1)
  887. #define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2)
  888. #define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3)
  889. /* Flag values used by clSVMAllocARM: */
  890. #define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10)
  891. #define CL_MEM_SVM_ATOMICS_ARM (1 << 11)
  892. typedef cl_bitfield cl_svm_mem_flags_arm;
  893. typedef cl_uint cl_kernel_exec_info_arm;
  894. typedef cl_bitfield cl_device_svm_capabilities_arm;
  895. extern CL_API_ENTRY void * CL_API_CALL
  896. clSVMAllocARM(cl_context context,
  897. cl_svm_mem_flags_arm flags,
  898. size_t size,
  899. cl_uint alignment) CL_API_SUFFIX__VERSION_1_2;
  900. extern CL_API_ENTRY void CL_API_CALL
  901. clSVMFreeARM(cl_context context,
  902. void * svm_pointer) CL_API_SUFFIX__VERSION_1_2;
  903. extern CL_API_ENTRY cl_int CL_API_CALL
  904. clEnqueueSVMFreeARM(cl_command_queue command_queue,
  905. cl_uint num_svm_pointers,
  906. void * svm_pointers[],
  907. void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue,
  908. cl_uint num_svm_pointers,
  909. void * svm_pointers[],
  910. void * user_data),
  911. void * user_data,
  912. cl_uint num_events_in_wait_list,
  913. const cl_event * event_wait_list,
  914. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  915. extern CL_API_ENTRY cl_int CL_API_CALL
  916. clEnqueueSVMMemcpyARM(cl_command_queue command_queue,
  917. cl_bool blocking_copy,
  918. void * dst_ptr,
  919. const void * src_ptr,
  920. size_t size,
  921. cl_uint num_events_in_wait_list,
  922. const cl_event * event_wait_list,
  923. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  924. extern CL_API_ENTRY cl_int CL_API_CALL
  925. clEnqueueSVMMemFillARM(cl_command_queue command_queue,
  926. void * svm_ptr,
  927. const void * pattern,
  928. size_t pattern_size,
  929. size_t size,
  930. cl_uint num_events_in_wait_list,
  931. const cl_event * event_wait_list,
  932. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  933. extern CL_API_ENTRY cl_int CL_API_CALL
  934. clEnqueueSVMMapARM(cl_command_queue command_queue,
  935. cl_bool blocking_map,
  936. cl_map_flags flags,
  937. void * svm_ptr,
  938. size_t size,
  939. cl_uint num_events_in_wait_list,
  940. const cl_event * event_wait_list,
  941. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  942. extern CL_API_ENTRY cl_int CL_API_CALL
  943. clEnqueueSVMUnmapARM(cl_command_queue command_queue,
  944. void * svm_ptr,
  945. cl_uint num_events_in_wait_list,
  946. const cl_event * event_wait_list,
  947. cl_event * event) CL_API_SUFFIX__VERSION_1_2;
  948. extern CL_API_ENTRY cl_int CL_API_CALL
  949. clSetKernelArgSVMPointerARM(cl_kernel kernel,
  950. cl_uint arg_index,
  951. const void * arg_value) CL_API_SUFFIX__VERSION_1_2;
  952. extern CL_API_ENTRY cl_int CL_API_CALL
  953. clSetKernelExecInfoARM(cl_kernel kernel,
  954. cl_kernel_exec_info_arm param_name,
  955. size_t param_value_size,
  956. const void * param_value) CL_API_SUFFIX__VERSION_1_2;
  957. /********************************
  958. * cl_arm_get_core_id extension *
  959. ********************************/
  960. #ifdef CL_VERSION_1_2
  961. #define cl_arm_get_core_id 1
  962. /* Device info property for bitfield of cores present */
  963. #define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF
  964. #endif /* CL_VERSION_1_2 */
  965. /*********************************
  966. * cl_arm_job_slot_selection
  967. *********************************/
  968. #define cl_arm_job_slot_selection 1
  969. /* cl_device_info */
  970. #define CL_DEVICE_JOB_SLOTS_ARM 0x41E0
  971. /* cl_command_queue_properties */
  972. #define CL_QUEUE_JOB_SLOT_ARM 0x41E1
  973. /*********************************
  974. * cl_arm_scheduling_controls
  975. *********************************/
  976. #define cl_arm_scheduling_controls 1
  977. typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm;
  978. /* cl_device_info */
  979. #define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM 0x41E4
  980. #define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM (1 << 0)
  981. #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM (1 << 1)
  982. #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2)
  983. #define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM (1 << 3)
  984. #define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM (1 << 4)
  985. #define CL_DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM 0x41EB
  986. /* cl_kernel_info */
  987. #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM 0x41E5
  988. #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6
  989. /* cl_queue_properties */
  990. #define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7
  991. #define CL_QUEUE_DEFERRED_FLUSH_ARM 0x41EC
  992. /**************************************
  993. * cl_arm_controlled_kernel_termination
  994. ***************************************/
  995. #define cl_arm_controlled_kernel_termination 1
  996. /* Error code to indicate kernel terminated with failure */
  997. #define CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM -1108
  998. /* cl_device_info */
  999. #define CL_DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM 0x41EE
  1000. /* Bit fields for controlled termination feature query */
  1001. typedef cl_bitfield cl_device_controlled_termination_capabilities_arm;
  1002. #define CL_DEVICE_CONTROLLED_TERMINATION_SUCCESS_ARM (1 << 0)
  1003. #define CL_DEVICE_CONTROLLED_TERMINATION_FAILURE_ARM (1 << 1)
  1004. #define CL_DEVICE_CONTROLLED_TERMINATION_QUERY_ARM (1 << 2)
  1005. /* cl_event_info */
  1006. #define CL_EVENT_COMMAND_TERMINATION_REASON_ARM 0x41ED
  1007. /* Values returned for event termination reason query */
  1008. typedef cl_uint cl_command_termination_reason_arm;
  1009. #define CL_COMMAND_TERMINATION_COMPLETION_ARM 0
  1010. #define CL_COMMAND_TERMINATION_CONTROLLED_SUCCESS_ARM 1
  1011. #define CL_COMMAND_TERMINATION_CONTROLLED_FAILURE_ARM 2
  1012. #define CL_COMMAND_TERMINATION_ERROR_ARM 3
  1013. /***************************************
  1014. * cl_intel_thread_local_exec extension *
  1015. ****************************************/
  1016. #define cl_intel_thread_local_exec 1
  1017. #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31)
  1018. /***************************************************************
  1019. * cl_intel_device_attribute_query
  1020. ***************************************************************/
  1021. #define cl_intel_device_attribute_query 1
  1022. typedef cl_bitfield cl_device_feature_capabilities_intel;
  1023. /* cl_device_feature_capabilities_intel */
  1024. #define CL_DEVICE_FEATURE_FLAG_DP4A_INTEL (1 << 0)
  1025. #define CL_DEVICE_FEATURE_FLAG_DPAS_INTEL (1 << 1)
  1026. /* cl_device_info */
  1027. #define CL_DEVICE_IP_VERSION_INTEL 0x4250
  1028. #define CL_DEVICE_ID_INTEL 0x4251
  1029. #define CL_DEVICE_NUM_SLICES_INTEL 0x4252
  1030. #define CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL 0x4253
  1031. #define CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL 0x4254
  1032. #define CL_DEVICE_NUM_THREADS_PER_EU_INTEL 0x4255
  1033. #define CL_DEVICE_FEATURE_CAPABILITIES_INTEL 0x4256
  1034. /***********************************************
  1035. * cl_intel_device_partition_by_names extension *
  1036. ************************************************/
  1037. #define cl_intel_device_partition_by_names 1
  1038. #define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052
  1039. #define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1
  1040. /************************************************
  1041. * cl_intel_accelerator extension *
  1042. * cl_intel_motion_estimation extension *
  1043. * cl_intel_advanced_motion_estimation extension *
  1044. *************************************************/
  1045. #define cl_intel_accelerator 1
  1046. #define cl_intel_motion_estimation 1
  1047. #define cl_intel_advanced_motion_estimation 1
  1048. typedef struct _cl_accelerator_intel* cl_accelerator_intel;
  1049. typedef cl_uint cl_accelerator_type_intel;
  1050. typedef cl_uint cl_accelerator_info_intel;
  1051. typedef struct _cl_motion_estimation_desc_intel {
  1052. cl_uint mb_block_type;
  1053. cl_uint subpixel_mode;
  1054. cl_uint sad_adjust_mode;
  1055. cl_uint search_path_type;
  1056. } cl_motion_estimation_desc_intel;
  1057. /* error codes */
  1058. #define CL_INVALID_ACCELERATOR_INTEL -1094
  1059. #define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095
  1060. #define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096
  1061. #define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097
  1062. /* cl_accelerator_type_intel */
  1063. #define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0
  1064. /* cl_accelerator_info_intel */
  1065. #define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090
  1066. #define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091
  1067. #define CL_ACCELERATOR_CONTEXT_INTEL 0x4092
  1068. #define CL_ACCELERATOR_TYPE_INTEL 0x4093
  1069. /* cl_motion_detect_desc_intel flags */
  1070. #define CL_ME_MB_TYPE_16x16_INTEL 0x0
  1071. #define CL_ME_MB_TYPE_8x8_INTEL 0x1
  1072. #define CL_ME_MB_TYPE_4x4_INTEL 0x2
  1073. #define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0
  1074. #define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1
  1075. #define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2
  1076. #define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0
  1077. #define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1
  1078. #define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0
  1079. #define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1
  1080. #define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5
  1081. #define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0
  1082. #define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1
  1083. #define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2
  1084. #define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4
  1085. #define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1
  1086. #define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2
  1087. #define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3
  1088. #define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16
  1089. #define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21
  1090. #define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32
  1091. #define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43
  1092. #define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48
  1093. #define CL_ME_COST_PENALTY_NONE_INTEL 0x0
  1094. #define CL_ME_COST_PENALTY_LOW_INTEL 0x1
  1095. #define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2
  1096. #define CL_ME_COST_PENALTY_HIGH_INTEL 0x3
  1097. #define CL_ME_COST_PRECISION_QPEL_INTEL 0x0
  1098. #define CL_ME_COST_PRECISION_HPEL_INTEL 0x1
  1099. #define CL_ME_COST_PRECISION_PEL_INTEL 0x2
  1100. #define CL_ME_COST_PRECISION_DPEL_INTEL 0x3
  1101. #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0
  1102. #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
  1103. #define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2
  1104. #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3
  1105. #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
  1106. #define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4
  1107. #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5
  1108. #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6
  1109. #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7
  1110. #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8
  1111. #define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0
  1112. #define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
  1113. #define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2
  1114. #define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3
  1115. /* cl_device_info */
  1116. #define CL_DEVICE_ME_VERSION_INTEL 0x407E
  1117. #define CL_ME_VERSION_LEGACY_INTEL 0x0
  1118. #define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1
  1119. #define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2
  1120. extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL
  1121. clCreateAcceleratorINTEL(
  1122. cl_context context,
  1123. cl_accelerator_type_intel accelerator_type,
  1124. size_t descriptor_size,
  1125. const void* descriptor,
  1126. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  1127. typedef cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)(
  1128. cl_context context,
  1129. cl_accelerator_type_intel accelerator_type,
  1130. size_t descriptor_size,
  1131. const void* descriptor,
  1132. cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
  1133. extern CL_API_ENTRY cl_int CL_API_CALL
  1134. clGetAcceleratorInfoINTEL(
  1135. cl_accelerator_intel accelerator,
  1136. cl_accelerator_info_intel param_name,
  1137. size_t param_value_size,
  1138. void* param_value,
  1139. size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
  1140. typedef cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)(
  1141. cl_accelerator_intel accelerator,
  1142. cl_accelerator_info_intel param_name,
  1143. size_t param_value_size,
  1144. void* param_value,
  1145. size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
  1146. extern CL_API_ENTRY cl_int CL_API_CALL
  1147. clRetainAcceleratorINTEL(
  1148. cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
  1149. typedef cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)(
  1150. cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
  1151. extern CL_API_ENTRY cl_int CL_API_CALL
  1152. clReleaseAcceleratorINTEL(
  1153. cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
  1154. typedef cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)(
  1155. cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
  1156. /******************************************
  1157. * cl_intel_simultaneous_sharing extension *
  1158. *******************************************/
  1159. #define cl_intel_simultaneous_sharing 1
  1160. #define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104
  1161. #define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105
  1162. /***********************************
  1163. * cl_intel_egl_image_yuv extension *
  1164. ************************************/
  1165. #define cl_intel_egl_image_yuv 1
  1166. #define CL_EGL_YUV_PLANE_INTEL 0x4107
  1167. /********************************
  1168. * cl_intel_packed_yuv extension *
  1169. *********************************/
  1170. #define cl_intel_packed_yuv 1
  1171. #define CL_YUYV_INTEL 0x4076
  1172. #define CL_UYVY_INTEL 0x4077
  1173. #define CL_YVYU_INTEL 0x4078
  1174. #define CL_VYUY_INTEL 0x4079
  1175. /********************************************
  1176. * cl_intel_required_subgroup_size extension *
  1177. *********************************************/
  1178. #define cl_intel_required_subgroup_size 1
  1179. #define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108
  1180. #define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109
  1181. #define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A
  1182. /****************************************
  1183. * cl_intel_driver_diagnostics extension *
  1184. *****************************************/
  1185. #define cl_intel_driver_diagnostics 1
  1186. typedef cl_uint cl_diagnostics_verbose_level;
  1187. #define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106
  1188. #define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff )
  1189. #define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 )
  1190. #define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 )
  1191. #define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 )
  1192. /********************************
  1193. * cl_intel_planar_yuv extension *
  1194. *********************************/
  1195. #define CL_NV12_INTEL 0x410E
  1196. #define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 )
  1197. #define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 )
  1198. #define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E
  1199. #define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F
  1200. /*******************************************************
  1201. * cl_intel_device_side_avc_motion_estimation extension *
  1202. ********************************************************/
  1203. #define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B
  1204. #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C
  1205. #define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D
  1206. #define CL_AVC_ME_VERSION_0_INTEL 0x0 /* No support. */
  1207. #define CL_AVC_ME_VERSION_1_INTEL 0x1 /* First supported version. */
  1208. #define CL_AVC_ME_MAJOR_16x16_INTEL 0x0
  1209. #define CL_AVC_ME_MAJOR_16x8_INTEL 0x1
  1210. #define CL_AVC_ME_MAJOR_8x16_INTEL 0x2
  1211. #define CL_AVC_ME_MAJOR_8x8_INTEL 0x3
  1212. #define CL_AVC_ME_MINOR_8x8_INTEL 0x0
  1213. #define CL_AVC_ME_MINOR_8x4_INTEL 0x1
  1214. #define CL_AVC_ME_MINOR_4x8_INTEL 0x2
  1215. #define CL_AVC_ME_MINOR_4x4_INTEL 0x3
  1216. #define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0
  1217. #define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1
  1218. #define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2
  1219. #define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0
  1220. #define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E
  1221. #define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D
  1222. #define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B
  1223. #define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77
  1224. #define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F
  1225. #define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F
  1226. #define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F
  1227. #define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0
  1228. #define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1
  1229. #define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2
  1230. #define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3
  1231. #define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4
  1232. #define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5
  1233. #define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6
  1234. #define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7
  1235. #define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8
  1236. #define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9
  1237. #define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2
  1238. #define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa
  1239. #define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0
  1240. #define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2
  1241. #define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0
  1242. #define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1
  1243. #define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3
  1244. #define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0
  1245. #define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1
  1246. #define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2
  1247. #define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3
  1248. #define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10
  1249. #define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15
  1250. #define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20
  1251. #define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B
  1252. #define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30
  1253. #define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0
  1254. #define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2
  1255. #define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4
  1256. #define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8
  1257. #define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0
  1258. #define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000
  1259. #define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 )
  1260. #define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 )
  1261. #define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 )
  1262. #define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 )
  1263. #define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 )
  1264. #define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 )
  1265. #define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 )
  1266. #define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 )
  1267. #define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 )
  1268. #define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 )
  1269. #define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 )
  1270. #define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 )
  1271. #define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 )
  1272. #define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 )
  1273. #define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00
  1274. #define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80
  1275. #define CL_AVC_ME_INTRA_16x16_INTEL 0x0
  1276. #define CL_AVC_ME_INTRA_8x8_INTEL 0x1
  1277. #define CL_AVC_ME_INTRA_4x4_INTEL 0x2
  1278. #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6
  1279. #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5
  1280. #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3
  1281. #define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60
  1282. #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10
  1283. #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8
  1284. #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4
  1285. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0
  1286. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
  1287. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2
  1288. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3
  1289. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
  1290. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4
  1291. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5
  1292. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6
  1293. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7
  1294. #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8
  1295. #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0
  1296. #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1
  1297. #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2
  1298. #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3
  1299. #define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1
  1300. #define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2
  1301. #define CL_AVC_ME_FRAME_DUAL_INTEL 0x3
  1302. #define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0
  1303. #define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1
  1304. #define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2
  1305. #define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0
  1306. #define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1
  1307. /*******************************************
  1308. * cl_intel_unified_shared_memory extension *
  1309. ********************************************/
  1310. /* These APIs are in sync with Revision Q of the cl_intel_unified_shared_memory spec! */
  1311. #define cl_intel_unified_shared_memory 1
  1312. /* cl_device_info */
  1313. #define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL 0x4190
  1314. #define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL 0x4191
  1315. #define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192
  1316. #define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193
  1317. #define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL 0x4194
  1318. typedef cl_bitfield cl_device_unified_shared_memory_capabilities_intel;
  1319. /* cl_device_unified_shared_memory_capabilities_intel - bitfield */
  1320. #define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL (1 << 0)
  1321. #define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL (1 << 1)
  1322. #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL (1 << 2)
  1323. #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3)
  1324. typedef cl_properties cl_mem_properties_intel;
  1325. /* cl_mem_properties_intel */
  1326. #define CL_MEM_ALLOC_FLAGS_INTEL 0x4195
  1327. typedef cl_bitfield cl_mem_alloc_flags_intel;
  1328. /* cl_mem_alloc_flags_intel - bitfield */
  1329. #define CL_MEM_ALLOC_WRITE_COMBINED_INTEL (1 << 0)
  1330. typedef cl_uint cl_mem_info_intel;
  1331. /* cl_mem_alloc_info_intel */
  1332. #define CL_MEM_ALLOC_TYPE_INTEL 0x419A
  1333. #define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B
  1334. #define CL_MEM_ALLOC_SIZE_INTEL 0x419C
  1335. #define CL_MEM_ALLOC_DEVICE_INTEL 0x419D
  1336. /* Enum values 0x419E-0x419F are reserved for future queries. */
  1337. typedef cl_uint cl_unified_shared_memory_type_intel;
  1338. /* cl_unified_shared_memory_type_intel */
  1339. #define CL_MEM_TYPE_UNKNOWN_INTEL 0x4196
  1340. #define CL_MEM_TYPE_HOST_INTEL 0x4197
  1341. #define CL_MEM_TYPE_DEVICE_INTEL 0x4198
  1342. #define CL_MEM_TYPE_SHARED_INTEL 0x4199
  1343. typedef cl_uint cl_mem_advice_intel;
  1344. /* cl_mem_advice_intel */
  1345. /* Enum values 0x4208-0x420F are reserved for future memory advices. */
  1346. /* cl_kernel_exec_info */
  1347. #define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL 0x4200
  1348. #define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL 0x4201
  1349. #define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL 0x4202
  1350. #define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL 0x4203
  1351. /* cl_command_type */
  1352. #define CL_COMMAND_MEMFILL_INTEL 0x4204
  1353. #define CL_COMMAND_MEMCPY_INTEL 0x4205
  1354. #define CL_COMMAND_MIGRATEMEM_INTEL 0x4206
  1355. #define CL_COMMAND_MEMADVISE_INTEL 0x4207
  1356. extern CL_API_ENTRY void* CL_API_CALL
  1357. clHostMemAllocINTEL(
  1358. cl_context context,
  1359. const cl_mem_properties_intel* properties,
  1360. size_t size,
  1361. cl_uint alignment,
  1362. cl_int* errcode_ret);
  1363. typedef void* (CL_API_CALL *
  1364. clHostMemAllocINTEL_fn)(
  1365. cl_context context,
  1366. const cl_mem_properties_intel* properties,
  1367. size_t size,
  1368. cl_uint alignment,
  1369. cl_int* errcode_ret);
  1370. extern CL_API_ENTRY void* CL_API_CALL
  1371. clDeviceMemAllocINTEL(
  1372. cl_context context,
  1373. cl_device_id device,
  1374. const cl_mem_properties_intel* properties,
  1375. size_t size,
  1376. cl_uint alignment,
  1377. cl_int* errcode_ret);
  1378. typedef void* (CL_API_CALL *
  1379. clDeviceMemAllocINTEL_fn)(
  1380. cl_context context,
  1381. cl_device_id device,
  1382. const cl_mem_properties_intel* properties,
  1383. size_t size,
  1384. cl_uint alignment,
  1385. cl_int* errcode_ret);
  1386. extern CL_API_ENTRY void* CL_API_CALL
  1387. clSharedMemAllocINTEL(
  1388. cl_context context,
  1389. cl_device_id device,
  1390. const cl_mem_properties_intel* properties,
  1391. size_t size,
  1392. cl_uint alignment,
  1393. cl_int* errcode_ret);
  1394. typedef void* (CL_API_CALL *
  1395. clSharedMemAllocINTEL_fn)(
  1396. cl_context context,
  1397. cl_device_id device,
  1398. const cl_mem_properties_intel* properties,
  1399. size_t size,
  1400. cl_uint alignment,
  1401. cl_int* errcode_ret);
  1402. extern CL_API_ENTRY cl_int CL_API_CALL
  1403. clMemFreeINTEL(
  1404. cl_context context,
  1405. void* ptr);
  1406. typedef cl_int (CL_API_CALL *
  1407. clMemFreeINTEL_fn)(
  1408. cl_context context,
  1409. void* ptr);
  1410. extern CL_API_ENTRY cl_int CL_API_CALL
  1411. clMemBlockingFreeINTEL(
  1412. cl_context context,
  1413. void* ptr);
  1414. typedef cl_int (CL_API_CALL *
  1415. clMemBlockingFreeINTEL_fn)(
  1416. cl_context context,
  1417. void* ptr);
  1418. extern CL_API_ENTRY cl_int CL_API_CALL
  1419. clGetMemAllocInfoINTEL(
  1420. cl_context context,
  1421. const void* ptr,
  1422. cl_mem_info_intel param_name,
  1423. size_t param_value_size,
  1424. void* param_value,
  1425. size_t* param_value_size_ret);
  1426. typedef cl_int (CL_API_CALL *
  1427. clGetMemAllocInfoINTEL_fn)(
  1428. cl_context context,
  1429. const void* ptr,
  1430. cl_mem_info_intel param_name,
  1431. size_t param_value_size,
  1432. void* param_value,
  1433. size_t* param_value_size_ret);
  1434. extern CL_API_ENTRY cl_int CL_API_CALL
  1435. clSetKernelArgMemPointerINTEL(
  1436. cl_kernel kernel,
  1437. cl_uint arg_index,
  1438. const void* arg_value);
  1439. typedef cl_int (CL_API_CALL *
  1440. clSetKernelArgMemPointerINTEL_fn)(
  1441. cl_kernel kernel,
  1442. cl_uint arg_index,
  1443. const void* arg_value);
  1444. extern CL_API_ENTRY cl_int CL_API_CALL
  1445. clEnqueueMemsetINTEL( /* Deprecated */
  1446. cl_command_queue command_queue,
  1447. void* dst_ptr,
  1448. cl_int value,
  1449. size_t size,
  1450. cl_uint num_events_in_wait_list,
  1451. const cl_event* event_wait_list,
  1452. cl_event* event);
  1453. typedef cl_int (CL_API_CALL *
  1454. clEnqueueMemsetINTEL_fn)( /* Deprecated */
  1455. cl_command_queue command_queue,
  1456. void* dst_ptr,
  1457. cl_int value,
  1458. size_t size,
  1459. cl_uint num_events_in_wait_list,
  1460. const cl_event* event_wait_list,
  1461. cl_event* event);
  1462. extern CL_API_ENTRY cl_int CL_API_CALL
  1463. clEnqueueMemFillINTEL(
  1464. cl_command_queue command_queue,
  1465. void* dst_ptr,
  1466. const void* pattern,
  1467. size_t pattern_size,
  1468. size_t size,
  1469. cl_uint num_events_in_wait_list,
  1470. const cl_event* event_wait_list,
  1471. cl_event* event);
  1472. typedef cl_int (CL_API_CALL *
  1473. clEnqueueMemFillINTEL_fn)(
  1474. cl_command_queue command_queue,
  1475. void* dst_ptr,
  1476. const void* pattern,
  1477. size_t pattern_size,
  1478. size_t size,
  1479. cl_uint num_events_in_wait_list,
  1480. const cl_event* event_wait_list,
  1481. cl_event* event);
  1482. extern CL_API_ENTRY cl_int CL_API_CALL
  1483. clEnqueueMemcpyINTEL(
  1484. cl_command_queue command_queue,
  1485. cl_bool blocking,
  1486. void* dst_ptr,
  1487. const void* src_ptr,
  1488. size_t size,
  1489. cl_uint num_events_in_wait_list,
  1490. const cl_event* event_wait_list,
  1491. cl_event* event);
  1492. typedef cl_int (CL_API_CALL *
  1493. clEnqueueMemcpyINTEL_fn)(
  1494. cl_command_queue command_queue,
  1495. cl_bool blocking,
  1496. void* dst_ptr,
  1497. const void* src_ptr,
  1498. size_t size,
  1499. cl_uint num_events_in_wait_list,
  1500. const cl_event* event_wait_list,
  1501. cl_event* event);
  1502. #ifdef CL_VERSION_1_2
  1503. /* Because these APIs use cl_mem_migration_flags, they require
  1504. OpenCL 1.2: */
  1505. extern CL_API_ENTRY cl_int CL_API_CALL
  1506. clEnqueueMigrateMemINTEL(
  1507. cl_command_queue command_queue,
  1508. const void* ptr,
  1509. size_t size,
  1510. cl_mem_migration_flags flags,
  1511. cl_uint num_events_in_wait_list,
  1512. const cl_event* event_wait_list,
  1513. cl_event* event);
  1514. typedef cl_int (CL_API_CALL *
  1515. clEnqueueMigrateMemINTEL_fn)(
  1516. cl_command_queue command_queue,
  1517. const void* ptr,
  1518. size_t size,
  1519. cl_mem_migration_flags flags,
  1520. cl_uint num_events_in_wait_list,
  1521. const cl_event* event_wait_list,
  1522. cl_event* event);
  1523. #endif
  1524. extern CL_API_ENTRY cl_int CL_API_CALL
  1525. clEnqueueMemAdviseINTEL(
  1526. cl_command_queue command_queue,
  1527. const void* ptr,
  1528. size_t size,
  1529. cl_mem_advice_intel advice,
  1530. cl_uint num_events_in_wait_list,
  1531. const cl_event* event_wait_list,
  1532. cl_event* event);
  1533. typedef cl_int (CL_API_CALL *
  1534. clEnqueueMemAdviseINTEL_fn)(
  1535. cl_command_queue command_queue,
  1536. const void* ptr,
  1537. size_t size,
  1538. cl_mem_advice_intel advice,
  1539. cl_uint num_events_in_wait_list,
  1540. const cl_event* event_wait_list,
  1541. cl_event* event);
  1542. /***************************************************
  1543. * cl_intel_create_buffer_with_properties extension *
  1544. ****************************************************/
  1545. #define cl_intel_create_buffer_with_properties 1
  1546. extern CL_API_ENTRY cl_mem CL_API_CALL
  1547. clCreateBufferWithPropertiesINTEL(
  1548. cl_context context,
  1549. const cl_mem_properties_intel* properties,
  1550. cl_mem_flags flags,
  1551. size_t size,
  1552. void * host_ptr,
  1553. cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  1554. typedef cl_mem (CL_API_CALL *
  1555. clCreateBufferWithPropertiesINTEL_fn)(
  1556. cl_context context,
  1557. const cl_mem_properties_intel* properties,
  1558. cl_mem_flags flags,
  1559. size_t size,
  1560. void * host_ptr,
  1561. cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
  1562. /******************************************
  1563. * cl_intel_mem_channel_property extension *
  1564. *******************************************/
  1565. #define CL_MEM_CHANNEL_INTEL 0x4213
  1566. /*********************************
  1567. * cl_intel_mem_force_host_memory *
  1568. **********************************/
  1569. #define cl_intel_mem_force_host_memory 1
  1570. /* cl_mem_flags */
  1571. #define CL_MEM_FORCE_HOST_MEMORY_INTEL (1 << 20)
  1572. /***************************************************************
  1573. * cl_intel_command_queue_families
  1574. ***************************************************************/
  1575. #define cl_intel_command_queue_families 1
  1576. typedef cl_bitfield cl_command_queue_capabilities_intel;
  1577. #define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL 64
  1578. typedef struct _cl_queue_family_properties_intel {
  1579. cl_command_queue_properties properties;
  1580. cl_command_queue_capabilities_intel capabilities;
  1581. cl_uint count;
  1582. char name[CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL];
  1583. } cl_queue_family_properties_intel;
  1584. /* cl_device_info */
  1585. #define CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL 0x418B
  1586. /* cl_queue_properties */
  1587. #define CL_QUEUE_FAMILY_INTEL 0x418C
  1588. #define CL_QUEUE_INDEX_INTEL 0x418D
  1589. /* cl_command_queue_capabilities_intel */
  1590. #define CL_QUEUE_DEFAULT_CAPABILITIES_INTEL 0
  1591. #define CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL (1 << 0)
  1592. #define CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL (1 << 1)
  1593. #define CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 2)
  1594. #define CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 3)
  1595. #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL (1 << 8)
  1596. #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL (1 << 9)
  1597. #define CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL (1 << 10)
  1598. #define CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL (1 << 11)
  1599. #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL (1 << 12)
  1600. #define CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL (1 << 13)
  1601. #define CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL (1 << 14)
  1602. #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL (1 << 15)
  1603. #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL (1 << 16)
  1604. #define CL_QUEUE_CAPABILITY_MARKER_INTEL (1 << 24)
  1605. #define CL_QUEUE_CAPABILITY_BARRIER_INTEL (1 << 25)
  1606. #define CL_QUEUE_CAPABILITY_KERNEL_INTEL (1 << 26)
  1607. /***************************************************************
  1608. * cl_intel_sharing_format_query
  1609. ***************************************************************/
  1610. #define cl_intel_sharing_format_query 1
  1611. #ifdef __cplusplus
  1612. }
  1613. #endif
  1614. #endif /* __CL_EXT_H */