The driver is very slow with Kicad
Alex Deucher
alexdeucher at gmail.com
Mon Nov 28 13:32:13 PST 2011
On Mon, Nov 28, 2011 at 4:23 PM, Element Green
<element at elementsofsound.org> wrote:
> On Mon, Nov 28, 2011 at 12:53 PM, Alex Deucher <alexdeucher at gmail.com>
> wrote:
>>
>> On Mon, Nov 28, 2011 at 3:33 PM, Element Green
>> <element at elementsofsound.org> wrote:
>> > Hello,
>> > I happened upon this thread when searching for information on slow
>> > performance with Kicad and the open source radeon driver.
>> > http://lists.x.org/archives/xorg-driver-ati/2011-August/021077.html
>> > I have a ATI/AMD HD 5800 series video card in my laptop. I've also been
>> > rather impressed with the open source driver, even compared to Catalyst
>> > (which seems to suffer from many problems, especially with gnome 3). So
>> > I'm
>> > very keen on getting Kicad to be usable with it.
>> > After doing a lot of profiling with sysprof, oprofile and gprof, I
>> > discovered that the open source radeon driver works acceptably when the
>> > radeon Kernel module is not loaded. I discovered this when I was trying
>> > to
>> > switch back to the open source driver from Catalyst and there was an
>> > issue
>> > with the Kernel module loading.
>> > From what I can tell from /var/log/Xorg.0.log there is some rather
>> > significant initialization differences when the radeon Kernel module has
>> > not
>> > been loaded. I tried disabling dri and dri2 to see if they were the
>> > culprit, but that makes Xorg non functional (weird square block for a
>> > mouse
>> > cursor over a black or corrupted display). I also tried disabling many
>> > other extensions and modules (Render, glx, Composite), but none of them
>> > seemed to be causing the issue.
>> > Does this lend any information in regards to what could be causing the
>> > poor
>> > performance with Kicad? Any ideas what different code paths could be
>>
>> When you don't load KMS, you disable acceleration so you are getting
>> software rendering. Adding:
>> Option "NoAccel" "True"
>> to the device section of your xorg.conf should produce the same
>> effect. IIRC, Kicad uses certain operations that are not accelerated
>> which causes a fallback to software rendering. This ends up being
>> slower than pure sw rendering due to ping-ponging between GPU and CPU
>> memory and waiting for the gfx pipe to drain.
>>
>> Alex
>>
>
> Hello Alex,
> I just gave that a try just before getting your email (a diff between the 2
> Xorg logs made it obvious) and it did indeed speed things up. Previously
> using xtrace I got a list of X protocol drawing primitives being used
> (listed below, with the number of calls in my test run). What extension or
> module would acceleration of these operations fall under? EXA, Render, or
EXA is not an extension itself. It's a framework drivers can use to
accelerate core X rendering and the render protocol.
> ?? I'm a pretty competent programmer, but have never worked with Xorg and
> find the sheer number of different extensions, deprecated extensions, etc to
> be rather confusing. I'd like to have a crack at adding acceleration for
> the missing operations. Any idea why they are missing for this card? Has
> AMD released enough info for this type of effort?
Yes.
> Also if you have any tips
> on how I can tell if a given operation is accelerated or not, that would be
> great.
Profiling the app and finding out where most of the time is being
spent should help you narrow down where the problem is. I could be a
special case that the driver does not support, or more likely, a case
that EXA itself does not support.
Alex
> Thanks for the helpful info!
> Element Green
>
> Some of the protocol operations gleaned using xtrace for Kicad test run:
> 1035 CopyArea
> 1072 op=Over(0x03)
> 1168 GetInputFocus
> 1193 FreePicture
> 1231 CreatePicture
> 1439 FillRectangles
> 1616 FreePixmap
> 1655 CreatePixmap
> 2064 coordinate-mode=Origin(0x00)
> 3235 PolyFillArc
> 4467 SetClipRectangles
> 8443 FillPoly
> 9526 PolyRectangle
> 10374 PolyFillRectangle
> 13094 PolyArc
> 31302 PolySegment
> 39269 PolyPoint
> 54587 ChangeGC
> 59700 PolyLine
>
More information about the xorg-driver-ati
mailing list