The difference?
Well, the same program, same data set etc
- With driver generated fragment program; 222fps - 7.18MTri/sec
- With simple one line fragment program; 2866fps - 91.41MTri/sec
God knows why, but on the Cat6.2 drivers from ATI you take a terrible hit everytime you rebind the shader. When I just set the shader once at the start of the program (without a custom fragment shader) I get the same results as rebinding every frame with a custom fragment program.
Seriously, don't do it!