COMBATSIM.COM: The Ultimate Combat Simulation and Strategy Gamers' Resource.
 

 
AMD and 3DNOW
by Leonard "Viking1" Hjalmarson
 

Q: How much does support for 3dNOW depend on an individual game developer, and how much is already present in DX6? Is it some combination of the two, and if so could you spell it out.

Support within the application (as well as within DX) provides the highest level of optimizations possible --- then coupled with optimizations in the driver for the graphics card. A game can support 3DNow! through DX6, or through native code optimizations, or both. The performance boost due to the optimizations in DX6 are not as great as when the actual application has been optimized for 3DNow!. Check out the benchmark scores we post on the optimized version of Q2 for an example of how far optimizations can push this stuff.

Q: Does this change/improve with DX7?

You would have to talk to Microsoft about any additional support in one of their products.

Q: Regarding the 19 new instructions in the K7, are these supported in DX7? And how much does support depend on the individual game developer and how much on the OS, as above.

Beyond providing the basic info on the new instructions, we really are not going into too much detail at this time about their implementation. Any questions about support in DX7 should be directed at Microsoft. (Ed. We did indeed send some questions to Microsoft but have not yet received the response.)

I still believe that regardless how extensive the support is in the OS, it is no substitute for optimizations in the code of the game ---- at least when it comes to providing the most bang for the buck. Then again a developer only has to support DX6 to support 3DNow!, so maybe that is the most bang for the buck? Clearly, for optimal performance actual optimizations in the application are required.

The Video Driver Equation

The other place where you can net some increases in performance is in the graphics driver. I can break down this relationship further.

Typically, first generation D3D compliant graphics boards such as Voodoo1 or Riva 128 only handled hardware rendering, which is the last stage in the 3D pipeline - where the texture maps are manipulated and then pasted on the polygons. This is typically integer intensive, which also explains why MMX never really took off. First generation 3D cards provided higher integer performance than what MMX was capable of providing.

Second generation cards added a full hardware triangle setup engine. This is the second stage of the 3D pipeline, and it is typically floating point intensive.

Click to continue

 

This is where the 3D card takes the vertices generated in the geometry setup and connects them to form a 3D mesh made up of triangles. The reason optimizing the driver can net about 10%-15% additional performance is that the driver still uses some floating point calculations in the process of passing geometry data to the triangle setup engine.

That leaves the geometry transform stage which is the first stage of the 3D pipeline. This is also very floating point intensive. This is where all the scaling, rotation, clipping and lighting are calculated. You end up with discrete coordinates and lighting information which is then passed to the hardware. This was the part that was accelerated when the Quake II engine was modified by AMD and it netted about 35%-40% gains in performance.

Developers, for their part, can have a big impact on how well their games play while using 3Dnow!. That's because the real bottleneck is in the in-game physics calculations and then the geometry transforms, since this is all currently handled by the CPU. Most modern 3D hardware is geometry limited and sit around much of the time waiting for data to be passed to it.

That's why you see on many cards that a faster CPU gives you more frames per second. Cards that scale well with CPUs are being constrained by the CPU. If you get negligible performance increase even with faster CPUs that means that your card is triangle or fill-rate limited, i.e. you've saturated the performance of your 3D card.

In a nutshell, developers can have a big impact on the performance of their game by adding 3Dnow! instructions to any floating point calculations within their game for AI or other physics based calculations as well as adding 3Dnow! to the geometry transform routines built into the 3D engine. By the end of this year, this equation will change again as the latest cards will start to sport onboard geometry transform engines.

However, that doesn't mean that 3Dnow! becomes irrelevent. On the contrary, it means that the processor can then fully utilize all it's compute cycles to simulate more complex environments, more complex object physics, and even better computer AI. 3Dnow! will help to increase floating point performance further to aid in creating physically and graphically rich environments.

End of Interview

Go to 3dNOW: White Paper Excerpt

Join a discussion forum on this article by clicking   HERE.

 

Copyright © 1997 - 2000 COMBATSIM.COM, INC. All Rights Reserved.

Last Updated June 29th, 1999

© 2014 COMBATSIM.COM - All Rights Reserved