From: "Antonino A. Daplas" <adaplas@gmail.com>
To: Jon Smirl <jonsmirl@gmail.com>
Cc: "D. Hazelton" <dhazelton@enter.net>,
Dave Airlie <airlied@gmail.com>, Pavel Machek <pavel@ucw.cz>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Kyle Moffett <mrmacman_g4@mac.com>,
Manu Abraham <abraham.manu@gmail.com>,
linux cbon <linuxcbon@yahoo.fr>,
Helge Hafting <helge.hafting@aitel.hist.no>,
Valdis.Kletnieks@vt.edu, linux-kernel@vger.kernel.org
Subject: Re: OpenGL-based framebuffer concepts
Date: Thu, 01 Jun 2006 09:56:14 +0800 [thread overview]
Message-ID: <447E493E.1090808@gmail.com> (raw)
In-Reply-To: <9e4733910605311837w97316c8q3ac13798f74cb211@mail.gmail.com>
Jon Smirl wrote:
> On 5/31/06, Antonino A. Daplas <adaplas@gmail.com> wrote:
>> A minimal framebuffer driver is nothing but a pointer to a structure
>> (struct fb_info) which contains a pointer to a memory and the description
>> of the layout of this memory. There is nothing there that absolutely
>> requires the services of the kernel, nor requires touching the hardware.
>> If you look at vesafb, the only time it touches the hardware is in
>> setcolreg (only if in pseudocolor), and pan_display, which is an optional
>> function.
>>
>> The point here is that you can do the mode setting anywhere, including in
>> userland. Describe this mode as struct fb_info and register it to
>> the framebuffer core, you already have a working driver and a working
>> console.
>>
>> So, it should be easy enough to write a kernel framebuffer module that
>> listens to userland, waiting for a struct fb_info to arrive. The userland
>> driver can be anything, it can be a simple driver that executes a few VBE
>> function calls, or a driver that uses a library, such as svgalib or Xorg.
>> Add a few user API's for setcolreg and pan_display, and it will be a
>> complete
>> driver. Optionally, to fully accelerate the console, we only need
>> these in X:
>>
>> ScreenToScreenCopy
>> SolidFill
>> CPUToScreenColorExpand
>>
>> Once the X library is used for this userland driver, we have
>> eliminated the
>> problem of fbdev conflicting with X or DRM. (This assumes that we can
>> load
>> an X instance at bare minimum, ie, without capturing the keyboard or
>> the mouse).
>>
>> I believe that there will be problems that I haven't foreseen
>> (trustworthiness
>> of this driver?), but personally it's the best way to go, as we can
>> work on
>> one subsystem without affecting the others and without breaking
>> compatibility.
>> It should also be easy to work on, as the framebuffer layer has the
>> simplest
>> architecture among the three.
>
> I'm with most of this it's when you get to the 'everything' in user
> space part that I have concerns.
>
> 1) I think we have to maintain a device node and something like an
> IOCTL interface. This allows a normal user to control the device
> without needing root. I'm fine with the idea of the kernel driver
> calling out to user space helpers. Not needing root to run the main X
> server is a big issue for me.
>
> 2) I'd prefer the model of calling out to helper apps that exit
> instead of having persistent daemons. Daemons can die and there is
> difficulty in telling if they are unresponsive and need to be
> restarted. I also think the callouts will be infrequent so why keep a
> daemon hanging around. This implies a few things need to be cached in
> the kernel driver, like the list of legal modes and the altered ROM
> image.
Does not matter.
>
> 3) fbdev, DRM and EXA are all programming the acceleration hardware.
> This needs to move to a single interface. I'd suggest using DRM to
> achieve acceleration and then modify the other two subsystems to call
> it.
Programming 2D is entirely optional in terms of fbdev. It's only user
is fbcon. You can leave 2D to DRM or X if you want.
>
> 4) Some things are so tiny it is pointless to move them to user space
> and they need root to work. Things like screen blank, set the hardware
> cursor, set the cmap, etc. I think these are best implemented as
> additions to the DRM driver.
These small things (cmap, blanking) are sometimes difficult to do, and
the driver is not always right about that. A user helper may be needed.
vesafb in x86_64 may not be able to set the cmap properly without calling
out to the BIOS.
>
> 5) All of this has to be small enough to fit into initramfs if we're
> going to have a boot console on non-VGA systems.
We can always leave fbdev drivers in the kernel for architectures where
they're the only ones available.
>
> 6) There is no need to require a bounce out to user space and back for
> these calls: ScreenToScreenCopy, SolidFill, CPUToScreenColorExpand.
> DRM can optionally implement in-kernel entry points for these.
Agree, fbdev does not require acceleration to be fast. This is something
we can leave out. As mentioned in another thread, an unaccelerated fbdev
driver can have comparable performance with a pure text mode driver.
>
> 7) Since there isn't much left to a device specific fbdev driver after
> you push mode setting out to user space, I would just add the
> remaining functions to the device specific DRM driver. But that would
> be 'evil' since it merges fbdev and DRM.
>
Actually, there's no need for a merge as there is nothing in DRM that
is absolutely needed by fbdev or the other way around, as long as
console acceleration is disabled. In-kernel fbdev drivers may not even
be necessary.
Tony
next prev parent reply other threads:[~2006-06-01 1:56 UTC|newest]
Thread overview: 321+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-16 21:41 replacing X Window System ! linux cbon
2006-05-16 21:51 ` Michal Piotrowski
2006-05-16 21:57 ` Måns Rullgård
2006-05-16 23:23 ` Alistair John Strachan
2006-05-16 22:19 ` alan
2006-05-16 22:42 ` Valdis.Kletnieks
2006-05-16 23:05 ` alan
2006-05-17 11:47 ` linux cbon
2006-05-17 12:18 ` Valdis.Kletnieks
2006-05-17 12:39 ` linux cbon
2006-05-17 13:19 ` Valdis.Kletnieks
2006-05-17 14:10 ` Panagiotis Issaris
2006-05-17 14:19 ` Ondrej Zary
2006-05-17 14:23 ` Olivier Galibert
2006-05-17 14:46 ` Bob Copeland
2006-05-17 13:24 ` Lennart Sorensen
2006-05-17 13:46 ` Bob Copeland
2006-05-17 14:01 ` Michal Piotrowski
2006-05-17 13:39 ` Jesper Juhl
2006-05-17 14:53 ` linux cbon
2006-05-17 15:09 ` Valdis.Kletnieks
2006-05-17 15:14 ` Valdis.Kletnieks
2006-05-17 15:30 ` linux-os (Dick Johnson)
2006-05-17 16:29 ` Valdis.Kletnieks
2006-05-17 15:53 ` linux cbon
2006-05-17 16:09 ` Randy.Dunlap
2006-05-17 16:12 ` Stas Myasnikov
2006-05-17 15:16 ` Alan Cox
2006-05-17 15:49 ` linux cbon
2006-05-17 16:11 ` Stas Myasnikov
2006-05-17 17:52 ` Gábor Lénárt
2006-05-17 17:17 ` Felipe Alfaro Solana
2006-05-17 17:33 ` grundig
2006-05-18 15:42 ` Lennart Sorensen
2006-05-18 18:40 ` grundig
2006-05-18 12:00 ` Helge Hafting
2006-05-18 17:28 ` linux cbon
2006-05-18 18:42 ` Valdis.Kletnieks
2006-05-18 18:52 ` Thierry Vignaud
2006-05-18 19:31 ` linux cbon
2006-05-18 19:37 ` David Lang
2006-05-18 20:12 ` Gerhard Mack
2006-05-18 22:22 ` linux cbon
2006-05-19 9:09 ` Martin Mares
2006-05-18 20:12 ` Adrian Bunk
2006-05-18 21:47 ` Valdis.Kletnieks
2006-05-18 22:03 ` linux cbon
2006-05-18 22:23 ` Al Viro
2006-05-21 14:56 ` Stefan Smietanowski
2006-05-19 9:26 ` Helge Hafting
2006-05-19 11:08 ` Panagiotis Issaris
2006-05-19 13:07 ` Helge Hafting
2006-05-19 14:34 ` David Greaves
2006-05-19 14:40 ` Xavier Bestel
2006-05-19 15:13 ` linux cbon
2006-05-19 15:18 ` Xavier Bestel
2006-05-19 22:09 ` linux cbon
2006-05-19 22:51 ` Peter Gordon
2006-05-21 20:49 ` Xavier Bestel
2006-05-20 0:43 ` Jeff Carr
2006-05-19 15:01 ` Sander
2006-05-19 22:29 ` Jan Engelhardt
2006-05-19 22:34 ` David Lang
2006-05-19 22:20 ` Jan Engelhardt
2006-05-19 22:40 ` linux cbon
2006-05-20 1:02 ` Adrian Bunk
2006-05-20 6:31 ` Willy Tarreau
2006-05-20 8:25 ` jerome lacoste
2006-05-21 6:16 ` Valdis.Kletnieks
2006-05-21 12:17 ` linux cbon
2006-05-21 6:38 ` Manu Abraham
2006-05-23 5:08 ` OpenGL-based framebuffer concepts Kyle Moffett
2006-05-23 0:48 ` D. Hazelton
2006-05-23 17:17 ` Jon Smirl
2006-05-23 22:57 ` Matthew Garrett
2006-05-23 23:38 ` Jon Smirl
2006-05-23 23:24 ` D. Hazelton
2006-05-24 4:21 ` Jon Smirl
2006-05-24 0:42 ` D. Hazelton
2006-05-24 4:57 ` Jon Smirl
2006-05-24 1:04 ` D. Hazelton
2006-05-24 14:30 ` Chase Venters
2006-05-24 13:32 ` Paulo Marques
2006-05-24 6:39 ` Helge Hafting
2006-05-24 13:17 ` Stefan Seyfried
2006-05-24 22:08 ` Matthew Garrett
2006-05-24 22:09 ` D. Hazelton
2006-05-24 22:41 ` Jon Smirl
2006-05-24 1:50 ` Jeff Garzik
2006-05-24 7:30 ` Matthew Garrett
2006-05-24 0:10 ` Kyle Moffett
2006-05-23 23:27 ` D. Hazelton
2006-05-24 0:24 ` Jon Smirl
2006-05-24 7:03 ` Helge Hafting
2006-05-24 13:55 ` Alexander E. Patrakov
2006-05-24 14:49 ` Jon Smirl
2006-05-24 14:56 ` Alexander E. Patrakov
2006-05-24 16:15 ` Matheus Izvekov
2006-05-24 16:26 ` Alexander E. Patrakov
2006-05-24 16:32 ` Jon Smirl
2006-05-26 4:57 ` Alexander E. Patrakov
2006-05-26 2:09 ` D. Hazelton
2006-05-26 7:12 ` Helge Hafting
2006-05-24 16:42 ` Matheus Izvekov
2006-05-24 17:34 ` Xavier Bestel
2006-05-26 7:05 ` Helge Hafting
2006-05-26 7:59 ` Xavier Bestel
2006-05-26 6:58 ` Helge Hafting
2006-05-24 22:03 ` D. Hazelton
2006-05-26 7:08 ` Helge Hafting
2006-05-26 8:32 ` Alexander E. Patrakov
2006-05-26 10:58 ` Helge Hafting
2006-05-26 11:06 ` Xavier Bestel
2006-05-24 15:41 ` Geert Uytterhoeven
2006-05-23 10:11 ` Alan Cox
2006-05-23 10:28 ` Jeff Garzik
2006-05-23 14:10 ` Kyle Moffett
2006-05-23 14:43 ` Alan Cox
2006-05-23 15:41 ` Kyle Moffett
2006-05-23 16:53 ` Alan Cox
[not found] ` <9b5164430605231015s40ebcd38had1c3029da8afc7@mail.gmail.com>
2006-05-23 17:21 ` Xiong Jiang
2006-05-24 12:47 ` Alan Cox
2006-05-23 23:31 ` D. Hazelton
2006-05-23 15:52 ` Rene Rebe
2006-05-23 23:41 ` D. Hazelton
2006-05-24 4:48 ` Jon Smirl
2006-05-24 5:24 ` Jeff Garzik
2006-05-23 23:38 ` D. Hazelton
2006-05-24 4:08 ` Dave Airlie
2006-05-24 0:17 ` D. Hazelton
2006-05-24 5:14 ` Dave Airlie
2006-05-24 1:30 ` D. Hazelton
2006-05-24 5:48 ` Dave Airlie
2006-05-24 2:11 ` D. Hazelton
2006-05-26 17:53 ` Pavel Machek
2006-05-27 18:03 ` D. Hazelton
2006-05-24 15:27 ` Jon Smirl
2006-05-24 23:18 ` Dave Airlie
2006-05-24 23:56 ` Jon Smirl
2006-05-25 0:31 ` Dave Airlie
2006-05-25 0:55 ` Jeff Garzik
2006-05-25 2:37 ` D. Hazelton
2006-05-25 8:44 ` Jeff Garzik
2006-05-25 14:04 ` Jon Smirl
2006-05-25 15:07 ` Jeff Garzik
2006-05-25 15:37 ` Jon Smirl
2006-05-25 23:04 ` Dave Airlie
2006-05-25 23:17 ` Jeff Garzik
2006-05-25 23:31 ` Dave Airlie
2006-05-25 23:19 ` Jeff Garzik
2006-05-25 23:48 ` Jon Smirl
2006-05-25 15:57 ` Paulo Marques
2006-05-25 18:01 ` Alan Cox
2006-05-26 11:26 ` Olivier Galibert
2006-05-25 16:13 ` Greg KH
2006-05-26 17:39 ` Pavel Machek
2006-05-27 18:01 ` D. Hazelton
2006-05-28 0:03 ` Jon Smirl
2006-05-27 22:13 ` D. Hazelton
2006-05-28 2:34 ` Jon Smirl
2006-05-27 22:45 ` D. Hazelton
2006-05-28 3:27 ` Jon Smirl
2006-05-28 1:12 ` D. Hazelton
2006-05-28 23:13 ` Dave Airlie
2006-05-28 23:16 ` D. Hazelton
2006-05-29 3:43 ` Dave Airlie
2006-05-29 4:05 ` Jon Smirl
2006-05-29 0:25 ` D. Hazelton
2006-05-29 4:58 ` Neil Brown
2006-05-29 2:07 ` D. Hazelton
2006-05-29 5:14 ` Dave Airlie
2006-05-29 2:09 ` D. Hazelton
2006-05-29 5:28 ` Neil Brown
2006-05-29 7:14 ` Dave Airlie
2006-05-31 21:42 ` Jan Engelhardt
2006-05-31 21:15 ` D. Hazelton
2006-06-01 9:43 ` Jan Engelhardt
2006-06-01 11:51 ` Marko M
2006-06-01 15:54 ` D. Hazelton
2006-06-01 21:39 ` Antonino A. Daplas
2006-05-29 0:59 ` Jon Smirl
2006-05-29 1:29 ` Daniel Stone
2006-05-29 2:28 ` Jon Smirl
2006-05-30 17:40 ` David Lang
2006-05-30 21:53 ` Antonino A. Daplas
2006-05-30 21:55 ` Antonino A. Daplas
2006-05-30 22:13 ` Jon Smirl
2006-06-02 8:36 ` Ondrej Zajicek
2006-06-02 8:58 ` Pavel Machek
2006-06-02 18:49 ` David Lang
2006-06-02 22:01 ` Pavel Machek
2006-06-02 19:57 ` David Lang
2006-06-02 23:25 ` Antonino A. Daplas
2006-06-03 6:32 ` Pavel Machek
2006-06-03 7:05 ` Antonino A. Daplas
2006-06-03 16:35 ` Kyle Moffett
2006-06-03 20:55 ` Antonino A. Daplas
2006-06-02 12:17 ` Antonino A. Daplas
2006-05-30 22:35 ` Ondrej Zajicek
2006-05-30 22:55 ` Jon Smirl
2006-05-31 6:48 ` Martin Mares
2006-05-31 7:13 ` Jon Smirl
2006-05-31 3:25 ` D. Hazelton
2006-05-31 7:19 ` Martin Mares
2006-05-31 12:09 ` Helge Hafting
2006-05-31 13:34 ` Pavel Machek
2006-05-31 13:56 ` Martin Mares
2006-05-30 23:21 ` Antonino A. Daplas
2006-05-31 8:26 ` Ondrej Zajicek
2006-05-31 10:25 ` Marko M
2006-05-31 11:59 ` Antonino A. Daplas
2006-05-31 19:24 ` Geert Uytterhoeven
2006-05-31 19:57 ` Jon Smirl
2006-05-31 20:32 ` Matthew Garrett
2006-05-31 21:23 ` Jon Smirl
2006-06-01 2:21 ` Antonino A. Daplas
2006-05-29 10:23 ` Pavel Machek
2006-05-29 10:36 ` Dave Airlie
2006-05-29 12:48 ` Pavel Machek
2006-05-29 21:23 ` Jeff Garzik
2006-05-29 21:45 ` Pavel Machek
2006-05-30 17:44 ` David Lang
2006-05-30 20:18 ` Pavel Machek
2006-05-29 22:10 ` Jon Smirl
2006-05-29 22:58 ` D. Hazelton
2006-05-29 22:57 ` D. Hazelton
2006-05-29 23:23 ` Dave Airlie
2006-05-29 23:48 ` Marko M
2006-05-30 1:39 ` Ian Kester-Haney
2006-05-30 2:09 ` Randy.Dunlap
[not found] ` <441e43c90605291936t19caa0eat4bd4b699e0ac9202@mail.gmail.com>
2006-05-30 2:37 ` Fwd: " Ian Kester-Haney
2006-05-30 10:49 ` Alexey Dobriyan
2006-05-30 20:24 ` Pavel Machek
2006-05-30 20:56 ` Jon Smirl
2006-05-30 21:15 ` Ian Kester-Haney
2006-05-30 23:01 ` Dave Airlie
2006-05-30 23:27 ` Jon Smirl
2006-05-30 23:14 ` D. Hazelton
2006-05-31 4:02 ` Jon Smirl
2006-05-31 0:11 ` D. Hazelton
2006-05-31 4:16 ` Jon Smirl
2006-05-31 0:26 ` D. Hazelton
2006-05-31 4:39 ` Jon Smirl
2006-05-31 0:45 ` D. Hazelton
2006-06-01 0:50 ` Antonino A. Daplas
2006-06-01 1:37 ` Jon Smirl
2006-06-01 1:56 ` Antonino A. Daplas [this message]
2006-06-01 2:19 ` Jon Smirl
2006-05-31 22:36 ` D. Hazelton
2006-06-01 2:49 ` Jon Smirl
2006-06-01 9:28 ` Ondrej Zajicek
2006-06-01 16:59 ` Jon Smirl
2006-06-01 14:59 ` David Lang
2006-06-01 16:03 ` D. Hazelton
2006-06-01 20:35 ` Jon Smirl
2006-06-01 16:47 ` D. Hazelton
2006-06-01 21:21 ` Jon Smirl
2006-06-01 22:22 ` D. Hazelton
2006-06-01 21:05 ` Antonino A. Daplas
2006-06-01 21:23 ` Jon Smirl
2006-06-01 21:31 ` Antonino A. Daplas
2006-06-01 21:48 ` Jon Smirl
2006-06-01 22:21 ` Pavel Machek
2006-06-01 23:14 ` Antonino A. Daplas
2006-06-01 23:00 ` Andrew Morton
2006-06-01 23:39 ` Antonino A. Daplas
2006-06-01 23:14 ` Dave Airlie
2006-06-01 23:38 ` Jon Smirl
2006-06-01 23:47 ` Dave Airlie
2006-06-02 0:45 ` Jon Smirl
2006-06-02 9:05 ` Pavel Machek
2006-06-02 9:03 ` Pavel Machek
2006-06-02 1:15 ` Dave Airlie
2006-06-02 2:18 ` Jon Smirl
2006-06-01 22:34 ` D. Hazelton
2006-06-02 2:58 ` Jon Smirl
2006-06-01 23:01 ` D. Hazelton
2006-06-02 3:16 ` Jon Smirl
2006-06-02 0:34 ` D. Hazelton
2006-06-02 2:45 ` Dave Airlie
2006-06-02 3:27 ` Jon Smirl
2006-06-02 4:28 ` Jon Smirl
2006-06-02 0:35 ` D. Hazelton
2006-06-02 9:00 ` Pavel Machek
2006-06-03 3:21 ` Kyle Moffett
2006-06-03 1:25 ` D. Hazelton
2006-06-03 5:55 ` Jon Smirl
2006-06-03 2:09 ` D. Hazelton
2006-06-03 6:31 ` Jon Smirl
2006-06-03 2:38 ` D. Hazelton
2006-06-03 4:03 ` Jon Smirl
2006-06-08 7:02 ` Helge Hafting
2006-06-08 7:40 ` Daniel Hazelton
2006-06-08 8:30 ` Antonino A. Daplas
2006-06-09 2:44 ` Daniel Hazelton
2006-06-02 4:34 ` Ville Syrjälä
2006-06-02 0:36 ` D. Hazelton
2006-06-02 6:19 ` Dave Airlie
2006-06-02 17:31 ` Ville Syrjälä
2006-06-02 1:42 ` Antonino A. Daplas
2006-05-31 8:08 ` Pavel Machek
2006-05-30 23:38 ` Daniel Stone
2006-05-30 23:38 ` Pavel Machek
2006-05-30 23:55 ` Jon Smirl
2006-05-30 23:38 ` Pavel Machek
2006-05-31 0:00 ` Antonino A. Daplas
2006-05-31 0:47 ` Jon Smirl
2006-05-31 1:23 ` Antonino A. Daplas
2006-05-31 2:34 ` Jon Smirl
2006-05-18 20:27 ` replacing X Window System ! D. Hazelton
2006-05-17 13:20 ` Lennart Sorensen
2006-05-17 18:34 ` Jan Engelhardt
2006-05-16 23:10 ` Felipe Alfaro Solana
2006-05-17 8:46 ` Ondrej Zary
2006-05-17 9:59 ` Carlos Silva
2006-05-17 13:27 ` Lennart Sorensen
2006-05-17 17:37 ` David Schwartz
2006-05-17 17:46 ` alan
2006-05-17 17:56 ` Gábor Lénárt
2006-05-17 17:12 ` Felipe Alfaro Solana
2006-05-19 10:27 ` [OT] " Jan Knutar
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=447E493E.1090808@gmail.com \
--to=adaplas@gmail.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=abraham.manu@gmail.com \
--cc=airlied@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=dhazelton@enter.net \
--cc=helge.hafting@aitel.hist.no \
--cc=jonsmirl@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxcbon@yahoo.fr \
--cc=mrmacman_g4@mac.com \
--cc=pavel@ucw.cz \
/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