From: F. <jrf...@tu...> - 2003-04-05 01:40:33
|
On Fri, Apr 04, 2003 at 05:13:44PM -0800, Ian Romanick wrote: > Realistically, either hardware or software uses either > array-of-strctures or structure-of-arrays. Most hardware uses the > former. At that point it becomes a matter of, for a given state vector, > what's the offset in the structure of an element? The assembly code in > the radeon & r200 drivers handles this very nicely. You're forgetting the data type. Perhaps recent hardware only uses unsigned chars for color and floats for the rest, but on older hardware (such as Mach64) you have quite a mix of floating point, integer, and fixed point datatypes... > >The things I found more interesting in the issue of applting the TCL > >operations on all the vertices at once, or a vertice at each time. From > >previous discussions on this list it seems that nowadays most > >of CPU performace is dictated by the cache, so it really seems the later > >option is more efficient, but Mesa implements the former (they are even > >called "pipeline stages") and to change would mean a big overhaul of the > >TnL module. > > This would be very, very, very tricky. We'd basically need several > different super-loops depending on the GL state vector. The super-loops > would go in the pipeline at the same place where the hardware TCL > functions go. If the super-loop could do all the processing, the > following TCL stages would be skipped. This kind of thing is already done in the vertex buffer construction with templates whose sections are #ifdef'd out for each "super-loop" according do the state it's meant for. If we used C++ for this we could use templates to instantiante classes for all vertex format and TCL operations combinations possible. > Before going down that road we'd want to sit down with oprofile and a > bunch of applications to decide which sets of state we wanted to tune > for. IMHO, we'd be better to spend our time writing a highly optimized > just-in-time compiler for ARB_vertex_program. Then we could just write > vertex programs for the different "important" state vectors and let the > compiler generate the super-loop. Of course, there are still "issues" > with vertex programs. :( José Fonseca |