On 2006-08-19, Richard Cooper <[EMAIL PROTECTED]> wrote:
> [...] So anyway, if you want to fix graphics in Linux, here's
> what you need to do: [...]
>
> 2.  Create an easy, standardized, and well documented kernel
> video driver interface that allows card manufacturers to easily
> create a video driver for Linux. [...proposal for binary only
> graphic drivers...]

Aren't you barking the wrong tree? There is an effort in this mailing
list to produce open hardware and you are proposing Linux gurus
to make a binary interface allowing closed source binary drivers.
Wouldn't that defeat the need for open hardware, which may be good
also for moral reasons?

> [...] DOS developers switched to writing Windows games because
> Windows supplied easy memory access and easy graphics access. [...]

For a long time DirectX didn't deliver what it promised, but Windows
gained more user base because it was so much better than plain DOS
for pretty much everything else. In fact, the pre-DirectX api was
a fiasco I was unfortunate enough to try learning.

> [...] The reason graphics are unstable is that they currently
> involve direct hardware access from userspace, which everyone
> agrees is a big no-no, but for some reason everyone also seems
> to agree is the way that graphics should be done.

Your generalisations don't take anywhere. "everyone" is a developer
writting an accounting program going as much hi-tech as showing
antialiased fonts or a game developer squeezing every CPU cycle to
render 60fps 3d graphics?

I don't think the former is a problem under Linux. For the
latter, there are other real reasons why things don't progress.
For instance, do you know why it is impossible to make flicker free
page flipping applications with the kernel's framebuffer at least
in 2.2/2.4 (and I believe this won't ever be solved in 2.6 or later)?

Framebuffer allows a user application without priviledges to
draw graphics. But to provide smooth page flipping you have to
actually wait for a vertical retrace and change video content at
the right time. Now, you are doing this from user space, so your
process might not even get a CPU quantum in half a second. Steady
fps out of the window.  So let's provide something like a vsync()
function in the kernel. The user program calls this as an ioctl()
which returns at the right moment.

Cool, but most available video hardware doesn't provide an interrupts
when vsync is going to happen, because they are commodity hardware
not oriented towards games. So you are left with active polling
as the lowest common denomiator. Nice. Now any user application
calling that ioctl is going to be able to perform a CPU DOS attack
at kernel level on the machine.

Morale: Linux is just not what YOU want it to be, and other people
may actually care more about stability/security than smooth graphics.

If you look at MacOSX now and Windows Vista in the future, they
will be providing smooth graphic updates for user applications
mostly because they don't deal with the "poor" hardware using polls:
Apple controls the hardware directly, Microsoft will impose strict
hardware requirements for your graphic card (shees, requiring a 3d
accelerator to just run the OS, are you crazy?).

> 3.  Create a VESA BIOS driver that uses this interface, and maybe
> even a "Basic VGA" driver. [...]

Other's have already replied this doesn't make sense on anything
other than x86. Again you are making generalisations which don't
apply to others' hardware.

You seem to despise a lot Linux' graphic support. Yet with
framebuffers a correctly written end user application can run on
any architecture you can think of. This is wonderful for people who
don't need accelerated graphics and prefer to write once and forget,
rather than write once for each platform.

> If Linux wants to beat Windows, it needs to beat Windows where it
> counts, and that isn't in the GUI interface.  Windows wins because
> it has the applications, and it has the applications because it's
> easy to develop software for.  Make it easy to create games in
> Linux, and Linux will have games.  Make it easy to develop office
> applications, and Linux will have office applications.

I already see many office applications under Linux. With regards
to games, they are special applications which from the beginning
would prefer to not even deal with a multitasking OS, since they
are greedy and do "nasty" things to maintain 60fps.

> [...] If you write a game for Windows, your game can request
> a 640x480x256 graphics mode and it gets it, not just on your
> Windows system but on every Windows system on the planet. [...]

You are oversimplifying. Linux is capable of doing that too. What
you are thinking is: if you get a Windows game that requests 3d
hardware acceleration with X cache for texture mipmapping and a
specific version of pixel shaders, the user having that hardware
and the correct driver will get a game, those without the hardware
or driver update will get an unplayable frame every 10 seconds, if
lucky, or a pretty dialog box redirecting the user to buy hardware
from a specific list supported by that particular game.

So much for your ease of programming. If it was so easy from
the beginning, why would Windows games always provide a list of
supported video hardware, plus nearly always ship with READMEs full
of "Graphic card xxx doesn't work unless you download this or that
driver" and "Graphic card xxx is simply buggy and you have to wait
for the hardware vendor to fix his driver"?

> [...] So why doesn't Linux have games?  Well, simply, it's because
> Linux sucks. [...]

Earlier you mentioned business make formulas about profit. Don't
they deal with the fact that no matter how great Linux, MacOS or any
other OS are, they don't have the market share to justify say 20%
of the development cost to support each additional platform?

> [...] The result is that game developers have every reason in
> the world to stay away from Linux. [...]

Even if Linux provided all the graphic drivers you are asking
for, it still wouldn't matter, and companies wouldn't flee to
support Linux. Which distro? Which version of libc? Such thinks
make simple programs like web browsers require several different
packages/binaries for every popular distro out there.

Every platform would require yet another costly QA certification
process, more developers with knowledge about how stuff is done on
that distro to make it work and fix bugs, more technical support
specialised for the distro, etc. And then, you are asking this
precisely for games, whose "prime time" lasts for about two weeks
to one month after the release (unless you are talking about the
more popular online suscription games).

For non online games, even if you find/fix bugs after their prime
time, most of the gamers have fled to another game because it's
very difficult to provide real replay value, and your updates are
for users picking your software from the bargain bin.

Linux is not for the ocassional gamer because they don't buy
dedicated hardware. I buy Linux machines with Matrox cards.  Some MGA
versions had open specs and the framebuffer and X drivers for these
cards are simply excellent, providing most if not all of their 2d
and 3d acceleration features. Stable as a rock too.

And if/when this group manages to produce the open video card,
I will buy those, because I know they will be even better in terms
of reliability and support, thanks to being open, and I won't have
to hunt ebay to find them (or at least I hope so).
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to