Re: SVGA kernel chipset drivers.

Jon Tombs (jon@gte.esi.us.es)
Sun, 2 Jun 1996 18:20:03 +0200 (MET DST)


Linus Torvalds said:
>
>
> The server does a fork(), and the child does all the graphics stuff,
> exactly so that the parent can't be impacted by a buggy (or malicious)
> graphics program.
>
> Essentially, this already sets up the protection domains. The server is
> protected, yet the fork() inheritance is able to give the graphics
> program all the resources it needs, and nothing more.
>
> > simple: a kernel trap is currently the cheapest protection domain switch
>
> We don't need to switch protection domains more than once. We just need
> to set up the frame buffer, put it into graphics mode, and then the
> graphics program can just use it directly. This is all assuming the card
> has a sane frame buffer and doesn't need more than the map (and perhaps
> some IO port access, but that is also set up by the startup stuff).
>
> I mean, you've all been trying to say that all graphics cards have frame
> buffers, so why aren't you happy now that I gave you a protected
> frame-buffer without a line of kernel code? What more do you want?

Such a daemon already exists, it is called Xfree86.

As of Xfree86 3.1.2B you can use the call

XF86DGAGetVideo(display, screen, &addr, &width, &bank, &ram);

returns a pointer to the video ram (addr) the width of a scan line (width)
the size of a bank (bank) and the total ram size (ram). You don't even need
a linear frame buffer, as

XF86DGASetVidPage(display, screen, page) a

Allows you to do video ram paging (no very optimal as you always have read and
write mapped at the same address).

XF86DGADirectVideo(display, screen, XF86DGADirectGraphics)
^flag

Gives you write access to the display. You can even add XF86DGADirectMouse
and XF86DGADirectKeyb to the flags and get raw mouse mickeys and key repeats.

-- 
Jon. <jon@gte.esi.us.es, http://www.esi.us.es/~jon>