Fixing the DirectX D3D debug layer

Original Author: Richard Munn

If you’ve ever done any serious Direct10/11 work, then you’ll know how invaluable the  Direct 3D debug layer can be when you’re having problems. When it is set running you get a stream of informational messages, warnings and errors telling you where you were going wrong.

Previously this was invaluable when tracking down bugs in an Autodesk Maya Direct X based plugin. However, it was found that lately the debug messages would not show up in Visual Studio, and it was not clear why.  Many things were reinstalled, and older versions were tried, but to no avail.

Eventually investigation revealed this blog post on MSDN that seems to have explained what has happened.  Basically DirectX 11.1 has come along, and changed how things work, so that the old DirectX SDK installed debug layer is no longer functional (since DirectX is now part of the Platform SDK). I presume DX11.1 has ended up installed as part of a service pack, a kb patch, or when Visual Studio 2012 was installed.  This basically means that the DirectX Control Panel (“dxcpl.exe”) installed by the DirectX SDK is a hanging on like a vestigial organ, not performing any useful function.

Further digging uncovered that there were multiple versions of the DirectX Control Panel on the computer. The ones that are installed as part of the old (legacy) DirectX SDK come in 32bit and 64bit versions, and are linked in the start menu under Microsoft DirectX SDK (June 2010) and newer versions lurking deep within the Windows folder.

dxcpl-old dxcpl-new
Old New

The original DXSDK versions (in 32bit and 64bit flavours) look like the screenshot on the left.  The screenshot on the right shows the versions found in C:WindowsSysWOW64 and C:WindowsSystem32 which don’t appear to have start menu shortcuts.  Note that it says 11.x rather than 11, and has a few newer options, but also only offers the D3D tab.

The “11.x” version seem to share their settings data with the older DXSDK versions, so it’s easy to get the two confused. However, it appears that once DX11.1 is installed only the latter versions in Windows will actually enable the debug later, and display output in the debugger.

Looking at a new machine, that’s never had the DXSDK installed, it does have the Windows versions of the tool available.

In summary: Don’t use the Direct X Control Panel shortcut, run C:WindowsSysWOW64dxcpl.exe instead.  On new machines, don’t install the DirectX SDK, just the Platform SDK, and you (hopefully) won’t get in such a tangle!