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: | 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.