[proposal] Decrease X.org XFree86 server footprint


Mikhail Gusarov <dottedmag@...>
 

Proposer: Mikhail Gusarov

Summary: Decrease X.org XFree86 server footprint

Description: There are two servers with overlapping functionality in
X.org X server source tree, namely Kdrive and XFree86.

Kdrive is small X server developed for embedded needs and then
integrated into X.org server source tree. It is abandoned upstream and
does not receive any attention except of build fixes.

XFree86 is actively developed, features DRI and EXA acceleration, as
well as recent versions of XRandR extension. It would be nice to have
all its functionality available for embedded development.

The only one major obstacle of adopting XFree86 for embedded needs is
large memory footprint. While Kdrive Xfbdev features ~1.75MB RSS,
XFree86 is nearly 20MB.

Proposal is to make XFree86 leaner by both making more configuration
options (e.g. disabling support for AGP or PCI videocards for devices
without AGP/PCI bus), and auditing memory usage, so it can be used for
embedded systems as well.

The benefits are clear: single codebase will reduce duplication of
efforts, make development of specific hardware-accelerated drivers for
embedded devices easier and bring recent X11 enhancements into embedded
devices.

Related work:
* X server code: http://cgit.freedesktop.org/xorg/xserver/
* Tiago Vignatti blog post reflecting XDC discussion about XFree86 and
embedded
http://vignatti.wordpress.com/2009/11/08/my-dear-diary-some-not-so-old-m=
emories/

Scope:
This should take approximately 3 months of development and test effort.

=2D-=20
http://fossarchy.blogspot.com/


Tim Bird <tim.bird@...>
 

Mikhail Gusarov wrote:
Proposer: Mikhail Gusarov

Summary: Decrease X.org XFree86 server footprint
...
The only one major obstacle of adopting XFree86 for embedded needs is
large memory footprint. While Kdrive Xfbdev features ~1.75MB RSS,
XFree86 is nearly 20MB.
Thanks very much for this proposal!

The size of X is something that's been an issue with embedded devices
for some time. I'm not a graphics guy, so I didn't even know about
Kdrive.

Can anyone comment on the current state of affairs
for the graphics layer used on embedded devices?

Is X widely used, or are other graphics systems (like DirectFB,
for example) used?

At Sony we're not shipping a lot of (any?) products with X, but if
the footprint problem was solved maybe we would consider it.
-- Tim

=============================
Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America
=============================


Mike Frysinger <vapier.adi@...>
 

On Tue, Dec 1, 2009 at 14:38, Tim Bird wrote:
Mikhail Gusarov wrote:
Proposer: Mikhail Gusarov

Summary: Decrease X.org XFree86 server footprint
...
The only one major obstacle of adopting XFree86 for embedded needs is
large memory footprint. While Kdrive Xfbdev features ~1.75MB RSS,
XFree86 is nearly 20MB.
Thanks very much for this proposal!

The size of X is something that's been an issue with embedded devices
for some time.  I'm not a graphics guy, so I didn't even know about
Kdrive.

Can anyone comment on the current state of affairs
for the graphics layer used on embedded devices?

Is X widely used, or are other graphics systems (like DirectFB,
for example) used?

At Sony we're not shipping a lot of (any?) products with X, but if
the footprint problem was solved maybe we would consider it.
it would be more widely used if the footprint wasnt so awful. most
people will take simple convenience over extended software
development, and the closer you match the desktop system, the better.
ive seen people leverage nano-x/microwindows for this reason as it
provides nxlib -- X11 glue to its display server.
-mike


Mikhail Gusarov <dottedmag@...>
 

Twas brillig at 11:38:49 01.12.2009 UTC-08 when tim.bird@... did gy=
re and gimble:

TB> Can anyone comment on the current state of affairs for the graphics
TB> layer used on embedded devices?

TB> Is X widely used, or are other graphics systems (like DirectFB, for
TB> example) used?

OpenMoko and Nokia N770/800/810/900 tablets use various X servers
(Xglamo, Kdrive and now XFree86).

Various e-Book readers I looked at use Kdrive, Nano-X (which is X-like,
but not quite X) and plain framebuffer (not DirectFB).

=2D-=20
http://fossarchy.blogspot.com/


Wolfgang Denk
 

Dear Tim,

