glMultiDrawElementsIndirect is the pinnacle of OpenGL. It’s the fastest way to draw geometry because it allows you to serialize draw calls, put them in a buffer, upload it to the GPU and have a GPU-side loop execute the draw calls. This almost completely removes the need for batching geometry, as instead of a few thousand glDraw* calls per frame we can now get up to the equivalent of one million glDraw* calls per frame at 60Hz. Combined with 96bit-texture-handles and/or sparse-texture-arrays, this means most games posted on JGO could be rendered with a single call to glMultiDrawElementsIndirect. The more advanced games would need a couple more, due to switching FBOs, switching blend modes, and similar things.
Sadly, my AMD 6950 doesn’t fully support it in hardware (requires 7xxx) so I couldn’t use gl_DrawID in GLSL, which is invaluable as with it you can determine which draw-call you’re in. So I faked it using instance-attributes, and wrote the demo to see whether it worked. For example: you could use gl_DrawID to select another texture, which means there won’t be any glBindTexture calls to break up your draw calls. This is however the most basic of optimisations, but none the less it will have a massive impact on performance.