]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commit
vulkan: Replace uses of maxMemoryAllocationSize and VK_WHOLE_SIZE (#16354)
authorJeff Bolz <redacted>
Fri, 3 Oct 2025 10:50:46 +0000 (05:50 -0500)
committerGitHub <redacted>
Fri, 3 Oct 2025 10:50:46 +0000 (12:50 +0200)
commit2aaf0a2a2056d75d0dd53ab8a181473760e6ab22
tree1f6b035011d9cc941a509d74e850b3b8e2fbed97
parent0e1f83855609d73beaf05d818640b6cfd39d287b
vulkan: Replace uses of maxMemoryAllocationSize and VK_WHOLE_SIZE (#16354)

* vulkan: Replace uses of maxMemoryAllocationSize and VK_WHOLE_SIZE

Replace maxMemoryAllocationSize check with maxBufferSize when creating buffers.
The maxMemoryAllocationSize limit is a "soft" limit and allocations can succeed
beyond that limit. This allows > 4GB buffers to be allocated on some
implementations (e.g. NVIDIA) and tensors this large can be used for im2col
and mul_mat.

For temporary buffers (prealloc_x/y/etc) check against maxStorageBufferRange.
I'm not sure this check is ideal, but we always use these buffers as a single
full size binding and the limit may be smaller than maxMemoryAllocationSize
or maxBufferSize, so I think this is reasonable.

Replace descriptor range uses of VK_WHOLE_SIZE with a manually computed range.
The maxStorageBufferRange may be smaller than the maxBufferSize or
maxMemoryAllocationSize (and the Vulkan spec warns about this in a note) and
it's invalid usage if VK_WHOLE_SIZE computes a range larger than
maxStorageBufferRange.

With this change, it should be possible to generate videos using wan networks
in stable-diffusion.cpp.

* vulkan: Add env var GGML_VK_FORCE_MAX_BUFFER_SIZE and use stoull
ggml/src/ggml-vulkan/ggml-vulkan.cpp