>This is where it differs from disks and
> networking and most of the rest. A disk is a disk is a disk - they
> look more-or-less the same to the end user, and you can virtualize
> them behind a driver pretty well.
The end user only sees the filesystem, usually. As far as the
disk itself, you have block mode switching, cyl/trk/sec addressing,
controller configuration (which *do* have a bunch of peculiarities and
*do* have individual kernel drivers), etc. Video stuff is a LOT less
complex.
The point is that all of this complexity in the disk driver can be
hidden inside the disk driver. In the case of the video driver, you
*have* to expose it to the outside world, since that's where your
performance comes from....
> The problem is really that while you can say that "yes, we can virtualize
> bitmap caching" etc, the stuff just keeps coming and coming, and in the
> end you have a list of hundreds of things that the driver needs to know
> about, and you have a rather complex API to it all, including a "get
> features" request that tells the user exactly which things are available.
On what grounds do you assume this to be true? I see no evidence
of it.
Well, my reading suggests that OpenGL has roughly 130 3-D primitives all
by itself.... and you've agreed that we'll probably be seeing lots of
boards using the OpenGL primitives. And that's not included any sort of
proprietary acceleration techniques that other board manufacturers might
come up with.
So it would appear that Linus's fear of "hundreds of things" which the
driver has to do, and which has to be exposed to the kernel<->user API,
is quite justified. OpenGL alone should take us over the 100 primitive
mark.
- Ted