This month the last release drivers appears to be for GeForce, Forceware 301.10; and for Radeon, Catalyst 12.3 (8.951).
These tests have been done on Windows 7 64 with the OpenGL Samples Pack 4.2.4 branch, still in development, on an GeForce GTX 470 and a Radeon HD 5850.
Drivers Forceware 301.10 brings the support of AMD_multi_draw_indirect, an extension that would have gave a 2011 award for best extension of the year even if I can picture a lot of possible improvements. NVIDIA also exposes the new NV_bindless_texture extension (2012 nomine...) which can be seen as the first virtual texture implementation available. Infortunately this extension is Kepler only so I can't play with it for the moment. NV_shader_atomic_float adds support for 'add' and 'exchance' atomic operations for float values. I haven't tested it yet but it will be part of the OpenGL Samples Pack 4.2.4.
Also it is worth to mention that NVIDIA has put a continuous effort on the debug output implementation which now provides an incredible amount of messages including descriptive errors, warnings and performaces feedback. An outstanding work which is extremely useful for the everyday work of an OpenGL programmer.
AMD released the extension specifications of GL_AMD_vertex_shader_viewport_index and GL_AMD_vertex_shader_layer which gave me the opportunity to write a sample for it. These extensions allow to set the gl_Layer and the gl_ViewportIndex in a vertex shader which avoids the overkill of using a geometry shader for this only purpose.
Now, a disturbing problem that appeared on both AMD and NVIDIA implementations. The respective linkers are no longer reporting the Shader Interface Matching issues like they have to do. This is necesseraly a rescent issue because it's the kind of issues that happen all the time when writing GLSL shader code. Considering that we have no API to query the outputs and the inputs of respectively the vertex shader stage and the fragment shader stage, I think it's at least a major problem.
When both sides of an interface are contained in the same program object, LinkProgram will detect mismatches on an interface and generate link errors.
Once again, don't forget to contribute to the OpenGL community by reporting your bugs!
OpenGL Samples Pack 4.2.4 wip, OpenGL specification tests | AMD Catalyst 12.x preview, 8.96 (14/02/2012) | AMD Catalyst 12.3, 8.951 (29/03/2012) | NVIDIA Forceware 295.73 (22/02/2012) | NVIDIA Forceware 301.10 (23/03/2012) |
---|---|---|---|---|
420-transform-feedback-instanced | ||||
420-texture-storage | Allows an implicit cast on texture coordinates parameter | Allows an implicit cast on texture coordinates parameter | ||
420-texture-pixel-store | ||||
420-texture-conversion | Immutable texture and BC7 conversions is not working | Immutable texture and BC7 conversions is not working | ||
420-texture-compressed | ||||
420-test-depth-conservative | ||||
420-sampler-fetch | ||||
420-memory-barrier | ||||
420-interface-matching | Doesn't detect varying mismatch. glGetAttribLocation fails to return the location here | Doesn't detect varying mismatch. Structure for vertex inputs supported | ||
420-image-unpack | ||||
420-image-store | glClear is skipped for the first frame | glClear is skipped for the first frame | ||
420-image-load | ||||
420-fbo-layered | If a vertex shader declares a built-in block and the geometry shader doesn't the result is undefined. | If a vertex shader declares a built-in block and the geometry shader doesn't the result is undefined. | If a vertex shader declares a built-in block and the geometry shader doesn't the result is undefined. | If a vertex shader declares a built-in block and the geometry shader doesn't the result is undefined. |
420-draw-base-instance | ||||
420-direct-state-access-ext | Unsupported DSA storage functions | Unsupported DSA storage functions | ||
420-buffer-uniform | ||||
420-atomic-counter | ||||
410-program-separate | The implementation doesn't return an error when a built-in block isn't declared | |||
410-program-binary | May crash if the binary is not AMD's | May crash if the binary is not AMD's | ||
410-program-64 | ||||
410-primitive-tessellation-5 | Bug on the shader interface matching: Block member not active with linked separated program | Bug on the shader interface matching: Block member not active with linked separated program | ||
410-primitive-tessellation-2 | ||||
410-primitive-instanced | ||||
400-transform-feedback-stream | layout(triangles) in; must be declared | layout(triangles) in; must be declared | layout(triangles) in; must be declared | layout(triangles) in; must be declared |
400-transform-feedback-object | EXT_transform_feedback extension string missing | EXT_transform_feedback extension string missing | ||
400-texture-buffer-rgb | ||||
400-sampler-gather | ||||
400-sampler-fetch | ||||
400-sampler-array | ||||
400-program-varying-structs | ||||
400-program-varying-blocks | ||||
400-program-subroutine | ||||
400-program-64 | ||||
400-primitive-tessellation | ||||
400-primitive-smooth-shading | ||||
400-primitive-instanced | ||||
400-fbo-rtt-texture-array | ||||
400-fbo-rtt | ||||
400-fbo-multisample | ||||
400-fbo-layered | ||||
400-draw-indirect | ||||
420-debug-output | DebugControl doesn't work, null-terminated strings generate errors | DebugControl doesn't work, null-terminated strings generate errors | ||
400-blend-rtt | ||||
330-transform-feedback-separated | ||||
330-transform-feedback-interleaved | ||||
330-texture-pixel-store | ||||
330-texture-format | SNORM conversion not performed | SNORM conversion not performed | EXT_texture_snorm string missing | EXT_texture_snorm string missing |
330-primitive-point-sprite | Pop free clipping | Pop free clipping | ||
330-fbo-srgb | ||||
330-draw-without-vertex-attrib | ||||
330-buffer-type |
OpenGL Samples Pack 4.2.4-wip, proprietary features | AMD Catalyst 12.x preview, 8.96 (14/02/2012) | AMD Catalyst 12.3, 8.951 (29/03/2012) | NVIDIA Forceware 295.73 (22/02/2012) | NVIDIA Forceware 301.10 (23/03/2012) |
---|---|---|---|---|
420-texture-copy-nv | ||||
420-test-depth-clamp-separate-amd | AMD_depth_clamp_separate not supported | AMD_depth_clamp_separate not supported | ||
420-primitive-bindless-nv | NV_shader_buffer_load not supported | NV_shader_buffer_load not supported | ||
420-fbo-srgb-decode-ext | EXT_texture_sRGB_decode not supported | EXT_texture_sRGB_decode not supported | ||
420-fbo-multisample-position-amd | AMD_sample_positions not supported | AMD_sample_positions not supported | ||
420-fbo-layered-amd | AMD vertex shader layer and AMD vertex shader viewport_index not supported | AMD vertex shader layer and AMD vertex shader viewport_index not supported | ||
420-fbo-multisample-dsa-nv | NV_texture_multisample not supported | NV_texture_multisample not supported | ||
420-draw-indirect-amd | AMD_multi_draw_indirect not supported | |||
420-buffer-pinned-amd | AMD_pinned_memory not supported | AMD_pinned_memory not supported | ||
420-buffer-barrier-gtc | Works as desired | Works as desired | Generates an invalid operation as specified | Generates an invalid operation as specified |
420-blend-op-amd | This is a Radeon 6900+ series feature | This is a Radeon 6900+ series feature | ||
330-fbo-multisample-explicit-nv | ||||
es-200-draw-elements-ext | WGL EXT create context es2 profile not supported | WGL EXT create context es2 profile not supported |