On 2/8/06, <b class="gmail_sendername"><a href="mailto:olafBuddenhagen@gmx.net">olafBuddenhagen@gmx.net</a></b> <<a href="mailto:olafBuddenhagen@gmx.net">olafBuddenhagen@gmx.net</a>> wrote:<div><span class="gmail_quote">
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br><br>> > The question isn't about moving all of the "X drivers" into kernel,
<br>> > just about not poking around hardware directly, which I think<br>> > everyone agrees is a really bad idea.<br>><br>> they poke around by mmap()ing the video card and writing to memory -<br>> you can do this as root with lots of things. you need to have ROOT
<br>> privelidges to do it though. the kernel cannto protect the registers<br>> unless it KNOWS what they mean and how they work - for that nvidia and<br>> ati and others will need to publish all their specs openly. if the
<br>> kernel doesnt know what they mean - how is it to know somehting is a<br>> good or bad thing to do - and when? at the end of the day x is working<br>> with the gfx harward much like the kernel would - but form userspace
<br>> instead, so it can segv. it basically expects to be the only thing<br>> fiddling with the gfx hw - within limits. like the kernel does with<br>> other hw (but the kernel ENFORCES such limits). until 1. gfx makers go
<br>> open on specs so this can be implemented,<br><br>I think there is some misunderstanding here. The idea is *not* to have<br>the kernel put limits what kind of hardware access the userspace drivers<br>are allowed to do, using perfect knowledge of the hardware to decide
<br>what is safe and what is not. The idea is rather for the kernel to do<br>the graphics hardware access *itself*, the userspace driver only telling<br>what operation it wants performed.<br><br>This doesn't require any more knowledge about the hardware than doing
<br>the same access in userspace directly. The difference is that the kernel<br>driver can ensure that only known safe operations can be invoked. Thus,<br>it's actually a great advantage in case of incomplete specs.<br><br>
> and 2. x and kernel coders sit down and work out how exactly to put it<br>> ALL in the kernel<br><br>As it turns out, "it ALL" isn't really that much. A typical KGI driver<br>(with accelaration support) is only a few kB -- not more than other
<br>typical drivers.<br><br>There is nothing particularily complex about graphics hardware access.<br>What makes graphics drivers complex is the transformation of abstract<br>operations into specific commands that put the accelerator(s) to
<br>(efficiently) perform the desired operation. We all seem to agree that<br>this part should (and can) be left in userspace.<br><br>(Preferably in a generic library, which can be used both by the X server<br>and by other interested parties.)
<br><br>> (which would work only for linux btw - u'd need differnet drivers for<br>> bsd, etc. etc. etc.),<br><br>That's not necessarily true. In KGI, the board-specific driver modules<br>are actually system independant. It's in fact *more* portable than the
<br>current situation, with kernel specific DRM drivers.<br><br>Of course, the interface for graphics hardware access needs to be hooked<br>into the kernel in a system specific fashion. Note however that hooking<br>it into the kernel requires *less* work than providing all the necessary
<br>hooks for userspace drivers -- just look at the thread about PCI access.<br><br>BTW, the FreeBSD variant of KGI presently is actually more advanced than<br>the Linux implementation... :-)<br><br>-antrik-<br>_______________________________________________
<br>xorg mailing list<br><a href="mailto:xorg@lists.freedesktop.org">xorg@lists.freedesktop.org</a><br><a href="http://lists.freedesktop.org/mailman/listinfo/xorg">http://lists.freedesktop.org/mailman/listinfo/xorg</a><br>
</blockquote></div><br>Can we have something we can play with and actually understand? I have been reinventing things just to understand them. Its like trying starting with a terminal emulator first so i can understand how the linux kernel works.
<br clear="all"><br>-- <br>SMS Global Ltd Short Message Service For Seafarers