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 17 /* cl_ext.h contains OpenCL extensions which don't have external */ 18 /* (OpenGL, D3D) dependencies. */ 19 20 #ifndef __CL_EXT_H 21 #define __CL_EXT_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 #include <CL/cl.h> 28 29 /*************************************************************** 30 * cl_khr_command_buffer 31 ***************************************************************/ 32 #define cl_khr_command_buffer 1 33 #define CL_KHR_COMMAND_BUFFER_EXTENSION_NAME \ 34 "cl_khr_command_buffer" 35 36 typedef cl_bitfield cl_device_command_buffer_capabilities_khr; 37 typedef struct _cl_command_buffer_khr* cl_command_buffer_khr; 38 typedef cl_uint cl_sync_point_khr; 39 typedef cl_uint cl_command_buffer_info_khr; 40 typedef cl_uint cl_command_buffer_state_khr; 41 typedef cl_properties cl_command_buffer_properties_khr; 42 typedef cl_bitfield cl_command_buffer_flags_khr; 43 typedef cl_properties cl_ndrange_kernel_command_properties_khr; 44 typedef struct _cl_mutable_command_khr* cl_mutable_command_khr; 45 46 /* cl_device_info */ 47 #define CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR 0x12A9 48 #define CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR 0x12AA 49 50 /* cl_device_command_buffer_capabilities_khr - bitfield */ 51 #define CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR (1 << 0) 52 #define CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR (1 << 1) 53 #define CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR (1 << 2) 54 #define CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR (1 << 3) 55 56 /* cl_command_buffer_properties_khr */ 57 #define CL_COMMAND_BUFFER_FLAGS_KHR 0x1293 58 59 /* cl_command_buffer_flags_khr */ 60 #define CL_COMMAND_BUFFER_SIMULTANEOUS_USE_KHR (1 << 0) 61 62 /* Error codes */ 63 #define CL_INVALID_COMMAND_BUFFER_KHR -1138 64 #define CL_INVALID_SYNC_POINT_WAIT_LIST_KHR -1139 65 #define CL_INCOMPATIBLE_COMMAND_QUEUE_KHR -1140 66 67 /* cl_command_buffer_info_khr */ 68 #define CL_COMMAND_BUFFER_QUEUES_KHR 0x1294 69 #define CL_COMMAND_BUFFER_NUM_QUEUES_KHR 0x1295 70 #define CL_COMMAND_BUFFER_REFERENCE_COUNT_KHR 0x1296 71 #define CL_COMMAND_BUFFER_STATE_KHR 0x1297 72 #define CL_COMMAND_BUFFER_PROPERTIES_ARRAY_KHR 0x1298 73 74 /* cl_command_buffer_state_khr */ 75 #define CL_COMMAND_BUFFER_STATE_RECORDING_KHR 0 76 #define CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR 1 77 #define CL_COMMAND_BUFFER_STATE_PENDING_KHR 2 78 #define CL_COMMAND_BUFFER_STATE_INVALID_KHR 3 79 80 /* cl_command_type */ 81 #define CL_COMMAND_COMMAND_BUFFER_KHR 0x12A8 82 83 84 typedef cl_command_buffer_khr (CL_API_CALL * 85 clCreateCommandBufferKHR_fn)( 86 cl_uint num_queues, 87 const cl_command_queue* queues, 88 const cl_command_buffer_properties_khr* properties, 89 cl_int* errcode_ret) ; 90 91 typedef cl_int (CL_API_CALL * 92 clFinalizeCommandBufferKHR_fn)( 93 cl_command_buffer_khr command_buffer) ; 94 95 typedef cl_int (CL_API_CALL * 96 clRetainCommandBufferKHR_fn)( 97 cl_command_buffer_khr command_buffer) ; 98 99 typedef cl_int (CL_API_CALL * 100 clReleaseCommandBufferKHR_fn)( 101 cl_command_buffer_khr command_buffer) ; 102 103 typedef cl_int (CL_API_CALL * 104 clEnqueueCommandBufferKHR_fn)( 105 cl_uint num_queues, 106 cl_command_queue* queues, 107 cl_command_buffer_khr command_buffer, 108 cl_uint num_events_in_wait_list, 109 const cl_event* event_wait_list, 110 cl_event* event) ; 111 112 typedef cl_int (CL_API_CALL * 113 clCommandBarrierWithWaitListKHR_fn)( 114 cl_command_buffer_khr command_buffer, 115 cl_command_queue command_queue, 116 cl_uint num_sync_points_in_wait_list, 117 const cl_sync_point_khr* sync_point_wait_list, 118 cl_sync_point_khr* sync_point, 119 cl_mutable_command_khr* mutable_handle) ; 120 121 typedef cl_int (CL_API_CALL * 122 clCommandCopyBufferKHR_fn)( 123 cl_command_buffer_khr command_buffer, 124 cl_command_queue command_queue, 125 cl_mem src_buffer, 126 cl_mem dst_buffer, 127 size_t src_offset, 128 size_t dst_offset, 129 size_t size, 130 cl_uint num_sync_points_in_wait_list, 131 const cl_sync_point_khr* sync_point_wait_list, 132 cl_sync_point_khr* sync_point, 133 cl_mutable_command_khr* mutable_handle) ; 134 135 typedef cl_int (CL_API_CALL * 136 clCommandCopyBufferRectKHR_fn)( 137 cl_command_buffer_khr command_buffer, 138 cl_command_queue command_queue, 139 cl_mem src_buffer, 140 cl_mem dst_buffer, 141 const size_t* src_origin, 142 const size_t* dst_origin, 143 const size_t* region, 144 size_t src_row_pitch, 145 size_t src_slice_pitch, 146 size_t dst_row_pitch, 147 size_t dst_slice_pitch, 148 cl_uint num_sync_points_in_wait_list, 149 const cl_sync_point_khr* sync_point_wait_list, 150 cl_sync_point_khr* sync_point, 151 cl_mutable_command_khr* mutable_handle) ; 152 153 typedef cl_int (CL_API_CALL * 154 clCommandCopyBufferToImageKHR_fn)( 155 cl_command_buffer_khr command_buffer, 156 cl_command_queue command_queue, 157 cl_mem src_buffer, 158 cl_mem dst_image, 159 size_t src_offset, 160 const size_t* dst_origin, 161 const size_t* region, 162 cl_uint num_sync_points_in_wait_list, 163 const cl_sync_point_khr* sync_point_wait_list, 164 cl_sync_point_khr* sync_point, 165 cl_mutable_command_khr* mutable_handle) ; 166 167 typedef cl_int (CL_API_CALL * 168 clCommandCopyImageKHR_fn)( 169 cl_command_buffer_khr command_buffer, 170 cl_command_queue command_queue, 171 cl_mem src_image, 172 cl_mem dst_image, 173 const size_t* src_origin, 174 const size_t* dst_origin, 175 const size_t* region, 176 cl_uint num_sync_points_in_wait_list, 177 const cl_sync_point_khr* sync_point_wait_list, 178 cl_sync_point_khr* sync_point, 179 cl_mutable_command_khr* mutable_handle) ; 180 181 typedef cl_int (CL_API_CALL * 182 clCommandCopyImageToBufferKHR_fn)( 183 cl_command_buffer_khr command_buffer, 184 cl_command_queue command_queue, 185 cl_mem src_image, 186 cl_mem dst_buffer, 187 const size_t* src_origin, 188 const size_t* region, 189 size_t dst_offset, 190 cl_uint num_sync_points_in_wait_list, 191 const cl_sync_point_khr* sync_point_wait_list, 192 cl_sync_point_khr* sync_point, 193 cl_mutable_command_khr* mutable_handle) ; 194 195 typedef cl_int (CL_API_CALL * 196 clCommandFillBufferKHR_fn)( 197 cl_command_buffer_khr command_buffer, 198 cl_command_queue command_queue, 199 cl_mem buffer, 200 const void* pattern, 201 size_t pattern_size, 202 size_t offset, 203 size_t size, 204 cl_uint num_sync_points_in_wait_list, 205 const cl_sync_point_khr* sync_point_wait_list, 206 cl_sync_point_khr* sync_point, 207 cl_mutable_command_khr* mutable_handle) ; 208 209 typedef cl_int (CL_API_CALL * 210 clCommandFillImageKHR_fn)( 211 cl_command_buffer_khr command_buffer, 212 cl_command_queue command_queue, 213 cl_mem image, 214 const void* fill_color, 215 const size_t* origin, 216 const size_t* region, 217 cl_uint num_sync_points_in_wait_list, 218 const cl_sync_point_khr* sync_point_wait_list, 219 cl_sync_point_khr* sync_point, 220 cl_mutable_command_khr* mutable_handle) ; 221 222 typedef cl_int (CL_API_CALL * 223 clCommandNDRangeKernelKHR_fn)( 224 cl_command_buffer_khr command_buffer, 225 cl_command_queue command_queue, 226 const cl_ndrange_kernel_command_properties_khr* properties, 227 cl_kernel kernel, 228 cl_uint work_dim, 229 const size_t* global_work_offset, 230 const size_t* global_work_size, 231 const size_t* local_work_size, 232 cl_uint num_sync_points_in_wait_list, 233 const cl_sync_point_khr* sync_point_wait_list, 234 cl_sync_point_khr* sync_point, 235 cl_mutable_command_khr* mutable_handle) ; 236 237 typedef cl_int (CL_API_CALL * 238 clGetCommandBufferInfoKHR_fn)( 239 cl_command_buffer_khr command_buffer, 240 cl_command_buffer_info_khr param_name, 241 size_t param_value_size, 242 void* param_value, 243 size_t* param_value_size_ret) ; 244 245 #ifndef CL_NO_PROTOTYPES 246 247 extern CL_API_ENTRY cl_command_buffer_khr CL_API_CALL 248 clCreateCommandBufferKHR( 249 cl_uint num_queues, 250 const cl_command_queue* queues, 251 const cl_command_buffer_properties_khr* properties, 252 cl_int* errcode_ret) ; 253 254 extern CL_API_ENTRY cl_int CL_API_CALL 255 clFinalizeCommandBufferKHR( 256 cl_command_buffer_khr command_buffer) ; 257 258 extern CL_API_ENTRY cl_int CL_API_CALL 259 clRetainCommandBufferKHR( 260 cl_command_buffer_khr command_buffer) ; 261 262 extern CL_API_ENTRY cl_int CL_API_CALL 263 clReleaseCommandBufferKHR( 264 cl_command_buffer_khr command_buffer) ; 265 266 extern CL_API_ENTRY cl_int CL_API_CALL 267 clEnqueueCommandBufferKHR( 268 cl_uint num_queues, 269 cl_command_queue* queues, 270 cl_command_buffer_khr command_buffer, 271 cl_uint num_events_in_wait_list, 272 const cl_event* event_wait_list, 273 cl_event* event) ; 274 275 extern CL_API_ENTRY cl_int CL_API_CALL 276 clCommandBarrierWithWaitListKHR( 277 cl_command_buffer_khr command_buffer, 278 cl_command_queue command_queue, 279 cl_uint num_sync_points_in_wait_list, 280 const cl_sync_point_khr* sync_point_wait_list, 281 cl_sync_point_khr* sync_point, 282 cl_mutable_command_khr* mutable_handle) ; 283 284 extern CL_API_ENTRY cl_int CL_API_CALL 285 clCommandCopyBufferKHR( 286 cl_command_buffer_khr command_buffer, 287 cl_command_queue command_queue, 288 cl_mem src_buffer, 289 cl_mem dst_buffer, 290 size_t src_offset, 291 size_t dst_offset, 292 size_t size, 293 cl_uint num_sync_points_in_wait_list, 294 const cl_sync_point_khr* sync_point_wait_list, 295 cl_sync_point_khr* sync_point, 296 cl_mutable_command_khr* mutable_handle) ; 297 298 extern CL_API_ENTRY cl_int CL_API_CALL 299 clCommandCopyBufferRectKHR( 300 cl_command_buffer_khr command_buffer, 301 cl_command_queue command_queue, 302 cl_mem src_buffer, 303 cl_mem dst_buffer, 304 const size_t* src_origin, 305 const size_t* dst_origin, 306 const size_t* region, 307 size_t src_row_pitch, 308 size_t src_slice_pitch, 309 size_t dst_row_pitch, 310 size_t dst_slice_pitch, 311 cl_uint num_sync_points_in_wait_list, 312 const cl_sync_point_khr* sync_point_wait_list, 313 cl_sync_point_khr* sync_point, 314 cl_mutable_command_khr* mutable_handle) ; 315 316 extern CL_API_ENTRY cl_int CL_API_CALL 317 clCommandCopyBufferToImageKHR( 318 cl_command_buffer_khr command_buffer, 319 cl_command_queue command_queue, 320 cl_mem src_buffer, 321 cl_mem dst_image, 322 size_t src_offset, 323 const size_t* dst_origin, 324 const size_t* region, 325 cl_uint num_sync_points_in_wait_list, 326 const cl_sync_point_khr* sync_point_wait_list, 327 cl_sync_point_khr* sync_point, 328 cl_mutable_command_khr* mutable_handle) ; 329 330 extern CL_API_ENTRY cl_int CL_API_CALL 331 clCommandCopyImageKHR( 332 cl_command_buffer_khr command_buffer, 333 cl_command_queue command_queue, 334 cl_mem src_image, 335 cl_mem dst_image, 336 const size_t* src_origin, 337 const size_t* dst_origin, 338 const size_t* region, 339 cl_uint num_sync_points_in_wait_list, 340 const cl_sync_point_khr* sync_point_wait_list, 341 cl_sync_point_khr* sync_point, 342 cl_mutable_command_khr* mutable_handle) ; 343 344 extern CL_API_ENTRY cl_int CL_API_CALL 345 clCommandCopyImageToBufferKHR( 346 cl_command_buffer_khr command_buffer, 347 cl_command_queue command_queue, 348 cl_mem src_image, 349 cl_mem dst_buffer, 350 const size_t* src_origin, 351 const size_t* region, 352 size_t dst_offset, 353 cl_uint num_sync_points_in_wait_list, 354 const cl_sync_point_khr* sync_point_wait_list, 355 cl_sync_point_khr* sync_point, 356 cl_mutable_command_khr* mutable_handle) ; 357 358 extern CL_API_ENTRY cl_int CL_API_CALL 359 clCommandFillBufferKHR( 360 cl_command_buffer_khr command_buffer, 361 cl_command_queue command_queue, 362 cl_mem buffer, 363 const void* pattern, 364 size_t pattern_size, 365 size_t offset, 366 size_t size, 367 cl_uint num_sync_points_in_wait_list, 368 const cl_sync_point_khr* sync_point_wait_list, 369 cl_sync_point_khr* sync_point, 370 cl_mutable_command_khr* mutable_handle) ; 371 372 extern CL_API_ENTRY cl_int CL_API_CALL 373 clCommandFillImageKHR( 374 cl_command_buffer_khr command_buffer, 375 cl_command_queue command_queue, 376 cl_mem image, 377 const void* fill_color, 378 const size_t* origin, 379 const size_t* region, 380 cl_uint num_sync_points_in_wait_list, 381 const cl_sync_point_khr* sync_point_wait_list, 382 cl_sync_point_khr* sync_point, 383 cl_mutable_command_khr* mutable_handle) ; 384 385 extern CL_API_ENTRY cl_int CL_API_CALL 386 clCommandNDRangeKernelKHR( 387 cl_command_buffer_khr command_buffer, 388 cl_command_queue command_queue, 389 const cl_ndrange_kernel_command_properties_khr* properties, 390 cl_kernel kernel, 391 cl_uint work_dim, 392 const size_t* global_work_offset, 393 const size_t* global_work_size, 394 const size_t* local_work_size, 395 cl_uint num_sync_points_in_wait_list, 396 const cl_sync_point_khr* sync_point_wait_list, 397 cl_sync_point_khr* sync_point, 398 cl_mutable_command_khr* mutable_handle) ; 399 400 extern CL_API_ENTRY cl_int CL_API_CALL 401 clGetCommandBufferInfoKHR( 402 cl_command_buffer_khr command_buffer, 403 cl_command_buffer_info_khr param_name, 404 size_t param_value_size, 405 void* param_value, 406 size_t* param_value_size_ret) ; 407 408 #endif /* CL_NO_PROTOTYPES */ 409 410 /*************************************************************** 411 * cl_khr_command_buffer_mutable_dispatch 412 ***************************************************************/ 413 #define cl_khr_command_buffer_mutable_dispatch 1 414 #define CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME \ 415 "cl_khr_command_buffer_mutable_dispatch" 416 417 typedef cl_uint cl_command_buffer_structure_type_khr; 418 typedef cl_bitfield cl_mutable_dispatch_fields_khr; 419 typedef cl_uint cl_mutable_command_info_khr; 420 typedef struct _cl_mutable_dispatch_arg_khr { 421 cl_uint arg_index; 422 size_t arg_size; 423 const void* arg_value; 424 } cl_mutable_dispatch_arg_khr; 425 typedef struct _cl_mutable_dispatch_exec_info_khr { 426 cl_uint param_name; 427 size_t param_value_size; 428 const void* param_value; 429 } cl_mutable_dispatch_exec_info_khr; 430 typedef struct _cl_mutable_dispatch_config_khr { 431 cl_command_buffer_structure_type_khr type; 432 const void* next; 433 cl_mutable_command_khr command; 434 cl_uint num_args; 435 cl_uint num_svm_args; 436 cl_uint num_exec_infos; 437 cl_uint work_dim; 438 const cl_mutable_dispatch_arg_khr* arg_list; 439 const cl_mutable_dispatch_arg_khr* arg_svm_list; 440 const cl_mutable_dispatch_exec_info_khr* exec_info_list; 441 const size_t* global_work_offset; 442 const size_t* global_work_size; 443 const size_t* local_work_size; 444 } cl_mutable_dispatch_config_khr; 445 typedef struct _cl_mutable_base_config_khr { 446 cl_command_buffer_structure_type_khr type; 447 const void* next; 448 cl_uint num_mutable_dispatch; 449 const cl_mutable_dispatch_config_khr* mutable_dispatch_list; 450 } cl_mutable_base_config_khr; 451 452 /* cl_command_buffer_flags_khr - bitfield */ 453 #define CL_COMMAND_BUFFER_MUTABLE_KHR (1 << 1) 454 455 /* Error codes */ 456 #define CL_INVALID_MUTABLE_COMMAND_KHR -1141 457 458 /* cl_device_info */ 459 #define CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR 0x12B0 460 461 /* cl_ndrange_kernel_command_properties_khr */ 462 #define CL_MUTABLE_DISPATCH_UPDATABLE_FIELDS_KHR 0x12B1 463 464 /* cl_mutable_dispatch_fields_khr - bitfield */ 465 #define CL_MUTABLE_DISPATCH_GLOBAL_OFFSET_KHR (1 << 0) 466 #define CL_MUTABLE_DISPATCH_GLOBAL_SIZE_KHR (1 << 1) 467 #define CL_MUTABLE_DISPATCH_LOCAL_SIZE_KHR (1 << 2) 468 #define CL_MUTABLE_DISPATCH_ARGUMENTS_KHR (1 << 3) 469 #define CL_MUTABLE_DISPATCH_EXEC_INFO_KHR (1 << 4) 470 471 /* cl_mutable_command_info_khr */ 472 #define CL_MUTABLE_COMMAND_COMMAND_QUEUE_KHR 0x12A0 473 #define CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR 0x12A1 474 #define CL_MUTABLE_COMMAND_COMMAND_TYPE_KHR 0x12AD 475 #define CL_MUTABLE_DISPATCH_PROPERTIES_ARRAY_KHR 0x12A2 476 #define CL_MUTABLE_DISPATCH_KERNEL_KHR 0x12A3 477 #define CL_MUTABLE_DISPATCH_DIMENSIONS_KHR 0x12A4 478 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_OFFSET_KHR 0x12A5 479 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_SIZE_KHR 0x12A6 480 #define CL_MUTABLE_DISPATCH_LOCAL_WORK_SIZE_KHR 0x12A7 481 482 /* cl_command_buffer_structure_type_khr */ 483 #define CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR 0 484 #define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR 1 485 486 487 typedef cl_int (CL_API_CALL * 488 clUpdateMutableCommandsKHR_fn)( 489 cl_command_buffer_khr command_buffer, 490 const cl_mutable_base_config_khr* mutable_config) ; 491 492 typedef cl_int (CL_API_CALL * 493 clGetMutableCommandInfoKHR_fn)( 494 cl_mutable_command_khr command, 495 cl_mutable_command_info_khr param_name, 496 size_t param_value_size, 497 void* param_value, 498 size_t* param_value_size_ret) ; 499 500 #ifndef CL_NO_PROTOTYPES 501 502 extern CL_API_ENTRY cl_int CL_API_CALL 503 clUpdateMutableCommandsKHR( 504 cl_command_buffer_khr command_buffer, 505 const cl_mutable_base_config_khr* mutable_config) ; 506 507 extern CL_API_ENTRY cl_int CL_API_CALL 508 clGetMutableCommandInfoKHR( 509 cl_mutable_command_khr command, 510 cl_mutable_command_info_khr param_name, 511 size_t param_value_size, 512 void* param_value, 513 size_t* param_value_size_ret) ; 514 515 #endif /* CL_NO_PROTOTYPES */ 516 517 /* cl_khr_fp64 extension - no extension #define since it has no functions */ 518 /* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */ 519 520 #if CL_TARGET_OPENCL_VERSION <= 110 521 #define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 522 #endif 523 524 /* cl_khr_fp16 extension - no extension #define since it has no functions */ 525 #define CL_DEVICE_HALF_FP_CONFIG 0x1033 526 527 /* Memory object destruction 528 * 529 * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR 530 * 531 * Registers a user callback function that will be called when the memory object is deleted and its resources 532 * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback 533 * stack associated with memobj. The registered user callback functions are called in the reverse order in 534 * which they were registered. The user callback functions are called and then the memory object is deleted 535 * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be 536 * notified when the memory referenced by host_ptr, specified when the memory object is created and used as 537 * the storage bits for the memory object, can be reused or freed. 538 * 539 * The application may not call CL api's with the cl_mem object passed to the pfn_notify. 540 * 541 * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) 542 * before using. 543 */ 544 #define cl_APPLE_SetMemObjectDestructor 1 545 extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorAPPLE( cl_mem memobj, 546 void (* pfn_notify)(cl_mem memobj, void * user_data), 547 void * user_data) CL_API_SUFFIX__VERSION_1_0; 548 549 550 /* Context Logging Functions 551 * 552 * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). 553 * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) 554 * before using. 555 * 556 * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger 557 */ 558 #define cl_APPLE_ContextLoggingFunctions 1 559 extern CL_API_ENTRY void CL_API_CALL clLogMessagesToSystemLogAPPLE( const char * errstr, 560 const void * private_info, 561 size_t cb, 562 void * user_data) CL_API_SUFFIX__VERSION_1_0; 563 564 /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ 565 extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStdoutAPPLE( const char * errstr, 566 const void * private_info, 567 size_t cb, 568 void * user_data) CL_API_SUFFIX__VERSION_1_0; 569 570 /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ 571 extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStderrAPPLE( const char * errstr, 572 const void * private_info, 573 size_t cb, 574 void * user_data) CL_API_SUFFIX__VERSION_1_0; 575 576 577 /************************ 578 * cl_khr_icd extension * 579 ************************/ 580 #define cl_khr_icd 1 581 582 /* cl_platform_info */ 583 #define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 584 585 /* Additional Error Codes */ 586 #define CL_PLATFORM_NOT_FOUND_KHR -1001 587 588 extern CL_API_ENTRY cl_int CL_API_CALL 589 clIcdGetPlatformIDsKHR(cl_uint num_entries, 590 cl_platform_id * platforms, 591 cl_uint * num_platforms); 592 593 typedef cl_int 594 (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries, 595 cl_platform_id * platforms, 596 cl_uint * num_platforms); 597 598 599 /******************************* 600 * cl_khr_il_program extension * 601 *******************************/ 602 #define cl_khr_il_program 1 603 604 /* New property to clGetDeviceInfo for retrieving supported intermediate 605 * languages 606 */ 607 #define CL_DEVICE_IL_VERSION_KHR 0x105B 608 609 /* New property to clGetProgramInfo for retrieving for retrieving the IL of a 610 * program 611 */ 612 #define CL_PROGRAM_IL_KHR 0x1169 613 614 extern CL_API_ENTRY cl_program CL_API_CALL 615 clCreateProgramWithILKHR(cl_context context, 616 const void * il, 617 size_t length, 618 cl_int * errcode_ret); 619 620 typedef cl_program 621 (CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context, 622 const void * il, 623 size_t length, 624 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 625 626 /* Extension: cl_khr_image2d_from_buffer 627 * 628 * This extension allows a 2D image to be created from a cl_mem buffer without 629 * a copy. The type associated with a 2D image created from a buffer in an 630 * OpenCL program is image2d_t. Both the sampler and sampler-less read_image 631 * built-in functions are supported for 2D images and 2D images created from 632 * a buffer. Similarly, the write_image built-ins are also supported for 2D 633 * images created from a buffer. 634 * 635 * When the 2D image from buffer is created, the client must specify the 636 * width, height, image format (i.e. channel order and channel data type) 637 * and optionally the row pitch. 638 * 639 * The pitch specified must be a multiple of 640 * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels. 641 * The base address of the buffer must be aligned to 642 * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels. 643 */ 644 645 #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A 646 #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B 647 648 649 /************************************** 650 * cl_khr_initialize_memory extension * 651 **************************************/ 652 653 #define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 654 655 656 /************************************** 657 * cl_khr_terminate_context extension * 658 **************************************/ 659 660 #define CL_CONTEXT_TERMINATED_KHR -1121 661 662 #define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 663 #define CL_CONTEXT_TERMINATE_KHR 0x2032 664 665 #define cl_khr_terminate_context 1 666 extern CL_API_ENTRY cl_int CL_API_CALL 667 clTerminateContextKHR(cl_context context) CL_API_SUFFIX__VERSION_1_2; 668 669 typedef cl_int 670 (CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_API_SUFFIX__VERSION_1_2; 671 672 673 /* 674 * Extension: cl_khr_spir 675 * 676 * This extension adds support to create an OpenCL program object from a 677 * Standard Portable Intermediate Representation (SPIR) instance 678 */ 679 680 #define CL_DEVICE_SPIR_VERSIONS 0x40E0 681 #define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 682 683 684 /***************************************** 685 * cl_khr_create_command_queue extension * 686 *****************************************/ 687 #define cl_khr_create_command_queue 1 688 689 typedef cl_properties cl_queue_properties_khr; 690 691 extern CL_API_ENTRY cl_command_queue CL_API_CALL 692 clCreateCommandQueueWithPropertiesKHR(cl_context context, 693 cl_device_id device, 694 const cl_queue_properties_khr* properties, 695 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 696 697 typedef cl_command_queue 698 (CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context, 699 cl_device_id device, 700 const cl_queue_properties_khr* properties, 701 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 702 703 704 /****************************************** 705 * cl_nv_device_attribute_query extension * 706 ******************************************/ 707 708 /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ 709 #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 710 #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 711 #define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 712 #define CL_DEVICE_WARP_SIZE_NV 0x4003 713 #define CL_DEVICE_GPU_OVERLAP_NV 0x4004 714 #define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 715 #define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 716 717 718 /********************************* 719 * cl_amd_device_attribute_query * 720 *********************************/ 721 722 #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 723 #define CL_DEVICE_TOPOLOGY_AMD 0x4037 724 #define CL_DEVICE_BOARD_NAME_AMD 0x4038 725 #define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 726 #define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 727 #define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 728 #define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 729 #define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 730 #define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 731 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 732 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 733 #define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 734 #define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 735 #define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 736 #define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A 737 #define CL_DEVICE_GFXIP_MINOR_AMD 0x404B 738 #define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C 739 #define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 740 #define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 741 #define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 742 #define CL_DEVICE_PCIE_ID_AMD 0x4034 743 744 745 /********************************* 746 * cl_arm_printf extension 747 *********************************/ 748 749 #define CL_PRINTF_CALLBACK_ARM 0x40B0 750 #define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 751 752 753 /*********************************** 754 * cl_ext_device_fission extension 755 ***********************************/ 756 #define cl_ext_device_fission 1 757 758 extern CL_API_ENTRY cl_int CL_API_CALL 759 clReleaseDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1; 760 761 typedef cl_int 762 (CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1; 763 764 extern CL_API_ENTRY cl_int CL_API_CALL 765 clRetainDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1; 766 767 typedef cl_int 768 (CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1; 769 770 typedef cl_ulong cl_device_partition_property_ext; 771 extern CL_API_ENTRY cl_int CL_API_CALL 772 clCreateSubDevicesEXT(cl_device_id in_device, 773 const cl_device_partition_property_ext * properties, 774 cl_uint num_entries, 775 cl_device_id * out_devices, 776 cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_1; 777 778 typedef cl_int 779 (CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device, 780 const cl_device_partition_property_ext * properties, 781 cl_uint num_entries, 782 cl_device_id * out_devices, 783 cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_1; 784 785 /* cl_device_partition_property_ext */ 786 #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 787 #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 788 #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 789 #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 790 791 /* clDeviceGetInfo selectors */ 792 #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 793 #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 794 #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 795 #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 796 #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 797 798 /* error codes */ 799 #define CL_DEVICE_PARTITION_FAILED_EXT -1057 800 #define CL_INVALID_PARTITION_COUNT_EXT -1058 801 #define CL_INVALID_PARTITION_NAME_EXT -1059 802 803 /* CL_AFFINITY_DOMAINs */ 804 #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 805 #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 806 #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 807 #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 808 #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 809 #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 810 811 /* cl_device_partition_property_ext list terminators */ 812 #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) 813 #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) 814 #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) 815 816 817 /*********************************** 818 * cl_ext_migrate_memobject extension definitions 819 ***********************************/ 820 #define cl_ext_migrate_memobject 1 821 822 typedef cl_bitfield cl_mem_migration_flags_ext; 823 824 #define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1 825 826 #define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 827 828 extern CL_API_ENTRY cl_int CL_API_CALL 829 clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue, 830 cl_uint num_mem_objects, 831 const cl_mem * mem_objects, 832 cl_mem_migration_flags_ext flags, 833 cl_uint num_events_in_wait_list, 834 const cl_event * event_wait_list, 835 cl_event * event); 836 837 typedef cl_int 838 (CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue, 839 cl_uint num_mem_objects, 840 const cl_mem * mem_objects, 841 cl_mem_migration_flags_ext flags, 842 cl_uint num_events_in_wait_list, 843 const cl_event * event_wait_list, 844 cl_event * event); 845 846 847 /********************************* 848 * cl_ext_cxx_for_opencl extension 849 *********************************/ 850 #define cl_ext_cxx_for_opencl 1 851 852 #define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230 853 854 /********************************* 855 * cl_qcom_ext_host_ptr extension 856 *********************************/ 857 #define cl_qcom_ext_host_ptr 1 858 859 #define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) 860 861 #define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 862 #define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 863 #define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 864 #define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 865 #define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 866 #define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 867 #define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 868 #define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 869 870 typedef cl_uint cl_image_pitch_info_qcom; 871 872 extern CL_API_ENTRY cl_int CL_API_CALL 873 clGetDeviceImageInfoQCOM(cl_device_id device, 874 size_t image_width, 875 size_t image_height, 876 const cl_image_format *image_format, 877 cl_image_pitch_info_qcom param_name, 878 size_t param_value_size, 879 void *param_value, 880 size_t *param_value_size_ret); 881 882 typedef struct _cl_mem_ext_host_ptr 883 { 884 /* Type of external memory allocation. */ 885 /* Legal values will be defined in layered extensions. */ 886 cl_uint allocation_type; 887 888 /* Host cache policy for this external memory allocation. */ 889 cl_uint host_cache_policy; 890 891 } cl_mem_ext_host_ptr; 892 893 894 /******************************************* 895 * cl_qcom_ext_host_ptr_iocoherent extension 896 ********************************************/ 897 898 /* Cache policy specifying io-coherence */ 899 #define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 900 901 902 /********************************* 903 * cl_qcom_ion_host_ptr extension 904 *********************************/ 905 906 #define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 907 908 typedef struct _cl_mem_ion_host_ptr 909 { 910 /* Type of external memory allocation. */ 911 /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ 912 cl_mem_ext_host_ptr ext_host_ptr; 913 914 /* ION file descriptor */ 915 int ion_filedesc; 916 917 /* Host pointer to the ION allocated memory */ 918 void* ion_hostptr; 919 920 } cl_mem_ion_host_ptr; 921 922 923 /********************************* 924 * cl_qcom_android_native_buffer_host_ptr extension 925 *********************************/ 926 927 #define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6 928 929 typedef struct _cl_mem_android_native_buffer_host_ptr 930 { 931 /* Type of external memory allocation. */ 932 /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */ 933 cl_mem_ext_host_ptr ext_host_ptr; 934 935 /* Virtual pointer to the android native buffer */ 936 void* anb_ptr; 937 938 } cl_mem_android_native_buffer_host_ptr; 939 940 941 /****************************************** 942 * cl_img_yuv_image extension * 943 ******************************************/ 944 945 /* Image formats used in clCreateImage */ 946 #define CL_NV21_IMG 0x40D0 947 #define CL_YV12_IMG 0x40D1 948 949 950 /****************************************** 951 * cl_img_cached_allocations extension * 952 ******************************************/ 953 954 /* Flag values used by clCreateBuffer */ 955 #define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) 956 #define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) 957 958 959 /****************************************** 960 * cl_img_use_gralloc_ptr extension * 961 ******************************************/ 962 #define cl_img_use_gralloc_ptr 1 963 964 /* Flag values used by clCreateBuffer */ 965 #define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) 966 967 /* To be used by clGetEventInfo: */ 968 #define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 969 #define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 970 971 /* Error codes from clEnqueueAcquireGrallocObjectsIMG and clEnqueueReleaseGrallocObjectsIMG */ 972 #define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 973 #define CL_INVALID_GRALLOC_OBJECT_IMG 0x40D5 974 975 extern CL_API_ENTRY cl_int CL_API_CALL 976 clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue, 977 cl_uint num_objects, 978 const cl_mem * mem_objects, 979 cl_uint num_events_in_wait_list, 980 const cl_event * event_wait_list, 981 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 982 983 extern CL_API_ENTRY cl_int CL_API_CALL 984 clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue, 985 cl_uint num_objects, 986 const cl_mem * mem_objects, 987 cl_uint num_events_in_wait_list, 988 const cl_event * event_wait_list, 989 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 990 991 /****************************************** 992 * cl_img_generate_mipmap extension * 993 ******************************************/ 994 #define cl_img_generate_mipmap 1 995 996 typedef cl_uint cl_mipmap_filter_mode_img; 997 998 /* To be used by clEnqueueGenerateMipmapIMG */ 999 #define CL_MIPMAP_FILTER_ANY_IMG 0x0 1000 #define CL_MIPMAP_FILTER_BOX_IMG 0x1 1001 1002 /* To be used by clGetEventInfo */ 1003 #define CL_COMMAND_GENERATE_MIPMAP_IMG 0x40D6 1004 1005 extern CL_API_ENTRY cl_int CL_API_CALL 1006 clEnqueueGenerateMipmapIMG(cl_command_queue command_queue, 1007 cl_mem src_image, 1008 cl_mem dst_image, 1009 cl_mipmap_filter_mode_img mipmap_filter_mode, 1010 const size_t *array_region, 1011 const size_t *mip_region, 1012 cl_uint num_events_in_wait_list, 1013 const cl_event *event_wait_list, 1014 cl_event *event) CL_API_SUFFIX__VERSION_1_2; 1015 1016 /****************************************** 1017 * cl_img_mem_properties extension * 1018 ******************************************/ 1019 #define cl_img_mem_properties 1 1020 1021 /* To be used by clCreateBufferWithProperties */ 1022 #define CL_MEM_ALLOC_FLAGS_IMG 0x40D7 1023 1024 /* To be used wiith the CL_MEM_ALLOC_FLAGS_IMG property */ 1025 typedef cl_bitfield cl_mem_alloc_flags_img; 1026 1027 /* To be used with cl_mem_alloc_flags_img */ 1028 #define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG (1 << 0) 1029 1030 /********************************* 1031 * cl_khr_subgroups extension 1032 *********************************/ 1033 #define cl_khr_subgroups 1 1034 1035 #if !defined(CL_VERSION_2_1) 1036 /* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h. 1037 In hindsight, there should have been a khr suffix on this type for 1038 the extension, but keeping it un-suffixed to maintain backwards 1039 compatibility. */ 1040 typedef cl_uint cl_kernel_sub_group_info; 1041 #endif 1042 1043 /* cl_kernel_sub_group_info */ 1044 #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 1045 #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 1046 1047 extern CL_API_ENTRY cl_int CL_API_CALL 1048 clGetKernelSubGroupInfoKHR(cl_kernel in_kernel, 1049 cl_device_id in_device, 1050 cl_kernel_sub_group_info param_name, 1051 size_t input_value_size, 1052 const void * input_value, 1053 size_t param_value_size, 1054 void * param_value, 1055 size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED; 1056 1057 typedef cl_int 1058 (CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel, 1059 cl_device_id in_device, 1060 cl_kernel_sub_group_info param_name, 1061 size_t input_value_size, 1062 const void * input_value, 1063 size_t param_value_size, 1064 void * param_value, 1065 size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED; 1066 1067 1068 /********************************* 1069 * cl_khr_mipmap_image extension 1070 *********************************/ 1071 1072 /* cl_sampler_properties */ 1073 #define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 1074 #define CL_SAMPLER_LOD_MIN_KHR 0x1156 1075 #define CL_SAMPLER_LOD_MAX_KHR 0x1157 1076 1077 1078 /********************************* 1079 * cl_khr_priority_hints extension 1080 *********************************/ 1081 /* This extension define is for backwards compatibility. 1082 It shouldn't be required since this extension has no new functions. */ 1083 #define cl_khr_priority_hints 1 1084 1085 typedef cl_uint cl_queue_priority_khr; 1086 1087 /* cl_command_queue_properties */ 1088 #define CL_QUEUE_PRIORITY_KHR 0x1096 1089 1090 /* cl_queue_priority_khr */ 1091 #define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) 1092 #define CL_QUEUE_PRIORITY_MED_KHR (1<<1) 1093 #define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) 1094 1095 1096 /********************************* 1097 * cl_khr_throttle_hints extension 1098 *********************************/ 1099 /* This extension define is for backwards compatibility. 1100 It shouldn't be required since this extension has no new functions. */ 1101 #define cl_khr_throttle_hints 1 1102 1103 typedef cl_uint cl_queue_throttle_khr; 1104 1105 /* cl_command_queue_properties */ 1106 #define CL_QUEUE_THROTTLE_KHR 0x1097 1107 1108 /* cl_queue_throttle_khr */ 1109 #define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) 1110 #define CL_QUEUE_THROTTLE_MED_KHR (1<<1) 1111 #define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) 1112 1113 1114 /********************************* 1115 * cl_khr_subgroup_named_barrier 1116 *********************************/ 1117 /* This extension define is for backwards compatibility. 1118 It shouldn't be required since this extension has no new functions. */ 1119 #define cl_khr_subgroup_named_barrier 1 1120 1121 /* cl_device_info */ 1122 #define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 1123 1124 1125 /********************************* 1126 * cl_khr_extended_versioning 1127 *********************************/ 1128 1129 #define cl_khr_extended_versioning 1 1130 1131 #define CL_VERSION_MAJOR_BITS_KHR (10) 1132 #define CL_VERSION_MINOR_BITS_KHR (10) 1133 #define CL_VERSION_PATCH_BITS_KHR (12) 1134 1135 #define CL_VERSION_MAJOR_MASK_KHR ((1 << CL_VERSION_MAJOR_BITS_KHR) - 1) 1136 #define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1) 1137 #define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1) 1138 1139 #define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) 1140 #define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR) 1141 #define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR) 1142 1143 #define CL_MAKE_VERSION_KHR(major, minor, patch) \ 1144 ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \ 1145 (((minor) & CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \ 1146 ((patch) & CL_VERSION_PATCH_MASK_KHR)) 1147 1148 typedef cl_uint cl_version_khr; 1149 1150 #define CL_NAME_VERSION_MAX_NAME_SIZE_KHR 64 1151 1152 typedef struct _cl_name_version_khr 1153 { 1154 cl_version_khr version; 1155 char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR]; 1156 } cl_name_version_khr; 1157 1158 /* cl_platform_info */ 1159 #define CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906 1160 #define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR 0x0907 1161 1162 /* cl_device_info */ 1163 #define CL_DEVICE_NUMERIC_VERSION_KHR 0x105E 1164 #define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR 0x105F 1165 #define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR 0x1060 1166 #define CL_DEVICE_ILS_WITH_VERSION_KHR 0x1061 1167 #define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062 1168 1169 1170 /********************************* 1171 * cl_khr_device_uuid extension 1172 *********************************/ 1173 #define cl_khr_device_uuid 1 1174 1175 #define CL_UUID_SIZE_KHR 16 1176 #define CL_LUID_SIZE_KHR 8 1177 1178 #define CL_DEVICE_UUID_KHR 0x106A 1179 #define CL_DRIVER_UUID_KHR 0x106B 1180 #define CL_DEVICE_LUID_VALID_KHR 0x106C 1181 #define CL_DEVICE_LUID_KHR 0x106D 1182 #define CL_DEVICE_NODE_MASK_KHR 0x106E 1183 1184 1185 /*************************************************************** 1186 * cl_khr_pci_bus_info 1187 ***************************************************************/ 1188 #define cl_khr_pci_bus_info 1 1189 1190 typedef struct _cl_device_pci_bus_info_khr { 1191 cl_uint pci_domain; 1192 cl_uint pci_bus; 1193 cl_uint pci_device; 1194 cl_uint pci_function; 1195 } cl_device_pci_bus_info_khr; 1196 1197 /* cl_device_info */ 1198 #define CL_DEVICE_PCI_BUS_INFO_KHR 0x410F 1199 1200 1201 /*************************************************************** 1202 * cl_khr_suggested_local_work_size 1203 ***************************************************************/ 1204 #define cl_khr_suggested_local_work_size 1 1205 1206 extern CL_API_ENTRY cl_int CL_API_CALL 1207 clGetKernelSuggestedLocalWorkSizeKHR( 1208 cl_command_queue command_queue, 1209 cl_kernel kernel, 1210 cl_uint work_dim, 1211 const size_t* global_work_offset, 1212 const size_t* global_work_size, 1213 size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0; 1214 1215 typedef cl_int (CL_API_CALL * 1216 clGetKernelSuggestedLocalWorkSizeKHR_fn)( 1217 cl_command_queue command_queue, 1218 cl_kernel kernel, 1219 cl_uint work_dim, 1220 const size_t* global_work_offset, 1221 const size_t* global_work_size, 1222 size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0; 1223 1224 1225 /*************************************************************** 1226 * cl_khr_integer_dot_product 1227 ***************************************************************/ 1228 #define cl_khr_integer_dot_product 1 1229 1230 typedef cl_bitfield cl_device_integer_dot_product_capabilities_khr; 1231 1232 /* cl_device_integer_dot_product_capabilities_khr */ 1233 #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED_KHR (1 << 0) 1234 #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_KHR (1 << 1) 1235 1236 typedef struct _cl_device_integer_dot_product_acceleration_properties_khr { 1237 cl_bool signed_accelerated; 1238 cl_bool unsigned_accelerated; 1239 cl_bool mixed_signedness_accelerated; 1240 cl_bool accumulating_saturating_signed_accelerated; 1241 cl_bool accumulating_saturating_unsigned_accelerated; 1242 cl_bool accumulating_saturating_mixed_signedness_accelerated; 1243 } cl_device_integer_dot_product_acceleration_properties_khr; 1244 1245 /* cl_device_info */ 1246 #define CL_DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR 0x1073 1247 #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR 0x1074 1248 #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR 0x1075 1249 1250 1251 /*************************************************************** 1252 * cl_khr_external_memory 1253 ***************************************************************/ 1254 #define cl_khr_external_memory 1 1255 1256 typedef cl_uint cl_external_memory_handle_type_khr; 1257 1258 /* cl_platform_info */ 1259 #define CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x2044 1260 1261 /* cl_device_info */ 1262 #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x204F 1263 1264 /* cl_mem_properties */ 1265 #define CL_DEVICE_HANDLE_LIST_KHR 0x2051 1266 #define CL_DEVICE_HANDLE_LIST_END_KHR 0 1267 1268 /* cl_command_type */ 1269 #define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR 0x2047 1270 #define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR 0x2048 1271 1272 1273 typedef cl_int (CL_API_CALL * 1274 clEnqueueAcquireExternalMemObjectsKHR_fn)( 1275 cl_command_queue command_queue, 1276 cl_uint num_mem_objects, 1277 const cl_mem* mem_objects, 1278 cl_uint num_events_in_wait_list, 1279 const cl_event* event_wait_list, 1280 cl_event* event) CL_API_SUFFIX__VERSION_3_0; 1281 1282 typedef cl_int (CL_API_CALL * 1283 clEnqueueReleaseExternalMemObjectsKHR_fn)( 1284 cl_command_queue command_queue, 1285 cl_uint num_mem_objects, 1286 const cl_mem* mem_objects, 1287 cl_uint num_events_in_wait_list, 1288 const cl_event* event_wait_list, 1289 cl_event* event) CL_API_SUFFIX__VERSION_3_0; 1290 1291 extern CL_API_ENTRY cl_int CL_API_CALL 1292 clEnqueueAcquireExternalMemObjectsKHR( 1293 cl_command_queue command_queue, 1294 cl_uint num_mem_objects, 1295 const cl_mem* mem_objects, 1296 cl_uint num_events_in_wait_list, 1297 const cl_event* event_wait_list, 1298 cl_event* event) CL_API_SUFFIX__VERSION_3_0; 1299 1300 extern CL_API_ENTRY cl_int CL_API_CALL 1301 clEnqueueReleaseExternalMemObjectsKHR( 1302 cl_command_queue command_queue, 1303 cl_uint num_mem_objects, 1304 const cl_mem* mem_objects, 1305 cl_uint num_events_in_wait_list, 1306 const cl_event* event_wait_list, 1307 cl_event* event) CL_API_SUFFIX__VERSION_3_0; 1308 1309 /*************************************************************** 1310 * cl_khr_external_memory_dma_buf 1311 ***************************************************************/ 1312 #define cl_khr_external_memory_dma_buf 1 1313 1314 /* cl_external_memory_handle_type_khr */ 1315 #define CL_EXTERNAL_MEMORY_HANDLE_DMA_BUF_KHR 0x2067 1316 1317 /*************************************************************** 1318 * cl_khr_external_memory_dx 1319 ***************************************************************/ 1320 #define cl_khr_external_memory_dx 1 1321 1322 /* cl_external_memory_handle_type_khr */ 1323 #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR 0x2063 1324 #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KMT_KHR 0x2064 1325 #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_HEAP_KHR 0x2065 1326 #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_RESOURCE_KHR 0x2066 1327 1328 /*************************************************************** 1329 * cl_khr_external_memory_opaque_fd 1330 ***************************************************************/ 1331 #define cl_khr_external_memory_opaque_fd 1 1332 1333 /* cl_external_memory_handle_type_khr */ 1334 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR 0x2060 1335 1336 /*************************************************************** 1337 * cl_khr_external_memory_win32 1338 ***************************************************************/ 1339 #define cl_khr_external_memory_win32 1 1340 1341 /* cl_external_memory_handle_type_khr */ 1342 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KHR 0x2061 1343 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2062 1344 1345 /*************************************************************** 1346 * cl_khr_external_semaphore 1347 ***************************************************************/ 1348 #define cl_khr_external_semaphore 1 1349 1350 typedef struct _cl_semaphore_khr * cl_semaphore_khr; 1351 typedef cl_uint cl_external_semaphore_handle_type_khr; 1352 1353 /* cl_platform_info */ 1354 #define CL_PLATFORM_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR 0x2037 1355 #define CL_PLATFORM_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x2038 1356 1357 /* cl_device_info */ 1358 #define CL_DEVICE_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR 0x204D 1359 #define CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x204E 1360 1361 /* cl_semaphore_properties_khr */ 1362 #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR 0x203F 1363 #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR 0 1364 1365 1366 typedef cl_int (CL_API_CALL * 1367 clGetSemaphoreHandleForTypeKHR_fn)( 1368 cl_semaphore_khr sema_object, 1369 cl_device_id device, 1370 cl_external_semaphore_handle_type_khr handle_type, 1371 size_t handle_size, 1372 void* handle_ptr, 1373 size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2; 1374 1375 extern CL_API_ENTRY cl_int CL_API_CALL 1376 clGetSemaphoreHandleForTypeKHR( 1377 cl_semaphore_khr sema_object, 1378 cl_device_id device, 1379 cl_external_semaphore_handle_type_khr handle_type, 1380 size_t handle_size, 1381 void* handle_ptr, 1382 size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2; 1383 1384 /*************************************************************** 1385 * cl_khr_external_semaphore_dx_fence 1386 ***************************************************************/ 1387 #define cl_khr_external_semaphore_dx_fence 1 1388 1389 /* cl_external_semaphore_handle_type_khr */ 1390 #define CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR 0x2059 1391 1392 /*************************************************************** 1393 * cl_khr_external_semaphore_opaque_fd 1394 ***************************************************************/ 1395 #define cl_khr_external_semaphore_opaque_fd 1 1396 1397 /* cl_external_semaphore_handle_type_khr */ 1398 #define CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR 0x2055 1399 1400 /*************************************************************** 1401 * cl_khr_external_semaphore_sync_fd 1402 ***************************************************************/ 1403 #define cl_khr_external_semaphore_sync_fd 1 1404 1405 /* cl_external_semaphore_handle_type_khr */ 1406 #define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR 0x2058 1407 1408 /*************************************************************** 1409 * cl_khr_external_semaphore_win32 1410 ***************************************************************/ 1411 #define cl_khr_external_semaphore_win32 1 1412 1413 /* cl_external_semaphore_handle_type_khr */ 1414 #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR 0x2056 1415 #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR 0x2057 1416 1417 /*************************************************************** 1418 * cl_khr_semaphore 1419 ***************************************************************/ 1420 #define cl_khr_semaphore 1 1421 1422 /* type cl_semaphore_khr */ 1423 typedef cl_properties cl_semaphore_properties_khr; 1424 typedef cl_uint cl_semaphore_info_khr; 1425 typedef cl_uint cl_semaphore_type_khr; 1426 typedef cl_ulong cl_semaphore_payload_khr; 1427 1428 /* cl_semaphore_type */ 1429 #define CL_SEMAPHORE_TYPE_BINARY_KHR 1 1430 1431 /* cl_platform_info */ 1432 #define CL_PLATFORM_SEMAPHORE_TYPES_KHR 0x2036 1433 1434 /* cl_device_info */ 1435 #define CL_DEVICE_SEMAPHORE_TYPES_KHR 0x204C 1436 1437 /* cl_semaphore_info_khr */ 1438 #define CL_SEMAPHORE_CONTEXT_KHR 0x2039 1439 #define CL_SEMAPHORE_REFERENCE_COUNT_KHR 0x203A 1440 #define CL_SEMAPHORE_PROPERTIES_KHR 0x203B 1441 #define CL_SEMAPHORE_PAYLOAD_KHR 0x203C 1442 1443 /* cl_semaphore_info_khr or cl_semaphore_properties_khr */ 1444 #define CL_SEMAPHORE_TYPE_KHR 0x203D 1445 /* enum CL_DEVICE_HANDLE_LIST_KHR */ 1446 /* enum CL_DEVICE_HANDLE_LIST_END_KHR */ 1447 1448 /* cl_command_type */ 1449 #define CL_COMMAND_SEMAPHORE_WAIT_KHR 0x2042 1450 #define CL_COMMAND_SEMAPHORE_SIGNAL_KHR 0x2043 1451 1452 /* Error codes */ 1453 #define CL_INVALID_SEMAPHORE_KHR -1142 1454 1455 1456 typedef cl_semaphore_khr (CL_API_CALL * 1457 clCreateSemaphoreWithPropertiesKHR_fn)( 1458 cl_context context, 1459 const cl_semaphore_properties_khr* sema_props, 1460 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 1461 1462 typedef cl_int (CL_API_CALL * 1463 clEnqueueWaitSemaphoresKHR_fn)( 1464 cl_command_queue command_queue, 1465 cl_uint num_sema_objects, 1466 const cl_semaphore_khr* sema_objects, 1467 const cl_semaphore_payload_khr* sema_payload_list, 1468 cl_uint num_events_in_wait_list, 1469 const cl_event* event_wait_list, 1470 cl_event* event) CL_API_SUFFIX__VERSION_1_2; 1471 1472 typedef cl_int (CL_API_CALL * 1473 clEnqueueSignalSemaphoresKHR_fn)( 1474 cl_command_queue command_queue, 1475 cl_uint num_sema_objects, 1476 const cl_semaphore_khr* sema_objects, 1477 const cl_semaphore_payload_khr* sema_payload_list, 1478 cl_uint num_events_in_wait_list, 1479 const cl_event* event_wait_list, 1480 cl_event* event) CL_API_SUFFIX__VERSION_1_2; 1481 1482 typedef cl_int (CL_API_CALL * 1483 clGetSemaphoreInfoKHR_fn)( 1484 cl_semaphore_khr sema_object, 1485 cl_semaphore_info_khr param_name, 1486 size_t param_value_size, 1487 void* param_value, 1488 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; 1489 1490 typedef cl_int (CL_API_CALL * 1491 clReleaseSemaphoreKHR_fn)( 1492 cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; 1493 1494 typedef cl_int (CL_API_CALL * 1495 clRetainSemaphoreKHR_fn)( 1496 cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; 1497 1498 extern CL_API_ENTRY cl_semaphore_khr CL_API_CALL 1499 clCreateSemaphoreWithPropertiesKHR( 1500 cl_context context, 1501 const cl_semaphore_properties_khr* sema_props, 1502 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 1503 1504 extern CL_API_ENTRY cl_int CL_API_CALL 1505 clEnqueueWaitSemaphoresKHR( 1506 cl_command_queue command_queue, 1507 cl_uint num_sema_objects, 1508 const cl_semaphore_khr* sema_objects, 1509 const cl_semaphore_payload_khr* sema_payload_list, 1510 cl_uint num_events_in_wait_list, 1511 const cl_event* event_wait_list, 1512 cl_event* event) CL_API_SUFFIX__VERSION_1_2; 1513 1514 extern CL_API_ENTRY cl_int CL_API_CALL 1515 clEnqueueSignalSemaphoresKHR( 1516 cl_command_queue command_queue, 1517 cl_uint num_sema_objects, 1518 const cl_semaphore_khr* sema_objects, 1519 const cl_semaphore_payload_khr* sema_payload_list, 1520 cl_uint num_events_in_wait_list, 1521 const cl_event* event_wait_list, 1522 cl_event* event) CL_API_SUFFIX__VERSION_1_2; 1523 1524 extern CL_API_ENTRY cl_int CL_API_CALL 1525 clGetSemaphoreInfoKHR( 1526 cl_semaphore_khr sema_object, 1527 cl_semaphore_info_khr param_name, 1528 size_t param_value_size, 1529 void* param_value, 1530 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; 1531 1532 extern CL_API_ENTRY cl_int CL_API_CALL 1533 clReleaseSemaphoreKHR( 1534 cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; 1535 1536 extern CL_API_ENTRY cl_int CL_API_CALL 1537 clRetainSemaphoreKHR( 1538 cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2; 1539 1540 /********************************** 1541 * cl_arm_import_memory extension * 1542 **********************************/ 1543 #define cl_arm_import_memory 1 1544 1545 typedef intptr_t cl_import_properties_arm; 1546 1547 /* Default and valid proporties name for cl_arm_import_memory */ 1548 #define CL_IMPORT_TYPE_ARM 0x40B2 1549 1550 /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ 1551 #define CL_IMPORT_TYPE_HOST_ARM 0x40B3 1552 1553 /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ 1554 #define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 1555 1556 /* Protected memory property */ 1557 #define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 1558 1559 /* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */ 1560 #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2 1561 1562 /* Data consistency with host property */ 1563 #define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3 1564 1565 /* Index of plane in a multiplanar hardware buffer */ 1566 #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_PLANE_INDEX_ARM 0x41EF 1567 1568 /* Index of layer in a multilayer hardware buffer */ 1569 #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM 0x41F0 1570 1571 /* Import memory size value to indicate a size for the whole buffer */ 1572 #define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX 1573 1574 /* This extension adds a new function that allows for direct memory import into 1575 * OpenCL via the clImportMemoryARM function. 1576 * 1577 * Memory imported through this interface will be mapped into the device's page 1578 * tables directly, providing zero copy access. It will never fall back to copy 1579 * operations and aliased buffers. 1580 * 1581 * Types of memory supported for import are specified as additional extension 1582 * strings. 1583 * 1584 * This extension produces cl_mem allocations which are compatible with all other 1585 * users of cl_mem in the standard API. 1586 * 1587 * This extension maps pages with the same properties as the normal buffer creation 1588 * function clCreateBuffer. 1589 */ 1590 extern CL_API_ENTRY cl_mem CL_API_CALL 1591 clImportMemoryARM( cl_context context, 1592 cl_mem_flags flags, 1593 const cl_import_properties_arm *properties, 1594 void *memory, 1595 size_t size, 1596 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; 1597 1598 1599 /****************************************** 1600 * cl_arm_shared_virtual_memory extension * 1601 ******************************************/ 1602 #define cl_arm_shared_virtual_memory 1 1603 1604 /* Used by clGetDeviceInfo */ 1605 #define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 1606 1607 /* Used by clGetMemObjectInfo */ 1608 #define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 1609 1610 /* Used by clSetKernelExecInfoARM: */ 1611 #define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 1612 #define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 1613 1614 /* To be used by clGetEventInfo: */ 1615 #define CL_COMMAND_SVM_FREE_ARM 0x40BA 1616 #define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB 1617 #define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC 1618 #define CL_COMMAND_SVM_MAP_ARM 0x40BD 1619 #define CL_COMMAND_SVM_UNMAP_ARM 0x40BE 1620 1621 /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ 1622 #define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) 1623 #define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) 1624 #define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) 1625 #define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) 1626 1627 /* Flag values used by clSVMAllocARM: */ 1628 #define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) 1629 #define CL_MEM_SVM_ATOMICS_ARM (1 << 11) 1630 1631 typedef cl_bitfield cl_svm_mem_flags_arm; 1632 typedef cl_uint cl_kernel_exec_info_arm; 1633 typedef cl_bitfield cl_device_svm_capabilities_arm; 1634 1635 extern CL_API_ENTRY void * CL_API_CALL 1636 clSVMAllocARM(cl_context context, 1637 cl_svm_mem_flags_arm flags, 1638 size_t size, 1639 cl_uint alignment) CL_API_SUFFIX__VERSION_1_2; 1640 1641 extern CL_API_ENTRY void CL_API_CALL 1642 clSVMFreeARM(cl_context context, 1643 void * svm_pointer) CL_API_SUFFIX__VERSION_1_2; 1644 1645 extern CL_API_ENTRY cl_int CL_API_CALL 1646 clEnqueueSVMFreeARM(cl_command_queue command_queue, 1647 cl_uint num_svm_pointers, 1648 void * svm_pointers[], 1649 void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, 1650 cl_uint num_svm_pointers, 1651 void * svm_pointers[], 1652 void * user_data), 1653 void * user_data, 1654 cl_uint num_events_in_wait_list, 1655 const cl_event * event_wait_list, 1656 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 1657 1658 extern CL_API_ENTRY cl_int CL_API_CALL 1659 clEnqueueSVMMemcpyARM(cl_command_queue command_queue, 1660 cl_bool blocking_copy, 1661 void * dst_ptr, 1662 const void * src_ptr, 1663 size_t size, 1664 cl_uint num_events_in_wait_list, 1665 const cl_event * event_wait_list, 1666 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 1667 1668 extern CL_API_ENTRY cl_int CL_API_CALL 1669 clEnqueueSVMMemFillARM(cl_command_queue command_queue, 1670 void * svm_ptr, 1671 const void * pattern, 1672 size_t pattern_size, 1673 size_t size, 1674 cl_uint num_events_in_wait_list, 1675 const cl_event * event_wait_list, 1676 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 1677 1678 extern CL_API_ENTRY cl_int CL_API_CALL 1679 clEnqueueSVMMapARM(cl_command_queue command_queue, 1680 cl_bool blocking_map, 1681 cl_map_flags flags, 1682 void * svm_ptr, 1683 size_t size, 1684 cl_uint num_events_in_wait_list, 1685 const cl_event * event_wait_list, 1686 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 1687 1688 extern CL_API_ENTRY cl_int CL_API_CALL 1689 clEnqueueSVMUnmapARM(cl_command_queue command_queue, 1690 void * svm_ptr, 1691 cl_uint num_events_in_wait_list, 1692 const cl_event * event_wait_list, 1693 cl_event * event) CL_API_SUFFIX__VERSION_1_2; 1694 1695 extern CL_API_ENTRY cl_int CL_API_CALL 1696 clSetKernelArgSVMPointerARM(cl_kernel kernel, 1697 cl_uint arg_index, 1698 const void * arg_value) CL_API_SUFFIX__VERSION_1_2; 1699 1700 extern CL_API_ENTRY cl_int CL_API_CALL 1701 clSetKernelExecInfoARM(cl_kernel kernel, 1702 cl_kernel_exec_info_arm param_name, 1703 size_t param_value_size, 1704 const void * param_value) CL_API_SUFFIX__VERSION_1_2; 1705 1706 /******************************** 1707 * cl_arm_get_core_id extension * 1708 ********************************/ 1709 1710 #ifdef CL_VERSION_1_2 1711 1712 #define cl_arm_get_core_id 1 1713 1714 /* Device info property for bitfield of cores present */ 1715 #define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF 1716 1717 #endif /* CL_VERSION_1_2 */ 1718 1719 /********************************* 1720 * cl_arm_job_slot_selection 1721 *********************************/ 1722 1723 #define cl_arm_job_slot_selection 1 1724 1725 /* cl_device_info */ 1726 #define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 1727 1728 /* cl_command_queue_properties */ 1729 #define CL_QUEUE_JOB_SLOT_ARM 0x41E1 1730 1731 /********************************* 1732 * cl_arm_scheduling_controls 1733 *********************************/ 1734 1735 #define cl_arm_scheduling_controls 1 1736 1737 typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm; 1738 1739 /* cl_device_info */ 1740 #define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM 0x41E4 1741 1742 #define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM (1 << 0) 1743 #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM (1 << 1) 1744 #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2) 1745 #define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM (1 << 3) 1746 #define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM (1 << 4) 1747 #define CL_DEVICE_SCHEDULING_WARP_THROTTLING_ARM (1 << 5) 1748 #define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_BATCH_QUEUE_SIZE_ARM (1 << 6) 1749 1750 #define CL_DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM 0x41EB 1751 #define CL_DEVICE_MAX_WARP_COUNT_ARM 0x41EA 1752 1753 /* cl_kernel_info */ 1754 #define CL_KERNEL_MAX_WARP_COUNT_ARM 0x41E9 1755 1756 /* cl_kernel_exec_info */ 1757 #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM 0x41E5 1758 #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6 1759 #define CL_KERNEL_EXEC_INFO_WARP_COUNT_LIMIT_ARM 0x41E8 1760 #define CL_KERNEL_EXEC_INFO_COMPUTE_UNIT_MAX_QUEUED_BATCHES_ARM 0x41F1 1761 1762 /* cl_queue_properties */ 1763 #define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7 1764 #define CL_QUEUE_DEFERRED_FLUSH_ARM 0x41EC 1765 1766 /************************************** 1767 * cl_arm_controlled_kernel_termination 1768 ***************************************/ 1769 1770 #define cl_arm_controlled_kernel_termination 1 1771 1772 /* Error code to indicate kernel terminated with failure */ 1773 #define CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM -1108 1774 1775 /* cl_device_info */ 1776 #define CL_DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM 0x41EE 1777 1778 /* Bit fields for controlled termination feature query */ 1779 typedef cl_bitfield cl_device_controlled_termination_capabilities_arm; 1780 1781 #define CL_DEVICE_CONTROLLED_TERMINATION_SUCCESS_ARM (1 << 0) 1782 #define CL_DEVICE_CONTROLLED_TERMINATION_FAILURE_ARM (1 << 1) 1783 #define CL_DEVICE_CONTROLLED_TERMINATION_QUERY_ARM (1 << 2) 1784 1785 /* cl_event_info */ 1786 #define CL_EVENT_COMMAND_TERMINATION_REASON_ARM 0x41ED 1787 1788 /* Values returned for event termination reason query */ 1789 typedef cl_uint cl_command_termination_reason_arm; 1790 1791 #define CL_COMMAND_TERMINATION_COMPLETION_ARM 0 1792 #define CL_COMMAND_TERMINATION_CONTROLLED_SUCCESS_ARM 1 1793 #define CL_COMMAND_TERMINATION_CONTROLLED_FAILURE_ARM 2 1794 #define CL_COMMAND_TERMINATION_ERROR_ARM 3 1795 1796 /************************************* 1797 * cl_arm_protected_memory_allocation * 1798 *************************************/ 1799 1800 #define cl_arm_protected_memory_allocation 1 1801 1802 #define CL_MEM_PROTECTED_ALLOC_ARM (1ULL << 36) 1803 1804 /****************************************** 1805 * cl_intel_exec_by_local_thread extension * 1806 ******************************************/ 1807 1808 #define cl_intel_exec_by_local_thread 1 1809 1810 #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31) 1811 1812 /*************************************************************** 1813 * cl_intel_device_attribute_query 1814 ***************************************************************/ 1815 1816 #define cl_intel_device_attribute_query 1 1817 1818 typedef cl_bitfield cl_device_feature_capabilities_intel; 1819 1820 /* cl_device_feature_capabilities_intel */ 1821 #define CL_DEVICE_FEATURE_FLAG_DP4A_INTEL (1 << 0) 1822 #define CL_DEVICE_FEATURE_FLAG_DPAS_INTEL (1 << 1) 1823 1824 /* cl_device_info */ 1825 #define CL_DEVICE_IP_VERSION_INTEL 0x4250 1826 #define CL_DEVICE_ID_INTEL 0x4251 1827 #define CL_DEVICE_NUM_SLICES_INTEL 0x4252 1828 #define CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL 0x4253 1829 #define CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL 0x4254 1830 #define CL_DEVICE_NUM_THREADS_PER_EU_INTEL 0x4255 1831 #define CL_DEVICE_FEATURE_CAPABILITIES_INTEL 0x4256 1832 1833 /*********************************************** 1834 * cl_intel_device_partition_by_names extension * 1835 ************************************************/ 1836 1837 #define cl_intel_device_partition_by_names 1 1838 1839 #define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 1840 #define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 1841 1842 /************************************************ 1843 * cl_intel_accelerator extension * 1844 * cl_intel_motion_estimation extension * 1845 * cl_intel_advanced_motion_estimation extension * 1846 *************************************************/ 1847 1848 #define cl_intel_accelerator 1 1849 #define cl_intel_motion_estimation 1 1850 #define cl_intel_advanced_motion_estimation 1 1851 1852 typedef struct _cl_accelerator_intel* cl_accelerator_intel; 1853 typedef cl_uint cl_accelerator_type_intel; 1854 typedef cl_uint cl_accelerator_info_intel; 1855 1856 typedef struct _cl_motion_estimation_desc_intel { 1857 cl_uint mb_block_type; 1858 cl_uint subpixel_mode; 1859 cl_uint sad_adjust_mode; 1860 cl_uint search_path_type; 1861 } cl_motion_estimation_desc_intel; 1862 1863 /* error codes */ 1864 #define CL_INVALID_ACCELERATOR_INTEL -1094 1865 #define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 1866 #define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 1867 #define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 1868 1869 /* cl_accelerator_type_intel */ 1870 #define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 1871 1872 /* cl_accelerator_info_intel */ 1873 #define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 1874 #define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 1875 #define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 1876 #define CL_ACCELERATOR_TYPE_INTEL 0x4093 1877 1878 /* cl_motion_detect_desc_intel flags */ 1879 #define CL_ME_MB_TYPE_16x16_INTEL 0x0 1880 #define CL_ME_MB_TYPE_8x8_INTEL 0x1 1881 #define CL_ME_MB_TYPE_4x4_INTEL 0x2 1882 1883 #define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 1884 #define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 1885 #define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 1886 1887 #define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 1888 #define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 1889 1890 #define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 1891 #define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 1892 #define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 1893 1894 #define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 1895 #define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1 1896 #define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 1897 #define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 1898 1899 #define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1 1900 #define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2 1901 #define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3 1902 1903 #define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16 1904 #define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21 1905 #define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32 1906 #define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43 1907 #define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48 1908 1909 #define CL_ME_COST_PENALTY_NONE_INTEL 0x0 1910 #define CL_ME_COST_PENALTY_LOW_INTEL 0x1 1911 #define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2 1912 #define CL_ME_COST_PENALTY_HIGH_INTEL 0x3 1913 1914 #define CL_ME_COST_PRECISION_QPEL_INTEL 0x0 1915 #define CL_ME_COST_PRECISION_HPEL_INTEL 0x1 1916 #define CL_ME_COST_PRECISION_PEL_INTEL 0x2 1917 #define CL_ME_COST_PRECISION_DPEL_INTEL 0x3 1918 1919 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 1920 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 1921 #define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 1922 #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 1923 1924 #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 1925 #define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 1926 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 1927 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 1928 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 1929 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 1930 1931 #define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 1932 #define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 1933 #define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 1934 #define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 1935 1936 /* cl_device_info */ 1937 #define CL_DEVICE_ME_VERSION_INTEL 0x407E 1938 1939 #define CL_ME_VERSION_LEGACY_INTEL 0x0 1940 #define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1 1941 #define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2 1942 1943 extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL 1944 clCreateAcceleratorINTEL( 1945 cl_context context, 1946 cl_accelerator_type_intel accelerator_type, 1947 size_t descriptor_size, 1948 const void* descriptor, 1949 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 1950 1951 typedef cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)( 1952 cl_context context, 1953 cl_accelerator_type_intel accelerator_type, 1954 size_t descriptor_size, 1955 const void* descriptor, 1956 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 1957 1958 extern CL_API_ENTRY cl_int CL_API_CALL 1959 clGetAcceleratorInfoINTEL( 1960 cl_accelerator_intel accelerator, 1961 cl_accelerator_info_intel param_name, 1962 size_t param_value_size, 1963 void* param_value, 1964 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; 1965 1966 typedef cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( 1967 cl_accelerator_intel accelerator, 1968 cl_accelerator_info_intel param_name, 1969 size_t param_value_size, 1970 void* param_value, 1971 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; 1972 1973 extern CL_API_ENTRY cl_int CL_API_CALL 1974 clRetainAcceleratorINTEL( 1975 cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; 1976 1977 typedef cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)( 1978 cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; 1979 1980 extern CL_API_ENTRY cl_int CL_API_CALL 1981 clReleaseAcceleratorINTEL( 1982 cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; 1983 1984 typedef cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( 1985 cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2; 1986 1987 /****************************************** 1988 * cl_intel_simultaneous_sharing extension * 1989 *******************************************/ 1990 1991 #define cl_intel_simultaneous_sharing 1 1992 1993 #define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 1994 #define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 1995 1996 /*********************************** 1997 * cl_intel_egl_image_yuv extension * 1998 ************************************/ 1999 2000 #define cl_intel_egl_image_yuv 1 2001 2002 #define CL_EGL_YUV_PLANE_INTEL 0x4107 2003 2004 /******************************** 2005 * cl_intel_packed_yuv extension * 2006 *********************************/ 2007 2008 #define cl_intel_packed_yuv 1 2009 2010 #define CL_YUYV_INTEL 0x4076 2011 #define CL_UYVY_INTEL 0x4077 2012 #define CL_YVYU_INTEL 0x4078 2013 #define CL_VYUY_INTEL 0x4079 2014 2015 /******************************************** 2016 * cl_intel_required_subgroup_size extension * 2017 *********************************************/ 2018 2019 #define cl_intel_required_subgroup_size 1 2020 2021 #define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 2022 #define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109 2023 #define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A 2024 2025 /**************************************** 2026 * cl_intel_driver_diagnostics extension * 2027 *****************************************/ 2028 2029 #define cl_intel_driver_diagnostics 1 2030 2031 typedef cl_uint cl_diagnostics_verbose_level; 2032 2033 #define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 2034 2035 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff ) 2036 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 ) 2037 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 ) 2038 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 ) 2039 2040 /******************************** 2041 * cl_intel_planar_yuv extension * 2042 *********************************/ 2043 2044 #define CL_NV12_INTEL 0x410E 2045 2046 #define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) 2047 #define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) 2048 2049 #define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E 2050 #define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F 2051 2052 /******************************************************* 2053 * cl_intel_device_side_avc_motion_estimation extension * 2054 ********************************************************/ 2055 2056 #define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B 2057 #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C 2058 #define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D 2059 2060 #define CL_AVC_ME_VERSION_0_INTEL 0x0 /* No support. */ 2061 #define CL_AVC_ME_VERSION_1_INTEL 0x1 /* First supported version. */ 2062 2063 #define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 2064 #define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 2065 #define CL_AVC_ME_MAJOR_8x16_INTEL 0x2 2066 #define CL_AVC_ME_MAJOR_8x8_INTEL 0x3 2067 2068 #define CL_AVC_ME_MINOR_8x8_INTEL 0x0 2069 #define CL_AVC_ME_MINOR_8x4_INTEL 0x1 2070 #define CL_AVC_ME_MINOR_4x8_INTEL 0x2 2071 #define CL_AVC_ME_MINOR_4x4_INTEL 0x3 2072 2073 #define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0 2074 #define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1 2075 #define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2 2076 2077 #define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0 2078 #define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E 2079 #define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D 2080 #define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B 2081 #define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77 2082 #define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F 2083 #define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F 2084 #define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F 2085 2086 #define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0 2087 #define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1 2088 #define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2 2089 #define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3 2090 #define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4 2091 #define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5 2092 #define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6 2093 #define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7 2094 #define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8 2095 #define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9 2096 #define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2 2097 #define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa 2098 2099 #define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 2100 #define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2 2101 2102 #define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 2103 #define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 2104 #define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3 2105 2106 #define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0 2107 #define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1 2108 #define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2 2109 #define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3 2110 2111 #define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10 2112 #define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15 2113 #define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20 2114 #define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B 2115 #define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30 2116 2117 #define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0 2118 #define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2 2119 #define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4 2120 #define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8 2121 2122 #define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0 2123 #define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000 2124 2125 #define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) 2126 #define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) 2127 #define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 ) 2128 #define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 ) 2129 #define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 ) 2130 #define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 ) 2131 #define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) 2132 #define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) 2133 #define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 ) 2134 #define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 ) 2135 #define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 ) 2136 #define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 ) 2137 #define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 ) 2138 #define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 ) 2139 2140 #define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00 2141 #define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80 2142 2143 #define CL_AVC_ME_INTRA_16x16_INTEL 0x0 2144 #define CL_AVC_ME_INTRA_8x8_INTEL 0x1 2145 #define CL_AVC_ME_INTRA_4x4_INTEL 0x2 2146 2147 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6 2148 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5 2149 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3 2150 2151 #define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60 2152 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10 2153 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8 2154 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4 2155 2156 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 2157 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 2158 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 2159 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 2160 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 2161 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 2162 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 2163 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 2164 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 2165 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 2166 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 2167 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 2168 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 2169 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 2170 2171 #define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1 2172 #define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2 2173 #define CL_AVC_ME_FRAME_DUAL_INTEL 0x3 2174 2175 #define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0 2176 #define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1 2177 #define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2 2178 2179 #define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 2180 #define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 2181 2182 /******************************************* 2183 * cl_intel_unified_shared_memory extension * 2184 ********************************************/ 2185 #define cl_intel_unified_shared_memory 1 2186 2187 typedef cl_bitfield cl_device_unified_shared_memory_capabilities_intel; 2188 typedef cl_properties cl_mem_properties_intel; 2189 typedef cl_bitfield cl_mem_alloc_flags_intel; 2190 typedef cl_uint cl_mem_info_intel; 2191 typedef cl_uint cl_unified_shared_memory_type_intel; 2192 typedef cl_uint cl_mem_advice_intel; 2193 2194 /* cl_device_info */ 2195 #define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL 0x4190 2196 #define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL 0x4191 2197 #define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192 2198 #define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193 2199 #define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL 0x4194 2200 2201 /* cl_device_unified_shared_memory_capabilities_intel - bitfield */ 2202 #define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL (1 << 0) 2203 #define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL (1 << 1) 2204 #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL (1 << 2) 2205 #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3) 2206 2207 /* cl_mem_properties_intel */ 2208 #define CL_MEM_ALLOC_FLAGS_INTEL 0x4195 2209 2210 /* cl_mem_alloc_flags_intel - bitfield */ 2211 #define CL_MEM_ALLOC_WRITE_COMBINED_INTEL (1 << 0) 2212 #define CL_MEM_ALLOC_INITIAL_PLACEMENT_DEVICE_INTEL (1 << 1) 2213 #define CL_MEM_ALLOC_INITIAL_PLACEMENT_HOST_INTEL (1 << 2) 2214 2215 /* cl_mem_alloc_info_intel */ 2216 #define CL_MEM_ALLOC_TYPE_INTEL 0x419A 2217 #define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B 2218 #define CL_MEM_ALLOC_SIZE_INTEL 0x419C 2219 #define CL_MEM_ALLOC_DEVICE_INTEL 0x419D 2220 2221 /* cl_unified_shared_memory_type_intel */ 2222 #define CL_MEM_TYPE_UNKNOWN_INTEL 0x4196 2223 #define CL_MEM_TYPE_HOST_INTEL 0x4197 2224 #define CL_MEM_TYPE_DEVICE_INTEL 0x4198 2225 #define CL_MEM_TYPE_SHARED_INTEL 0x4199 2226 2227 /* cl_kernel_exec_info */ 2228 #define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL 0x4200 2229 #define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL 0x4201 2230 #define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL 0x4202 2231 #define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL 0x4203 2232 2233 /* cl_command_type */ 2234 #define CL_COMMAND_MEMFILL_INTEL 0x4204 2235 #define CL_COMMAND_MEMCPY_INTEL 0x4205 2236 #define CL_COMMAND_MIGRATEMEM_INTEL 0x4206 2237 #define CL_COMMAND_MEMADVISE_INTEL 0x4207 2238 2239 2240 typedef void* (CL_API_CALL * 2241 clHostMemAllocINTEL_fn)( 2242 cl_context context, 2243 const cl_mem_properties_intel* properties, 2244 size_t size, 2245 cl_uint alignment, 2246 cl_int* errcode_ret) ; 2247 2248 typedef void* (CL_API_CALL * 2249 clDeviceMemAllocINTEL_fn)( 2250 cl_context context, 2251 cl_device_id device, 2252 const cl_mem_properties_intel* properties, 2253 size_t size, 2254 cl_uint alignment, 2255 cl_int* errcode_ret) ; 2256 2257 typedef void* (CL_API_CALL * 2258 clSharedMemAllocINTEL_fn)( 2259 cl_context context, 2260 cl_device_id device, 2261 const cl_mem_properties_intel* properties, 2262 size_t size, 2263 cl_uint alignment, 2264 cl_int* errcode_ret) ; 2265 2266 typedef cl_int (CL_API_CALL * 2267 clMemFreeINTEL_fn)( 2268 cl_context context, 2269 void* ptr) ; 2270 2271 typedef cl_int (CL_API_CALL * 2272 clMemBlockingFreeINTEL_fn)( 2273 cl_context context, 2274 void* ptr) ; 2275 2276 typedef cl_int (CL_API_CALL * 2277 clGetMemAllocInfoINTEL_fn)( 2278 cl_context context, 2279 const void* ptr, 2280 cl_mem_info_intel param_name, 2281 size_t param_value_size, 2282 void* param_value, 2283 size_t* param_value_size_ret) ; 2284 2285 typedef cl_int (CL_API_CALL * 2286 clSetKernelArgMemPointerINTEL_fn)( 2287 cl_kernel kernel, 2288 cl_uint arg_index, 2289 const void* arg_value) ; 2290 2291 typedef cl_int (CL_API_CALL * 2292 clEnqueueMemFillINTEL_fn)( 2293 cl_command_queue command_queue, 2294 void* dst_ptr, 2295 const void* pattern, 2296 size_t pattern_size, 2297 size_t size, 2298 cl_uint num_events_in_wait_list, 2299 const cl_event* event_wait_list, 2300 cl_event* event) ; 2301 2302 typedef cl_int (CL_API_CALL * 2303 clEnqueueMemcpyINTEL_fn)( 2304 cl_command_queue command_queue, 2305 cl_bool blocking, 2306 void* dst_ptr, 2307 const void* src_ptr, 2308 size_t size, 2309 cl_uint num_events_in_wait_list, 2310 const cl_event* event_wait_list, 2311 cl_event* event) ; 2312 2313 typedef cl_int (CL_API_CALL * 2314 clEnqueueMemAdviseINTEL_fn)( 2315 cl_command_queue command_queue, 2316 const void* ptr, 2317 size_t size, 2318 cl_mem_advice_intel advice, 2319 cl_uint num_events_in_wait_list, 2320 const cl_event* event_wait_list, 2321 cl_event* event) ; 2322 2323 #ifndef CL_NO_PROTOTYPES 2324 2325 extern CL_API_ENTRY void* CL_API_CALL 2326 clHostMemAllocINTEL( 2327 cl_context context, 2328 const cl_mem_properties_intel* properties, 2329 size_t size, 2330 cl_uint alignment, 2331 cl_int* errcode_ret) ; 2332 2333 extern CL_API_ENTRY void* CL_API_CALL 2334 clDeviceMemAllocINTEL( 2335 cl_context context, 2336 cl_device_id device, 2337 const cl_mem_properties_intel* properties, 2338 size_t size, 2339 cl_uint alignment, 2340 cl_int* errcode_ret) ; 2341 2342 extern CL_API_ENTRY void* CL_API_CALL 2343 clSharedMemAllocINTEL( 2344 cl_context context, 2345 cl_device_id device, 2346 const cl_mem_properties_intel* properties, 2347 size_t size, 2348 cl_uint alignment, 2349 cl_int* errcode_ret) ; 2350 2351 extern CL_API_ENTRY cl_int CL_API_CALL 2352 clMemFreeINTEL( 2353 cl_context context, 2354 void* ptr) ; 2355 2356 extern CL_API_ENTRY cl_int CL_API_CALL 2357 clMemBlockingFreeINTEL( 2358 cl_context context, 2359 void* ptr) ; 2360 2361 extern CL_API_ENTRY cl_int CL_API_CALL 2362 clGetMemAllocInfoINTEL( 2363 cl_context context, 2364 const void* ptr, 2365 cl_mem_info_intel param_name, 2366 size_t param_value_size, 2367 void* param_value, 2368 size_t* param_value_size_ret) ; 2369 2370 extern CL_API_ENTRY cl_int CL_API_CALL 2371 clSetKernelArgMemPointerINTEL( 2372 cl_kernel kernel, 2373 cl_uint arg_index, 2374 const void* arg_value) ; 2375 2376 extern CL_API_ENTRY cl_int CL_API_CALL 2377 clEnqueueMemFillINTEL( 2378 cl_command_queue command_queue, 2379 void* dst_ptr, 2380 const void* pattern, 2381 size_t pattern_size, 2382 size_t size, 2383 cl_uint num_events_in_wait_list, 2384 const cl_event* event_wait_list, 2385 cl_event* event) ; 2386 2387 extern CL_API_ENTRY cl_int CL_API_CALL 2388 clEnqueueMemcpyINTEL( 2389 cl_command_queue command_queue, 2390 cl_bool blocking, 2391 void* dst_ptr, 2392 const void* src_ptr, 2393 size_t size, 2394 cl_uint num_events_in_wait_list, 2395 const cl_event* event_wait_list, 2396 cl_event* event) ; 2397 2398 extern CL_API_ENTRY cl_int CL_API_CALL 2399 clEnqueueMemAdviseINTEL( 2400 cl_command_queue command_queue, 2401 const void* ptr, 2402 size_t size, 2403 cl_mem_advice_intel advice, 2404 cl_uint num_events_in_wait_list, 2405 const cl_event* event_wait_list, 2406 cl_event* event) ; 2407 2408 #endif /* CL_NO_PROTOTYPES */ 2409 2410 #if defined(CL_VERSION_1_2) 2411 /* Requires OpenCL 1.2 for cl_mem_migration_flags: */ 2412 2413 typedef cl_int (CL_API_CALL * 2414 clEnqueueMigrateMemINTEL_fn)( 2415 cl_command_queue command_queue, 2416 const void* ptr, 2417 size_t size, 2418 cl_mem_migration_flags flags, 2419 cl_uint num_events_in_wait_list, 2420 const cl_event* event_wait_list, 2421 cl_event* event) ; 2422 2423 #ifndef CL_NO_PROTOTYPES 2424 2425 extern CL_API_ENTRY cl_int CL_API_CALL 2426 clEnqueueMigrateMemINTEL( 2427 cl_command_queue command_queue, 2428 const void* ptr, 2429 size_t size, 2430 cl_mem_migration_flags flags, 2431 cl_uint num_events_in_wait_list, 2432 const cl_event* event_wait_list, 2433 cl_event* event) ; 2434 2435 #endif /* CL_NO_PROTOTYPES */ 2436 2437 #endif /* defined(CL_VERSION_1_2) */ 2438 2439 /* deprecated, use clEnqueueMemFillINTEL instead */ 2440 2441 typedef cl_int (CL_API_CALL * 2442 clEnqueueMemsetINTEL_fn)( 2443 cl_command_queue command_queue, 2444 void* dst_ptr, 2445 cl_int value, 2446 size_t size, 2447 cl_uint num_events_in_wait_list, 2448 const cl_event* event_wait_list, 2449 cl_event* event) ; 2450 2451 #ifndef CL_NO_PROTOTYPES 2452 2453 extern CL_API_ENTRY cl_int CL_API_CALL 2454 clEnqueueMemsetINTEL( 2455 cl_command_queue command_queue, 2456 void* dst_ptr, 2457 cl_int value, 2458 size_t size, 2459 cl_uint num_events_in_wait_list, 2460 const cl_event* event_wait_list, 2461 cl_event* event) ; 2462 2463 #endif /* CL_NO_PROTOTYPES */ 2464 2465 /*************************************************************** 2466 * cl_intel_mem_alloc_buffer_location 2467 ***************************************************************/ 2468 #define cl_intel_mem_alloc_buffer_location 1 2469 #define CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_NAME \ 2470 "cl_intel_mem_alloc_buffer_location" 2471 2472 /* cl_mem_properties_intel */ 2473 #define CL_MEM_ALLOC_BUFFER_LOCATION_INTEL 0x419E 2474 2475 /* cl_mem_alloc_info_intel */ 2476 /* enum CL_MEM_ALLOC_BUFFER_LOCATION_INTEL */ 2477 2478 /*************************************************** 2479 * cl_intel_create_buffer_with_properties extension * 2480 ****************************************************/ 2481 2482 #define cl_intel_create_buffer_with_properties 1 2483 2484 extern CL_API_ENTRY cl_mem CL_API_CALL 2485 clCreateBufferWithPropertiesINTEL( 2486 cl_context context, 2487 const cl_mem_properties_intel* properties, 2488 cl_mem_flags flags, 2489 size_t size, 2490 void * host_ptr, 2491 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 2492 2493 typedef cl_mem (CL_API_CALL * 2494 clCreateBufferWithPropertiesINTEL_fn)( 2495 cl_context context, 2496 const cl_mem_properties_intel* properties, 2497 cl_mem_flags flags, 2498 size_t size, 2499 void * host_ptr, 2500 cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; 2501 2502 /****************************************** 2503 * cl_intel_mem_channel_property extension * 2504 *******************************************/ 2505 2506 #define CL_MEM_CHANNEL_INTEL 0x4213 2507 2508 /********************************* 2509 * cl_intel_mem_force_host_memory * 2510 **********************************/ 2511 2512 #define cl_intel_mem_force_host_memory 1 2513 2514 /* cl_mem_flags */ 2515 #define CL_MEM_FORCE_HOST_MEMORY_INTEL (1 << 20) 2516 2517 /*************************************************************** 2518 * cl_intel_command_queue_families 2519 ***************************************************************/ 2520 #define cl_intel_command_queue_families 1 2521 2522 typedef cl_bitfield cl_command_queue_capabilities_intel; 2523 2524 #define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL 64 2525 2526 typedef struct _cl_queue_family_properties_intel { 2527 cl_command_queue_properties properties; 2528 cl_command_queue_capabilities_intel capabilities; 2529 cl_uint count; 2530 char name[CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL]; 2531 } cl_queue_family_properties_intel; 2532 2533 /* cl_device_info */ 2534 #define CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL 0x418B 2535 2536 /* cl_queue_properties */ 2537 #define CL_QUEUE_FAMILY_INTEL 0x418C 2538 #define CL_QUEUE_INDEX_INTEL 0x418D 2539 2540 /* cl_command_queue_capabilities_intel */ 2541 #define CL_QUEUE_DEFAULT_CAPABILITIES_INTEL 0 2542 #define CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL (1 << 0) 2543 #define CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL (1 << 1) 2544 #define CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 2) 2545 #define CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 3) 2546 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL (1 << 8) 2547 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL (1 << 9) 2548 #define CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL (1 << 10) 2549 #define CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL (1 << 11) 2550 #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL (1 << 12) 2551 #define CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL (1 << 13) 2552 #define CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL (1 << 14) 2553 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL (1 << 15) 2554 #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL (1 << 16) 2555 #define CL_QUEUE_CAPABILITY_MARKER_INTEL (1 << 24) 2556 #define CL_QUEUE_CAPABILITY_BARRIER_INTEL (1 << 25) 2557 #define CL_QUEUE_CAPABILITY_KERNEL_INTEL (1 << 26) 2558 2559 /*************************************************************** 2560 * cl_intel_queue_no_sync_operations 2561 ***************************************************************/ 2562 2563 #define cl_intel_queue_no_sync_operations 1 2564 2565 /* addition to cl_command_queue_properties */ 2566 #define CL_QUEUE_NO_SYNC_OPERATIONS_INTEL (1 << 29) 2567 2568 /*************************************************************** 2569 * cl_intel_sharing_format_query 2570 ***************************************************************/ 2571 #define cl_intel_sharing_format_query 1 2572 2573 /*************************************************************** 2574 * cl_ext_image_requirements_info 2575 ***************************************************************/ 2576 2577 #ifdef CL_VERSION_3_0 2578 2579 #define cl_ext_image_requirements_info 1 2580 2581 typedef cl_uint cl_image_requirements_info_ext; 2582 2583 #define CL_IMAGE_REQUIREMENTS_ROW_PITCH_ALIGNMENT_EXT 0x1290 2584 #define CL_IMAGE_REQUIREMENTS_BASE_ADDRESS_ALIGNMENT_EXT 0x1292 2585 #define CL_IMAGE_REQUIREMENTS_SIZE_EXT 0x12B2 2586 #define CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT 0x12B3 2587 #define CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT 0x12B4 2588 #define CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT 0x12B5 2589 #define CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT 0x12B6 2590 2591 extern CL_API_ENTRY cl_int CL_API_CALL 2592 clGetImageRequirementsInfoEXT( 2593 cl_context context, 2594 const cl_mem_properties* properties, 2595 cl_mem_flags flags, 2596 const cl_image_format* image_format, 2597 const cl_image_desc* image_desc, 2598 cl_image_requirements_info_ext param_name, 2599 size_t param_value_size, 2600 void* param_value, 2601 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0; 2602 2603 typedef cl_int (CL_API_CALL * 2604 clGetImageRequirementsInfoEXT_fn)( 2605 cl_context context, 2606 const cl_mem_properties* properties, 2607 cl_mem_flags flags, 2608 const cl_image_format* image_format, 2609 const cl_image_desc* image_desc, 2610 cl_image_requirements_info_ext param_name, 2611 size_t param_value_size, 2612 void* param_value, 2613 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0; 2614 2615 #endif 2616 2617 /*************************************************************** 2618 * cl_ext_image_from_buffer 2619 ***************************************************************/ 2620 2621 #ifdef CL_VERSION_3_0 2622 2623 #define cl_ext_image_from_buffer 1 2624 2625 #define CL_IMAGE_REQUIREMENTS_SLICE_PITCH_ALIGNMENT_EXT 0x1291 2626 2627 #endif 2628 2629 #ifdef __cplusplus 2630 } 2631 #endif 2632 2633 2634 #endif /* __CL_EXT_H */ 2635