X11 test renderer
halfline at gmail.com
Sat Oct 3 19:16:03 PDT 2009
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:
But those problems got fixed in a later revision of the driver.
Besides we're not doing blending here, just the equivalent of
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
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
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...
More information about the plymouth