The Khronos Group has announced the release of the OpenGL 4.4 specification, bringing the very latest graphics functionality to the API (application programming interface). OpenGL 4.4 unlocks capabilities of modern graphics hardware while maintaining full backwards compatibility. Also, OpenGL 4.4 defines new functionality to streamline the porting of applications and titles from other platforms and APIs.
“The delivery of conformance tests for OpenGL 4.4 is a significant milestone – as it is vital for developers to be able to rely on the API they are trusting to accelerate their content across multiple platforms. The OpenGL ARB is committed to continue to deepen communications with the developer community so we can continue to build OpenGL functionality that creates real-world business opportunities for the 3D industry,” said Barthold Lichtenbelt, OpenGL ARB working group chair.
New functionality in the OpenGL 4.4 specification includes:
- Buffer Placement Control (GL_ARB_buffer_storage): Significantly enhances memory flexibility and efficiency through explicit control over the position of buffers in the graphics and system memory, together with cache behavior control - including the ability of the CPU to map a buffer for direct use by a GPU.
- Efficient Asynchronous Queries (GL_ARB_query_buffer_object): Buffer objects can be the direct target of a query to avoid the CPU waiting for the result and stalling the graphics pipeline. This provides significantly boosted performance for applications that intend to subsequently use the results of queries on the GPU, such as dynamic quality reduction strategies based on performance metrics.
- Shader Variable Layout (GL_ARB_enhanced_layouts): Detailed control over placement of shader interface variables, including the ability to pack vectors efficiently with scalar types. Includes full control over variable layout inside uniform blocks and enables shaders to specify transform feedback variables and buffer layout.
- Efficient Multiple Object Binding (GL_ARB_multi_bind): New commands which enable an application to bind or unbind sets of objects with one API call instead of separate commands for each bind operation, amortizing the function call, name space lookup, and potential locking overhead. The core rendering loop of many graphics applications frequently bind different sets of textures, samplers, images, vertex buffers, and uniform buffers and so this can significantly reduce CPU overhead and improve performance.
- Streamlined Porting of Direct3D applications: A number of core functions contribute to easier porting of applications and games written in Direct3D including GL_ARB_buffer_storage for buffer placement control, GL_ARB_vertex_type_10f_11f_11f_rev which creates a vertex data type that packs three components in a 32 bit value that provides a performance improvement for lower precision vertices and is a format used by Direct3D, and GL_ARB_texture_mirror_clamp_to_edge that provides a texture clamping mode also used by Direct3D.
Extensions released alongside the OpenGL 4.4 specification include:
- Bindless Texture Extension (GL_ARB_bindless_texture): Shaders can now access an effectively unlimited number of texture and image resources directly by virtual addresses. This bindless texture approach avoids the application overhead due to explicitly binding a small window of accessible textures. Ray tracing and global illumination algorithms are faster and simpler with unfettered access to a virtual world's entire texture set.
- Sparse Texture Extension (GL_ARB_sparse_texture): Enables handling of huge textures that are much larger than the GPUs physical memory by allowing an application to select which regions of the texture are resident for ‘mega-texture’ algorithms and very large data-set visualizations.
Both AMD and Nvidia Corp. have already publicly endorsed OpenGL 4.4.