In Windows 8, Microsoft changed how DirectX 9 reported the amount of available memory to games; while Windows 7 seemingly allowed a game to use the entirety of the available VRAM, Windows 8 limited games to exactly 4GB for no apparent reason. This behavior persisted in Windows 8.1 and Windows 10, making things worse for gamers who upgraded to Microsoft’s new operating systems.
It’s an issue that may seem trivial to many, as most GPUs – unless on the high-end of the spectrum – come with 4GB or less of VRAM. However, the DirectX API allocates memory as a combination of RAM and VRAM, which means that those with less than 4GB of VRAM were also affected.
As can be expected, this new limitation crippled the ability to mod titles like The Elder Scrolls V: Skyrim for many gamers. Jesse Natalie, Senior Software Engineer in the Direct3D team at Microsoft, took notice of the issue on Reddit about four months ago, and promised of a solution; the fix was eventually pushed with build 16232 for Windows 10 Insiders, albeit being missing from its changelog. The Fall Creators Update introduces this fix to gamers on Windows 10.
It turns out that although Windows 7 seemed to be functioning fine, it wasn't doing things quite right. In an attempt to fix the issue present in Windows 7 for the upcoming release of Windows 8, the Direct3D team made changes to the relevant Direct3D API, only to cause more problems, as Natalie explained to Neowin:
“This API was available on Windows 7, however it did not behave reasonably in the face of GPUs with more than 4GB of VRAM. During the Windows 8 timeframe, we noticed the trend in memory would lead to an overflow of several 32bit values across the graphics API surface area, so there was a concerted effort to sanitize and clamp rather than allow overflow. The clamp for D3D9 was just applied too early, resulting in allocation failures instead of just clamped reporting.
The API in question simply reports to the app an estimation of how much memory remains available to allocate. On Windows 7, when more than 4GB are available, this API will not report accurate information. For example, if 4.1GB of memory are available, the app will see 0.1GB available. […] On Windows 8 and newer, this API will only report 4GB. Up until the change in this Fall Creator’s [sic] Update, once the counter reports 0 you can expect future memory allocation requests to fail.”
With Windows 10 Fall Creators Update, the Direct3D team was finally able to apply a proper fix to the problem, with the API now reporting a more accurate value for the available memory.
As for whether this fix would come to Windows 8.1, Natalie told Neowin that it’s unlikely, and the best recourse for gamers affected by the issue would be to simply upgrade to Windows 10 Version 1709 – the Fall Creators Update, which began rolling out today.