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:

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():…viewcvs-markup

Watch out, it’s pure spaghetti.