-
This in an updated version of the test I posted, now split into 8 tests sharing a common header file. It now features testing of multiple render targets and fog. Test output logs and results on GeForce 8xxx, GTX 2xx or ideally GTX 4xx with the proprietary drivers would be really welcome. The files are put in "spec/arb_color_buffer_float" with the idea of starting a convention of writing testsuites for each new extension to be implemented in Mesa, putting it in "spec/<extension_name>". The tests now fail on any bugs in the default mode. If "-xfail" is passed, then known bugs on ATI and nVidia will be ignored, and all tests will then succeed. The driver bugs don't seem due (solely) to hardware limitations, but may be due to software fallbacks being improperly implemented. There are two areas where the specification seems unclear, as far as I understand it. I'm not sure what the process to ask for clarification is, and suggestions would be welcome here. This first issue is whether, when fragment clamping is set to FIXED_ONLY and the FBO has some fixed-point and some floating-point buffers attached, gl_FragData[n] is never clamped, or is clamped only for the fixed point buffers. Note that while blending on fixed-point clamps the color anyway, alpha test and polygon smoothing happen before blending, and should be affected by whether gl_FragData[n] is clamped or not. From the OpenGL 4.1 spec, it seems that the intent is that fragment clamping does not depend on the target, especially because it can be bound dynamically due to user-defined varyings. None of the hardware I have access to supports such dishomogeneous FBOs, so I have no idea what the proprietary drivers do. Current nVidia cards might shed light on this. The second issue is whether disabling fragment clamping disables the clamping done before fog application in fragment shaders with ARB_fog_* options (or whether this is undefined) This happens in the fixed pipeline, but making it happen for shaders too would contradict the rationale of adding ARB_fog_* to shaders, which is to avoid recompilation. All the hardware I have access to has fixed function fog (all existing Radeons seem to have it), and here the disabling applies to fragment programs too, as a "naive" implementation would result in. Again, current nVidia cards might shed light on this.
15141eeb