Windows Vista May Degrade OpenGL
srw writes "OpenGL is the industry choice for cross platform, hardware accelerated 3D graphics, and it is also the only way you can get fast 3D graphics on your Linux desktop. It now seems Windows Vista implements OpenGL via Direct3D, seriously degrading its performance and attractiveness to developers." From the article: "In practice this means for OpenGL under Aeroglass: OpenGL performance will be significantly reduced - perhaps as much as 50%, OpenGL on Windows will be fixed at a vanilla version of OpenGL 1.4, No extensions will be possible to expose future hardware innovations. It would be technically straightforward to provide an OpenGL ICD within the full Aeroglass experience without compromising the stability or the security of the operating system. Layering OpenGL over Direct3D is a policy more than a technical decision."
Now, now... Before we break out the pitchforks and torches, let's see exactly how MS plays this. The article is already slashdotted, so I'm going to have to do a little speculation.
If MS goes with a GL to D3D wrapper as a default implementation, but allowing vendors to write their own drop-in driver if they choose, then we get the best of both worlds.
For a small graphics device shop, maintaining a full ICD is a lot of work. If they had the option of "just do the D3D back-end and you'll get basic OpenGL functionality for free through the wrapper", the problem is solved. In this way, you actually get broader OpenGL support than you would with the current model, where anyone who wants good OpenGL support is stuck with having to implement a full ICD.
From the app writer's point of view it's also a win. Right now, as an OpenGL developer you have basically two choices: 1. Pick a PFD that goes through the graphics vendor's driver, and accept whatever coctail of driver bugs they never tested for you because you aren't Doom 3, or 2. Pick a PFD that runs your code through the dog-slow MS software path. If we had a 3. Pick a PFD that puts you in the safe but fast GL->D3D path, it would be easier and faster to bring accelerated OpenGL apps to market. I know of several OpenGL apps that purposely pick the software path because of driver bugs which wouuld immediately benefit from such a scheme.
So in conclusion, if MS is smart about this, they could keep their business focus on D3D, and broaden OpenGL support at the same time.
It simply wont make sales in India, China or the South American countries.
But then again, it never did. Everyone pirates the OS (at least in Central America which is where I am), because the price of the OS is a large fraction (if not all) of monthly income. Microsoft spent money putting Anti-Piracy billboards up around the city (billboards that cost $2000 a month to rent) instead of DUHHH selling the OS a bit cheaper in those markets. Like once you've done your programming it's really costing you a lot more to burn some extra CD's for the 3rd world.
No, Microsoft corporate think is to start a whole new programming cycle and come up with a cheap but CRIPPLED OS for the 3rd world. Heh.
The fear is, if they sell it cheap in the 3rd world people in the US will just import the 3rd world copies, and Microsoft will lose out. It's the same argument with cheap medication for the AIDS problem in Africa. Maximizing profit is more important to a megacorp than quality of life, or even life itself, apparently. Yet they sure are quick to outsource when they think they can save a buck. It's ok to make money but once in a while you have to address ethical issues as well and damn the share price. We're all on this planet together.
Seven puppies were harmed during the making of this post.
It will force game/application developers to write windows-only apps instead of cross-platform. OpenGL made is quite a bit easier to do that.
You know, I never understood why games developers don't just write for Linux (or indeed, any other OS), and then provide their games on a bootable disc.
You have to have the game disc in the drive anyway for most games, so there wouldn't be any hardship to the user, but it would remove all the issues of what libraries are installed on the host machine.
It would also remove the need for platform-specific versions for games (especially once Apple starts shipping their Intel-based machines).
(Spudley Strikes Again!)
i thought aero/glass was/is running on direct3d. so in what way does installing an opengl icd from your video card vendor turn off the new UI?
:)
and no i didn't read the fud article.
Science : Proprietary , Knowledge : Open Source
For those of you who have never worked with graphics drivers on windows, let me fill you in on why it doesn't work. Direct3D wants/needs full access to the graphics hardware for it to use hardware acceleration. Ever wonder why two windowed D3D apps run like crap compared to one single full screen D3D app? There's your answer, whenever D3D doesn't have full access, it has to go through a software layer to serialise video card hardware access... that translates to slower performance. Now, throw in OpenGL and you have a huge mess. You have a full screen D3D app (the windows UI), and now you want to run OpenGL via direct hardware access on it in a window? There is no way that the OGL ICD and the D3D drivers are going to nicely co-exist. One is going to have to translate their calls into the other driver's native API. Microsoft made the decision to force OGL to get translated into D3D calls to allow its desktop UI to run natively (ensuring all of windows runs nice and quick) and makes the OGL app take the performance hit. It's not some conspiracy, it's how they got things to work, and trust me, I know first hand how it works. The solution is actually pretty damned good considering the SHIT that graphics card manufacturers do to their cards from a hardware point of view. ATI and Nvidia require their entire pipelines to be flushed everytime you'd switch windows from OGL to D3D, that KILLS perfomrance. Throguh my many years of OGL and D3D experience I can assure you taht there is NO other way of doing this, except by forcing D3D apps to go through a translation layer that maps them to OGL calls, doing the exact same thing except in the other direction. And it makes no sense to give the graphics speed priority to a single app, when all other non-graphics apps will suffer (all standard windows programs will now be rendered using D3D), just think of how pissed people are when a single app hangs in windows today, and other apps are slugish to respond to minimize or restore commands... amplify that ten fold if they would have serialised OpenGL and D3D instead of forcing OGL to go through a translation layer and continue to run D3D natively. MS is evil. Sure, but this is truely the fault of Graphics card manufacturers, NOT MS. They could have made their hardware support both quite easily, but choose to do as little in the hardware as possible, and force the drivers to pick up the slack, well in this case, there is nothing the drivers can do that won't absolutely kill performance, so MS did the logical thing. And one last thing, on OSX they'd have the same problem if they had some sort of alternate 3D api. On windows, 90% of the stuff is D3D, or available in D3D versions. Just from a marketing point of view, their solution works at 100% the original speed 90% of the time. The other 10% of the time, it can run UP TO 50% slower, in practice it's usually about 15% slower. La-dee-dah... my old ATI 9200 compared to my newer X800 is at least 15% slower anyway, there's the 'performance difference'...
---
Programming is like sex... Make one mistake and support it the rest of your life.
This is the quintessential example of how Microsoft can't win, no matter what they do.
Most Windows crashes are caused by buggy third-party drivers, so Microsoft institute a method of verifying drivers and allowing the end user to see that they are verified. On the other, end users complain because they have to answer a couple of dialogs when installing unverified drivers.