In message <4B1570C9.9020907@...> you wrote:

Can anyone comment on the current state of affairs
for the graphics layer used on embedded devices?

Is X widely used, or are other graphics systems (like DirectFB,
for example) used?
We see an increasing number of projects using GTK + DirectFB.

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@...
Calm down, it's *__only* ones and zeroes.


Gustavo Sverzut Barbieri
 

On Tue, Dec 1, 2009 at 5:38 PM, Tim Bird <tim.bird@...> wrote:
Mikhail Gusarov wrote:
Proposer: Mikhail Gusarov

Summary: Decrease X.org XFree86 server footprint
...
The only one major obstacle of adopting XFree86 for embedded needs is
large memory footprint. While Kdrive Xfbdev features ~1.75MB RSS,
XFree86 is nearly 20MB.
Thanks very much for this proposal!

The size of X is something that's been an issue with embedded devices
for some time.  I'm not a graphics guy, so I didn't even know about
Kdrive.

Can anyone comment on the current state of affairs
for the graphics layer used on embedded devices?

Is X widely used, or are other graphics systems (like DirectFB,
for example) used?
It's widely used, specially in non-TV embedded environments.

The problem with TV environments is the old-fashioned way of doing hw
acceleration. Usually they have lots of different layers, that makes
life for X harder. It's not impossible, but one would have to write
drivers for X that expose those using different X Visuals. As people
are usually short on time, they just hack a simple DirectFB driver and
do their apps using it.


At Sony we're not shipping a lot of (any?) products with X, but if
the footprint problem was solved maybe we would consider it.
I guess everything non-TV is every feasible. For TVs, it would need
more work... or new hardware that is not so "fixed". New hardware
exposes programmable pixel shaders using GL-ES2.0 so this is not an
issue... and people want more than just alpha-channel OSDs these days
:-)

BR,

--
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (19) 9225-2202
Contact: http://www.gustavobarbieri.com.br/contact


Jason Clarke <jason@...>
 

I think the question that might need to be asked is why are they using an X
server on a full screen embedded consumer device? If your UI fills and owns
the entire screen you can easily just use directfb or even fbdev. I'd guess
they are looking more for a way to have multiple applications share the
screen (the main UI, webkit, mplayer,...) then actually a desire to have a
full window manager environment on a small arm device.

Maybe X isn't exactly what they want, but happens to be the closest thing
available?

Just my 2 cents.

Jason Clarke
Crank Software Inc.
Office: 613-595-1999
Mobile: 613-853-9088
Online: www.cranksoftware.com

-----Original Message-----
From: celinux-dev-bounces@...
[mailto:celinux-dev-bounces@...] On Behalf Of Mikhail
Gusarov
Sent: December-01-09 3:10 PM
To: Tim Bird
Cc: Ruud Derwig; celinux-dev@...
Subject: Re: [Celinux-dev] [proposal] Decrease X.org XFree86 server
footprint


Twas brillig at 11:38:49 01.12.2009 UTC-08 when tim.bird@... did
gyre and gimble:

TB> Can anyone comment on the current state of affairs for the graphics
TB> layer used on embedded devices?

TB> Is X widely used, or are other graphics systems (like DirectFB, for
TB> example) used?

OpenMoko and Nokia N770/800/810/900 tablets use various X servers (Xglamo,
Kdrive and now XFree86).

Various e-Book readers I looked at use Kdrive, Nano-X (which is X-like, but
not quite X) and plain framebuffer (not DirectFB).

--
http://fossarchy.blogspot.com/


Gustavo Sverzut Barbieri
 

On Wed, Dec 2, 2009 at 1:27 AM, Jason Clarke <jason@...> wrote:
I think the question that might need to be asked is why are they using an X
server on a full screen embedded consumer device? If your UI fills and owns
the entire screen you can easily just use directfb or even fbdev. I'd guess
they are looking more for a way to have multiple applications share the
screen (the main UI, webkit, mplayer,...) then actually a desire to have a
full window manager environment on a small arm device.

Maybe X isn't exactly what they want, but happens to be the closest thing
available?
The major problem with X is how to expose the various layers some
hardware have (some have 5 layers, some are ARGB, some are just
YUV/video, some use color-key, etc). It is possible, but just more
work Companies don't usually want/can pay.

