Kevin Chadwick [[email protected]] wrote:
> 
> I'm guessing this is due to the new KMS 3d support not being as fast
> right now but much better than you had before.
> 

It also affects Thunderbird. Here's my synopsis of Mark Kettenis's
analysis:

Firefox uses an old version of cairo. This cairo library uses XGetImage
to get the image copied back to a ZPixmap in user space. It copies with
a 4k buffer size (the default). So your extremely large, uncompressed image
gets copied in 4k chunks with constant context switches. 

Not only do the subsystems thrash themselves, but the server sends the
image in non-blocking mode, and the socket buffer is full, it fails with
EAGAIN and discards the data already sent by copying the remaining data to 
the start of the buffer, waits for the socket to drain and tries again when
the socket is ready.

You can find Mark's buffer size improvement here:
http://comments.gmane.org/gmane.os.openbsd.cvs/128950
http://lists.x.org/archives/xorg-devel/2014-March/041543.html

This makes the problem less apparent.

Some in the ports tree tried using a newer cairo and found a whole new
set of problems (apparently firefox depends on old cairo and/or local
modifications to it)

Why Firefox needs a ZPixmap of the image displayed, that is, the entire
fully uncompressed image copied back to userland in 4k (or 64k) chunks,
that's totally beyond me, by itself. Why the X server does it in such
a poor way, beyond me. It's crazyland!!!

> Playing video in browsers and even displaying pictures is a
> surprisingly resource hungry task with umpteen potential rules working
> out what shape and where everything should be and unfortunately more
> effort has been spent on javascript performance than rendering.

These issues are not directly related (and largely solved when the X
clients use the right techniques, which sometimes vary between platforms
and display drivers)

Chris

Reply via email to