The OpenCL 1.2 version was released on November 15, 2011. Its most significant features include the following:
- Device partitioning: This enables applications to partition a device into sub-devices to directly control work assignment to particular compute units, reserve a part of the device for use for high priority/latency-sensitive tasks, or effectively use shared hardware resources such as a cache.
- Separate compilation and linking of objects: This provides the capabilities and flexibility of traditional compilers enabling the creation of libraries of OpenCL programs for other programs to link to.
- Enhanced image support: This includes added support for 1D images and 1D & 2D image arrays. Also, the OpenGL sharing extension now enables an OpenCL image to be created from OpenGL 1D textures and 1D & 2D texture arrays.
- Built-in kernels: This represents the capabilities of specialized or non-programmable hardware and associated firmware, such as video encoder/decoders and digital signal processors, enabling these custom devices to be driven from and integrated closely with the OpenCL framework.
- DX9 Media Surface Sharing: This enables efficient sharing between OpenCL and DirectX 9 or DXVA media surfaces.
- DX11 Surface Sharing: For seamless sharing between OpenCL and DirectX 11 surfaces.