Hi guys,

I'm not sure this is specific to the invalidate / expose model stuff, or
the cairo code. I suspect not, however I've been seeing some real
performance problems dragging around components with lots of text with
the current git HEAD code.

I've tracked this down to the fact that the path in my Xorg server which
is being hit for lines produced with gdk_draw_line() is not accelerated
for non-horizontal / non-vertical lines (using the default "EXA"
acceleration architecture in the X server).

(EXA has been default for a while now, although I can't remember what X
server / Intel driver combination made that the case). I'm not sure what
other drivers will be like, but I think the issues is the core EXA code.

It seems that the particular combination of X server + Intel driver
which I'm running (quite new, and not stable yet), incurs a severe
performance penalty for pixmap migration, so I'm really noticing this
non-accelerated path when we draw lots of little lines for text. (I
don't notice it when using the development gschem + pango code which
uses accelerated paths for drawing glyphs).

The solution in my case (without pango yet), was to switch
o_line_draw_place() to use cairo, which then uses the XRender extention
and hits lots of nice fast-paths in the X server. It has been on my todo
list to get all the "place", "rubber" and "stretch" drawing operations
to use cairo (for consistency), however I'd be interested to hear if
anyone else notices a performance problem with the old code - which is
fixed by this new stuff.

Please give the "cairo_place_lines" branch a test in my repo.or.cz
repository and report how that changes performance placing / moving
components.

git clone git://repo.or.cz/geda-gaf/pcjc2.git
(Or "git fetch" if you have it already)
git checkout -b cairo_place_lines origin/cairo_place_lines

Best regards,

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)



_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to