Use dedicated allocation when allocation size is large enough #1631
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Describe in common words what is the purpose of this change, related Github Issues, and highlight important implementation aspects.
When allocating a buffer that is extremely large (e.g. 4.5GB), Vulkano's pool allocator would round up that to the next power of two (which is 8GB) and it failed to allocate on my GPU (which has ~7.9GB of memory available for allocation).
This PR disables memory pool allocations for memory allocation above 256MB, as they would likely lead to allocating unnecessary space as well as delaying returning freed memory to the OS. Dedicated allocations are requested when supported, which might improve efficiency but should have no drawbacks otherwise.
While on that, also fix a few condition checks since KHR_dedicated_allocation has been promoted to Vulkan 1.1.
Please put changelog entries in the description of this Pull Request
if knowledge of this change could be valuable to users. No need to put the
entries to the changelog directly, they will be transferred to the changelog
files(
CHANGELOG_VULKANO.md
andCHANGELOG_VK_SYS.md
)by maintainers right after the Pull Request merge.
Large allocations now use dedicated allocations which improves memory efficiency.
Run
cargo fmt
on the changes.N/A
Make sure that the changes are covered by unit-tests.Note: The changes were tested with an application I am developing.
N/A
Update documentation to reflect any user-facing changes - in this repository.