Would you clarify that savings?
The only savings to be had is in the index list size (so in some cases you only need 1 index instead of 3 per triangle; 2 bytes instead of 6 for 16-bit indices).
The problem obtaining this savings is that it presumes you are using a triangle optimizer that leans heavily toward generating contiguous strips AND are using it on a dataset that lends itself to long contiguous strips without fragmenting the mesh (e.g. regular grid). General triangle optimizers that are anal about generating contiguous strips tend to be slow and AFAIK generate suboptimal results for general triangle meshes (TINs). Optimizing for the post-T&L vertex cache is much more important than optimizing index bandwidth, since the latter is very rarely (if ever) a bottleneck, so it’s better to prefer the better triangle optimizer.
Bottom-line: get the best triangle/vertex order you can for post-T&L cache performance first, then reorder verts/indices sequential for pre-T&L cache perf, and then consider whether stripping will help or hurt on top of that.
So I guess I’d interpret and extend your comment to suggest that if a dev is rendering regular grids, yeah, strip away to save a some bytes of index bandwidth since generating optimized triangle order is so simple (just walk back and forth like a drunken sailor). But if you’re doing general triangle meshes, then use the better triangle optimizer and probably forget stripping.
…and even moreso when coupled with features like MultiDraw
As far as I’ve heard, the Multi calls are just loops in the driver on the CPU, so they’re basically separate batches. Minimizing batch breaks is more important than optimizing away a few bytes of index bandwidth.
…or primitive restart. These allow you to send a sequence of strips approximately as efficiently as you would a triangle list.
Though you still have to be careful and don’t just always blindly apply primitive restart. You can end up with an on-average longer index list than if you hadn’t used strips at all, which defeats the whole purpose. Your data and your stripper have to be ammenable to generating contiguous triangle strips with little fragmentation while still being hyper-optimized for the vertex cache (e.g. regular grids).