Skip to main content
GameDev.net gamedev.net
🔒 Locked

GPU memory allocation limit on Directx9/Windows 8

Started by Brzegu Apr 5, 2015 at 12:59 PM 7 replies 5.1k views
Original Post
Brzegu
Brzegu
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
Hodgman
Hodgman
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
Brzegu
Brzegu

Yes. It is 64bit app.

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

MxADD
MxADD

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)

Brzegu
Brzegu

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.

cephalo
cephalo

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?

Brzegu
Brzegu

Hi cephalo,

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

Brzegu
Brzegu

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

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.