Home > Computers, Games, How-To > How To Fix Deus Ex: Human Revolution Crashing in DirectX 11

How To Fix Deus Ex: Human Revolution Crashing in DirectX 11


Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700

Warning: Invalid argument supplied for foreach() in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700

Warning: Invalid argument supplied for foreach() in /homepages/44/d181267435/htdocs/weblog/public_html/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

The Problem

I picked up a copy of Deus Ex: Human Revolution and while it is a great game, I found one major problem with it.  It kept crashing to desktop!  When it would crash was totally random.  sometimes I could play for an hour or two and it would be fine.  Other times it would crash in 5 minutes or less.  Searching around the internet a lot of people said switch off DirectX 11 and just use DirectX 10.  I did this and it did seem to stop the crashing, but the graphics just weren’t quite as good which is unacceptable!  My computer can play this game with max settings in DirectX 11 with just fine frame rates so why should I have to settle for lesser graphics?

The Struggle

I tried many things I read online to try to remedy the problem.  I updated and re-installed the latest video drivers a few times.  I had Steam scan the files for errors and defrag them.  I messed around with the anti-alias settings.  I started even digging into one suggestion of trying to delete/rename some ATI .dll file that was causing problems, but none of these things seemed to work.  I continued searching some more but this time I included in my search the graphics card I have, the GeForce GTX 570.  I heard a lot of the same things, but eventually I came across one forum which contained the answer to my problem.

The SolutionnvidiaInstpector_adjust_voltage

I can’t for the life of me re-find the posting, but the guy had said that certain DirectX 11 calls can cause the GTX 570 to crash and that the way to fix it was to bump up the GPU voltage a little bit.  He said to use the program NVidia Inspector and just increase the GPU voltage one notch at a time until the crashes stop.  The default GPU voltage is 1.0V and he claimed that the GTX 570 GPU was rated to handle 1.1V so a small bump shouldn’t hurt it at all.  I had tried everything else so I figured what the heck, I’ll give it a try.  It worked!

The image above shows exactly what I did.  In NVidia Inspector I bumped the GPU voltage up only one notch from 1.000V to 1.013V, only 13mV, and the crashes stopped!  Deus Ex runs great now in DirectX 11 and I don’t get crashes anymore.  It even seemed like it reduced my crashes in Battlefield 3!

Why Does it Work?

Being an electrical engineer I couldn’t just have it work, leave it at that and be happy.  I started thinking about why this works and I’m pretty sure the following explains why.  Basically it comes down to this: the transistors aren’t switching fast enough for the clock speed the chip is running at and increasing the voltage speeds them up.  Let me explain.

Operations in a processor have to be synchronized and the synchronization is done with a system clock, an electrical signal that toggles between 1 and 0.  This clock switches at a specific frequency and this is specified as the processors speed.  Operations in the processor must complete and arrive at a steady state before the clock signal changes value.  If they have not completed before the clock transition arrives, there is a good chance that the wrong value will get locked in at the synchronization point.  If this happens, then the data being processed gets corrupted and errors occurs.  What I think is causing the game to crash is that certain DirectX 11 calls make the GPU perform an operation that just barely completes before the clock edge arrives and Deus Ex is putting the GPU in just the right state that for some reason this operation takes just a little bit longer than normal and the operation is not quite complete when the clock edge arrives.  This causes the wrong value to be latched in by the clock corrupting the data and causing the game to crash.

In order to keep this from happening, the transistors in the processor need to be capable of switching quickly enough so they finish before the clock edge arrives.  Without rebuilding a processor, the only way to make the transistors switch faster is to increase their drive current.  Increasing the drive current charges the gate of the transistor more quickly thus making them switch faster.  To increase the drive current we simply increase the drive voltage.  More potential across the transistor causes more current to flow and thus the transistors switch faster.  Increasing the GPU voltage causes the problem operation to complete a little bit faster that even in the odd case it still beats the clock edge and the error no longer occurs.

It’s for this reason that CPU over clockers increase their core voltage when doing extreme overclocks.  The high clock speeds give the transistors less time to complete their operations before the clock edges so the voltage needs to be increased to speed them up.

Conclusion

If you are experiencing crashes in Deus Ex: Human Revolution when using DirectX 11, and you have a GeForce GTX 500 Series GPU, you may be able to fix the problem with just a small bump in the GPU core voltage.  Grab yourself a copy of NVidia Inspector and bump the voltage up just a notch or two and your problem should be gone.

  1. No comments yet.
  1. No trackbacks yet.