But even for initially fullscreen only applications, X proves to be
useful... and very often requirements change and we're faced with
other screens that need more complexities.

Some times multiple applications are not just 2 different
applications, but two process that compose the same applications but
are separated to avoid full-crashes or even to keep latency away. For
example, one could do widgets/gadgets that query Network (with badly
written parses that often crash) or access user USB drives that often
have corrupted VFAT that can lead to crashes or blocks, in such cases
you really don't want your main app to crash or halt.

However, DirectFB provides multi-app access since a while... so it has
a solution for that.

Last but not least, someone in this thread said the main reason: it
makes embedded software development closer to desktop. You can use the
same libraries, it's easier to test (Xephyr and that's it!), without
much overhead... and the remaining overhead is what Mikhail is willing
to remove!

I know Mikhail and its OpenInkpot project. The hardware is very "low
end", but still he runs X (Kdrive) with success. What he is proposing
is to merge improvements from Kdrive into regular X as well, and this
is worth.

BR,

--
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (19) 9225-2202
Contact: http://www.gustavobarbieri.com.br/contact


Jason Clarke <jason@...>
 

Agreed. I just felt like X seemed like a big solution for some process
synchronization and layer management.

Usually all I want is a nice API to access a layers, move a viewport,
etc...and since it's a custom system I'll manage the rest. Directfb gives us
most of what we want.

Jason Clarke
Crank Software Inc.
Office: 613-595-1999
Mobile: 613-853-9088
Online: www.cranksoftware.com

-----Original Message-----
From: Gustavo Sverzut Barbieri [mailto:barbieri@...]
Sent: December-02-09 5:40 AM
To: Jason Clarke
Cc: Mikhail Gusarov; Tim Bird; celinux-dev@...; Ruud
Derwig
Subject: Re: [Celinux-dev] [proposal] Decrease X.org XFree86 server
footprint

On Wed, Dec 2, 2009 at 1:27 AM, Jason Clarke <jason@...>
wrote:
I think the question that might need to be asked is why are they using an
X
server on a full screen embedded consumer device? If your UI fills and
owns
the entire screen you can easily just use directfb or even fbdev. I'd
guess
they are looking more for a way to have multiple applications share the
screen (the main UI, webkit, mplayer,...) then actually a desire to have a
full window manager environment on a small arm device.

Maybe X isn't exactly what they want, but happens to be the closest thing
available?
The major problem with X is how to expose the various layers some
hardware have (some have 5 layers, some are ARGB, some are just
YUV/video, some use color-key, etc). It is possible, but just more
work Companies don't usually want/can pay.

But even for initially fullscreen only applications, X proves to be
useful... and very often requirements change and we're faced with
other screens that need more complexities.

Some times multiple applications are not just 2 different
applications, but two process that compose the same applications but
are separated to avoid full-crashes or even to keep latency away. For
example, one could do widgets/gadgets that query Network (with badly
written parses that often crash) or access user USB drives that often
have corrupted VFAT that can lead to crashes or blocks, in such cases
you really don't want your main app to crash or halt.

However, DirectFB provides multi-app access since a while... so it has
a solution for that.

Last but not least, someone in this thread said the main reason: it
makes embedded software development closer to desktop. You can use the
same libraries, it's easier to test (Xephyr and that's it!), without
much overhead... and the remaining overhead is what Mikhail is willing
to remove!

I know Mikhail and its OpenInkpot project. The hardware is very "low
end", but still he runs X (Kdrive) with success. What he is proposing
is to merge improvements from Kdrive into regular X as well, and this
is worth.

BR,

--
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (19) 9225-2202
Contact: http://www.gustavobarbieri.com.br/contact


Mike Frysinger <vapier.adi@...>
 

On Wed, Dec 2, 2009 at 10:20, Jason Clarke wrote:
Agreed. I just felt like X seemed like a big solution for some process
synchronization and layer management.

Usually all I want is a nice API to access a layers, move a viewport,
etc...and since it's a custom system I'll manage the rest. Directfb gives us
most of what we want.
if you have the software development time for such solutions, you'll
assuredly end up with a nicer product. however, there are a
significant number of people out there who dont have the time or
expertise (or think they lack them) to craft such solutions, thus the
"easy" solution wins -- X11.

i'm not here to preach one method over another (they both have their
uses), just to point out the reality of way things often go down.
-mike