Skip to content

vmaCreatePool failing at startup on some Nvidia gpu + driver combos #390

Open
@alecazam

Description

@alecazam

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions