X11 test renderer

Ray Strode halfline at gmail.com
Sat Oct 3 19:16:03 PDT 2009


Hi,

On Sat, Oct 3, 2009 at 7:47 PM, Charlie Brej <plymouth at brej.org> wrote:
> On 03/10/09 21:10, Ray Strode wrote:
>>
>> What theme are you testing with?
>
> Sry for delay. All of them but the solar seems the worst affected.
> Spinfinity gives X at 93% but it is still smooth. Solar takes X up to 98%
> and less than 1% is in plymouthd, and takes about 5 seconds per frame.

Solar is really surprising for me.  It's doing so much client side
processing, I'd expect plymouthd to be near 100% and not the X server.

We're hitting some driver wonkiness I think.  I know older versions of
the nvidia driver had problems doing Over blends in a loop, see:

https://bugzilla.gnome.org/show_bug.cgi?id=552859
and
https://bugzilla.redhat.com/show_bug.cgi?id=465699

But those problems got fixed in a later revision of the driver.
Besides we're not doing blending here, just the equivalent of
XPutImage basically.

In your Xorg.0.log do you see:

EQ overflowing. The server is probably stuck in an infinite loop.

?

>> There are two changes, I'd like you to try if you don't mind.
>>
>> 1) get rid of the cairo_push_group () / cairo_pop_group_to_source ();
>> cairo_paint () calls.
>> Those calls just add an extra copy that we don't really need, and are
>> probably the root of your problem
>
> This does seem to make things better, up to about 1 frame per sec.
I pushed this.  There was also a problem where I was still doing
gdk_window_clear on the whole window.  I pushed a fix for that, too.

>> 2) change gdk_display_flush()  to gdk_display_sync ().  This will
>> throttle plymouth draw requests if the X server is having trouble
>> keeping up.
>
> This one seems not to have any effect.
I changed this to do a 1x1 XGetImage call, which is a little more
reliable way of ensuring things are throttled than the XSync call.

> With the patch reverted, X uses 11% and it runs at about 5 frames per sec
> (understandable on an Athlon 2000). This is using the commercial nvidia
> driver.
None of the the themes render faster than 5 fps on your machine?
That's pretty sucky.

Can you try the latest changes on the branch and report what
performance is like?  Also, I'd be curious what nouveau and/or vesa
perfomance are like.

For me stats are much lower now, charge, for instance, is:

20404 root      20   0  221m  32m  11m R 11.8  0.8  12:17.19 Xorg
24707 root      20   0  216m  12m 5236 S  7.5  0.3   0:01.20 plymouthd

12% Xorg, 8% plymouthd

and spinfinity is like 20% Xorg, 8% plymouthd

Anyway, if the latest changes still leave X pegged at 100% cpu for
you, then we can go back the original way of renderering in an expose
handler.

Either way, having to choose from < 1 fps or 5 fps seems suboptimal.
The renderer isn't as useful if its frame rate isn't comparable to the
frame rate we'd get from running plymouth on a vt....  Maybe we can
sidestep the X driver wonkiness by renderering through DRI with GL
(using clutter or something).  Seems a bit overkill though...

--Ray


More information about the plymouth mailing list