Sign in to follow this  
Brzegu

GPU memory allocation limit on Directx9/Windows 8

Recommended Posts

I have simple DirectX 9.0c desktop application which load 10 huge textures (8192x8192 and 16384x16384).
I run in on ASUS GTX TITAN 12 GB.
 
On Windows 7 it runs ok and correctly allocates 7GB, but the same application on Windows 8.1 stops allocation texture memory at about 4GB.
 
1. Do you have any idea what could be a reason of this limit?
2. Are there any differences regarding to GPU memory allocation between Windows 7 and Windows 8?
 
Thanks for any tips,
Brzegu

Share this post


Link to post
Share on other sites
I dont know about Win7/8 differences, but... Is it a 64bit app?

Sounds like internally, The D3D layer is using a 32bit address space to manage GPU memory.

Keep in mind that D3D9 is a legacy technology, which was created way before 64bit address space was common. You'll probably have much more stable results with D3D11 sad.png Edited by Hodgman

Share this post


Link to post
Share on other sites

Yes. It is 64bit app.

Any other reason why texture allocation fails even on GPU is still available memory?

 

Because it's run out of address space ?

Because it's ram is fragmented and cannot allocate continious block of say 256MB ?

 

If you can, try to switch to DX11, if you cant (to much effort in rewriting things) try to create D3D9Ex device (you will still need some changes, but not as drastic as while switching from 9 to 11).

 

Try to use nvidia tools (nsight, perfhud, nvapi) to see what's going on on driver land (I dont know if any of those tools still can be used with d3d9, if not, try older versions of them, but I'm affraid that they are tied to driver versions)

Share this post


Link to post
Share on other sites

Thanks MxADD for tips. I'll try this with D3D9Ex device.

 

The strange in this issue is that on Windows 7 it works ok. But on Win 8, when I allocate texture by D3DXCreateTextureFromFileExW() , I get D3DERR_OUTOFVIDEOMEMORY about 4G.

Share this post


Link to post
Share on other sites

I have a dumb question. You are running these two operating systems on the same machine right? Is it possible that one OS is running the GPU you intend, while the other is using the built in GPU that comes with the motherboard?

Share this post


Link to post
Share on other sites

Update: On Win 8 I can allocate only about 4BG for textures but for vertex buffers I can allocate about 8GB.
Is that possible that driver have internal limits for data types (textures, buffers, etc)?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this