OpenGL 3.2 steps up to the plate
Recently at SIGGRAPH 2009, Khronos and the ARB announced OpenGL 3.2 and GLSL 1.50. We have continued to increment 3D graphics capability on a 6 month schedule. OpenGL 3.2 adds a few larger pieces of functionality along with many smaller tweaks, while still being compatible with most modern installed GPUs. If you have a 1 or 2 year old GPU, chances are a driver update will bring you OpenGL 3.2.
The first major landmark in OpenGL 3.2 is geometry shader support. This long awaited shader pipeline stage allows for geometry primitives to be modified on the GPU. This includes generating new primitives from existing ones, modifying in-flight primitives, or removing primitives. With this feature, an app can amplify geometry without changing the stored vertices, implement tessellation schemes, or turn lines/points into volumes. One of the side effects of geometry shaders is that the amount of data handled by the CPU and passed to the GPU for the geometry generated is significantly reduced. This means precious bandwidth, CPU cycles, and memory are conserved.
OpenGL 3.2 has also added an important feature called sync objects. This feature creates a mechanism which allows the GPU and CPU to stay in sync. Previously the only way to be sure a GPU was finished with a surface or object was to flush the whole pipeline, stalling the GPU and killing performance. With sync objects, applications can be signaled when events on the GPU complete, even while the GPU is still fully saturated. This new functionality will work particularly well at syncing the CPU and GPU, keeping multiple graphics contexts in multiple threads in sync, and at synchronizing multiple GPUs when using extensions like WGL_AMD_GPU_association.
Multisample textures and samplers are now in OpenGL 3.2, giving applications the option of applying multisample rendering hardware to textures and render buffer objects, instead of only screen space windows. Now the use of off-screen real time rendering can also benefit from multisample rendering. Additionally, shaders can read from each sample of a multisampled texture and apply custom blend schemes.
With OpenGL 3.2, we have also added the idea of profiles. Two profiles exist in OpenGL 3.2, the core profile and the compatibility profile. Core profiles are ideal for modern applications that want the full performance benefits of a slimmed down API and reduced validation. Compatibility profiles are maintained for larger, older code-bases that need access to new features. AMD plans to support the Compatibility Profile, although other vendors may not. OpenGL 3.2 also adds a significant number of modifications that allow applications to be more easily ported from other 3D APIs. This is particularly important for developers bringing applications to different hardware such as mobile devices or Open Source platforms.
OpenGL 3.2 is proof of the relevance and continued evolution of open standards for 3D graphics. The OpenGL ARB continues to make forward progress, iterating through OpenGL releases that bring new and useful features to the graphics community. You can share suggestions and comments about OpenGL 3.2 with the OpenGL ARB through the official OpenGL 3.2 feedback thread on the OpenGL forum or by leaving comments for me here.