Last month, I didn't bother writing an OpenGL drivers status as both AMD and NVIDIA drivers reports were exactly the same as March. This month is completely different music as both AMD and NVIDIA has make good progress in their drivers, Catalyst 11.5b hotfix and Forceware 275.27. Both drivers have been tested against a version of the OpenGL Samples Pack still in development and to be released.
Drivers: | AMD Catalyst 11.4 preview 2 (23/03/2011) | AMD Catalyst 11.5a hotfix (26/05/2011) | NVIDIA Forceware 270.51 (30/03/2011) | NVIDIA Forceware 275.27 (17/05/2011) |
---|---|---|---|---|
410-texture-image-ext | No even nearly working | Black screen | ||
410-texture-barrier-nv | ||||
410-sampler-fetch-dsa-ext | ||||
410-program-varying | ||||
410-program-separate | ||||
410-program-binary | ||||
410-program-64 | ||||
410-primitive-tessellation-5 | Lot of error C5041: cannot locate suitable resource to bind paramter "null atom" | Rendezvous by location not supported on blocks | ||
410-primitive-tessellation-2 | Rendezvous by location not supported on blocks | Rendezvous by location not supported on blocks | Lot of error C5041: cannot locate suitable resource to bind paramter "null atom" | Rendezvous by location not supported on blocks |
410-primitive-bindless-nv | ||||
410-fbo-rtt-dsa-ext | ||||
410-fbo-multisample-dsa-ext | ||||
410-fbo-layered | Unexpected warning | |||
410-debug-output-arb | AMD_debug_output support only | |||
400-transform-feedback-object | ||||
400-texture-compression-arb | ||||
400-texture-buffer-rgb | ||||
400-sampler-gather | ||||
400-sampler-fetch | ||||
400-sampler-array | ||||
400-program-varying-structs | ||||
400-program-varying-blocks | Unexpected warning / gl_in.length() not fully supported | |||
400-program-subroutine | ||||
400-program-64 | ||||
400-primitive-tessellation | Unexpected warning | |||
400-primitive-smooth-shading | Unexpected warning | |||
400-primitive-instanced | 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 | |||
330-sampler-object | Doesn't handle more than one slot | |||
330-fbo-srgb | An scissor test optimizations introduce a rendering bug | An scissor test optimizations introduce a rendering bug | ||
330-fbo-multisample | ||||
330-fbo-multisample-custom-resolve | Drivers high on drugs with "optimizations" | |||
330-fbo-mipmaps | An scissor test optimizations introduce a rendering bug |
On AMD side the great news is that the sampler object is finally 100% functional! The clear buffer + scissor test issues has been fixed for one part but when it comes to rendering to a sRGB framebuffer rendering bugs appears showing some block of 8 by 8 pixels whose conversions to the linear space haven't been performed. Uniform block array remains a problem but even if these tests doesn't show it, some problems as been fixed.
With the sampler object being fixed, the best news with this release comes from the support support of ARB_debug_output extension. It behaves exactly the NVIDIA implementation so there is no surprise here: The extension is only available when a debug OpenGL context is created. The asynchrone mode isn't actually supported so that when we call glEnable(GL_ARB_DEBUG_OUTPUT_SYNCHRONIZE) the output stream is returned like it was before, synchronized. However enabliing the debug context involves many GLSL compiler crashes and working with ARB_debug_output will imply a serie of ping-pong between debug mode or not.
On NVIDIA side the support of OpenGL 4.1 is nearly completed or actually maybe complete already but I am being peaky. Effectively the OpenGL 4.1 specification is really inacurate when it comes to shader matching rules, that is to say how the output of a program stage match with the input of the program stage. This is actually true especially for separate programs and matching by location introduced in OpenGL 4.1. On the current release, so far the only remaining issues are matching by location on in/out block and structures. If we match by name it works and we can expect this to be fixed shortly. Separate programs are in many ways left unspecify and just like I was expecting in the conclusion of my OpenGL 4.1 review, we can expect many divergences from implementation to implementation and it might be what happen for AMD and NVIDIA but this is also something that would required to be checked carefully in aother future implementations.