http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #10 from Henri Verbeet hverbeet@gmail.com 2013-12-05 19:50:50 CST --- (In reply to comment #9)
after investigating a bit more I think your 2 GB setting triggers either a bug in the diagnostics tool or Wine. There seems to be some LONG type overflow/mishandling.
The maximum value without overflow: 1953 MB -> "1.99 GB"
--- snip --- $ WINEDEBUG=+d3d wine DragonAge2Config.exe 2>&1 | grep emulated_textureram trace:d3d:wined3d_dll_init Use = 2047868928 byte for emulated_textureram --- snip ---
With 1954 MB it overflows, shown as "-2147483648 bytes"
Well, the TRACE uses %d, which is wrong of course, although I'm not sure why that would overflow at 1954 instead of 2048. (Unless that's from the diagnostics tool, in which case 1954 MiB is about 2048 MB.)
Most of the actual APIs like IDirectDraw7::GetAvailableVidMem() and IDirect3DDevice9::GetAvailableTextureMem() return a number of bytes in a DWORD or UINT, which should work up to about 4 GiB.