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.

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-varying gl_PerVertex redeclaration involves compiler errors... gl_PerVertex redeclaration involves compiler errors... 410-program-separate gl_PerVertex redeclaration involves compiler errors... gl_PerVertex redeclaration involves compiler errors... 410-program-binary Will 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-5 gl_PerVertex redeclaration involves compiler errors... gl_PerVertex redeclaration involves compiler errors... 410-primitive-tessellation-2 gl_PerVertex redeclaration involves compiler errors... gl_PerVertex redeclaration involves compiler errors... 410-primitive-instanced Unexpected warning Unexpected warning 410-fbo-rtt-dsa-ext 410-fbo-multisample-dsa-ext 410-fbo-layered Unexpected warning Unexpected warning 410-debug-output-arb AMD_debug_output support only AMD_debug_output support only 400-transform-feedback-object 400-texture-compression-arb 400-texture-buffer-rgb 400-sampler-gather 400-sampler-fetch With some uses of max or clamp, the result is not correct! 400-sampler-array 400-program-varying-structs 400-program-varying-blocks Unexpected warning / gl_in.length() not fully supported Unexpected warning / gl_in.length() not fully supported 400-program-subroutine 400-program-64 400-primitive-tessellation Unexpected warning Unexpected warning 400-primitive-smooth-shading Unexpected warning Unexpected warning 400-primitive-instanced Unexpected warning Unexpected warning 400-fbo-rtt-texture-array 400-fbo-rtt 400-fbo-multisample 400-fbo-layered 400-draw-indirect 400-buffer-uniform Unsupported uniform block array Unsupported uniform block array 400-blend-rtt 330-texture-array Required glTexParameteri to setup filtering, sampler unsupported Required glTexParameteri to setup filtering, sampler unsupported 330-sampler-object Sampler object doesn't always oversede texture parameters Sampler object doesn't always oversede texture parameters 330-fbo-multisample Require to set the filtering to the texture object instead of the sampler object 330-fbo-multisample-custom-resolve Scissor test not disable when requested 330-fbo-mipmaps Scissor test ignored by glClearBuffer Scissor 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-fetch AMD doesn't support the GLSL extension mechanisum AMD doesn't support the GLSL extension mechanisum 330-error-vao A VAO isn't required by nVidia implementation A VAO isn't required by nVidia implementation 330-error-sampler-offset GLSL compiler crash GLSL compiler crash 330-error-sampler-gather AMD doesn't support the GLSL version mechanisum AMD doesn't support the GLSL version mechanisum 330-error-conv Use GLSL 4.10 implicit conventions Use GLSL 4.10 implicit conventions Use GLSL 4.10 implicit conventions Use 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-gtc A specification fix would be great A specification fix would be great A specification fix would be great A specification fix would be great 410-program-separate-dsa-gtc A debug output warning would be nice A debug output warning would be nice A debug output warning would be nice A debug output warning would be nice 410-fbo-multisample-dsa-gtc glTextureImage2DMultisample 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-gtc Not supported as OpenGL specify... Not supported as OpenGL specify... A GLSL compiler warning would be nice A GLSL compiler warning would be nice 400-buffer-uniform-shared-gtc Not supported as OpenGL specify... Not supported as OpenGL specify... A GLSL compiler warning would be nice A 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.