Known Issues with the March 2009 SDK
Title: HLSL Runtime Compiling for Shader Models that Do Not Allow NaN or Infinity Literals
When compiling code that looks like the following:
pow(max(0, f), e)
If the result of max(0,f) is 0, the statement will be evaluated as exp(-inf * e), which may cause the following error message: (error X4579: NaN and infinity literals not allowed by shader model). This is because pow(0, e) will be expanded to exp(log(0) * e), which will evaluated as exp(-inf * e).
The workaround for compiling code like this, for a shader model that does not allow NaN or infinity literals, is to change 0 in max(0, f) to 0.00001f, or some other acceptably small non-zero value.
This scenario typically fails during a call to
ID3DXEffectCompiler when compiling for shader models that do not allow NaN and infinity literals (such as DX9 shader targets). It is a regression from the November release. The result may show up when debugging a game that exits at startup and generates an error message such as "nonzero reference count" or "an error occurred in the device creation callback function".
Title: Direct3D 11 Documentation Does Not Show Up in the Start Menu
The link to the Direct3D 11 documentation is missing from the Start menu after installing the March 2009 DirectX SDK. The Direct3D 11 documentation is installed in the following folder:
Program Files\Microsoft DirectX SDK (March 2009)\Documentation\DirectX9\. To open the documentation, double-click D3d11.chm.
This will be fixed in a later release.
Sample Browser Installations of Samples that Use Custom Names May Fail to Build
When installing a sample from the Sample Browser, specifying a name that uses illegal C characters may cause the installed sample to fail to build. This issue will be fixed in a later release..
The XactEngineA3_4.dlls Are Not Registered Properly for an AMD64-based System
The March 2009 DXSDK is not properly registering the 64-bit version of XactEngineA3_4.dll. The workaround is to properly register the XactEngineA3_4.dll by using regsvr32 from a command line, as in the following example:
regsvr32 XactEngineA3_4.dll
XAUDIO2_VOICE_SENDS has a Minor Breaking Change to Implement Occlusion + Obstruction Filtering
XAUDIO2_VOICE_SENDS was changed to filter the direct and reverberant sends independently without requiring the use of multiple submix voices, because this was inefficient and inconvenient. Instead of containing pointers to the various voices that a voice will send to, XAUDIO2_VOICE_SENDS points to a set of XAUDIO2_SEND_DESCRIPTOR structures. XAUDIO2_SEND_DESCRIPTOR adds a flag per send voice that controls the use of the send-hosted filter, which allows an application to filter the direct and reverberant sends independently.
Building Samples Using the Visual Studio 2005 Project Files Results In Harmless Warning
Developers who build the samples may see the following harmless warning:
manifest authoring warning 81010002: Unrecognized Element "requestedPrivileges" in namespace "urn:schemas-microsoft-com:asm.v2".
This is a known issue with the manifest tool (mt.exe) that ships in Visual Studio 2005 SP1. To remove this warning, developers should update their versions of mt.exe to the version that ships in the Windows SDK. Developers should update the instances of mt.exe that ship in Visual Studio 2005 SP1, found in the following three locations:
- VC\bin\
- Common7\tools\bin\
- SDK\v2.0\bin\
Don't Mix Beta DLLs With Their Correspondingly Named Non-Beta DLLs
The Direct3D 11 Technical Preview provides a DLL, dxgi_beta.dll, that is different from dxgi.dll, included in Windows Vista. Developers should not use interfaces from one of these DLLs with the other, because it may cause issues that are difficult to identify. So if you use the beta version of a DLL, the recommended practice is to not link to the correspondingly named non-beta DLL.
ID3DXSPMesh Interface Is Deprecated
The
ID3DXSPMesh interface is deprecated and will be removed in a future release of the DirectX SDK. Developers should investigate using Direct3D 11 tessellation as an altertnative to the
ID3DXSPMesh interface.
D3DXGatherFragments Is Deprecated
The
D3DXGatherFragments function is deprecated and will be removed in a future release of the DirectX SDK. Developers should investigate using Direct3D 11 dynamic shaders.
IXACT3Engine:repareWave Doesn't Support xWMA
In the March 2008 and later SDKs, the
IXACT3Engine:repareWave doesn't support xWMA. If you want to use xWMA in XACT, you can prepare those waves by calling one of the following methods:
- IXACT3WaveBank:repare
- IXACT3SoundBank:repare
- IXACT3Engine:repareInMemoryWave
- IXACT3Engine:repareStreamingWave
Symbols for DirectX
The latest and most complete source for debugging symbols is the Microsoft Symbol Server. We recommend using the symbol server rather than using the included partial symbols package. For instructions about using the Microsoft Symbol Server, see
http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx.
Installation Notes for All Platforms
- This SDK installs on Windows XP, Windows Server 2003, Windows Server 2008, and Windows Vista using Visual Studio .NET 2005 or 2008.
- Before installing the current DirectX SDK, remove previous versions of the DirectX SDK.
- Some samples require that you have installed the latest Microsoft Windows SDK on your system.
- If you are using Visual Studio and run the Platform SDK Integration tool, all custom include and library paths will be erased, including those added by the DirectX SDK. To fix the issue, developers need to either reinstall the DirectX SDK or manually add the paths to Visual Studio.
- If you encounter compilation issues related to the DirectX headers, make sure that the include directories in Visual Studio are set correctly. On the Win32 platform, make sure that there is a reference to the DirectX headers. "$(DXSDK_DIR)include" should appear in the include directory "$(VCInstallDir)Include."
- Several virus protection software applications interfere with SDK installation. They may require you to disable virus protection software until SDK installation is completed.
- Your system may be corrupted, or cryptographic services may be disabled, if you encounter the following error message during installation: "A cabinet file is necessary for installation and cannot be trusted." To resolve the problem, try the following:
- Enable cryptographic services. On the Start menu, right-click My Computer, and then click Manage. The Computer Management window appears. In the left navigation pane, click Services and Applications. In the right pane, double-click Services, and then double-click Cryptographic Services. The Cryptographic Services Properties property sheet appears. On the General tab, ensure that Service Status is Started, and that Startup Type is Automatic.
- If you are running Windows on a FAT32 drive, run scandisk.
- Try the resolution steps in Detecting digital signing issues in Windows XP.
- Try the resolution steps in You cannot install some updates or programs.
- Remove temporary files in the %temp% folder. If you are installing an end-user runtime, also remove "%windir%\system32\directx\websetup Error."
- External firewall programs may indicate that the file InstallDeveloperFiles.exe wants to access the Internet. This is by design, and should be enabled