Commit graph

109 commits

Author SHA1 Message Date
Adam Sawicki
d3a85f0dc3 Refactored virtual allocator. (COMPATIBILITY BREAKING!) Added TLSF algoritym.
Refactored virtual allocator: Added type VmaVirtualAllocation, member VmaVirtualAllocationInfo::offset, changed parameters of vmaVirtualAllocate, vmaVirtualFree, vmaSetVirtualAllocationUserData, vmaGetVirtualAllocationInfo.

Added TLSF algorithm: Added VMA_POOL_CREATE_TLSF_ALGORITHM_BIT, VMA_VIRTUAL_BLOCK_CREATE_TLSF_ALGORITHM_BIT.

Some internal refactoring.

Improved documentation: Grouped API elements into Doxygen modules.

Code mostly by @medranSolus.
2022-01-20 17:00:33 +01:00
Adam Sawicki
1e97603ab8 Deleted the whole feature of lost allocations. COMPATIBILITY BREAKING!
Removed from the interface: VMA_ALLOCATION_CREATE_CAN_BECOME_LOST_BIT, VMA_ALLOCATION_CREATE_CAN_MAKE_OTHER_LOST_BIT, vmaCreateLostAllocation, vmaMakePoolAllocationsLost, vmaTouchAllocation, VmaAllocatorCreateInfo::frameInUseCount, VmaPoolCreateInfo::frameInUseCount.

Also fixed a bug with synchronization in VmaDedicatedAllocationList.
2022-01-10 17:57:11 +01:00
Adam Sawicki
5453c4b5eb Fixed compilation of tests. 2022-01-07 14:27:36 +01:00
Adam Sawicki
cbad11e039 Fixed vmaGetPoolStats for dedicated allocations
Added new tests: TestPoolsAndAllocationParameters.
2021-12-22 14:50:49 +01:00
Adam Sawicki
35eeb340a3 Renamed function vmaGetBudget to vmaGetHeapBudgets. COMPATIBILITY BREAKING!
Rebuilt the docs.
Closes #213
2021-12-06 17:36:18 +01:00
Adam Sawicki
4cd813a8c6 Added flag VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT 2021-12-06 12:14:13 +01:00
Adam Sawicki
2854266061 Fix in TestHeapSizeLimit 2021-12-02 16:38:35 +01:00
Adam Sawicki
41296759b9 Refactoring: Added function VmaAddStatInfoAllocation, VmaAddStatInfoUnusedRange
Submitting improved tests.
2021-10-30 12:44:40 +02:00
Adam Sawicki
73ff8e07d1 Preparations for adding support for alternative algorithms in virtual blocks and tests for them 2021-10-28 19:20:12 +02:00
Adam Sawicki
c6432507c5 Implemented vmaBuildVirtualBlockStatsString, vmaFreeVirtualBlockStatsString 2021-10-28 17:00:17 +02:00
Adam Sawicki
cc61fe10d8 Implemented vmaClearVirtualBlock 2021-10-28 16:03:09 +02:00
Adam Sawicki
9a091e8ccb Implemented vmaCalculateVirtualBlockStats 2021-10-28 15:00:24 +02:00
Adam Sawicki
72949fa9d8 Enabled more tests 2021-10-28 14:54:07 +02:00
Adam Sawicki
e1812303d6 More coding and more tests. Basic functionality is working now. 2021-10-28 14:46:45 +02:00
Adam Sawicki
54b7eccc35 More implementation and first tests.
Crashing for now - need more refactoring.
2021-10-28 14:32:34 +02:00
Adam Sawicki
642bbfd793 Fixed TestInvalidAllocations 2021-10-27 16:45:19 +02:00
Adam Sawicki
1b0bd18053 Standardized line endings to LF
See also #195
2021-09-30 12:03:35 +02:00
Adam Sawicki
11dce16f00 Added VmaPoolCreateInfo::minAllocationAlignment 2021-06-18 15:25:57 +02:00
Adam Sawicki
0a3c6b57ec Fixed usage of VK_KHR_buffer_device_address extension
It was confused with VK_EXT_buffer_device_address which is not officially supported by VMA and has different VK_STRUCTURE_TYPE...
Also a fix in PrintMemoryConclusions.
2021-03-02 16:48:32 +01:00
Adam Sawicki
41b411124e Fixed synchronization issue in TestPool_Benchmark
Variable res was incorrectly shared between threads.
2021-03-02 15:11:18 +01:00
Adam Sawicki
7e56c486fa Fix in tests for AMD APU with DEVICE_LOCAL heap of only 256 MB 2021-02-23 15:27:24 +01:00
Adam Sawicki
26eaa3b2ed A fix in TestPool_Benchmark for GPUs with only 256 MB of DEVICE_LOCAL memory 2021-02-18 15:53:18 +01:00
Adam Sawicki
aa18374368 Updated copyright header to year 2021.
Rebuilt binaries, regenerated documentation.
2021-02-16 17:28:49 +01:00
Adam Sawicki
f2012055cc Added support for VK_EXT_memory_priority
Added VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT, VmaAllocationCreateInfo::priority, VmaPoolCreateInfo::priority.

