Adam Sawicki
37c2d74b05
Fixes in test TestVirtualBlocksAlgorithmsBenchmark
2022-02-08 15:38:13 +01:00
Adam Sawicki
15206baf40
Added some new tests: TestAllocationAlgorithmsCorrectness
2022-02-08 15:04:08 +01:00
Adam Sawicki
bb29254253
Fix for VmaBitScan functions in GCC and Clang. Fixed debug margin for generic algorithm.
...
Hopefully helps for #231 .
Code by @medranSolus
2022-02-08 10:50:10 +01:00
Adam Sawicki
fd4ee1d5aa
Fixed vmaVirtualFree legal to call with allocation == VK_NULL_HANDLE
...
Hopefully fixes #230
Fixes in internal validation.
Rebuilt the docs.
2022-02-04 14:32:45 +01:00
Adam Sawicki
22485a05f9
Improved behavior of vmaVirtualAllocate on failed allocation. Fixed VmaVirtualAllocation to distinguish VK_NULL_HANDLE from successful allocation.
...
Improved tests.
Rebult the docs.
2022-02-04 11:39:56 +01:00
Adam Sawicki
ab16036dd5
Updated tests and documentation for VMA_DEBUG_MARGIN
...
Fixed type of VmaVirtualBlockCreateInfo::flags.
Rebuilt the docs.
2022-02-01 17:57:17 +01:00
Adam Sawicki
48d3cc46a0
Minor fixes after merging #226
2022-01-31 17:20:29 +01:00
Adam Sawicki
08759cbec5
Changed value of VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT / VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT.
...
Added support for VMA_DEBUG_MARGIN in TLSF algorithm.
Changed behavior of VMA_DEBUG_MARGIN to be included only after not before every allocation.
Bug fixes and improvements in TLSF algorithm.
Added benchmark for virtual allocator.
Code by @medranSolus
2022-01-28 13:07:58 +01:00
Adam Sawicki
ed83ac24d2
Changes in ALLOCATION_CREATE_STRATEGY flags. COMPATIBILITY BREAKING!
...
Removed flags: VMA_ALLOCATION_CREATE_STRATEGY_MIN_FRAGMENTATION_BIT, VMA_ALLOCATION_CREATE_STRATEGY_WORST_FIT_BIT, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_FRAGMENTATION_BIT.
Regenerated documentation.
2022-01-26 17:47:11 +01:00
Adam Sawicki
6c1c16f05c
Misc minor fixes
2022-01-26 17:46:38 +01:00
Adam Sawicki
f451b94158
Fixed vmaBuildVirtualBlockStatsString, vmaFreeVirtualBlockStatsString to also be inside #if VMA_STATS_STRING_ENABLED
...
Updated copyright headers for to year 2022.
Change by @medranSolus
2022-01-21 12:56:18 +01:00
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
a8581fc96c
Deleted the whole Record&Replay feature. COMPATIBILITY BREAKING!
...
Removed from the API: VmaAllocatorCreateInfo::pRecordSettings, VmaRecordSettings, VmaRecordFlagBits, VmaRecordFlags.
Regenerated documentation. Updated README.
2022-01-10 18:11:09 +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
c61770a162
Fixed CMakeLists.txt regarding VMA_DYNAMIC_VULKAN_FUNCTIONS, VMA_STATIC_VULKAN_FUNCTIONS
...
Closes #218
2022-01-05 18:41:51 +01:00
Adam Sawicki
7c48285034
Removed VMA_USE_STL_CONTAINERS
2021-12-22 14:57:18 +01:00
Adam Sawicki
cbad11e039
Fixed vmaGetPoolStats for dedicated allocations
...
Added new tests: TestPoolsAndAllocationParameters.
2021-12-22 14:50:49 +01:00
Adam Sawicki
4586be47d8
Fixed usage of VMA_STATIC_VULKAN_FUNCTIONS, VMA_DYNAMIC_VULKAN_FUNCTIONS in CmakeLists.txt
...
Fixes #215
2021-12-17 12:11:06 +01:00
Adam Sawicki
5c8b3ba955
Fixes in CMakeLists.txt files
...
Added header files, added NATVIS file, added missing project dependencies.
2021-12-07 16:48:59 +01:00
Adam Sawicki
d3067c3620
Improved NATVIS file - added support for VmaIntrusiveLinkedList usage
2021-12-07 16:48:07 +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
4e4e1c085d
Added parameters -t --Test and -s -TestSparseBinding to the test app, to execute tests and exit.
2021-12-03 12:13:44 +01:00
Adam Sawicki
d74155933e
Improvements in CMakeLists.txt
2021-12-03 11:37:36 +01:00
Adam Sawicki
2854266061
Fix in TestHeapSizeLimit
2021-12-02 16:38:35 +01:00
Adam Sawicki
f529a86ab5
Added VmaVulkanFunctions::vkGetInstanceProcAddr, vkGetDeviceProcAddr
...
These are now required when using VMA_DYNAMIC_VULKAN_FUNCTIONS. Compatibility breaking!
Closes #211
2021-11-29 17:52:30 +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
Lukasz Izdebski
cf6b1a9270
Doxygen added to CMake, shader project dependency added to Sample Project
2021-10-06 13:30:04 +02:00
Adam Sawicki
1b0bd18053
Standardized line endings to LF
...
See also #195
2021-09-30 12:03:35 +02:00
Sergey Kosarevsky
73f3aed74d
Fixed issue #192 with hardcoded VK_USE_PLATFORM_WIN32_KHR
2021-09-20 15:11:21 +03:00
Adam Sawicki
82731feeb9
Fixes. Left only new member VmaPoolCreateInfo::pMemoryAllocateNext.
2021-06-21 14:47:37 +02:00
Adam Sawicki
d780fe0263
Merge branch 'master' into PoolCustomPnext
...
# Conflicts:
# include/vk_mem_alloc.h
2021-06-21 14:08:45 +02:00
Adam Sawicki
11dce16f00
Added VmaPoolCreateInfo::minAllocationAlignment
2021-06-18 15:25:57 +02:00
Adam Sawicki
8d4a9e9174
Renamed macro VMA_DEBUG_ALIGNMENT to VMA_MIN_ALIGNMENT as there are valid use cases for it other than debugging purposes.
2021-06-14 17:01:33 +02:00
Adam Sawicki
2f4bc1bb20
Merge pull request #171 from IAmNotHanni/master
...
Add CMake support
2021-06-09 16:48:06 +02:00
Adam Sawicki
e30b3ab39c
Moving Doxyfile to main directory
2021-06-09 16:30:59 +02:00
Johannes Schneider
c9777daabb
Remove macros which can be configured through CMake from VmaUsage.h
2021-06-02 23:18:54 +02:00
Johannes Schneider
948be70048
Enable compiling with multiple processes for VmaReplay
2021-06-02 12:18:42 +02:00
Johannes Schneider
191c64c8ee
Link VulkanMemoryAllocator to Vulkan only if static linking is enabled
2021-06-02 00:23:57 +02:00
Johannes Schneider
8111c12b36
Expose important VMA settings macros as CMake options
2021-06-02 00:22:18 +02:00
Johannes Schneider
e65c1469d9
Improve consistency in naming of targets and options
2021-05-31 23:53:21 +02:00
Johannes Schneider
696ecd674d
Replace add_definitions with add_compile_definitions
2021-05-31 23:53:21 +02:00
Johannes Schneider
a3078999ea
Move add_subdirectory for shaders and VmaReplay to the end of the file
2021-05-31 23:53:21 +02:00
Johannes Schneider
61a2844a4f
Only set VMA_EXAMPLE_SOURCE_FILES when building sample app
2021-05-31 23:53:20 +02:00
Johannes Schneider
1a25921427
Make target_include_directories a one line instruction
2021-05-31 23:53:20 +02:00
Johannes Schneider
853f713db1
Remove source_group instructions
2021-05-31 23:53:19 +02:00
Johannes Schneider
8f62aa27c2
Rename replay app target and shaders target
2021-05-28 20:03:27 +02:00
Johannes Schneider
a7f6b7e1f1
Fix VmaReplay build
2021-05-28 20:03:26 +02:00
Johannes Schneider
3f2238ac9d
Fix VMA_BUILD_EXAMPLE_APP_SHADERS being ignored on Linux
2021-05-28 12:45:58 +02:00
Johannes Schneider
6b733a5ba2
Fix missing Vulkan dependency of VmaExample
2021-05-28 11:56:59 +02:00
Johannes Schneider
e32721df9e
Make building shaders, VMA example application and VMA replay app optional
2021-05-28 02:04:15 +02:00
Johannes
69747a2bdb
Add CMake support
2021-05-27 22:10:12 +02:00
Adam Sawicki
59ec0809a7
Moved main file vk_mem_alloc.h to subdirectory include/
...
WARNING! This can break external code that depends on directory structure of this repository!
Closes #165
2021-04-19 13:46:49 +02:00
Adam Sawicki
a75a61bfd7
Added parsing of command line parameters and GPU selection
...
Command line syntax:
-h, --Help Print this information
-l, --List Print list of GPUs
-g S, --GPU S Select GPU with name containing S
-i N, --GPUIndex N Select GPU index N
Also improved error handling.
2021-03-11 15:15:38 +01:00
Adam Sawicki
48e3d88114
Improved macros TEST, ERR_GUARD_VULKAN
2021-03-11 14:31:00 +01:00
Adam Sawicki
4b047fde54
Optimization: custom pools are on an intrusive double linked list not sorted vector
...
Added struct VmaPoolListItemTraits.
2021-03-03 16:55:04 +01:00
Adam Sawicki
7b9f7b61a1
Fix for compilation on Linux
2021-03-03 15:36:18 +01:00
Adam Sawicki
47c1cec3d1
Optimization: dedicated allocations are on an intrusive double linked list not sorted vector
...
Added class VmaIntrusiveLinkedList, struct VmaDedicatedAllocationListItemTraits.
2021-03-03 15:31:44 +01: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
e74dc79903
Fix VmaReplay after removing vmaResizeAllocation function
2021-02-26 12:16:07 +01:00
Adam Sawicki
6859ef214f
Removed deprecated function vmaResizeAllocation
...
Also fixed compatibility with Vulkan 1.0.
See #164
2021-02-26 12:09:34 +01:00
Adam Sawicki
afd50562cb
Sample app: Added printing information about available memory heaps nad types
2021-02-26 11:59:58 +01:00
Adam Sawicki
a420c3d752
Fixed budget management in VmaBlockVector::Allocate for cases when some of multi-page allocations fail
2021-02-23 18:21:42 +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
4dfa169ffc
Fix for build on Linux
2021-02-22 14:18:34 +01:00
Adam Sawicki
ae0b011e7a
Internal improvement: Added counting total number of VkDeviceMemory blocks.
...
Fixed case of spamming dedicated allocations instead of bigger blocks and thus and exceeding maxMemoryAllocationCount when heap size/budget is reached or exceeded.
Added debug macro VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT.
2021-02-19 18:00:05 +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
0d4f5234fd
Updated README.md - added RPCS3 to the list of known usages.
...
Also changed sample app to use Vulkan 1.2 by default.
2021-02-16 16:54:27 +01:00
kd-11
e8c483ddb1
mem_alloc: Optimize allocation conflict checking
...
- When bufferImageGranularity == allocaAlignment the worst case is actually already evaluated
- When result offset and allocation size are already aligned, it is not possible for the 'page' to be shared
In both scenarios, a lot of work can be saved by simply not scanning suballocations. When dealing with many tiny allocations, this adds up a lot!
2021-02-15 22:15:35 +03: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
Ashkan Aliabadi
8f4e09affd
Refer to std string and stream with their fully qualified names.
2020-12-02 16:23:11 -08:00
Adam Sawicki
8cd86b6dd4
Merge branch 'master' of https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator into master
2020-11-03 17:24:26 +01:00
Adam Sawicki
18b0407f32
Further improvements in documentation.
2020-11-03 17:20:59 +01:00
Adam Sawicki
97880507ac
Improvements in documentation.
2020-11-03 17:02:54 +01:00
Adam Sawicki
acecd26121
Fixes and clarifications in documentation
2020-11-03 15:01:56 +01:00
Adam Sawicki
ebc1f75a6d
Merge pull request #154 from r-barnes/richard/whitespace
...
Drop trailing whitespace
2020-10-29 12:15:18 +01:00
Richard Barnes
270b24295d
Drop trailing whitespace.
...
The only change this commit makes is to drop trailing whitespace.
This makes contributions easier for folks whose editors are set up
to automatically remove such whitespace on save.
2020-10-28 12:33:53 -06:00
Richard Barnes
139741813a
Make binary search overflow safe.
...
Our internal static analysis flags potentially unsafe midpoint
calculations. The proposed fix ensures the binary search doesn't
overflow at the cost of a single additional operation.
2020-10-28 12:32:51 -06:00
Adam Sawicki
76411c95c0
Added VmaAllocatorCreateInfo::pTypeExternalMemoryHandleTypes
2020-10-23 16:10:49 +02:00
Adam Sawicki
3dadc82bce
Merge branch 'master' into PoolCustomPnext
2020-10-23 15:20:54 +02:00
Adam Sawicki
3528e2aed3
Minor formatting fix in documentation
...
Regenerated documentation using new Doxygen.
2020-10-15 15:04:12 +02:00
Adam Sawicki
4075d9ef40
Add VmaPoolCreateInfo::pMemoryAllocateNext
2020-10-05 19:04:02 +02:00
Adam Sawicki
0e2b4b2045
Fix std::min in VmaBlockVector::ProcessDefragmentations
...
Fixes #151 - thanks @rextimmy
2020-09-30 16:07:51 +02:00
Adam Sawicki
1420873213
Merge pull request #148 from res2k/vma_aligned_alloc-tweaks
...
Some tweaks to vma_aligned_alloc()
2020-08-31 12:41:41 +02:00
Adam Sawicki
6074de0c4a
Merge pull request #147 from res2k/move-some-preproc-defn
...
Move some preprocessor directives that may influence user code into "implementation" block
2020-08-31 12:38:43 +02:00
Frank Richter
4157367212
Let VMA_SYSTEM_ALIGNED_FREE fall back to VMA_SYSTEM_FREE, if defined
2020-08-24 00:40:19 +02:00
Frank Richter
59131844fe
Add vma_aligned_free() for symmetry
2020-08-24 00:05:50 +02:00
Frank Richter
2dc44c1d9d
Make vma_aligned_alloc() functions static
2020-08-24 00:02:35 +02:00
Frank Richter
449971111d
Move preprocessor directives that may influence user code into implementation block
2020-08-23 21:14:46 +02:00