ATI Talks Game Support, Future Of Graphics Cards
Sergio writes "Slo-Tech have posted an interview with ATI's representative in game developer support, Richard Huddy. He touched on many subjects, including the evolution of DirectX and OpenGL, why ATI doesn't provide much information to Linux driver developers, and the most common mistakes of game developers ('Nine out of ten games under-use the graphics card. That's amazing, and it's been true for the last three or four years.')"
According to the Antalus flyby benchmark in UT2003, my ATi Radeon 9500 Pro card (or is it 9700?) scores 88 in Windows 2000 versus 68 in Linux. Hopefully the gap will disappear, as has on the NVIDIA side, soon.
...because I don't play 3D games on PC. For the price of a high-end graphics card I can buy an Xbox or PS2 already, and they provide better gaming experiences. On the Windows desktop, 3D acceleration is completely unused, and many people spend money on expensive graphics cards for no reason. I am looking forward to seeing how Longhorn utilizes 3D acceleration for the next generation Windows UI.
The reason I don't know what kind of card I have is that, although I purchased a brand new, shrinkwrapped Radeon 9500 Pro retail box, I noticed that the card looked somewhat different from the OEM (I think Sapphire) 9500 Pro I'd used for a few days previously. Didn't think much of this until I started seeing indications in places like the XFree86 log that the card might be a 9700, instead of a 9500 Pro (I do realize the two cards both use the R300 NE chipset). Also, that Antalus flyby score is meaningfully higher than what Tom's Hardware found for 1280x1024x32 on a much faster system than my two-year old Athlon 1.4GHz. Haven't bothered to crack the case open again since, so until I do I'll happily enjoy the illusion that I somehow ended up with a 9700 for the price of a 9500 Pro.
The driver I use is a binary-only one from a German reseller. They appear to be betas of forthcoming versions of ATi's own drivers. As I have XFree86 4.3.0 this has been a great blessing, as ATi's own Web site only has drivers for XFree86 4.1 and 4.2.
To hear an ATI engineer criticize NVIDIA drivers?
... my NVIDIA card works at nearly the same performance in both Windows AND linux. Kind of hard to critize NVIDIA when you're drivers barely work, on ANY OS.
... I can't count how many ATI users try linux just to find that their brand new shiny Radeon is worthless in the OS. In the meantime nvidia users are enjoying full support from their manufacturer.
I read it as a blatant attempt to persuade buyers that NVIDIA hardware is better than it actually is.
Well gee Rich
when they should be producing better drivers which could enhance the value of all their existing hardware in the market.
Maybe ATI should be the ones doing a little "enhancement of value"
Keep whining about IP issues with linux and trumpeting DirectX 9 compliance. What good is a card with horrible drivers?
Newer features are exposed in newer drivers. So they may be buggy and perform sub-optimally. There's a learning curve. And enough newer hardware is difficult to get for the developer, how many users will have it?
Build a modular engine. And try to squeeze in that feature in the next iteration.
"As we've seen from the recent furore over driver cheats it seems likely that they don't plan to let their own inferior hardware come between them and first place."
I kept expecting him to rip into Nvidia's momma at some point.
"...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
Personally, I could care less if a game uses all the fancy features of a graphics card... if the game isn't fun, all the graphics in the world won't help it. At least ATI has a card with ASCII accelleration, heheh.
Seriously though, I used to have an ATI a while back, and eventually bought a GeForce2 MX mostly because it was supported in Linux. I completely expect this card to still be in my system 4 years from now, since I hardly ever use 3D acceleration. If I want video games, I have my Dreamcast.
-"One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man." -EH
That is true. However, if you install the newest DirectX (which will install no matter how shitty your pc is), and you try to play a game written for say a GeForce4 and you have a TNT2, then your pc can figure out what the card should do and what the cpu should do. So, there is no reason for game designers to code to the least common denominator, they just have to code for the newest DirectX/OpenGL and the user's pc turns on available options for their card, and disables the others.
The reason that the graphics card is under-used is for two reasons. The first is that game designers, as you said, want the game to work well on lower end platforms. If your cpu is good enough you can add better graphical features even if your video card doesn't support it. For example Descent 3 adds motion blur if your cpu is L33t enough. However, the main reason that video cards are underused is that it's a fucking pain in the ass.
Let's say for instance that your name is not John Carmack, and you want to make a 3d game. You code it in C++, Cg, Objective C, Visual C++, OpenGL, DirectX9, whatever. You have all these different layers of 3d graphics you have to deal with, unless you just use someone else's engine. You've got shadows, lighting, colors, textures, mip mapping, bump mapping, shading, animating, it goes on and on with the insane number of things you have to do. When new apis emerge that let you use the video card to do more stuff it is very difficult to learn that much more crap.
It happens all the time no matter what you are coding. Ohhh, there's a function in that library that does that for me! I just wasted my time! Ohhh, there's a way that I can make the video card do that really easily and I will save some cpu and some ram! Nobody, sans Carmack, knows this stuff well enough that they can use the graphics card 100% of the time it is possible and better to do so. Except of course in the most graphically simple of programs. However, I do urge game developers to try to use the GPU more than the CPU. It results in many advantages for the gamer.
The GeekNights podcast is going strong. Listen!
If you're saying that the performance of a GF4 can be equivalent to the performance of a TNT2 + fast CPU, then you my friend are on crack.
So, there is no reason for game designers to code to the least common denominator, they just have to code for the newest DirectX/OpenGL and the user's pc turns on available options for their card, and disables the others.
When you say "user's pc" I hope you mean "configuration item in application program". The app can make an intelligent guess at what features to turn on, but the user still may have to decide what to do to get acceptable performance.
There is some stuff that can be done in software on the CPU fast enough. But that's a pretty short list. If you don't believe me, turn on NVIDIA's emulation driver and try out a couple of the demos at Humus' site. If you don't have an NV30, you're SOL.
The dev still has to work his ass off to make sure that the app will run at 30fps on a GF2.
When new apis emerge that let you use the video card to do more stuff it is very difficult to learn that much more crap.
Agreed.
Nobody, sans Carmack, knows this stuff well enough that they can use the graphics card 100% of the time it is possible and better to do so.
The card that is supposed to be able to run Doom3 at full-blast is a GF3. A card that is about 2 years old. And careful with the JC word, you wouldn't want others to mistakenly persume you were an easily blinded fanboy. There are tons of knowledgable developers out there that don't have the same noteriaty. (I'm not saying that I'm one of them.)
However, I do urge game developers to try to use the GPU more than the CPU. It results in many advantages for the gamer.
You say that as if developers don't understand this concept or aren't even trying.
I can buy an Xbox or PS2 already, and they provide better gaming experiences.
Really? That depends on what experience you're looking for. I play both PC and console games and I generally prefer PC games to consoles for the exact reason you cited: Better gaming experiences.
I like the available titles better. I like the graphics better. I even like the controls better. For example, playing an FPS with an Xbox or PS2 controller doesn't come close to the keyboard/mouse or keyboard/controller-of-choice combination on a PC.
What if I want to play a strategy game or a deep RPG? There are far more PC titles out there than consoles in both of those genres. Consoles are good for certain types of games, but PCs can offer the complete range. The fact is that most games aren't developed for consoles. That may change, but it's not the case right now.
I've played Halo. For a console game it's amazing. It understandably blew the minds of console-first gamers but I wasn't impressed. Halo was originally supposed to be a PC game with Internet online teamplay, then Microsoft bought Bungie. Now Xboxers have to wait for Halo 2 on Xbox Live to get the online experience, and PC gamers will get Halo as it was originally intended later this year, with all the online play they want and much better graphics (that's the plan anyway).
Why should I view my visuals on a TV that has fuzzy 320x240 resolution (or 640x480 for "high-definition") when I can view better visuals at a crisp 1024x768 or higher on my monitor?
Until recently, the only way you could have a reasonable online gaming experience at midnight was with a PC and the Internet (LAN doesn't do it unless you live in a dorm with dozens of other people, or head out to a LAN gaming center). I don't have to pay an extra subscription fee (Xbox Live) just so I can play online games. I just connect to servers or set up my own through my high-speed line which I needed for work anyway.
If I want to play some of EA's great sports titles, I can't get them on a console and I definitely can't play them online with a console - EA said no dice.
As for Windows not using 3D on the desktop, a 3D card makes for faster 2D renders, probably because the chip-makers put their latest technology (both 2D and 3D) into them. If you view or edit video or images, if you use spreadsheets or a word processor, if you browse the Web (there are of heavy sites out there), having a better graphics card will make a discernable difference.
So you really have to be careful and clear about what you mean when you say that consoles offer "better gaming experiences." Different? Yes. Better? Not necessarily.
According to this page :
http://www.pricewatch.com/1/37/3846-1.htm
the cheapest video card is $4
So you have one of those yeah?
or are you talking out of your Arse?
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
A few years back when I built my 60MHhz Pentium desktop, I specifically asked the shop to include the cheapest video card they had. And it turned out to be similar to the one your pointed out (PCI 1MB). I was running Windows NT 4.0 without any games installed, the cheap video card was simply enough for me. Anyway, my current PC is a laptop, so I don't get to choose the video card.
Full PAL resolution is 720x576
however, that doesn't negate your agument.
& another reply to the parent - I'd like to see your cheap card run my dual head setup at 4096x1536 in 32 bit @ 75Hz!
Treat almost all computer parts as consumables and then the sums are quite simple, every two years you're gonna need 1. a new VGA card & 2. a new CPU/MB/RAM
If you're clever you will offset these a year apart.
The required budget for these will be in the region of $500 each. So every month pop $50 in your savings account and then you can buy your parts as you need them.
Some of us are professional computer users in may senses of the word, not just someone who plays the Sims once a week. Eye strain is a real issue but it is an issue that can be solved with money.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
4096x1536 in 32bit colour @ 75Hz across two 21" monitors.
Worth every penny.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
"ATI gives Linux drivers quite a high priority"
Can you say bullshit?
What balls! ATI were the first to do 'application specific optimisations'! And their DX table fog (or was it vertex fog?) still doesn't work properly!
Well gee whiz. And I suppose we should thank them ?
After all, it is already necessary to practically change PC every 18 months to keep the framerates fluid.
If you're saying that the performance of a GF4 can be equivalent to the performance of a TNT2 + fast CPU, then you my friend are on crack.
If you'd read the post, you'd see that that's not what he's saying at all. What he's saying is that by coding to an abstracted API that is common across many different chipsets, you don't have to code to the chipset at all. So if the game uses DirectX, you can run the game on a TNT2 or a GeForce4 and the application will still *work*. He didn't say it would work well on a TNT2 if it's written to GeForce4 level capabilities.
Ita erat quando hic adveni.
That is true. However, if you install the newest DirectX (which will install no matter how shitty your pc is), and you try to play a game written for say a GeForce4 and you have a TNT2, then your pc can figure out what the card should do and what the cpu should do. So, there is no reason for game designers to code to the least common denominator, they just have to code for the newest DirectX/OpenGL and the user's pc turns on available options for their card, and disables the others.
Well, you have some clue what you're talking about, but most of it went over your head or you were told something incorrect(ly). DirectX has no clue whether or not your system is powerful enough to handle the features enabled in the game, it only knows whether or not your card supports them. If your card doesn't support them, it renders them in software (which is always slower, unless you're playing a DirectX3 game on an nVidia Riva 128 with a P4 CPU, where the card, the game, nor DirectX support most of the complicated rendering done by new video cards). It won't turn features off, it will just try to do them in software, which will bog your computer down unless you have a lot of excess CPU cycles. The game has to turn them off, which is usually done through a menu or a command of some type.
The reason that the graphics card is under-used is for two reasons. The first is that game designers, as you said, want the game to work well on lower end platforms. If your cpu is good enough you can add better graphical features even if your video card doesn't support it. For example Descent 3 adds motion blur if your cpu is L33t enough. However, the main reason that video cards are underused is that it's a fucking pain in the ass.
Descent 3 ran like a solid turd on most systems available at the time of it's release, I wonder why that could be. It's simple, if you want to use the extra features and still sell your game (only OEMs bought Descent 3 as far as I can tell, since the only Descent 3 discs I've ever seen came from OEM packages), you add option menus to turn them on, and default them to off (or check the video card they're using and turn them off or on based on your testing that shows which cards can handle it). Why did Half-Life sell so well? Besides having a much-touted single-player experience, it could play on a P166 w/ a crap video card at a time when you couldn't even buy that type of system new any more.
Let's say for instance that your name is not John Carmack, and you want to make a 3d game. You code it in C++, Cg, Objective C, Visual C++, OpenGL, DirectX9, whatever. You have all these different layers of 3d graphics you have to deal with, unless you just use someone else's engine. You've got shadows, lighting, colors, textures, mip mapping, bump mapping, shading, animating, it goes on and on with the insane number of things you have to do. When new apis emerge that let you use the video card to do more stuff it is very difficult to learn that much more crap.
Most of the stuff you're doing, though, is handled by the card or DirectX/OpenGL. Cg will only be used if you're writing shaders for nVidia cards (does ATi support Cg yet?), Objective C will only be used if you're porting to OS X and for some reason want to use Cocoa (not likely). You'll use either C or C++, and whether or not you use Visual C++ is a personal choice of IDE that may or may not be determined by the company you work for. Maybe you do code both for OpenGL and for Direct3D, but most people just do one or the other because it is hard to find people that can do both well, and that can handle building the game so that the renderer can be swapped out based on a user's choice. As long as you're on Windows you're probably going to use DirectX for input and sound anyway, and maybe network support, too.
In any case, the point that seems to be missed by many people is this: the game starts development about 18-24 months before it's released (unless you're Blizzard, id, or the DNF team). Video cards come
-PainKilleR-[CE]
What he's saying is that by coding to an abstracted API that is common across many different chipsets, you don't have to code to the chipset at all. So if the game uses DirectX, you can run the game on a TNT2 or a GeForce4 and the application will still *work*. He didn't say it would work well on a TNT2 if it's written to GeForce4 level capabilities.
But, if you code to an abstracted API in such a way that it will work on a TNT2, you are definitely *not* using the full capabilities of the card, unless you're talking about a game that will run on a TNT2 in 4 years, when the CPU is fast enough to do what the GeForce4 does for you today. That's why most games that do take advantage of newer cards have option menus that let you enable the options those cards allow, because a TNT2 w/ a 2GHz CPU can't do what a GeForce4 w/ a 2GHz CPU can do.
Of course, if the only thing compelling about your game is the graphics, maybe you have enough CPU cycles left to do the T&L in software mode at a similar quality to what the GF4 can do. Maybe you can do the shaders in software (assuming that you'd even bother doing the shaders in Direct3D instead of Cg). DirectX will do the work in software if you have features enabled that can't be done by your hardware, but that doesn't mean it will run well (or even run at all).
-PainKilleR-[CE]
...the graphic card companies hardly ever release information on how to optimize cards for a given operating system.
Dolemite
__________________
Save the World! Use a Quote!
I've seen Radeon tech docs and unless they have
improved their quality drastically over the past
few years, my bet on why the drivers are poor
is because the ATI people writing them have poor
docs to start with -- nevermind the opensource
folks! The docs are full of omissions ambiguities
and inaccuracies. I would not want to be an ATI
coder, for sure.