DirectX11 excessive virtual memory usage with CreateTexture2D()

Hardware: nvidia 2080 RTX SUPER
Driver version: 452.06
Operating system: Windows 10 Pro 2004 (19041.508)

When I call ID3D11Device::CreateTexture2D() (with pInitialData null) when allocating a render target with the following parameters:
Width 1430
Height 802
MipLevels 1
ArraySize 1
SampleDesc {Count=8 Quality=0 }
CPUAccessFlags 0
MiscFlags 0

The “Commit Size” for the application increases by 298,096KB (298MB).

When I look at the size of this resource in Microsoft Visual Studio Graphics Analyser (graphics debugger), it is just 18MB (18,349,760).

When I tried this on another machine (with an AMD Radeon RX 560 Series with 4GB of VRAM) and using the same size buffer, and also with a multisample count of 8, the “commit size” just increases by 170MB.

Can anyone explain why the “commit size” increases by so much?
Is this an issue with the driver?


“Commit size” in the Task Manager is badly named IMHO. It should be named “Reserved Size” as it doesn’t represent the amount of real physical memory used.

This is also the answer to your question. The increase in “virtual address space” for the application running with an nvidia driver is bigger than the increase for another vendor. However, it doesn’t mean that memory is mapped physically and it doesn’t mean it is used. It isn’t even a bad thing.

If you want to know how much physical memory your application is actually using, you need to look at the private working set.

The shared working set also exists, it is memory that your application can access but is shared with other applications.

The second thing to note is that your texture is allocated in GPU memory (VRAM), not in system memory. So, you should be looking at the Dedicated GPU Memory column.