I can confirm that the problem DOES reproduce with the 'nv' X driver (assuming his stack trace is the same as mine):
#0 0x0000000801d37134 in NVSync ()
#1 0x00000008035f3008 in XAAGlyphs ()
#2 0x0000000000506fdf in DamageExtensionInit ()
#3 0x00000000004fd1df in RenderExtensionInit ()
#4 0x0000000000445e3d in Dispatch ()
#5 0x000000000042eae5 in main ()
Looking at NVSync in the xaa bit of the 'nv' driver (nv_xaa.c), I found this:
void NVSync(ScrnInfoPtr pScrn)
NVPtr pNv = NVPTR(pScrn);
while(READ_GET(pNv) != pNv->dmaPut);
Two big ole' while loops that look like prime candidates for gobbling up CPU cycles.
Are there similar loops in the proprietary drivers?