31/03/2012 March 2012 OpenGL drivers status

This month the last release drivers appears to be for GeForce, Forceware 301.10; and for Radeon, Catalyst 12.3 (8.951).

The test

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. OpenGL 4.2 core specification - Shader Interface Matching

  • White: Unsupported or untested.
  • 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!

Once again, don't forget to contribute to the OpenGL community by reporting your bugs!

OpenGL Samples Pack 4.2.4 wip, OpenGL specification testsAMD 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-storageAllows an implicit cast on texture coordinates parameterAllows an implicit cast on texture coordinates parameter
420-texture-pixel-store
420-texture-conversionImmutable texture and BC7 conversions is not workingImmutable texture and BC7 conversions is not working
420-texture-compressed
420-test-depth-conservative
420-sampler-fetch
420-memory-barrier
420-interface-matchingDoesn't detect varying mismatch. glGetAttribLocation fails to return the location hereDoesn't detect varying mismatch. Structure for vertex inputs supported
420-image-unpack
420-image-storeglClear is skipped for the first frameglClear is skipped for the first frame
420-image-load
420-fbo-layeredIf 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-extUnsupported DSA storage functionsUnsupported DSA storage functions
420-buffer-uniform
420-atomic-counter
410-program-separateThe implementation doesn't return an error when a built-in block isn't declared
410-program-binaryMay crash if the binary is not AMD'sMay crash if the binary is not AMD's
410-program-64
410-primitive-tessellation-5Bug on the shader interface matching: Block member not active with linked separated programBug on the shader interface matching: Block member not active with linked separated program
410-primitive-tessellation-2
410-primitive-instanced
400-transform-feedback-streamlayout(triangles) in; must be declaredlayout(triangles) in; must be declaredlayout(triangles) in; must be declaredlayout(triangles) in; must be declared
400-transform-feedback-objectEXT_transform_feedback extension string missingEXT_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-outputDebugControl doesn't work, null-terminated strings generate errorsDebugControl 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-formatSNORM conversion not performedSNORM conversion not performedEXT_texture_snorm string missingEXT_texture_snorm string missing
330-primitive-point-spritePop free clippingPop free clipping
330-fbo-srgb
330-draw-without-vertex-attrib
330-buffer-type
OpenGL Samples Pack 4.2.4-wip, proprietary featuresAMD 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-amdAMD_depth_clamp_separate not supportedAMD_depth_clamp_separate not supported
420-primitive-bindless-nvNV_shader_buffer_load not supportedNV_shader_buffer_load not supported
420-fbo-srgb-decode-extEXT_texture_sRGB_decode not supportedEXT_texture_sRGB_decode not supported
420-fbo-multisample-position-amdAMD_sample_positions not supportedAMD_sample_positions not supported
420-fbo-layered-amdAMD vertex shader layer and AMD vertex shader viewport_index not supportedAMD vertex shader layer and AMD vertex shader viewport_index not supported
420-fbo-multisample-dsa-nvNV_texture_multisample not supportedNV_texture_multisample not supported
420-draw-indirect-amdAMD_multi_draw_indirect not supported
420-buffer-pinned-amdAMD_pinned_memory not supportedAMD_pinned_memory not supported
420-buffer-barrier-gtcWorks as desiredWorks as desiredGenerates an invalid operation as specifiedGenerates an invalid operation as specified
420-blend-op-amdThis is a Radeon 6900+ series featureThis is a Radeon 6900+ series feature
330-fbo-multisample-explicit-nv
es-200-draw-elements-extWGL EXT create context es2 profile not supportedWGL EXT create context es2 profile not supported
Poll: Which versions of OpenGL are you programming with? >
< Internship offer to work on a Southern Islands demo
Copyright Christophe Riccio 2002-2016 all rights reserved
Designed for Chrome 9, Firefox 4, Opera 11 and Safari 5