DirectX problem, how I loathe thee

Sometimes, your computer decides that you're not allowed to get any work done, or have any fun, today.

The new bane of my existence.

Mine did it to me today, by suddenly deciding (according to the DirectX Diagnostic Tool, dxdiag) that my graphics card had no memory and was not capable of DirectX acceleration of any kind.

Yes, as per Microsoft support document 191660, "The DirectDraw option or the Direct3D option is unavailable when you start Microsoft games for Windows".

The "Adapter" page in Display Properties (I'm running Windows XP) lists the right specs for my GeForce 7800 GT, but dxdiag believes there are "n/a" megabytes of memory on it.

This doesn't cripple Windows in general, but it means I'm not going to be playing any 3D games to speak of (OpenGL games still work fine, but most Windows 3D is Direct3D), or watching much video. Small-dimensioned video files play OK as long as they don't have to be scaled to a higher resolution; scale 'em up and the frame rate dives as the CPU begs for mercy.

I've had this problem once before. Then, I just had to run dxdiag, turn off whichever DirectX Features were still available in the Display tab, then close dxdiag and run it again, and turn all of the now-available-again features back on. Totally opaque for the everyday user, but a doddle when you know how.

Now, though, DirectDraw Acceleration, Direct3D Acceleration and AGP Texture Acceleration are all Not Available, and the enable/disable buttons for them are greyed out, no matter what I do.

(Needless to say, the DirectX Files tab in dxdiag says "No problems found"!)

And this is the way it is apparently going to bloody well stay, because I've been banging my head against it for more than six hours now, making no progress whatsoever.

I can get work done while the computer has this problem. If anything, it makes it easier to work, because I sure as hell can't play. But I have a hard time doing anything, including sleeping, if there's an unresolved problem like this dancing around in the back of my brain.

There's quite a lot of info on the Web about this problem, including some pretty freaky suggestions, most of which are mentioned on the Microsoft page.

Herewith, the list of Things I've Tried:

I've reinstalled the graphics and motherboard drivers, and the latest version of DirectX 9, multiple times. Yea, multitudinous have been the reboots.

I've cleaned out the old Nvidia drivers with Driver Cleaner Pro (previously mentioned here) before reinstalling them.

(Oh, and yes, "Hardware acceleration" in Display Properties is set to "Full". I've tried setting it to None and then back to Full, too.)

I've tried the weird-sounding suggestion to enable, then disable, Remote Desktop Sharing in Microsoft NetMeeting, because the sharing feature apparently blocks Direct3D, and cycling through it can perhaps cancel some other application's similar block.

I've disabled the Terminal Services service, which I don't need anyway.

I've uninstalled my monitor in Device Manager and rebooted, even though this particular piece of voodoo is only at all likely to work if you're removing phantom monitors from an extra graphics adapter, like an integrated motherboard adapter that you're not using.

I've reinstalled Windows over the top of itself.

(Actually, the first time I did that I accidentally told Windows the wrong drive, picking the other one in the system that's the same size as the actual boot drive. So I created a shiny fresh copy of Windows that I didn't want. That was thirty minutes I'll never get back - though I didn't bother installing graphics drivers in the new Windows. I suspect that DirectX would then have worked, but who knows?)

I've restarted the computer with a "clean boot procedure", by using the System Configuration Utility, msconfig, to skip all startup items and non-Microsoft services.

(This, entertainingly, showed me that msconfig does not consider Windows Defender to be a "Microsoft service".)

I've turned off "Enable Write Combining" in Display Properties and rebooted. And then turned it back on again. And rebooted.

And, the last option on the Microsoft page: I created a new user account.

The Microsoft page doesn't tell the hapless troubleshooter what to do with the new account, mind you. It just tells you to make it, and... wait for its healing energy to permeate your computer's chakras?

I presumed that I was actually meant to restart and log in as the new user, so I did that. But it of course did not help.

Next, the Microsoft support page points you to another Microsoft support page, "How to troubleshoot display issues in Microsoft games". But that contains nothing helpful, either.

(I love how Microsoft's pages always mention "Microsoft games" in particular. That's not really a good PR message - it suggests that other DirectX games might work fine, but ones from companies owned by Microsoft wouldn't.)

I've even visited the More Help tab in dxdiag and then clicked the DirectX Troubleshooter button, with the mad hope that this might be the first instance in human history of a Microsoft Troubleshooter actually shooting some trouble.

How Windows troubleshooting wizards always end.

So much for that.

All of this screwing around has messed my Windows installation up a little more than it was before. There was one incredibly bizarre problem, now resolved, that I'll leave for another post, and all of my icons are of course bunched up on one side of the screen because layout.dll has forgotten where they were.

Oh, and ACDSee now has a great error:

Groovy error.

But the problem remains.

If Web pages about this are anything to go by, this problem can be a bit like lower back pain; it makes you suffer for a while, then just goes away as mysteriously as it came, when you reboot for some other reason. I've made a frickin' hobby of rebooting today, though, and the problem ain't gone away yet.

The only option left, as far as I can see, is a proper nuke-from-orbit Windows reinstall from scratch. (I suppose I should have kept the accidental install on the other drive, instead of deleting that Windows directory when I got back to booting from the proper drive. Oh well.)

That'll mean losing most of the system setup stuff I've done over the last year and a half of largely trouble-free computing, which is not that big a deal, of course.

But it's ludicrous to have to do that just because Windows has arbitrarily decided not to let the graphics card accelerate anything any more. It's like having to reinstall Windows because it's decided to not let you use anything above 640 by 480, or because the audio "mute" box is permanently checked. It feels like buying a new car because the horn doesn't work in your old one.

(And yes, I have been tempted to use this as an excuse to get a whole new computer. Mmmm, quad core...)

I've swapped e-mail with a fellow who works at Nvidia; I'll drop him a line and see if he's got any ideas. I also invite you all to contribute your own hare-brained schemes in the comments.

I will, of course, also update this post when the problem's fixed, whether by diplomacy or the nuclear option.

[UPDATE: Yeah, I reinstalled Windows. Latecomers haven't missed all of the fun and games, though; check out the comments!]

39 Responses to “DirectX problem, how I loathe thee”

  1. Tleilax Says:

    Have you tried to reset the BIOS? There's an option called "Reset configuration data". This has helped me a few times with similar problems. Maybe System Restore? Unless like me, you turned it off?

  2. therealbartron Says:

    Buy ac?...ha ha ha....em...hmmm..

    Seriously though, I'd be yanking out every piece of hardware except the mobo and CPU and get that config working, then gradualy add things one by one (assuming that you have a mobo with generic on-board everything). I'd also be trawling through the BIOS and turn off anything that wasn't urgently needed until later (e.g. onboard NIC, sound, etc) and disconnecting any drives excpet for a hard drove and a CD drive.

    Of course, if the crash-diet approach does nothing then it's off to re-install land for you. While not as bad as 9x days (I'd re-install tht every 3 months at least) XP still benefits from the odd re-install every 18 months or so.

  3. therealbartron Says:

    hmm...that first line should have been something witty like "buy a mac"....somehow I think it lost its punch due to the serious pre-caffene typo (damn mac keyboards)

  4. uve Says:

    check your video card in another PC ;)

  5. Darkside Says:

    When Dan takes that path, we will know the rapture is upon us.

  6. sockatume Says:

    It's really quite obvious. Your computer hates you. You must demonstrate the error of its ways with a large blunt object or a small, exploding one. The computer in question can only take this message into its next life as a mistreated POS terminal, but it will also be a potent demonstration for all other computers in the vicinity.

    Failing that, have you tried uninstalling that graphics card, removing it, and installing another card in the same slot, then reversing the process?

  7. radd Says:

    If you have a video card from another manufacturer (such as an ATI Radeon) lying around, I'd try completely uninstalling the nVidia drivers, change video cards completely and install the new card's drivers (and directX) and see if that fixes it. Then reverse the procedure.

  8. corinoco Says:

    I wonder if some date counter in an obscure MS dll has clicked over to 'sucky' in the past day or two. My machine (a much over tinkered-with) s939 AMDX2 either has a case of bad dll-itis, or a dodgy PSU or a dodgy MB(scariest option - you can't get 939s with PCI-E, 4xSATA and 4xDDR anymore - that means new CPU, new MB, new RAM, instead of ring for partner... oh the choices).

    But seriously: the MS forums on Technet might well be your saviour. I've had all sorts of very obscure DNS wierdofests sorted in no time by gurus on those forums. It really is amazing how helpful some MS insiders can be, even if their fixes are a bit like the 'open all the windows, then close them' joke.

    My guess - a single bit error on the HDD, likely deep within registry or some critical D3D DLL. I don't think it's possible to hack all the D3D DLLs out without killing Windows, I would back up your user folders and nuke-from-orbit. A reinstall is a coupla hours (bewdiful!); I'm getting scarifyingly good at rebuilds since I've been mucking with (gasp) Vista betas!

    and therealbarton - buy ac? for teh winnar!

  9. Bruce Says:

    Ain't karma a bitch. One day you are skiting about your new monitor, making every one of your readers covet thy possession. On the next day balance is restored by removing you pleasure

    Now I am sure you will try and argue that there is a perfectly rational explanation for this that does not involve psychic forces, but the anecdotal evidence is absolutely clear – B followed A therefore B was caused by A.

    There are only two ways to atone for your sins, (1) donate the monitor to a worthy cause. While I could put my own name forward, that would shift your bad karma to me. (2) place a fancy sticker on the side of your PC. Then when the problem is mysteriously resolved, you have a product fully tested and ready to market.

  10. Mohonri Says:

    You have much greater patience than I, that's for sure. I would have long ago nuked it and reinstalled. After backing up my data. And after using nlite to lessen the pain of updating the OS.

    You might also consider creating a disk image once you get everything working and reinstalled, even including all your assuredly multitudinous applications. And then periodically update or replace it with a newer image. I wish I were in that habit, as my current machine needs a nuke/reinstall, and installing all the applications is a massive PITA.

  11. KnightRT Says:

    My first thought was as above. If you got another card laying about, trade out the 7800 GT and see if you can't finagle it into working.

    Beyond that.. now's a good time to give Vista a go. SP1 is due out any year now.

  12. Itsacon Says:

    -SNIP- it suggests that other DirectX games might work fine, but ones from companies owned by Microsoft wouldn’t. -SNIP-

    Funny you should say that. I run a dual graphics card setup (Geforce 7900 GT and a Matrox G550 PCIe), and the only game to ever break on it was a a Microsoft game (Combat flight sim IIRC). Its diagnostics tool proudly told me I was in possession of the world's only 7900 GT with 32MB of memory...

  13. Daniel Rutter Says:

    I'm pretty sure it's not the card. What kind of actual defect could cause a graphics card to no longer be able to do any form of DirectX acceleration, but still be fine for OpenGL?

    And now Windows is even more screwed up. It reckons it needs 71 updates, which it's downloaded, but can't install (it took some fast Print Screen pushin' to catch that image!).

    Yep, looks as if there's a reinstall in my future.

  14. m56 Says:

    Though I agree that the card pretty much can't be defective; I second the motion to swap cards, check things out, and then swap back. I've had it clear up mysterious problems for me in the past. And I'll bet my boots you have a veritable smorgasboard of badass tnt2s, rage pros, and their ilk in a box somewhere, just waiting to come out and prove what a good idea it was to keep them around.

  15. lummox Says:

    Well, I'm not sure this will help (or do anything at all) but there are utilities out there called Windows Enabler or Enabler2 or variations thereof which can enable disabled buttons, checkboxes etc. So I would grab one of these utilities, use it to enable the greyed out buttons in dxdiag, click them and see what happens (probably nothing but at this point I'd say it's worth a shot).

  16. Kryzaach Says:

    I hate to say it Dan, but the first thing i would check in this case is your PSU. If you've added your shiny new monitor, thus requiring dual link dvi, there is a chance that your gpu isn't getting all the juice it needs.

  17. Nimish Says:

    If you do reinstall windows, may I suggest you do it this way (it'll save you dozens of hours later):

    1. Do a nuke-from-orbit reinstall of Windows

    2. If possible, configure your windows to store /Documents and Settings on a different partition (say D:)

    3. Install all the programs you normally use to any partition except C:

    4. Configure your programs so that they store their data on D: (e.g., Thunderbird's mail folders)

    5. Create a bootable USB flash drive with Norton Ghost on it ( a CD will do, but a flash drive boots faster).

    6. Boot using the flash drive, and create a backup of your C: partition.

    That's it, next time you have a problem all it takes is 5 minutes to restore your PC to a fully-functional state, without losing any of your data. I'm actually quite surprised that everyone doesn't do things this way.

  18. Daniel Rutter Says:

    there are utilities out there called Windows Enabler or Enabler2 or variations thereof which can enable disabled buttons

    I'd never heard of Windows Enabler, but it sounded like a laugh, so I downloaded it.

    It does, indeed, let you click on greyed-out buttons. This creates a weird logic game in dxdiag in which each Enable/Disable buttons changes status according to which others you've clicked and in what order. You can shuffle through different combinations of Enabled/Not Available/Partially status for DirectDraw, Direct3D and AGP texture acceleration. The best I've managed to get out of it is Direct3D acceleration being marked Enabled, with the other two still officially Not Available.

    I of course assumed this was purely cosmetic, and Direct3D was actually still broken. Surely a hack that just forces buttons to become clickable again won't do anything useful, when the button status is indicating some underlying condition. Sticking a screwdriver through the Check Engine light isn't going to repair your car's fanbelt. Similarly, if a Save File memory option is greyed out because there is no file currently open and so nothing to save, you will not cause a file to spring into existence if you hack the menu item into selectability.

    But bugger me with a sequined pineapple if Supreme Commander doesn't run A-OK again now.

    Happy as a freakin' clam.

    But I can't enable DirectDraw acceleration, so video scaling is still busted, and those zillions of uninstallable updates are still sitting there waiting.

    So it's official. Windows is just refusing to work because Windows is refusing to work. There is no underlying hardware problem, but Windows has stuck its elbows in its ears and stopped responding to hails.

  19. radd Says:

    My suggestion to change card wasn't so much to check to see if your card is faulty, btu by using a completely different card with a completely different driver model (ATI vs nVidia), you can be absolutely sure that there aren't any legacy driver components hanging around (I only trust those driver removal programs to a degree).

  20. Anthony Hersey Says:

    Nuke early, nuke often is my new motto with Windows. Too easy to lose days of your time trying to fix it, versus half a day to reinstall (maybe less if you use disk imaging).

  21. supagold Says:

    I'm going to place another vote in favor of trying System Restore. I've seen it fix some really weird stuff, and I always leave it switched on to use as an option of last resort.

  22. Stark Says:

    Ok then, I've used Ghost for years now and it has saved my bacon more times than I care to remember - so I heartily recommend it's use here as well. It was, after all, my solution to the exact same issue... only I went so far as to manually remove every trace of DirectX I could find (I'm a glutton for punishment and hate to not actually resolve problems) resulting in a very ugly but still technically functioning Windows. A reinstall of DirectX then resultied in DirectDraw functioning but not Direct3D. So, I restored from a Ghost image a couple weeks old and then set about re-installing many of the apps I had just installed - realizing fully that one of them was likely the culprit... but the problem didn't come back. Go figure.

    Nimish - might I ask how you got Ghost booting on a flash drive? I've tried the various techniques listed on the web but none have so far produced a flash that will actually boot (although one did manage to kill a flash quite handily).

  23. Balentius Says:

    I specifically registered just so I could add on this comment:

    THANK YOU!!! I'm not the only person that will spend (waste?) multiple hours trying to fix an issue rather than just reinstalling windows...

    I am so tired of people saying that the FIRST troubleshooting step (after rebooting) is to reinstall windows. I have a Windows XP install that has not been reinstalled since early 2006, and I am committed to keeping it that way. I've installed new hardware and multiple software products, and (until one of the last Microsoft updates) it's still running as fast as the day I installed it. I've spent plenty of time in the registry, I still have command line skills enough to remove files, and it works - I typically reboot once every 2-3 weeks, even after running Supreme Commander! :)

    In this case, my suggestion at this point is to try and mess with the DirectX files (searching Google on 'directx force reinstall' brought up some interesting results...) and the registry entries for DirectX. The way I look at it is if you are ready to reinstall anyway, why not try and learn something?

  24. Nimish Says:

    I hate not to resolve problems myself, but when a buggered PC is holding up work I just can't afford to spend hours trying to pinpoint the problem, especially when it's quite possible it's just windoze being windoze.

    Stark, the process involves downloading files from a torrent and I'm not sure how Dan will like my posting that information on his blog, so drop me an email at sulkinggreekgod at gmail and I'll mail you the info.

  25. ozymandias Says:

    Just a question: Did you try booting with either an anemic amount of RAM or an amount which approaches 4 GB? I'd guess this would force windows to look through its memory distribution again?

  26. Nogami Says:

    Hmm... Definitely sounds like something is messed-up in the registry. I had something similar happen recently, where windows decided to reallocate my drive letters from where I had them set - and it absolutely refuses to let me set them where I want them. Change the letters in the disk manager and they change back after a reboot. Annoying.

    I've got a "clean" image of my system partition that I took with Acronis Trueimage after I got everything up and installed and activated, but I still don't really want to go through the hours of work it will take to tweak things right back to the way I like them.

  27. RichVR Says:

    "But I have a hard time doing anything, including sleeping, if there’s an unresolved problem like this dancing around in the back of my brain."

    This made me laugh in a pained, self-conscious way.

  28. ex-parrot Says:

    This is why I like running a Debian-based Linux distribution. On the off-chance that I do need to re-install the OS, not only do I keep all my files on a different partition, but it takes on the order of 30 seconds to enter the command to automatically re-install all my applications from the CLI. Always up to date, and no messing about trying to find the installers or having them screw up because you're impatient and tried to run them concurrently ;)

  29. GeeJay Says:

    bugger, bugger, bugger.....just reading all of this implies I will find a similar problem on my PC when I get home....and the missus is using it for her Uni stuff ....damn, damn, damn...
    I'd be tempted to disable the vid card in dev manager and let XP find it again....although I guess you've tried that already.

  30. alphacheez Says:

    This sounds like the kind of issue that makes a good case for running Windows as a virtual machine inside some flavor of more stable OS (such as linux I guess). I think some of the newer versions of virtualization software support 3D acceleration.

  31. Anthony Hersey Says:

    Balentius,

    I used to be all about finding out what happened. The fifth or sixth time, though, I just said screw it. My Windows box is used for games, porn, and BitTorrent (ok, non-porn BT). Reinstalling the OS when it fails to do those things takes less time than troubleshooting whatever arcane DLL conflict has arisen from the latest security patch. I keep my data and most apps on another partition, as mentioned above. I even have registry patches for the most frequently played games so I can "reinstall" those in seconds.

  32. Daniel Rutter Says:

    I have a Windows XP install that has not been reinstalled since early 2006

    Same here, until now. Making disk images is all very well if you expect to have to reinstall on the same hardware, but I normally only go back to a fresh install when I get a whole new computer, on which an image of the last one would be useless.

  33. mstromb Says:

    I guess your video card problem is solved-ish at this point, but there's one thing you might try to weed out some of that generic weirdness left hanging around: System File Checker. It's a little command line utility that came about around SP2 if I recall. It does just what it says, and will check your current system files against a known good catalog. You'll need your XP CD.

    Run the command: sfc /scannow

    It'll do it's thing for a bit, and probably tell you to reboot. No guarantees it'll fix your problem of course, but it can't really hurt.

    It won't work if you used n-lite to make yourself a custom install image and disabled digital signatures or something like that... But I don't think you've ever mentioned n-lite so that probably won't be a problem.

  34. Bedlam Says:

    I re-second the motion to have System Restore enabled. I too duly killed it back in the glory days of 2002 when we were all still trying to turn XP back into Win2k. But bugger it, the thing does what it says on the tin and it's not like modern computers don't have the resources to handle it.
    I ordinarily run a pretty tight ship, but SR saved my bacon a couple of weeks ago when I somehow got infected with some very persistent spyware from an official Skype update of all things. Restored to the day before and boom, back up and running.

  35. Condemned Says:

    I too have been troubled by the failure to install windows updates. In my case it was 74 failures following a (repair) install of XP pro. Entering the following runes into a cmd window saved me: (b.t.w. I like the sound of wups.dll - I'd like to think that this is where all 'whoops' code from MS is put, but alas, it's only 36Kb)

    net stop wuauserv
    regsvr32 wuapi.dll
    regsvr32 wups.dll
    regsvr32 wuaueng.dll
    regsvr32 wuaueng1.dll
    regsvr32 wucltui.dll
    regsvr32 wuweb.dll
    regsvr32 qmgr.dll
    regsvr32 qmgrprxy.dll
    net start wuauserv

  36. BTU Says:

    Thirty minutes wasted installing Windows? You should try nLite, OK it takes maybe 30 minutes to set it up at first but then you can do unattended installs of Windows, with all your personal tweaks, to your heart's content. (Warning: setting up the 'perfect' nLite configuration can become a time-consuming obsession in itself.)

    I would pull out the hard drive in this machine, slot in a shiny new one, and do a clean install of Windows and the graphics driver. At least that way you will know whether it is a hardware/BIOS issue or Windows.

  37. Thrillhouse Says:

    This sounds like the sort of thing Dial-a-fix can take care of. It solves a lot of windows dll weirdness. Just run the exe, click the green checkmark, and go.

    http://wiki.djlizard.net/Dial-a-fix

  38. directionless Says:

    Now that you have no doubt fixed your issue, I found that removing extra subkeys from the following registry key fixed this issue on my PC.
    HKLM\SYSTEM\CurrentControlSet\Control\Video

    There are several keys listed there which seem to list all the video drivers you have ever loaded on your PC.

    I recommend uninstalling your video drivers, deleting all the keys except for the VgaSave key {23A77BF7-ED96-40EC-AF06-9B1F4867732A} and rebooting.

    After reloading the latest Nvidia drivers DirectX worked on my PC.

  39. razzle dazzle Says:

    Dan first of all i lol when I read your blog which is as well because bar a few things I had the very same prop as you,but suffice to say "directionless" saved the day,just followed his instructions and I was back in business 64 mb of approx total memory!! I know this is no good to you now but like me for anyone who reads your blog there is an answer thank you both.


Leave a Reply