Commit Graph

176 Commits

Author SHA1 Message Date
Adam Sawicki
d0100e9d1a Ensured that allocations from pools with linear algorithm are ignored in vmaDefragment.
Made vmaDefragment work only with memory types that are HOST_VISIBLE and HOST_COHERENT.
2018-08-23 12:56:58 +02:00
Adam Sawicki
0270b98d2f Optimized VmaBlockMetadata_Linear::FreeAtOffset to use binary search.
Refactored VmaBinaryFindFirstNotLess.
2018-08-23 12:18:01 +02:00
Adam Sawicki
bc7fea61d2 Implemented VmaBlockMetadata_Linear::CheckCorruption. 2018-08-23 11:45:20 +02:00
Adam Sawicki
53d96e8c93 Minor addition to VmaBlockMetadata_Linear::Validate. 2018-08-23 11:37:56 +02:00
Adam Sawicki
2bd99038d5 Implemented VmaBlockMetadata_Linear::GetUnusedRangeSizeMax. 2018-08-23 11:36:32 +02:00
Adam Sawicki
51b0e82e60 Implemented VmaBlockMetadata_Linear::GetSumFreeSize. 2018-08-23 11:20:09 +02:00
Adam Sawicki
1f6c388348 Optimized VmaBlockVector::Allocate for certain cases. 2018-08-23 10:52:07 +02:00
Adam Sawicki
0dec444a58 Minor fixes. 2018-08-23 10:43:54 +02:00
Adam Sawicki
f799c4f146 Introduced a rule that custom pool with linear algorithm must have maxBlockCount = 1 (or 0 for default). 2018-08-23 10:40:30 +02:00
Adam Sawicki
0ebdf0c63e Implemented vmaMakePoolAllocationsLost for pools with linear allocator. 2018-08-22 17:02:44 +02:00
Adam Sawicki
8cfe05fad9 Added support for lost allocations in ring buffer.
Fixed some more bugs.
2018-08-22 16:48:17 +02:00
Adam Sawicki
fd11d759dd Added ManuallyTestLinearAllocator which allows me to manually inspect VmaStats, VmaPoolStats and stats string of custom pool. Fixed bug in VmaBlockMetadata_Linear::PrintDetailedMap. 2018-08-22 15:02:10 +02:00
Adam Sawicki
680b2251fa Implemented double stack. Written tests for it. 2018-08-22 14:47:32 +02:00
Adam Sawicki
45cee6ee4f Some code in preparation to implement double stack (SECOND_VECTOR_DOUBLE_STACK). 2018-08-22 13:21:08 +02:00
Adam Sawicki
0c6ca87695 Merge branch 'development' into linear_allocator 2018-08-22 11:58:16 +02:00
Adam Sawicki
62c0090112 Recompiled binaries. Bumped version number to Version 2.1.0-alpha.4. 2018-08-22 11:54:36 +02:00
Adam Sawicki
cb4e8da23b Updated file format to 1,3. Added configuration section. 2018-08-21 17:56:25 +02:00
Adam Sawicki
2556b377f7 Record and replay: Added support for function vmaMakePoolAllocationsLost. 2018-08-21 12:04:19 +02:00
Adam Sawicki
fd64a60957 Added documentation of the whole "Record and replay" feature to Doxygen docs and README.md. 2018-08-21 11:38:32 +02:00
Adam Sawicki
80cb2365c5 Added recording and replaying of calls to functions: vmaTouchAllocation, vmaGetAllocationInfo. VmaReplay: fixed handling of null allocation. 2018-08-21 10:59:53 +02:00
Adam Sawicki
3eb870d6d6 Added documentation for new code elements related to recording. Added "Recording file format.md" file. 2018-08-20 17:53:02 +02:00
Adam Sawicki
dd715fbf9f Fixed support for pUserData in object creation functions, as well as vmaSetAllocationUserData, whether it's null, custom pointer, or character string. 2018-08-20 17:12:24 +02:00
Adam Sawicki
5c49bebe10 Added support for recording and replaying object creation also when it originally failed. 2018-08-20 16:10:11 +02:00
Adam Sawicki
e5d9b01a3a Added macro VMA_RECORDING_ENABLED, enabled only on Windows for now. 2018-08-20 15:50:03 +02:00
Adam Sawicki
0e0f20fd57 Major refactoring: Defined clean API for recording, added VmaRecordFlagBits, VmaRecordFlags, VmaRecordSettings, VmaAllocatorCreateInfo::pRecordSettings. Created VmaRecorder class. 2018-08-20 15:34:55 +02:00
Adam Sawicki
5557b0ed63 Added support for vmaMapMemory, vmaUnmapMemory, vmaFlushAllocation, vmaInvalidateAllocation. 2018-08-20 13:54:54 +02:00
Adam Sawicki
404d12e18e Format version 1,2. Added support for vmaAllocateMemory, vmaAllocateMemoryForBuffer, vmaAllocateMemoryForImage, vmaCreateLostAllocation. 2018-08-20 13:33:34 +02:00
Adam Sawicki
f5c61eda92 Merge branch 'development' into record_and_replay 2018-08-20 12:27:59 +02:00
Adam Sawicki
94e8206598 Added new validation layer message to ignores, and documented it.
"Mapping an image with layout VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL can result in undefined behavior if this memory is used by the device. Only GENERAL or PREINITIALIZED should be used."

