简体   繁体   中英

DirectX CreateBuffer Memory Leaks

I want to write a benchmark app to test write speed from system memory to GPU memory using DirectX api. But even if I just createBuffer and release in a for loop, the memory diagnosis tools shows that the process's private bytes size is constantly increasing. I think it might be because GPU mapped system memory is never released. BTW, The heap size is stable.

 1. FOR 1000 iteration
 2. CreateBuffer using 
               D3D11_USAGE_STAGING/D3D11_USAGE_DYNAMIC 
               & D3D11_CPU_ACCESS_WRITE
 3. d3dbuffer.Release & d3dbuffer = nullptr

Is there anyone could explain how to properly release it? Is this the so-called mapped AGP memory?

Direct3D uses delayed resource destruction. If you want to force all resources to be cleaned up, you need to call Flush . Writing effective Direct3D benchmarks is quite challenging as there are many things at play you are probably missing.

For some sense of this, read Accurately Profiling Direct3D API Calls and see Profiling DirectX Apps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM