I’m sure that a great many of you are currently annoyed with 2K’s policy that Borderlands and Borderlands 2 are currently not supported on Windows 10, despite the fact that the games run on this OS and that 2K continues to sell them on Steam without any support. (http://support.2k.com/hc/en-us/articles/206288558-A-Note-About-Windows-10-Compatibility-)
Like some of you, I’m also affected by what’s very likely a software problem. On my system, Borderlands runs at 35-60 frames per second with all details maxed out on Windows 10 Pro 64-bit, while on Windows 7 Pro with identical driver versions and the same game install, I’m seeing a minumum of 60fps most of the time, with maximums of 100fps. I see similar behaviour from Borderlands 2, and Windows 8.1 keeps the game performing at Windows 7 levels as well. I never played BL1 on Windows 8.1, take note.
All this on a lowly machine with:
- AMD Athlon X3 445 3.1GHz
- MSI 970 Gaming
- AMD Radeon R7 265 2GB GDDR5
- Crucial MX500 240GB SSD
- Corsair VS550 PSU
Now, I’m aware of a particular bug in the DirectX 9.0C implementation on Windows 10 that limits the total size of a virtual memory pool to 4GB. Borderlands was developed for a 32-bit OS environment, and back then you had to create a virtual memory pool using PAE extensions to get around the 32-bit memory address limit. For some reason, the DirectX runtime on Windows 10 hard codes the size of this memory pool to 4GB. Microsoft is not in the habit of fixing old bugs that affect game performance for anything on Windows that isn’t from their first party studios, and they’re certainly not fixing this one. Foresight isn’t one of their strong points.
This is the original bug report filed for DirectX 9.0 when developing applications using that API on Visual Studio: https://connect.microsoft.com/VisualStudio/feedback/details/1263324/gpu-memory-allocation-limit-on-directx9-windows-8
This is the relevant thread that brought up that bug report again last year: https://answers.microsoft.com/en-us/windows/forum/games_windows_10/eta-on-windows-8-10-dx9-memory-allocation-issues/94f56a72-a0cf-4169-a8b3-de753182175e
Those of you who play Skyrim with the ENB mod on Windows 8.1/10 will probably be able to relate, because the ENB dev had to go through the trouble of writing a tool to figure out what the virtual VRAM pool was for systems running Windows 8.1/10.
You can download that tool here: http://enbdev.com/download_vramsizetest.htm
Additionally, I’ve seen guides online before that suggest reducing the quality of shadow maps to increase performance on weaker systems back when Windows 7 was still shipping. There’s a possibility that the DirectX runtime on Windows 8.1 defaults to using plain old DX9.0 instead of a feature-level compliant run level under DX11. It’s possible that the feature-level implementation reduces the maximum size of shadow maps to 2048kb instead of a maximum of 4096kb, and the way the Willow engine runs tries to always submit shadow maps in 4K even when the final render might use a lower quality shadow map. I somewhat confirmed this when testing on Windows 7 last year sometime, because dropping shadow maps from 4K to 2K had no effect on the framerate. I had to drop to 512k to see any significant performance improvement.
I’d like to get to the bottom of this, and I need this community’s help with that. If you have any workarounds that you can share that brought performance back up, please share it. BL and BL2 are in a pool of games that just typically run slower on Windows 10, and a lot of them also happen to be running on UE3 as well.
It’s worthwhile getting to the bottom of this in the interests of game preservation, because no-one is going to want to install an OS that’s more than a decade old just to enjoy Borderlands.