public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Dan Maas" <dmaas@dcine.com>
To: <linux-kernel@vger.kernel.org>
Subject: Re: The new X-Kernel !
Date: Sun, 21 Oct 2001 21:14:51 -0400	[thread overview]
Message-ID: <013201c15a96$f3b47a10$1a01a8c0@allyourbase> (raw)
In-Reply-To: <fa.fbu5gjv.1526gp4@ifi.uio.no> <fa.ltbaijv.13jgcr7@ifi.uio.no>

>  At present fbdev is just a dumb framebuffer. In time I plan to merge both
> DRI and fbdev into one common interface. Their is alot of ideas on where
> graphics handling should be done. IMO the kernel should only manage the
> state of the hardware amoung the various processes.

The Right Way To Do Graphics, According to Dan (tm):
----------------------------------------------------

1. kernel driver accepts buffers of drawing commands from user-space clients
and sends them to graphics card via DMA. Also provides interface for clients
to allocate pieces of video RAM. Also maintains per-client graphics engine
state that is context-switched as necessary; textures and framebuffers are
demand-paged between system RAM and video RAM. Also provides "global"
controls like graphics mode switching and hardware
cursor position.
(DRI does most of this today)

2. user-space library maps from a convenient platform-neutral API (i.e.
OpenGL) to card-specific buffers of drawing commands.

3. user-space window server process owns the only visible framebuffer in
video RAM. Clients give the window server the address of their private
non-visible framebuffer and wake up the server whenever its contents change.
Window server assembles the visible desktop by blitting client framebuffers
to the visible framebuffer. Window server also dispatches input events
(keypresses/mouse clicks) to appropriate client processes.

(this is basically how Mac OSX works, except OSX does most of these
operations in software so it is very sluggish)

Advantages of this approach:
1. clients running on the local machine get full DMA access to the video
hardware.
2. window server can do real alpha-channel compositing (true
transparent/non-rectangular windows).
3. slow/crashed clients can not harm the window server or other clients.
4. clients don't have to double-buffer because the window server does it for
them.
5. full-screen clients (e.g. games) can be allowed to usurp the window
server and get direct access to input devices and video hardware.
6. to achieve network transparency, a "stub" client can be written that
sends input events and receives drawing commands over a socket.
7. GUI toolkits can offer a retained-mode API that maps high-level commands
(e.g. "draw a button") directly to graphics hardware, instead of long, slow
X protocol streams.

i.e. this system provides a superset of the features we have today, because
it is a "meta" windowing system where every client is equivalent to an X
server or a DRI client.

Disadvantages:
1. would probably require >$1 million investment in software engineering to
implement, could not be done as a free product.
2. demands a sophisticated resource-management system to demand-page
fine-grained resources to and from the video card; may not be fully
implementable on today's graphics hardware.
3. only a single graphics card vendor provides (partial) documentation for a
card that is fast and functional enough to make this idea interesting (ATI).
4. a translation layer would have to be written to emulate X for legacy
clients.
5. Linux/UNIX people mostly don't give a sh*t about good graphics.

Regards,
Dan


       reply	other threads:[~2001-10-22  1:13 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <fa.fbu5gjv.1526gp4@ifi.uio.no>
     [not found] ` <fa.ltbaijv.13jgcr7@ifi.uio.no>
2001-10-22  1:14   ` Dan Maas [this message]
2001-10-22  8:09     ` The new X-Kernel ! Alan Cox
2001-10-22 17:56 Jesse Pollard
  -- strict thread matches above, loose matches on Subject: below --
2001-10-21 21:44 Samium Gromoff
2001-10-21 22:01 ` Gábor Lénárt
2001-10-20 21:30 MichaelM
2001-10-20 21:43 ` Mike Fedyk
2001-10-21  0:08 ` Aaron Lehmann
2001-10-21  7:37 ` Gábor Lénárt
2001-10-21  8:33   ` Jonathan Morton
2001-10-21  8:50     ` Gábor Lénárt
2001-10-21  9:13       ` Jonathan Morton
2001-10-21 17:06         ` James Simmons
2001-10-21 10:26     ` Allan Sandfeld
2001-10-21 14:19       ` Alan Cox
2001-10-21 17:18         ` James Simmons
2001-10-21 17:26           ` Alan Cox
2001-10-21 17:40             ` James Simmons
2001-10-21 19:17               ` Tim Jansen
2001-10-22  0:10                 ` Jesse Pollard
2001-10-22  0:37                   ` Tim Jansen
2001-10-22 17:18                   ` James Simmons
2001-10-22 16:51                 ` James Simmons
2001-10-22 18:35                   ` Tim Jansen
2001-10-23  7:05                     ` Allan Sandfeld
2001-10-21 19:53               ` Gábor Lénárt
2001-10-22 17:04                 ` James Simmons
2001-10-23  6:45     ` Albert D. Cahalan
2001-10-21 12:54   ` Tim Jansen
2001-10-21 15:37     ` john slee
2001-10-21 19:04       ` Tim Jansen
2001-10-21 20:03       ` Gábor Lénárt
2001-10-21 21:22         ` Federico Sevilla III
2001-10-21 21:31           ` Gábor Lénárt
2001-10-21 21:38         ` Sean Cavanaugh
2001-10-21 21:52           ` Alan Cox
2001-10-21 22:39             ` Oden Eriksson
2001-10-22  4:44             ` Sean Cavanaugh
2001-10-21 21:53           ` Gábor Lénárt
2001-10-21 22:14         ` Leo Spalteholz
2001-10-22  5:17           ` Jonathan Morton
2001-10-21 16:09     ` Malcolm H. Teas
2001-10-21 19:04       ` Tim Jansen
2001-10-21 19:13   ` Bernd Eckenfels
2001-10-21 19:30     ` Gábor Lénárt
2001-10-21 19:49     ` J Sloan
2001-10-21 21:12     ` Tim Jansen
2001-10-21 21:20       ` D. Stimits
2001-10-21 21:41         ` Gábor Lénárt
2001-10-22  5:42 ` Dwayne C. Litzenberger
2001-10-31 17:34 ` Jim Freeman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='013201c15a96$f3b47a10$1a01a8c0@allyourbase' \
    --to=dmaas@dcine.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox