23/02/2011 February 2011 OpenGL drivers status

Few evolutions since January on OpenGL drivers support beside actually some new bugs detected thanks to the last OpenGL Samples Pack 4.1.5.0 released few days ago.

Drivers test results nomenclature:
  • White: Unsupported.
  • Blue: The sample works but it doesn't follow the OpenGL specification.
  • Green: The sample works following the OpenGL specification.
  • Orange: The sample doesn't work correctly but a workaround is possible.
  • Red: The sample does't work and I haven't found any workaround.
  • Black: Really distubing problem!
Drivers: AMD Catalyst 11.1a (26/01/2011)AMD Catalyst 11.2 (15/02/2011)nVidia Forceware 266.58 (18/01/2011)nVidia Forceware 266.77 (17/02/2011)
410-sampler-fetch-dsa-ext
410-program-varyinggl_PerVertex redeclaration involves compiler errors...gl_PerVertex redeclaration involves compiler errors...
410-program-separategl_PerVertex redeclaration involves compiler errors...gl_PerVertex redeclaration involves compiler errors...
410-program-binaryWill crash after enough load and save instead of returning GL_FALSE.Will crash after enough load and save instead of returning GL_FALSE.
410-program-64
410-primitive-tessellation-5gl_PerVertex redeclaration involves compiler errors...gl_PerVertex redeclaration involves compiler errors...
410-primitive-tessellation-2gl_PerVertex redeclaration involves compiler errors...gl_PerVertex redeclaration involves compiler errors...
410-primitive-instancedUnexpected warningUnexpected warning
410-fbo-rtt-dsa-ext
410-fbo-multisample-dsa-ext
410-fbo-layeredUnexpected warningUnexpected warning
410-debug-output-arbAMD_debug_output support onlyAMD_debug_output support only
400-transform-feedback-object
400-texture-compression-arb
400-texture-buffer-rgb
400-sampler-gather
400-sampler-fetchWith some uses of max or clamp, the result is not correct!
400-sampler-array
400-program-varying-structs
400-program-varying-blocksUnexpected warning / gl_in.length() not fully supportedUnexpected warning / gl_in.length() not fully supported
400-program-subroutine
400-program-64
400-primitive-tessellationUnexpected warningUnexpected warning
400-primitive-smooth-shadingUnexpected warningUnexpected warning
400-primitive-instancedUnexpected warningUnexpected warning
400-fbo-rtt-texture-array
400-fbo-rtt
400-fbo-multisample
400-fbo-layered
400-draw-indirect
400-buffer-uniformUnsupported uniform block arrayUnsupported uniform block array
400-blend-rtt
330-texture-arrayRequired glTexParameteri to setup filtering, sampler unsupportedRequired glTexParameteri to setup filtering, sampler unsupported
330-sampler-objectSampler object doesn't always oversede texture parametersSampler object doesn't always oversede texture parameters
330-fbo-multisampleRequire to set the filtering to the texture object instead of the sampler object
330-fbo-multisample-custom-resolveScissor test not disable when requested
330-fbo-mipmapsScissor test ignored by glClearBufferScissor test ignored by glClearBuffer

The sampler object remains a mess on AMD which is especially unfortunate as AMD proposed this functionnality. The results of these tests reflect the lack of evolution of OpenGL drivers (since November) which is unlikely considering the number of issues raised by these very simple tests.

Drivers: AMD Catalyst 11.1a (26/01/2011)AMD Catalyst 11.2 (15/02/2011)nVidia Forceware 266.58 (18/01/2011)nVidia Forceware 266.77 (17/02/2011)
400-error-sampler-fetchAMD doesn't support the GLSL extension mechanisumAMD doesn't support the GLSL extension mechanisum
330-error-vaoA VAO isn't required by nVidia implementationA VAO isn't required by nVidia implementation
330-error-sampler-offsetGLSL compiler crashGLSL compiler crash
330-error-sampler-gatherAMD doesn't support the GLSL version mechanisumAMD doesn't support the GLSL version mechanisum
330-error-convUse GLSL 4.10 implicit conventionsUse GLSL 4.10 implicit conventionsUse GLSL 4.10 implicit conventionsUse GLSL 4.10 implicit conventions

For OpenGL to reach another level in the interest of programmers it will take at least this step: better handling of errors. It is not enough for a code to work, it should not work and through the approciate error, when it is not expected to work. There is still a lot to do for both AMD and nVidia.

When we create an OpenGL context, AMD drivers return many OpenGL context versions however in practice AMD doesn't actually support the GLSL extension or the GLSL version mechanisiums so that effectively I believe that all these versions are exactely same code path. On nVidia, it might be similar but it always report version and extension requirements which is a huge plus for cross-version (eg: 3.3 and 4.1) development.

OpenGL requires many things in its environment, including documentation and tools but what remains the first priority, it's speak and span drivers so that OpenGL doesn't stick to a bunch of OpenGL fans (including me!:)) or remains under-used by the programmer masses where 3Dsmax is a perfect example of a good Direct3D renderer next to an old fashion and ways behind OpenGL renderer. (It might have changed since 3Dsmax 2010 but I have some doubts).

Drivers: AMD Catalyst 11.1a (26/01/2011)AMD Catalyst 11.2 (15/02/2011)nVidia Forceware 266.58 (18/01/2011)nVidia Forceware 266.77 (17/02/2011)
410-program-varying-gtcA specification fix would be greatA specification fix would be greatA specification fix would be greatA specification fix would be great
410-program-separate-dsa-gtcA debug output warning would be niceA debug output warning would be niceA debug output warning would be niceA debug output warning would be nice
410-fbo-multisample-dsa-gtcglTextureImage2DMultisample not available as specify by OpenGL...glTextureImage2DMultisample not available as specify by OpenGL...glTextureImage2DMultisample not available as specify by OpenGL...glTextureImage2DMultisample not available as specify by OpenGL...
400-sampler-array-gtcNot supported as OpenGL specify...Not supported as OpenGL specify...A GLSL compiler warning would be niceA GLSL compiler warning would be nice
400-buffer-uniform-shared-gtcNot supported as OpenGL specify...Not supported as OpenGL specify...A GLSL compiler warning would be niceA GLSL compiler warning would be nice

On the regard of these feature requests/specification bugs, the result hasn't changed since last month. I have added a sample that test the presence of glTextureImage2DMultisample which remains missing and undefined in both implementations as expected.

Both AMD and nVidia like to make implementation decision of their own and sometime it's pretty tricky no to do it or it requires a large amount of efforts. I personnally think that this not a bad thing as far as we can ensure, in some ways, maximum OpenGL conformance and what OpenGL is meant for: cross-platform development. I said it in the past either on these pages or on OpenGL.org forums but I think that a way to go is to create propriatary profile where AMD and nVidia could do whatever they want. There is a lot of cases where programmers only develop on nVidia because all the company computer run on nVidia and sometime they even run with the exact same GPU. Using all nVidia can get on such system, sounds like a good choice on such dedicated scenario. I am taking nVidia example because I have an example in mind for this but I guess it could be AMD as well if the drivers keep making progress. Proprietary profile would be another way to promote innovations but the core profile would remain the common aggrement and thus the heart of OpenGL.

GLM 0.9.1.0 released >
< OpenGL Samples Pack 4.1.5.0 released
Copyright Christophe Riccio 2002-2013 all rights reserved
Designed for Chrome 9, Firefox 4, Opera 11 and Safari 5