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)
