DX9 vs DX10
It’s here where things begin to get weird. The current 1.0 build of the game appears to have a bug which prevents DX10 cards like the Radeon HD 2000 series and GeForce 8 series from properly running the game in DX9 mode when the “DX10 detailed surfaces” setting is toggled off in the game’s graphics settings.
When this setting is turned off, the game is supposed to use the DX9 path in BioShock, regardless of the card used. But it appears when a DX10 graphics card is detected, the game runs a hybrid DX9/DX10 path that mixes some DX10 elements along with some features of the DX9 path.
For example, the
DX9 vs DX10 screenshots we provided last week clearly illustrated the difference between DX10 soft particles as well as DX10’s crisper shadows, but we didn’t see any difference in water ripples between DX9 or DX10. Keep in mind that in order to take those screenshots, we simply toggled the DX10 detailed surfaces setting on and off.
But once we force the game’s DX9 path manually by the game’s command line, we can clearly see the difference in water ripples between DX9 and DX10. For proof, we’ve taken a number of screenshots from BioShock. We will start by bringing back our screenshots from last week’s article:
![BioShock Performance Part 2: Mainstream Cards [ BioShock Vista Hybrid DX9/DX10 @ 1600 x 1200 ] > View Full-Size in another window.](images/21-s.png) BioShock Vista Hybrid DX9/DX10
|
|
![BioShock Performance Part 2: Mainstream Cards [ BioShock Vista DX10 @ 1600 x 1200 ] > View Full-Size in another window.](images/22-s.png) BioShock Vista DX10
|
|

BioShock DX9/DX10 Hybrid

BioShock DX10

BioShock DX9/DX10 Hybrid

BioShock DX10
As you can see in the screenshots above, the water ripples look practically identical under DX9 and DX10. At the time we couldn’t spot any immediate differences between the two and basically called it dead even. But what happens when you force DX9 mode manually? Ugliness:
![BioShock Performance Part 2: Mainstream Cards [ BioShock Vista DX9 forced @ 1600 x 1200 ] > View Full-Size in another window.](images/23-s.png) BioShock Vista DX9 forced
|
|
![BioShock Performance Part 2: Mainstream Cards [ BioShock Vista DX9 forced @ 1600 x 1200 ] > View Full-Size in another window.](images/24-s.png) BioShock Vista DX9 forced
|
|

BioShock DX9 Forced

BioShock DX9 Forced
As you can see, the beautiful water ripples behind the splicers are now gone, and have been replaced by what appears to be a foamy mess behind them. You can see another example here, where we strike the water with our trusty wrench:
![BioShock Performance Part 2: Mainstream Cards [ BioShock DX9 Water Forced @ 1600 x 1200 ] > View Full-Size in another window.](images/25-s.png) BioShock DX9 Water Forced
|
|
![BioShock Performance Part 2: Mainstream Cards [ BioShock DX9 Water Forced @ 1600 x 1200 ] > View Full-Size in another window.](images/26-s.png) BioShock DX9 Water Forced
|
|
![BioShock Performance Part 2: Mainstream Cards [ BioShock DX10 Water @ 1600 x 1200 ] > View Full-Size in another window.](images/27-s.png) BioShock DX10 Water
|
|
![BioShock Performance Part 2: Mainstream Cards [ BioShock DX10 Water @ 1600 x 1200 ] > View Full-Size in another window.](images/28-s.png) BioShock DX10 Water
|
|
Screenshots really don’t do the DX10 ripples justice, it’s tough to see just how fluid the water flows under DX10 with the above screenshots, but those were the best we could make.
This video provides a nice live action demonstration of what we’re seeing in-game.
DX9 vs DX10 Performance
Now that we’ve seen a better illustration of how DX9 compares to DX10 in image quality, we were eager to test out the performance differences between the pure DX9 path versus the hybrid DX9/DX10 path compared to the pure DX10 path. Unfortunately, the GeForce testbed wouldn’t cooperate with our pure DX9 testing. Regardless of what we tried, the game continually locked up during our FRAPS walkthroughs with the GeForce 8 cards when we forced the DX9 path. We couldn’t complete a single run without the game locking up. As soon as we went back to the DX10 path, or the hybrid DX9/DX10 path, stability came back 100%, so we’re not sure if we just encountered an issue with our particular testbed or if the problem lies elsewhere. We’re going to try and resolve this issue as quickly as possible and re-run all benchmarks for all cards (including the high-end GeForce and Radeon cards); in the meantime we were able to get the Radeon HD 2000 series cards to work okay.



| BioShock Performance 1600x1200x32 |
| Card | Min FPS | Max FPS |
| Radeon HD 2600 XT DX9 | 18 | 49 |
| Radeon HD 2600 XT DX10 | 14 | 31 |
| Radeon HD 2400 XT DX9 | 7 | 18 |
| Radeon HD 2400 XT DX10 | 6 | 12 |
 |
Notes
As you can see, performance between the pure DX10 mode and the hybrid DX9 mode is roughly the same. But once you force the game’s pure DX9 mode the Radeon HD 2600 XT sees a substantial boost in performance. At 1600x1200, performance improves by 1.5X!
The Radeon HD 2400 XT sees gains as well, although they’re not nearly as substantial.
The question that is impossible to answer at this point is how much of this performance difference is due to drivers. With driver optimizations, you’d like to see the Radeon HD 2600 XT’s DX10 performance improve so it closes that gap to a more manageable level. We’d also be curious to see how the GeForce 8 cards perform under the pure DX9 mode in BioShock, as it’s no secret that their DX10 Vista driver has trailed their DX9 driver’s performance.
Hopefully we can get our testbed system running with more stability under DX9 so we can bring you those GeForce 8 results shortly. Our testbed has seen a wide range of NVIDIA video cards in the past week, so a clean install may be in order, but it’s strange that it runs perfectly under the other DX10 modes in BioShock. This indicates the problem could lie elsewhere.
UPDATE 8/30/07: GeForce 8 series DX9 numbers have been added above. As you can see, the GeForce cards perform similarly in BioShock regardless of the rendering mode used. As a result, the Radeon cards have the lead in DX9, while NVIDIA leads AMD in DX10.