Issue #34 thanks @victorbush !
2018-08-20 11:14:07 +02:00
Adam Sawicki
87c8189002 Foo 2018-08-20 10:52:54 +02:00
Adam Sawicki
db1f73fee4 Improved handling of destruction calls with null handle, in vk_mem_alloc as well as VmaReplay. 2018-08-13 12:22:37 +02:00
Adam Sawicki
deeb817d7a Minor fixes. Added basic statistics. 2018-08-07 17:30:29 +02:00
Adam Sawicki
71f3d067c5 Better tracking of allocations. 2018-08-07 17:09:51 +02:00
Adam Sawicki
6d2e2e0cac Created project VmaReplay, started coding it. 2018-08-07 13:44:20 +02:00
Adam Sawicki
0d80dab2c0 Fixed minor documentation mistakes - issue #32 - thanks @dgough ! 2018-08-01 16:20:24 +02:00
Adam Sawicki
3d99a1ca66 VmaJsonWriter::ContinueString: Fixed bug with incorrect JSON generated when pUserData string contains '\' character. 2018-06-25 15:01:59 +02:00
Adam Sawicki
ee08277571 Implemented ring buffer. 2018-06-20 17:45:49 +02:00
Adam Sawicki
0876c0d493 Started coding linear allocator. 2018-06-20 15:18:11 +02:00
Adam Sawicki
00f620f398 Designed new API for linear allocation algorithm: added flags VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT, VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT. Abstracted VmaBlockMetadata into base class VmaBlockMetadata and derived class VmaBlockMetadata_Generic. Few minor fixes. 2018-06-19 14:33:32 +02:00
Adam Sawicki
e44c62684d Added debug macro VMA_DEBUG_INITIALIZE_ALLOCATIONS to initialize contents of allocations with a bit pattern. Documented it. Added test for it.
Fixed some indentation.
2018-06-15 14:30:39 +02:00
Adam Sawicki
11904e3cec Fixed typo 2018-06-14 16:54:55 +02:00
Adam Sawicki
212a4a6567 Added new feature: corruption detection. Added debug macro VMA_DEBUG_DETECT_CORRUPTION, functions vmaCheckCorruption, vmaCheckPoolCorruption 2018-06-14 15:51:47 +02:00
Adam Sawicki
73b1665ea4 Changed behavior of VMA_DEBUG_MARGIN macro - it now adds margin also before first and after last allocation in a block. Improved validation of VMA_DEBUG_MARGIN. Added test for it - function TestDebugMargin(). 2018-06-11 16:39:25 +02:00
Adam Sawicki
d292417cdb Minor improvement in VmaBlockVector::Allocate. TestPool_SameSize: Added test for it. 2018-06-11 12:48:46 +02:00
Adam Sawicki
c1af66a549 Bumped version number (still Alpha). 2018-06-08 17:16:57 +02:00
Adam Sawicki
776ae0d5f8 Improved support for non-coherent memory. Added functions: vmaFlushAllocation, vmaInvalidateAllocation. nonCoherentAtomSize is respected automatically. Issue #27 Thanks @egdaniel !
Also added VmaVulkanFunctions::vkFlushMappedMemoryRanges, vkInvalidateMappedMemoryRanges. Fixed bug with uninitialized VmaPool_T::m_Id.
2018-06-08 17:11:12 +02:00
Adam Sawicki
5aa99be043 Bumped version number. 2018-06-04 14:18:27 +02:00
Adam Sawicki
083532cf3a Removed #include <malloc.h> for aligned_alloc(). Based on #28 by @jbeich 2018-06-04 14:12:15 +02:00
Adam Sawicki
6a0a85a5c0 Added subsequent, unique, numeric IDs to memory blocks and custom pools. They are dumped in JSON. JSON format changed: "Pools" and "Blocks" arrays are now objects, where key is pool/block ID, and value is as before. Applied appropriate changes in VmaDumpVis.py - it now shows pool and block ID from the dump. 2018-06-01 15:20:49 +02:00
Adam Sawicki
b127d7fac0 Minor fix in comment. 2018-05-17 14:44:13 +02:00