View Single Post
Old 04-02-06, 08:02 PM   #54
xorbe
Unbuffered User
 
Join Date: Jun 2005
Posts: 388
Default Re: Slow AA text rendering in KDE

Stock 6800GT on a 10x250 A64, Mandriva Cooker x86_64.
g++ -O2 -march=k8 -I /usr/lib/qt3/include -L/usr/lib/qt3/lib64 -lqt-mt qtperf.cpp

Driver nvidia 8178 patched for 64-bit 2.6.16-15mdk:
(RenderAccel only helps the AA grey case.)
No-AA:
Painting 10000 strings took: 52 ms
AA grey medium:
Painting 10000 strings took: 12484 ms
Painting 10000 strings took: 93 ms (option "RenderAccel" "1")
AA sub-hinting medium:
Painting 10000 strings took: 12564 ms

Driver nv:
No-AA:
Painting 10000 strings took: 73 ms
AA grey medium:
Painting 10000 strings took: 9093 ms
AA sub-hinting medium:
Painting 10000 strings took: 9196 ms

Driver vesa:
No-AA:
Painting 10000 strings took: 293 ms
AA grey medium:
Painting 10000 strings took: 329 ms
AA sub-hinting medium:
Painting 10000 strings took: 305 ms

Driver nvidia on Ti 4200:
No-AA:
Painting 10000 strings took: 50 ms
AA grey medium:
Painting 10000 strings took: 8136 ms
AA sub-hinting medium:
Painting 10000 strings took: 8179 ms

Driver nvidia on FX 5900XT:
No-AA:
Painting 10000 strings took: 51 ms
AA grey medium:
Painting 10000 strings took: 8027 ms
AA sub-hinting medium:
Painting 10000 strings took: 8070 ms

Driver radeon on ATi Radeon 9600:
No-AA:
Painting 10000 strings took: 75 ms
AA, grey:
Painting 10000 strings took: 306 ms
AA, sub-hinting:
Painting 10000 strings took: 7374 ms

Driver via on 1GHz VIA Nehemiah w/integrated Castlerock (Mandriva cooker, 2.6.16-15mdk again)
No-AA:
Painting 10000 strings took: 1482 ms
AA grey medium:
Painting 10000 strings took: 2512 ms
AA sub-hinting medium:
Painting 10000 strings took: 1980 ms

Driver vesa on 1GHz VIA Nehemiah w/integrated Castlerock:
No-AA:
Painting 10000 strings took: 1714 ms
AA grey medium:
Painting 10000 strings took: 2220 ms
AA sub-hinting medium:
Painting 10000 strings took: 1756 ms

Clearly all the back-ends except "vesa" have problems. VIA seems to be consistent too (yes, it's a *slow* machine). I visually verified that vesa was actually doing AA.

Also, put a printf in the main loop, and note that qtperf hangs every ~2000 paints in nvidia's slow cases.

I have the kwrite versus kedit speed issue answer. I looked at the source code for KDE 3.5.2 -- kedit draws the screen line by line -- that's "fast enough" even with poor AA performance. But kwrite/kate appear to draw character by character -- and that trips over the nVidia performance issue. (A KDE dev claims this is fixed for 4.0 version.) For the curious, search for drawText within:
konstruct/kde/kdelibs/work/kdelibs-3.5.2/kate/part/katerenderer.cpp
konstruct/kde/kdeutils/work/kdeutils-3.5.2/kedit/kedit.cpp

btw, gtk is WORSE than qt! Here's the 6800GT on gtk+2.0-2.8.16:

No-AA:
Painting 10000 strings took: 7126 ms
AA grey medium:
Painting 10000 strings took: 12511 ms
AA sub-hinting medium:
Painting 10000 strings took: 11129 ms

Last edited by xorbe; 04-03-06 at 02:09 AM.
xorbe is offline   Reply With Quote