An OpenGL Optimization Extension Merged Into Mesa
Yesterday Mesa received support for a new OpenGL extension and after that another useful OpenGL 4.2 extension was added to Mesa and implemented within the Intel OpenGL Linux driver. This latest extension can be used for a driver performance optimization.
The newest extension implemented in Mesa and more specifically the Intel DRI driver is ARB_conservative_depth. The ARB_conservative_depth extension has been implemented for Ivy Bridge "Gen7" hardware and newer. With time, the extension will be implemented by the Radeon and Nouveau Gallium3D drivers. There is also support for ARB_conservative_depth within the Softpipe driver.
OpenGL's ARB_conservative_depth extension allows games and applications to pass information to the OpenGL driver for implementing a performance optimization of an early depth test run before the fragment shader so the driver can skip the evaluation process if the fragment will be discarded due to being occluded.
The OpenGL.org registry lays out the extension in full.
The newest extension implemented in Mesa and more specifically the Intel DRI driver is ARB_conservative_depth. The ARB_conservative_depth extension has been implemented for Ivy Bridge "Gen7" hardware and newer. With time, the extension will be implemented by the Radeon and Nouveau Gallium3D drivers. There is also support for ARB_conservative_depth within the Softpipe driver.
OpenGL's ARB_conservative_depth extension allows games and applications to pass information to the OpenGL driver for implementing a performance optimization of an early depth test run before the fragment shader so the driver can skip the evaluation process if the fragment will be discarded due to being occluded.
The OpenGL.org registry lays out the extension in full.
There is a common optimization for hardware accelerated implementation of OpenGL which relies on an early depth test to be run before the fragment shader so that the shader evaluation can be skipped if the fragment ends up being discarded because it is occluded.The ARB_conservative_depth extension is a requirement for OpenGL 4.2 compliance. This Git commit enabled the Intel i965 ARB_conservative_depth depth support for Gen7+ hardware.
This optimization does not affect the final rendering, and is typically possible when the fragment does not change the depth programmatically. (i.e.: it does not write to the built-in gl_FragDepth output). There are, however a class of operations on the depth in the shader which could still be performed while allowing the early depth test to operate.
This extension allows the application to pass enough information to the GL implementation to activate such optimizations safely.
18 Comments