Going over VRAM budget with Vulkan

I recently ported my game from OpenGL to Vulkan (with the Vulkan Memory Allocator) because I desperately needed multithreading to fix stuttering issues. It works great, except when going over VRAM budget.

As discussed in VMA Staying within Budget, one of the possibilities of overallocation is Vulkan returning out of memory or simply crashing.

A significant portion of my players have issues with running out of VRAM. Some players exhaust VRAM while simply setting up framebuffers and basic resources at game startup, which is fatal. These issues do not happen on OpenGL. It seems that OpenGL handles this problem invisibly (possibly by simply suffering worse performance).

The extension VK_AMD_memory_overallocation_behavior seems like it could solve the problem, however the players reporting problems are using NVIDIA cards which do not support this extension.

Is there a solution, either in raw Vulkan, or through the VMA, to emulate how OpenGL handles VRAM exhaustion? My current workaround is to direct a significant number of my players to run the older OpenGL version instead of Vulkan in order to play (which brings back the stuttering), and it guarantees I’ll never be able to deprecate OpenGL fully.

No. You’re just going to have to stop allocating so much memory. You’re going to have to manage your allocations better and possibly page in/out allocations if you’re getting close to the various limits.

I would also take a close look at what memory types VMA is giving you. It has some… dubious ideas about which memory pools you should be allocating from.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.