Nobody else brave enough to make a comment?
Right now I'm target Quake2, the lattice screensaver, and GTA3 as performance targets. Right now Quake2 at 800x600 is about 32.4 fps with texture quality slider at the default 90%.
The source now to big to post here, I will upload to github at some point.
**What changed since v10.449.** From v10.450 to v10.479 the work was Direct3D for GTA3 and 3DMark2001. The vertex path got faster (TEXONLY, FASTVV, PFVV2, TEXHINT), and indexed triangle lists go to the engine as indexed packets (`ACCEL_D3D_INDEXED`, with a vertex area in video memory). The command ring got more robust (`RINGPROG`, `RINGCAP`, ring waits counted by length). Textures can now be render targets (`RTTEX`, ARGB8888 targets), and a copy into or out of one no longer waits for the engine first (`RTNOWAIT`; GTA3's per-frame copy went from 2.94 to 0.43 ms). A stale `VXGL.DLL` was found to be behind the screen saver lockup. VXFETCH, VXFORMAT and VXRTT were added as test tools, and a review round in v10.479 fixed the render-target and flip error paths.
From v10.480 to v10.493 the work moved to OpenGL's CPU-side vertex work, with Lattice as the target:
- **Flat shading on the engine:** flat strips go to the engine as strips, with the engine's first-vertex colouring, and from v10.492 without copying the vertices.
- **Mesa's own stages:** faster float-to-integer conversion, square roots by SSE, a single lighting loop, and strips split at the window's edge.
- **The SSE pass:** one pass per vertex that does transform, clipping, lighting, fog and output four vertices at a time. It now skips draws wholly outside the view (also from a bounding box), does the specular lookup and byte packing in SSE, and keeps its setup between draws.
- **Strip output:** a culling run that appends one vertex per triangle.
- **Two real Mesa 7.0.3 bugs fixed:** a read of a freed buffer after a display list is deleted, and per-vertex materials read from the wrong place.
- **VXFLAT:** checks every switch against the template pixel for pixel.