Send plymouth mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.freedesktop.org/mailman/listinfo/plymouth
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of plymouth digest..."


Today's Topics:

   1. Re: X11 test renderer (Charlie Brej)
   2. Re: X11 test renderer (Ray Strode)
   3. Re: X11 test renderer (Charlie Brej)
   4. Re: X11 test renderer (Ray Strode)
   5. Re: X11 test renderer (Charlie Brej)
   6. Re: X11 test renderer (Ray Strode)


----------------------------------------------------------------------

Message: 1
Date: Sat, 03 Oct 2009 20:31:03 +0100
From: Charlie Brej <[email protected]>
Subject: Re: X11 test renderer
To: Ray Strode <[email protected]>
Cc: plymouth <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8; format=flowed

On 03/10/09 16:51, Ray Strode wrote:
> Hi,
>
> On Sat, Oct 3, 2009 at 6:36 AM, Charlie Brej<[email protected]>  wrote:
>> Ah, now I see the reason for the X and Y in the frame buffer areas.
>> Now, how do I present this to the scripted plugin? Either you have to know
>> which head you are drawing to, or have a continuous area where each head
>> exposes a part of it (xinerama style).
> I'm not sure it makes sense to expose it to the plugins, honestly.  it
> was more about the window manager overlapping the windows
> inconvienently.
>
>>> We can merge this master now if you want, or whenever you think it's
>>> ready.
>>
>> Yeah, tested and works for me.
> Okay, i'll merge it.
>
> --Ray

It may be just me but "[x11] Draw to back pixmap instead of on exposes" is 
grinding my X (90% cpu vs 10% for plymouth).


------------------------------

Message: 2
Date: Sat, 3 Oct 2009 16:10:45 -0400
From: Ray Strode <[email protected]>
Subject: Re: X11 test renderer
To: Charlie Brej <[email protected]>
Cc: plymouth <[email protected]>
Message-ID:
        <[email protected]>
Content-Type: text/plain; charset=UTF-8

Hi,

>> On Sat, Oct 3, 2009 at 6:36 AM, Charlie Brej<[email protected]> ?wrote:
>
> It may be just me but "[x11] Draw to back pixmap instead of on exposes" is
> grinding my X (90% cpu vs 10% for plymouth).
I don't see that, but I do see X jumping around between 20-50% cpu
which is more than I'd expect.
What theme are you testing with?

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

2) change gdk_display_flush()  to gdk_display_sync ().  This will
throttle plymouth draw requests if the X server is having trouble
keeping up.

Do either or both of those changes fix your issue?

--Ray


------------------------------

Message: 3
Date: Sun, 04 Oct 2009 00:47:42 +0100
From: Charlie Brej <[email protected]>
Subject: Re: X11 test renderer
To: Ray Strode <[email protected]>
Cc: plymouth <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8; format=flowed

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.

> 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.

> 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.

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.


------------------------------

Message: 4
Date: Sat, 3 Oct 2009 22:16:03 -0400
From: Ray Strode <[email protected]>
Subject: Re: X11 test renderer
To: Charlie Brej <[email protected]>
Cc: plymouth <[email protected]>
Message-ID:
        <[email protected]>
Content-Type: text/plain; charset=UTF-8

Hi,

On Sat, Oct 3, 2009 at 7:47 PM, Charlie Brej <[email protected]> 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


------------------------------

Message: 5
Date: Sun, 04 Oct 2009 13:10:35 +0100
From: Charlie Brej <[email protected]>
Subject: Re: X11 test renderer
To: Ray Strode <[email protected]>
Cc: plymouth <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8; format=flowed

On 04/10/09 03:16, Ray Strode wrote:
> In your Xorg.0.log do you see:

Nothing in the logs apart from the usual.

> 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.

Brilliant, that one fixed it. I think it was the many stars that were drawn 
that 
were causing full window redraws.

Solar before
  9700 root      20   0 30796  17m 5776 R 64.3  1.1   0:06.77 plymouthd
  1807 root      20   0 69048  45m  12m S 14.6  3.0   1:20.72 Xorg

Solar after "[x11] Draw to back pixmap instead of on exposes"
  1807 root      20   0 74596  49m  12m R 97.4  3.3   2:07.80 Xorg
  9913 root      20   0 30796  17m 5768 S  1.0  1.1   0:01.97 plymouthd

