It does sound like a potentially worthwhile idea, but it would be great to see data about how large the performance increase can be.
I checked, Mesa supports it. (Open-source Linux drivers).
I've just added a proposal for adding ANGLE_instanced_arrays to WebGL to allow geometry instancing:
This extension is a stripped-down version of ARB_instanced_arrays that can be easily-implemented on top of Direct3D 9.
It can be used by setting a divisor, n, on certain vertex attribs. Then when drawing multiple instances of a certain piece of geometry, those vertex attributes will keep the same value for every vertex in an entire instance. After drawing n instances, it will move on to the next value for that attrib.
- All Direct3D 9 hardware with Shader Model 3.0 supports it
- Supported through ANGLE on windows.
- Supported on OS X Lion on all machines, and on Snow Leopard on most machines
- Supported on NVIDIA's linux drivers, and probably ATI's
This is more difficult, as no mobile device that I know of supports geometry instancing. This could be supported using pseudo-instancing, but that would require either keeping a shadow copy of every vertex buffer in case it's used as instanced data, or performing a complicated and expensive readback to get at that data.
Does this seem like a worthwhile extension to people?