After some googling it looked like it was a Mesa bug. So I built the latest version of mesa (6.5.2), but that didn't work because I had to use a newer version of libdrm. So then I built Mesa version 6.5 and now all is happy! Thought I'd post the i915_dri.so that I compiled in case someone else needs it.ERROR! sizeof(I830DRIRec) does not match passed size from device driver
By the way, the 945gm uses the i810 kernel module and in the xorg.conf, puppy correctly sets it that way.
I did a "strip --strip-unneeded" to the file (it was 19MB). If it doesn't work stripped like this let me know and I'll upload it else where.