Jump to content
  • Advertisement
Sign in to follow this  
Brzegu

GPU memory allocation limit on Directx9/Windows 8

This topic is 1193 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement
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?

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

Hi cephalo,

Thanks for tip. But I'm sure both are using Titan. I see it on my diagnosing tools.

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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!