Download

Video memory has been exhausted

Is this a bug?

I have been working in UE5 for a few months building an environment… recently this error message pops up on my screen and says:

Video Memory Exhausted (#### MB over budget). Expect extremely poor performance.

fps is still relatively good, 50fps. I can still move around the environment with ease and no lag.

It seems no amount of performance optimization is actually making this go away.

It’s very annoying to look at.

Hi @nanonansy,
To find the problem open Windows Task Manager → Performance. Scroll down to GPU and have a look at how much Dedicated GPU Memory. Mine is 0.3/2.0 GB as it is an Nvidia GeForce GTX 1050 below Recommended 4GB, or like the RTX2030 8GB.
I believe someone messed around with the UE5 code to change this ie, stopped the message displaying, but Nanite offloads work to the GPU in UE5

Hi @Jimbohalo10 ,

Thanks so much for your reply!

My dedicated GPU Memory is currently at 7.1/8 GB
image

I think this message popped up after I started using Nanite. Hmmm, maybe I should just revert back for now since I got rid of all the nanite meshes in my scene.

Any idea how I can get rid of the message otherwise? It’s just so annoying seeing it there all the time.

Thanks again :slight_smile:

Well, I found the Source code for the message section. Assuming you have built and run your code comment out the lines. 3189 and 3190 of
Engine\Source\Runtime\Renderer\Private\SceneRendering.cpp

It’s too complex to work out why. Here is the code

1 Like

When you create an asset for the GPU, this typically gets populated from the cpu, a second buffer for the GPU is created. It gets sent to render a frame, In 3-4 frames we will see it. The GPU copy cannot be freed or modified until those 4 frames have passed. If you have static images geometry, then the same asset is used each from on the GPU. When you start creating and detroying assets then you end up with 4 copies in memory. Each one represents THAT SINGLE frame of dynamic data waiting to be consumed on the GPU.

One thing that exacerbates this is resizing the output buffer size. EI: doing a render at 1080p, then another one at 640. Each time the renderer changes the outbut buffer size, those buffers get locked for the frame of the GPU its used on. Then the next frame, the buffer is resized to 1080p again, but it cant re-use the 640 buffer, and it forgot about the previous 1080p buffer, so then we are consuming even more GPU memory than ever.

This is about the worst case. Dynamic geometry, with varible number of verts. Dynamic textures that are all different sizes.

If you absolutely must by dynamic then standardize your capture size so you can re-use the off screen buffers. Dig into the engine, and tell it to start reusing buffers of the proper size, but from a previous frame. This is the work that has been done on several UE4 projects to keep the memory down, remove this issue, and still maintain a high level of fidelity and qaulity.

2 Likes

use virtual texture convert every image texture in your material