we are currently porting an application from DX9 to DX11. We are working with geometry/vertex data that can get large (from 1 GB up to 20 GB). DirectX 9 is able to handle this well. We use managed buffers in DX9 (D3DPOOL_MANAGED). In DX11 there are no managed buffers any more, we are using D3D11_USAGE_DEFAULT (DYNAMIC or IMMUTABLE does also not work, see below).
DX9 (using D3DPOOL_MANAGED) is able to automatically determine which buffers need to be uploaded to the graphics card when no videomemory (local or non local) is available any more and keeps the other buffers in system memory.
DX11 in contrast (using D3D11_USAGE_DEFAULT or D3D11_USAGE_DYNAMIC or D3D11_USAGE_IMMUTABLE) seems to write to and read buffers from disk when no local or non local videomemory is available any more. No system memory is used. This is very, very slow and lets the whole system hang sporadically.
Interestingly I can repoduce this with all Nvidia graphics adapters using DX11 we have available (500 - 700 series) but not with Intel HD 2500 - 4000. Intel HD although slower in general is much faster in this case since they keep everything in main memory.
Can somebody please tell me if this is a diver issue, a DX11 issue or something else. Or is there a setting that avoids writing to disk and use memory instead in DX11?
We are working with Visual Studio 2013, Windows 7 and 8.1.