See #160
2021-01-11 18:04:42 +01:00
Adam Sawicki
0620c8e5e1 Add test and documentation for resource aliasing (overlap). 2020-08-18 16:43:44 +02:00
Adam Sawicki
db4c1639bf Fix compilation errors 2020-07-16 16:41:53 +02:00
Adam Sawicki
aaa1a56167 Clarify documentation of VmaAllocationInfo::size
Added test for it. Regenerated documentation.
2020-06-24 17:41:09 +02:00
Adam Sawicki
e73e988daf Add support for buffer device address, together with documentation and tests
Added VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT.
2020-03-20 18:05:42 +01:00
Adam Sawicki
fbaccff808 Minor tweak in TestHeapSizeLimit to pass on AMD integrated graphics which has only 200 MB of DEVICE_LOCAL memory 2020-03-09 17:09:23 +01:00
Adam Sawicki
6a93b8aa5f Protection against incorrect (0 or very large) memory budget returned by some bugged drivers
2 other minor fixes.
2020-03-09 16:58:18 +01:00
Adam Sawicki
a1d992f5d1 Add function vmaGetAllocatorInfo, structure VmaAllocatorInfo
Closes #99

Also rebuilt Doxygen documentation.
2020-03-02 15:32:10 +01:00
Adam Sawicki
508825012c Add support for VK_AMD_device_coherent_memory extension
- Added VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT.
- Fixed bug generating validation layers error when the extension is not enabled.
- Updated date in copyright header comments to year 2020.
2020-02-07 16:51:31 +01:00
Adam Sawicki
c467e28f2f Renames in the library and fixes in tests for the new defragmentation 2019-12-23 16:38:31 +01:00
Adam Sawicki
a52012de37 Prototype of a defragmentation interface that supports tiling optimal images
Merged #90 thanks @JustSid !
2019-12-23 15:28:51 +01:00
Adam Sawicki
ddcbf8cdba Fix management of m_HasEmptyBlock by adding VmaBlockVector::UpdateHasEmptyBlock().
Also added TestPool_MinBlockCount().
2019-11-22 15:22:42 +01:00
Adam Sawicki
69185555f4 Add VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED
Closes #84
2019-11-18 17:03:34 +01:00
Adam Sawicki
efa88c4de0 Add VMA_MEMORY_USAGE_CPU_COPY for memory that is preferably not DEVICE_LOCAL but not guaranteed to be HOST_VISIBLE
Also added test for memory types and usages.
2019-11-18 16:33:56 +01:00
Adam Sawicki
4ac8ff89c2 Multiple fixes in budget management
Including correct handling of lost allocation.
2019-11-18 14:47:33 +01:00
Adam Sawicki
b68b368c67 Merge branch 'master' into MemoryBudget 2019-11-18 13:15:18 +01:00
Adam Sawicki
b3f5110987 Fix TestHeapSizeLimit to work on Radeon R7 APU with 256 MB of DEVICE_LOCAL memory 2019-11-18 13:05:56 +01:00
Adam Sawicki
49defd6056 Further development of custom pool names 2019-11-18 11:45:30 +01:00
Adam Sawicki
48b8a33869 Fixes and adjustments for budget, regenerate documentation 2019-11-02 15:24:33 +01:00
Adam Sawicki
a020fb81cb Add prototype function vmaGetName, vmaSetName, change JSON format and VmaDumpVis.py to use that 2019-11-02 14:43:06 +01:00
Adam Sawicki
353e3675d3 Further development of budget management 2019-11-02 14:12:05 +01:00
Adam Sawicki
40ffe988a0 Add struct VmaBudget, function vmaGetBudget
Changed the way HeapSizeLimit is handled to better one.
Added VMA_ATOMIC_UINT64.
2019-10-11 15:56:02 +02:00
Adam Sawicki
1f84f62a85 Fix sample application to also pass VkAllocationCallbacks to Vulkan, not only to VMA
Also remove function TestResize, no longer working or needed.
2019-07-02 13:40:01 +02:00
Adam Sawicki
af88c1bde1 Fix tests and documentation to use vmaBind* instead of vkBind* functions after defragmentation 2019-07-02 12:34:26 +02:00
Adam Sawicki
daa6a551f8 Fix VmaAllocator_T::AllocateMemory for case when VMA_ALLOCATION_CREATE_MAPPED_BIT is used with custom memory pool created in memory type that is not VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
Also add test for it - function TestDeviceLocalMapped.
2019-06-25 15:26:37 +02:00
Adam Sawicki
94ce3d7da2 Update premake5 to latest version; rebuild binaries using Visual Studio 2019
Fix missing include in Tests.cpp.
2019-04-17 14:59:25 +02:00
Adam Sawicki
a1f727c9d0 Fixed compilation of Tests.cpp. 2019-01-24 16:25:11 +01:00