But I still don’t understand why removing them is a good idea. Using DLs in some situations and VBOs in others would not be a perfect fit ?
Display lists under ATI hardware doesn’t provide performance boosts over VBOs. Now, there are one of two reasons for this. Either ATI’s VBO implementation is optimal for their hardware, or ATI simply uses VBOs (or the equivalent back-end) in display lists. Either way, display lists are no guarantee of acceptable performance.
The technical reason to remove DLs (among other things) is so that there will be a single rendering path for submitting geometry to OpenGL. This means that IHVs can optimize a single basic rendering flow. This means that users know what is the optimal path and don’t have to guess or put in vendor-specific code. And if that path is not optimal for API reasons, then ARB members can’t just gloss over it; they have to recognize the problem and correct it in the API.
Reality set in, and the ISVs/vendors flat said that plan was ridiculous, so it was canned. Thus the existence of the COMPATIBILITY profiles which don’t deprecate anything. Display lists are still there.
By “Reality” of course, you mean that Mark Kilgard said, “this won’t help.” And rather than waiting for the validity of this to actually be tested, ARB_compatibility was shoved through the ARB in 3.1. And then the final sabotaging of removing functionality was complete with the compatibility profile in 3.2.
And I would remind you that Longs Peak, the total API rewrite that would have gone much farther than simple deprecation, was started as a joint ATI/NVIDIA venture.
Also, the use of the term “deprecated” is all wrong. “Deprecation” means that functionality is still available, but it is recommended that it not be used because it is intended to be removed in future versions. In 3.0, display lists are deprecated. In 3.1, display lists are removed, and they remain removed in the core profile of every higher OpenGL version.
Display list perf on NVidia far exceeds anything that’s been possible via VBOs for many batch scenarios for a long time (many years).
Of course, on the ATI side, display lists have never been the preferred path. So if you want a completely inflexible method of vertex submission that will only buy you performance on certain cards (and considering NVIDIA’s recent fumblings, I wouldn’t keep my hopes up for them gaining marketshare in the short-term), then by all means, use display lists.
Also, “far exceeds” is a bit of an exaggeration. NVIDIA display lists are better, but it’s not that huge of a performance difference.