Painfully slow GL_XOR and GL_BLEND in Mesa

Does anyone know why glEnable(GL_BLEND) or glEnable(GL_COLOR_LOGIC_OP)
make Mesa so painfully slow? I swear it feels like there’s a round trip
X call for every pixel drawn. They both work at a much more reasonable
pace in the Microsoft and Apple software drivers. Is there some trick
to this for Mesa? I’m trying to use glLogicOp(GL_XOR) to highlight a
piece of geometry like the front track piece in the train picture here:

http://ldglite.sourceforge.net

I suppose I could use an unblended “magic halo” approach instead of the
GL_XOR, but I’d prefer not to if possible.

If it helps any, the source in question is here, in function XORcurPiece():

http://cvs.sourceforge.net/cgi-bin/viewc…viewcvs-markup

Watch out, it’s pure spaghetti.