OpenCL Extensions available in Intel® SDK for OpenCL™ Applications
The following tables contain information about extensions to the Khronos Group OpenCL™ standard available for Intel processors.
Notice: Not all extensions are available in all versions of the OpenCL drivers for each OS. Some features are only available on certain hardware platforms or in certain driver baselines.
Media Extensions
These extensions enable video processing applications to access hardware features in Intel processors.
Extension Name | Description | Links |
---|---|---|
cl_intel_advanced_motion_estimation cl_intel_motion_estimation
| Custom video motion estimation (VME) extensions enable encoding solutions enhancing the capabilities of Intel Media SDK. This includes custom bitrate control algorithms, frame-based motion estimation enhancements, bi-directional skip checks, MV costing, and intraframe prediction. Notes:
For more info:https://software.intel.com/en-us/articles/intro-to-advanced-motion-estimation-extension-for-opencl Motion estimation samples available in Media Server Studio samples
| Spec |
cl_intel_packed_yuv | YUV is usually a planar format. This extension provides support for a few specific formats of packed YUV images. | Spec |
Sharing Extensions
This group of extensions enables interoperability between OpenCL and other APIs using Intel GPUs.
Extension Name | Description | Links |
---|---|---|
cl_intel_simultaneous_sharing | The OpenCL 1.2 Extension Spec forbids interoperability with multiple graphics APIs at clCreateContext or clCreateContextFromType time. It defines that CL_INVALID_OPERATION should be returned in such cases. The goal of this extension is to relax the restrictions and allow simultaneous use of API combinations as supported by a given OpenCL device. | Spec |
cl_intel_va_api_media_sharing | Linux/Android Media Sharing See https://software.intel.com/en-us/articles/tutorial-opencl-interoperability-with-video-acceleration-api-on-linux-os Used in Media Server Studio samples | Spec |
cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing | Windows sharing APIs (created before Khronos extensions below.) https://software.intel.com/en-us/articles/d3d9-media-surface-sharing-between-intel-quick-sync-video-and-opencl-on-intel-hd-graphics Used in Media Server Studio samples | |
cl_khr_dx9_media_sharing cl_khr_d3d10_sharing cl_khr_d3d11_sharing | Sharing for DirectX 9, 10, 11 https://software.intel.com/en-us/articles/opencl-and-intel-media-sdk
| |
cl_khr_gl_sharing cl_khr_gl_msaa_sharing cl_khr_gl_depth_images cl_khr_gl_event | Sample: https://software.intel.com/sites/default/files/managed/2c/79/intel_ocl_ogl_interop_win.zip Related Pages: https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial |
|
Subgroups Extensions
Work items in a subgroup can share data without implementing shared local memory or using barriers. This extends the work group concept to allow more efficient data sharing.
Extension Name | Description | Links |
---|---|---|
cl_intel_subgroups | Enables work-items in a workgroup to work together let work items share data without local memory and global barriers. Similar to OpenCL 2.0 Subgroups. https://software.intel.com/en-us/articles/sgemm-for-intel-processor-graphics https://software.intel.com/en-us/articles/box-blur-filter-using-intel-subgroup-extensions-in-opencl | Spec |
cl_intel_required_subgroup_size | The goal of this extension is to allow programmers to optionally specify the required subgroup size for a kernel function. This information is important for the correctness of many subgroup algorithms, and in some cases may be used by the compiler to generate more optimal code. | Spec |
cl_khr_subgroups | Implementation controlled division of a workgroup allowing independent forward progress within the workgroup. This feature was promoted to Core in OpenCL 2.1. | Spec |
Other Extensions
Extension Name | Description | Links |
---|---|---|
cl_intel_accelerator | Basic accelerator support
| |
cl_intel_driver_diagnostics | This extension allow the driver to pass additional strings containing diagnostic information. The diagnostic messages can help to understand how the driver works and can provide guidance to modify an application to improve performance. Related Pages: |
|
cl_khr_3d_image_writes | Enables writes to 3D image objects | Spec |
cl_khr_byte_addressable_store | Removes restrictions of built-in types (Core feature of 1.1 maintained for backward compatibility). Needed to write to elements of a pointer or struct of type char, uchar, char2, uchar2, short, ushort, and half. | Spec |
cl_khr_spir | OpenCL Standard Portable Intermediate Representation (SPIR) non source representation of OpenCL. | Spec |
cl_khr_fp16 | Half-precision floating-point | Spec |
cl_khr_fp64 | IEEE-754 double-precision floating-point support | Spec |
cl_khr_global_int32_base_atomics | 32-bit integer base atomic operations in global memory | Spec |
cl_khr_global_int32_extended_atomics | 32-bit integer extended atomic operations in global memory | Spec |
cl_khr_icd | Access Khronos OpenCL installable client driver loader (ICD Loader) | Spec |
cl_khr_image2d_from_buffer | 2D image from buffer creation support https://software.intel.com/en-us/articles/using-image2d-from-buffer-extension | Spec |
cl_khr_mipmap_image cl_khr_mipmap_image_writes | Ability to create / read mipmapped images Adds ability to write mipmapped images, requires cl_khr_mipmap_image |
|
cl_khr_depth_images | Depth Images | Spec |
cl_khr_throttle_hints | Extension to OpenCL 2.1 API which allows the driver to implement throttling behavior. Throttling behavior is implementation specific | Spec |
Deprecated Extensions
Extension Name | Description |
---|---|
cl_intel_ctz | Built-in count trailing zeroes |