Solar after "[x11] Tile windows initially" (just to show nothing between 
effected it)
  1807 root      20   0 73984  50m  12m R 97.4  3.3   3:04.89 Xorg
10125 root      20   0 30700  17m 5772 S  0.7  1.1   0:01.82 plymouthd

Solar after "[x11] Don't draw to intermediate surface"
  1807 root      20   0 73012  46m  12m R 85.2  3.1   3:50.10 Xorg
10447 root      20   0 30708  16m 5612 R 11.9  1.1   0:02.31 plymouthd

Solar after "[x11] Only redraw the parts that are updated"
10896 root      20   0 30672  16m 5496 R 65.0  1.1   0:06.84 plymouthd
  1807 root      20   0 72856  45m  12m R 14.9  3.0   4:09.42 Xorg

Solar after "[x11] Throttle plymouth to X server"
11135 root      20   0 30672  16m 5488 R 58.0  1.1   0:06.39 plymouthd
  1807 root      20   0 73112  46m  12m S 26.5  3.1   4:14.13 Xorg

>> 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.

It is hitting the X a little itself.

>> 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?

No, just the solar one and some scripted ones which have lots of activity, the 
others are fine. Because it has 2 screens, it goes at half speed and I am only 
counting the planet refreshes which happen once every 2 frames.

> 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

Charge before:
  1807 root      20   0 75408  48m  12m S 65.6  3.2   5:19.11 Xorg
12146 root      20   0 26564  12m 5636 S  3.0  0.9   0:00.52 plymouthd
Charge after:
11544 root      20   0 26544  12m 5556 S  4.0  0.8   0:00.47 plymouthd
  1807 root      20   0 73564  49m  12m S  3.3  3.3   4:46.86 Xorg

> and spinfinity is like 20% Xorg, 8% plymouthd

Spinfinity before:
  1807 root      20   0 75660  48m  12m R 93.1  3.2   5:05.37 Xorg
12016 root      20   0 24308  10m 5736 S  3.0  0.7   0:00.34 plymouthd
Spinfinity after:
  1807 root      20   0 73564  49m  12m S 11.3  3.3   4:52.86 Xorg
11802 root      20   0 24292  10m 5648 S  3.6  0.7   0:00.35 plymouthd

You can see the plymouthd cpu didnt drop much so the frame rates were still 
reasonable, but X was being caned.


------------------------------

Message: 6
Date: Sun, 4 Oct 2009 11:00:19 -0400
From: Ray Strode <[email protected]>
Subject: Re: X11 test renderer
To: Charlie Brej <[email protected]>
Cc: plymouth <[email protected]>
Message-ID:
        <[email protected]>
Content-Type: text/plain; charset=UTF-8

Hi,

On Sun, Oct 4, 2009 at 8:10 AM, Charlie Brej <[email protected]> wrote:
> On 04/10/09 03:16, Ray Strode wrote:
>>
>> In your Xorg.0.log do you see:
>
> Nothing in the logs apart from the usual.
Okay so it wasn't that same driver issue from the bug reports then.

>> 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.
>
> Brilliant, that one fixed it.
Great.  Honestly, I'm a little surprised that full window updates cause such
a performance hit.  Most toolkits do full window updates on every redraw.
Anyway, I'm glad it's fixed. I've merged it to master now

> Solar after "[x11] Only redraw the parts that are updated"
> 10896 root ? ? ?20 ? 0 30672 ?16m 5496 R 65.0 ?1.1 ? 0:06.84 plymouthd
> ?1807 root ? ? ?20 ? 0 72856 ?45m ?12m R 14.9 ?3.0 ? 4:09.42 Xorg
>
> Solar after "[x11] Throttle plymouth to X server"
> 11135 root ? ? ?20 ? 0 30672 ?16m 5488 R 58.0 ?1.1 ? 0:06.39 plymouthd
> ?1807 root ? ? ?20 ? 0 73112 ?46m ?12m S 26.5 ?3.1 ? 4:14.13 Xorg
>
>> 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.
>
> It is hitting the X a little itself.
I will need to investigate this more.  XGetImage is a very costly call, but
I wouldn't expect it to be costly for a 1 pixel readback.  We may want to
drop this patch.

Anyway, thanks a ton for implementing this.  It's something I've
wanted for a long time.

--Ray


------------------------------

_______________________________________________
plymouth mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/plymouth


End of plymouth Digest, Vol 13, Issue 3
***************************************

Reply via email to