The Khronos Group has announced details of new specifications of both OpenGL and OpenCL.
There’s a new version of OpenGL, the 3D graphics API. Version 4.4 was announced a year after the previous version, with improvements to make it easier to move Direct3D apps and games to OpenGL. The Khronos Group also released details of the provisional specification for OpenCL version 2.0, the API you can use to choose where your code runs – the CPU, GPU, or other local resources.
Alongside the OpenGL 4.4 specification, the OpenGL ARB (Architecture Review Board) Working Group at Khronos has created the first set of formal OpenGL conformance tests since OpenGL 2.0. This will, according to the announcement of the new version, help reduce differences between multiple vendors’ OpenGL drivers, resulting in enhanced portability for developers.
The OpenCL 2.0 improvements are largely focused on providing better ways to share resources between the CPU and GPU. Its announcement said that shared virtual memory will let host and device kernels directly share complex, pointer-containing data structures such as trees and linked lists, so avoiding the need to transfer data between host and devices.
Dynamic parallelism will let device kernels queue kernels to the same device with no host interaction, and you’ll be able to write functions that use a generic address space. This will avoid the need to specify a named address space for arguments. The announcement says this will be especially useful for those arguments that are declared to be a pointer to a type, eliminating the need for multiple functions to be written for each named address space used in an application.
Improved image support including sRGB images and 3D image writes, and the ability for kernels to read from and write to the same image. OpenCL 2.0 will have built-in functions for kernels to read from or write to a FIFO pipe. The final improvement is an Android installable client driver extension that lets OpenCL implementations to be discovered and loaded as a shared object on Android systems.