Windows Vista introduced a new display driver model, WDDM (formerly known as LDDM). There are many changes to the driver model, but a key one is how DEFAULT vs. MANAGED resources are handled. As a result of this implementation in Windows Vista gold, some 32-bit games been running out of Virtual Address space and crashing. Since the game is typically pushing the limits of 32-bit VA space on Windows XP, the extra usage in Windows Vista is killing the game. The bug might not show up as a failed memory allocation, and is likely in some API call that is indirectly trying to allocate memory.
A workaround for this issue is to a) supply a 64-bit native version of the game (see GFW Showcases), or b) supply a 32-bit version of the game with LARGEADDRESSAWARE enabled. To make use of the LARGEADDRESSAWARE mitigation, users must either have 64-bit versions of Windows or set boot options on their 32-bit version of Windows.
A change to WDDM to mitigate the disparity between Windows XP WDM and Windows Vista WDDM is now available as KB 940105 (http://support.microsoft.com/default.aspx/kb/940105). This change will be in Windows Vista SP 1.
Full technical details on this issue can be found in the Gamefest 2007 System-track talk "Why Your Windows Game Won't Run In 2,147,352,576 Bytes":
See also VAQFEDetect.
http://download.microsoft.com/download/e/3/c/e3c25fea-2b53-4174-8729-29a4ec16583b/Why%20Your%20Windows%20Game%20Won%27t%20Run%20In%202,147,352,576%20Bytes.zip
DirectX Runtime Differences for Windows Vista
In general the Windows Vista version of the DirectX Runtime (referred to as "DirectX 10" on Windows Vista RTM and "DirectX 10.1" on Windows Vista Service Pack 1 by DXDIAG) is very similar to "DirectX 9.0c" that is included in Windows XP SP 2 and the Direct X SDK (Summer 2004) release.
There are some differences, particularly for deprecated components, that may come up for games: "DirectPlay Voice" and "Direct3D Retained Mode" are not available. Also, the "DX7" and "DX8" support for Visual Basic 6.0 is not available on Windows Vista. This is the primary reason why "DirectPlay Voice" and "Direct3D Retained Mode" headers and libraries were removed from the Direct X SDK as of the November 2007 release.
More details and other differences are noted in the DirectX FAQ: http://msdn2.microsoft.com/en-us/library/bb219721.aspx
See also:http://support.microsoft.com/kb/969150http://support.microsoft.com/kb/970978http://support.microsoft.com/kb/971028
Program Compatibility Assistant
Many existing applications run on Windows Vista as a 'legacy' application. Many shims, UAC virtualization, and other techniques are employed for such applications. As a result, such applications are run as part of a job object called "PCA", and some extra dialogs may be presented as a result.
We've had some developers run into problems by wanting to use job objects on programs that may or may not be run under PCA. Normally you cannot change the job for a process, which means the implicit PCA job caused a problem. The standard Create Process method includes a flag to indicate that the job can be changed, but there's no direct equivalent for the Shell Execute method. Create Process cannot show UAC elevation, so they were stuck with Shell Execute. There is a flag for Shell Execute Ex SEE_MASK_FLAG_NO_UI which has the side-effect of not placing the process into the PCA job.
By following the Games for Windows requirement of adding UAC information into an embedded manifest, branded games will not be treated as legacy applications and will not be subject to PCA functionality in Windows Vista.
Seehttp://msdn.microsoft.com/en-us/library/ms684161.aspxand http://www.microsoft.com/msj/0399/jobkernelobj/jobkernelobj.aspx
Windows Vista Audio
The new OS includes an entirely new audio stack. "DirectSound" was updated to support this new audio stack on Windows Vista, which is basically the same functionality on Windows XP with better multichannel support but without any hardware acceleration. The net impact of this change on games is that EAX and similar technologies do not work through Direct Sound on Windows Vista, and all 'hardware' buffers fail to create.
For existing applications, these changes shouldn't break audio as they were both already optional and they had to handle software fallback for Windows XP applications. The biggest problem is with surround sound/multichannel support. Typically, games will try hardware multichannel, try hardware stereo, and then fallback to software stereo. They should really try hardware multichannel, try software multichannel, try hardware stereo, then fallback to software stereo. On Windows XP, only hardware multichannel will ever work, and only on specific devices and drivers. On Windows Vista, software multichannel will pretty much always work, but hardware buffers of any kind will always fail. This made it appear for some games that Windows Vista broke surround sound, when in fact it really provided more universal surround support.
Note that, in general, most games are using systems like RAD Game Tools MSS, FMOD, or some other middleware that is doing all the work in software and just using DirectSound to output. As long as these technologies are updated to handle the 'try stereo multichannel' option, most of the games will be covered. Games with custom audio engines will need to add this, and XAudio2 does the right thing. For those few game developers who feel that hardware-accelerated audio effects are a key part of their business, we should direct them to Creative's "OpenAL". Their 'Alchemy' Direct Sound hack is not something we are particularly happy about, and at this point we are not commenting on it.
Compatibility Mode
Sometimes problems with games under Windows Vista are 'fixed' when run with the Compatibility Mode enabled. It is not acceptable for a branded title to require this setting, but if problems arise and appear to be corrected by turning this setting on, it can provide a hint as to the root cause. For more details, see Windows Vista Compat Layers.
It would also be a clear violation of User Account Control guidelines to require or set the "Run as administrator" checkbox in a shortcut.
System Restore Monitor
A number of file extensions have special meaning, and Windows includes a system to automatically monitor important file extensions and back them for System Restore. Games should avoid using any of these file extensions for their custom data formats in order to avoid the performance penalty associated with this monitor activity, and this seems to affect Windows XP and well as Windows Vista.
A list of monitored file extensions is documented on MSDN:http://msdn2.microsoft.com/en-us/library/aa378870.aspx
High-Resolution Icons
Windows Vista will scale icons larger than Windows XP would, which can high-light low quality icons. If there is no 256x256 icon image, then the up-scaling can result in an ugly looking icon.
Standard Windows Vista Icons should include the following:
256x256 at 24bit+alpha (should be PNG compressed) and 8-bit
64x64 at 24-bit+alpha
48x48 at 24-bit+alpha and 8-bit
32x32 at 24-bit+alpha and 8-bit
24x24 at 24-bit+alpha and 8-bit
16x16 at 24-bit+alpha and 8-bit
The VS 2005 icon editor doesn't support this, but VS 2008+ does. The VS team also recommends a third party solution:
http://blogs.msdn.com/vcblog/archive/2008/08/11/iconworkshop-lite-now-available-for-download.aspx
See the following for more information:
http://msdn.microsoft.com/en-us/library/aa511280.aspx
Windows 7
Windows Experience Index
Windows 7 increases the maximum rating from 5.9 (Windows Vista) to 7.9. The intention is for the scores to be more or less stable, so if your machine rates a 4 now it will always rate a 4 within a few tenths. If your system was capped out at 5.9 in a particular area with Windows Vista, it may get a higher number for Windows 7.
The Gaming Graphics score can only be 6 or higher if it is D3D10. D3D9 is limited to 5.9. Note that the D3D10 tests are only run with WDDM 1.1 drivers. A WDDM 1.0 driver will limit the score to 5.9.
The Memory score will be limited to 5.5 with less than 3 GB of RAM, and to 5.9 with less than 4 GB of RAM.
The CPU score does not have an explicit core count cap, but should roughly correspond to: 6.3–6.9 for triple core, 6.9–7.x for quad-core, 7.9 for 8-core with HT.
There was, however, a major change made to the storage/disk performance test for Windows 7. Many users were having performance issues that were traced to a write policy cache problem with the hard drive. The Windows 7 WINSAT tests were updated to specifically test for this issue and that can limit the score to 2 or 3. Some users may well see their overall score drop with Windows 7 due to the storage/disk score being clamped as a result of this new test. Getting a new hard drive will likely improve overall system performance.
Windows Vista era WEI values are explained in depth here:
http://windowsteamblog.com/blogs/windowsvista/pages/windows-experience-index-an-in-depth-look.aspx
DirectX Runtime Differences for Windows 7
The Windows 7 version of the DirectX Runtime is the same as Windows Vista with the addition of Direct3D 11, WARP10, 10level9, DXGI 1.1, an updated Direct3D 10.1 to support WARP10 and 10level9, Direct2D, and DirectWrite. No new components are deprecated.
Deploying the updated DirectX Runtime on Windows Vista is done through the Windows 7 Transition Pack for Windows.
NOTE DirectMusic "core" API (i.e., timestamped MIDI) is now available for x64 native applications on Windows 7. This support is not available down-level.