Both AMD and nVidia have just released 'official' OpenGL 4.0 drivers in their 'stable' drivers. The OpenGL Samples Pack is far from exhaustive but explores lot of the new OpenGL 3.3 and 4.0 features which makes it a good start to test the drivers. Consequently, I decide to give them a try but I also made my test with the early preview/beta drivers to see the progress of the implementations.
If it does matter, the tests have been done on a Radeon 5850 and a GeForce GTX 470.
The following table gives you the results I got which brings several conclusions. The drivers haven't progress at all from the beta to the official version neither on AMD nor nVidia side. Currently the state of the nVidia drivers is better than AMD drivers as most nVidia problems have work form solutions. Beside few things at the big feature level doesn't work on nVidia drivers. On AMD side I quite find it hard to call it OpenGL 4.0 drivers... The AMD OpenGL team have been really willing to fix most of the problems I reported so that I expect the drivers to step up soon. Actually the main problem on AMD drivers is the conditional rendering (an OpenGL 3.0 feature!). Sometime it works but sometime it just freeze the computer which implies a hard reset... My programming experience would say that it looks like a multithreading issue which might be terribly awful to fix. (It might be something else, I don't have any clue!) Both AMD and nVidia have some really weird texture parameters behaviors so that if default min mag parameters are used sometime it works sometime is doesn't. Actually, it has been a long time problem however we don't need those to set most of texture parameters anymore... as there are part of the sampler object!
Do you want to start working with OpenGL 4.0? At least you are warned now. :p For the OpenGL Samples Pack 4.0.1.x, I expect to build some more exigent samples.
Drivers: | AMD Catalyst 10.3 preview | AMD Catalyst 10.6 | nVidia Forceware 197.44 | nVidia Forceware 257.21 |
---|---|---|---|---|
400-transform-feedback-object | glDrawTransformFeedback doesn't work | glDrawTransformFeedback doesn't work | ||
400-sampler-gather | ||||
400-sampler-fetch | Require textureQueryLOD instead of Lod | Require textureQueryLOD instead of Lod | ||
400-program-subroutine | Doesn't select subroutine | Doesn't select subroutine | ||
400-program-tessellation | No glPolygonMode | No glPolygonMode | ||
400-primitive-instanced | ||||
400-draw-indirect | ||||
400-buffer-texture-rgb | TBO fetch not correct | TBO fetch not correct | ||
400-blend-mrt | ARB functions instead of core | ARB functions instead of core | Min/mag tex param required | Min/mag tex param required |
330-vao | ||||
330-transform-feedback | ||||
330-test-scissor | ||||
330-sampler-wrap | ||||
330-sampler-swizzle | ||||
330-sampler-object | ||||
330-sampler-filter | ||||
330-sampler-fetch | ||||
330-sampler-anisotropy-ext | ||||
330-rasterizer-viewport | ||||
330-query-timer | Accuracy issue? | Accuracy issue? | ||
330-query-occlusion | ||||
330-query-conditional | Freeze computer! | Freeze computer! | ||
330-primitive-shader | ||||
330-image-rect | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-image-array | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-image-2d-compressed | Min/mag tex param required | Min/mag tex param required | ||
330-image-2d | Min/mag tex param required | Min/mag tex param required | ||
330-fbo-texture-multisample | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-fbo-srgb | Min/mag tex param required | Min/mag tex param required | ||
330-fbo-multisample | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-fbo-mrt | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-fbo-mipmaps | ||||
330-fbo-blit | ||||
330-draw-range | ||||
330-draw-multiple | ||||
330-draw-instanced-array | ||||
330-draw-instanced | ||||
330-draw-elements | ||||
330-draw-base-vertex | ||||
330-buffer-update | ||||
330-buffer-uniform | ||||
330-buffer-type | ||||
330-buffer-texture | Unexpected warnings | Unexpected warnings | ||
330-blend-mrt | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required | Min/mag tex param required |
330-blend-index |
And this was the 300th post on G-Truc Creation!
UPDATED: Thanks to some feedbacks by nVidia, I have updated the samples and the results.