When using AMD Graphics Hardware, fragment shaders fail to compile when using the GL_ARB_conservative_depth extension although the extension is advertised as supported by the driver.
I encounter this error on Radeon Pro SSG (on Radeon Pro Software Enterprise Edition 19.Q3.1) and Radeon VII (on Adrenalin 2019 19.4.1).
A small example application producing the error can be found on GitHub - geringsj/minimal_rendering at amd_conservative_depth .
When cloning the git repository make sure to also initialise git submodules of the project and to use the amd_conservative_depth branch. You can use CMake to produce a Visual Studio Solution file.
git clone --recursive https://github.com/geringsj/minimal_rendering.git
git checkout amd_conservative_depth
** run CMake via command line or GUI to produce VS solution **
cd minimal_rendering
mkdir build
cd build
cmake -G "Visual Studio 15 2017 Win64" ..
The resulting rendering.exe executable is a small OpenGL program that starts an OpenGL 4.6 Core context and compiles a shader that uses GL_ARB_conservative_depth. Running this pogram results in the following output.
$ cd minimal_rendering/build/Debug/
$ ./rendering.exe
GL_ARB_conservative_depth is available via GLAD.
GL_ARB_conservative_depth is available via GLFW.
Building shaders.
[OpenGL Error] glCompileShader failed to compile a GLSL shader with the following shader info log: 'Fragment shader failed to compile with the following errors:
ERROR: 0:3: error(#61) Required extension is not found. Extension "GL_ARB_conservative_depth" is not supported
ERROR: error(#273) 1 compilation errors. No code generated
'
[OpenGL Error] glLinkProgram failed to link a GLSL program with the following program info log: 'Fragment shader(s) were not successfully compiled before glLinkProgram() was called. Link failed.
'
Error compiling or linking shaders. Abort.
The error happens both on a OpenGL Core and Compatilbility Profile.
Replacing GL_ARB_conservative_depth with GL_AMD_conservative_depth in the shader fixes the compiler error. However, in our software we would like to use the GL_ARB extension name that is a Core Extensions since OpenGL 4.2 (see History of OpenGL - OpenGL Wiki )
I am attaching Radeon driver information of the machines that I tested the example on.
Regards,
Sergej Geringer
Visualization Research Center (VISUS)
University of Stuttgart