How to write an X driver..?

Stephane Marchesin marchesin at icps.u-strasbg.fr
Mon Jan 12 06:23:48 PST 2009


On Mon, Jan 12, 2009 at 14:35, Florian Echtler <floe at butterbrot.org> wrote:
>> > I think that this is generally done by having the framebuffer driver
>> > allocate the screen to be as large as possible.  Then in the xserver
>> > you know that offscreen memory address is simply from the end of the
>> > visible screen.
>> But does the device support any form of acceleration ? If not, I'd go
>> with a shadowfb approach instead (which can be pretty efficient these
>> days).
> I guess that depends on how you define acceleration, but it doesn't do
> much in any case. What it can do is internal copying of memory blocks,
> and run-length encoding of pixel data (so you could say that it supports
> accelerated drawing of horizontal lines :-).

Well, the goals of "fast rendering" and "use all possible hw features"
can be pretty different sometimes. If the fastest approach is
shadowfb, you could just not use these hardware features.

>
> But can you explain "shadowfb approach" in more detail? I've seen the
> phrase in the fbdrv manual already; does that mean that the X driver
> maintains a copy of the framebuffer content in memory and only tries to
> transmit changed regions?

Yes shadowfb does just that. A couple of drivers implement it, look at
nv or radeon for example. On the plus side you get a very small driver
and you just have to implement a copy hook, the regions are determined
by the X server for you.

Stephane



More information about the xorg mailing list