Description
So our users have Nvidia 2070, 3060, 4090 gpu with low coherent memory (210 mb) failing to allocate a single 4mb uniform buffer pool. This isn't on all gpu/driver combos. And many of these like my 3070 have resizable bar. All of our other allocations are cpu or gpu only allocations. My 3070 doesn't exhibit this problem but has 8 gb of coherent memory.
The pool is one of the first things we allocate at startup. No buffers, no images, or render targets. So this OOM makes no sense to me. The only thing I can think is that the command buffers may also be allocated out of this memory. Wish there was a way to identify heap usage in Vulkan.
Found memory type 4 for uniform pool
[E] Error: ERROR_OUT_OF_DEVICE_MEMORY at call vmaCreatePool in CreateDevice, exiting app..
I reviewed the vmaCreatePool code. The only OOM error would be from vkAllocateMemory. But we barely request any memory from the COHERENT heap. There are maybe a total of this 4mb + 1mb of other allocations. I can't make this fallback to another memory type, or other parts of our engine fail with asserts.
Here are the stats on the card and heap. This driver is
Win10
GpuDevices NVIDIA GeForce RTX 2070 with Max-Q Design (0x10de:0x1f50)
DriverVersion:545.92.0.0 (0x88570000)
MemHeap0 size:7.83 gb, flags:DEVICE_LOCAL(0x1)
MemHeap0 flags:DEVICE_LOCAL(0x1)
MemHeap1 size:15.94 gb, flags:(0x0)
MemHeap1 flags:(0x0)
MemHeap1 flags:HOST_VISIBLE,HOST_COHERENT(0x6)
MemHeap1 flags:HOST_VISIBLE,HOST_COHERENT,HOST_CACHED(0xe)
MemHeap2 size:0.21 gb, flags:DEVICE_LOCAL(0x1)
MemHeap2 flags:DEVICE_LOCAL,HOST_VISIBLE,HOST_COHERENT(0x7) <- type 4
MemHeaps Local:8.04 Coherent:0.21 NonLocal:15.94