Stephan Hartmann
383f06b9fd
IWYU: add cstdio for snprintf in vk_mem_alloc.h
...
Discoverd with upcoming GCC 13.
2023-04-02 21:19:16 +02:00
lawadr
d16730ce64
Change __alignof to alignof
...
Whereas __alignof is a non-standard compiler extension that seems to
come from Microsoft and is supported (yet undocumented) by Clang and
GCC, alignof is a standard language feature in C++11. Clang and GCC
both document __alignof__ as a compiler extension, but this isn't
supported by Microsoft.
This fixes builds on compilers that don't support __alignof.
2023-03-22 15:33:11 +00:00
Adam Sawicki
66afe099f1
Improved documentation chapter "Resource aliasing (overlap)"
2023-03-06 11:43:13 +01:00
Adam Sawicki
dd09767ff6
Fixed usage of VMA_FALLTHROUGH
2023-02-24 14:17:44 +01:00
Adam Sawicki
4c58c1fefe
Defined VMA_FALLTHROUGH to fix more compiler warnings
...
See #321
2023-02-24 14:15:41 +01:00
Adam Sawicki
729b7c1408
Fixes for some compiler warnings
...
Found by Visual Studio 2019
2023-02-24 14:04:59 +01:00
Adam Sawicki
c51730a857
Further fixes to importing function vkGetPhysicalDeviceMemoryProperties2 / vkGetPhysicalDeviceMemoryProperties2KHR
...
See #322
2023-02-21 11:31:21 +01:00
Vladislav Belov
3e6b3847e3
Fixes uninitialized vkGetPhysicalDeviceMemoryProperties2KHR during ImportVulkanFunctions_Custom.
2023-02-19 11:31:42 +03:00
Jeroen Bakker
c265047b29
Fix compilation warning.
...
GPU/Linux
2023-02-02 08:09:05 +01:00
Adam Sawicki
7c35d6299b
Added missing vmaFlushAllocation in documentation
...
Fixes #316
2023-01-30 14:18:09 +01:00
Adam Sawicki
29d492b60c
Added missing #include <cstdio>
...
For snprintf, for compatibility with GCC 13.
Fixes #312 - thanks @marxin !
2023-01-19 13:19:55 +01:00
Denis Orlov
3e3877ac83
Fix builds on Linux CI
...
This fixes compilation on older Linux compilers (gcc 7.5.0, clang 7.0.0)
that do not seem to implement P0558R1 defect report, thus not allowing
the usage of value_type member typedef from std::atomic.
2023-01-05 00:05:16 +03:00
Denis Orlov
3459fd780a
Fix atomic type used in AtomicTransactionalIncrement
...
This partially reverts changes from 4dfa169ffc
2023-01-04 21:34:16 +03:00
Adam Sawicki
2606c0039f
Fixed potential integer overflow in VmaAllocator_T::AllocateMemoryOfType when maxMemoryAllocationCount Vulkan limit has high value
...
Fixes #300
2022-11-29 16:53:36 +01:00
Adam Sawicki
14469a5eea
Refactored some switch statements
...
Fixes #299
2022-11-29 16:42:14 +01:00
Adam Sawicki
85a2580529
Removed unused local variables unusedRangeSize
...
Fixes #298
2022-11-29 16:23:17 +01:00
Adam Sawicki
6d2fe13627
Split macros into separate VMA_DEBUG_LOG and VMA_DEBUG_LOG_FORMAT
...
To fix compiler errors with -Wpedantic -Werror - see #297
2022-11-29 16:16:12 +01:00
manaskulkarni
2ea07806af
BindBufferMemory, BindImageMemory - Return VK_ERROR_UNKNOWN for unknown allocation type
2022-11-23 14:02:24 +05:30
Adam Sawicki
936bc4b57e
Internal refactoring for compatibility with 32-bit
...
Removed VmaJsonWriter::WriteSize, ContinueString_Size.
See #293
2022-11-09 16:42:33 +01:00
Adam Sawicki
800acede8d
Merge branch 'master' of https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
2022-11-04 17:02:51 +01:00
Adam Sawicki
cb5bf6452c
Minor fix in documentation
...
Regenerated the documentation using Doxygen 1.9.5.
2022-11-04 17:02:24 +01:00
Riku Palomäki
f741604e04
Remove extra semicolons, fixes build with -Wextra-semi
2022-11-01 10:08:23 +02:00
Russell Greene
198127a0ee
Fix build for iOS
2022-10-27 14:46:35 -05:00
qbojj
19dbbe92c0
fix typo in specification of VmaAlignDown
2022-09-20 13:29:31 +02:00
Pavel Rojtberg
a4c1afb3c4
allow building against vulkan 1.2 headers
...
e.g. on ubuntu 20.04
2022-09-12 18:16:00 +02:00
Tiago Chaves
157a8173d1
Fix minor typos in documentation
2022-09-07 17:37:26 -03:00
Adam Sawicki
0aa8a44acf
Reordered macro definitions in the file to fix compilation on Linux
2022-09-07 16:27:35 +02:00
Adam Sawicki
db0f9b481a
Changed implementation of vma_aligned_alloc to only use aligned_alloc when C++17 is enabled, where the function is defined.
...
See #285
May break on some platforms! If it affects you, please enable C++17 or later in your compiler or provide custom implementation of macro VMA_SYSTEM_ALIGNED_MALLOC (and VMA_SYSTEM_ALIGNED_FREE if needed) using the API of your system.
2022-09-07 16:21:34 +02:00
Adam Sawicki
d6b705bf75
Added function vmaCreateAliasingBuffer2, vmaCreateAliasingImage2 with new parameter allocationLocalOffset
...
Thanks @sagaceilo for the idea!
2022-09-04 13:26:39 +02:00
rumblehhh
177862376c
Fix various typos
2022-08-05 09:20:11 +01:00
Max Rodriguez
b367bf3b87
docs: Fixed a typo under 'Selecting Vulkan version' section
2022-07-26 11:44:54 -07:00
Adam Sawicki
1022be64cf
Added missing mutex when unmapping memory.
...
Hopefully fixes #267 . Code by @medranSolus
2022-06-22 12:48:27 +02:00
Adam Sawicki
b51fea7a53
Improved documentation regarding selecting Vulkan version
...
See #256
Updated to Doxygen 1.9.4.
2022-06-14 16:43:27 +02:00
Rémi Verschelde
9eab57ea44
Strip trailing whitespace in code files
2022-06-14 13:41:15 +02:00
Rémi Verschelde
e20c24c4c8
Convert VMA line endings to Unix style (LF)
...
This makes it consistent with other files in the repository,
and is typically the norm for cross-platform Git repos.
2022-06-14 12:00:24 +02:00
Alex
825d3d850a
fix typos
2022-06-10 09:36:31 +08:00
Adam Sawicki
a6bfc23725
Releasing version 3.0.1
...
Some fixes in tests for Nvidia cards.
2022-05-26 11:51:12 +02:00
Adam Sawicki
b77238c92c
Refactored VmaBlockVector::SortByFreeSize to fix compilation on XCode 13.4
...
Fixes #269 . Thanks @richard-lunarg !
2022-05-26 11:11:32 +02:00
Adam Sawicki
0bbde1750e
Removed unused functions VmaQuickSort, VmaQuickSortPartition
...
Closes #262 . Thanks @laurelkeys !
2022-05-11 12:37:14 +02:00
Artem Kharytoniuk
fe38c8f13e
Fix minor typo
2022-05-11 11:23:16 +02:00
Adam Sawicki
5ab8c1752a
Fix assert when VMA_DEBUG_INITIALIZE_ALLOCATIONS is used with new memory usage flags
...
Only mappable allocations are filled with bit pattern.
See #260
2022-04-27 16:58:56 +02:00
Brian Osman
8a7f80743a
Fix return type of GetAllocationNextPtr
...
Returning `void* const` doesn't mean anything (produces a warning with -Wignored-qualifiers). Based on usage, it looks like the returned pointer is expected to point at const data, so I've fixed the declaration to reflect that.
2022-04-19 10:55:48 -04:00
Tiago Chaves
ebefe58623
Remove unused VmaAlgorithmToStr function
2022-04-09 21:23:17 -03:00
Adam Sawicki
0c7ad4e859
Optimized VmaCountBitsSets to use std::popcount when C++20 is enabled
...
Closes #251
2022-03-29 18:07:09 +02:00
Adam Sawicki
2d2a9e3df3
Fixed bug with assert failure when JSON dump is created while a custom pool exist with specified string name
2022-03-29 17:24:48 +02:00
Adam Sawicki
5b598e0a35
Clarified documentation about required C++14 version
...
Fixes #252
2022-03-28 16:36:24 +02:00
Adam Sawicki
3ed40d8321
Updated version number
2022-03-28 13:22:36 +02:00
Adam Sawicki
3f9f66740a
Fix for compilation on AppleClang 13.1
...
Fixes #253
2022-03-28 13:21:46 +02:00
Adam Sawicki
35e1539161
Fix for out-of-bound accessing last free block in EXTENSIVE defragmentation algorithm.
...
Code by @medranSolus
See #232
2022-03-28 13:19:34 +02:00
Menno Vink
11cbcfcfc5
Simplify the code to keep xcode happy
2022-03-27 18:34:29 +02:00
Menno Vink
54d356e2f3
C4062 fix
2022-03-27 17:48:07 +02:00
Adam Sawicki
67fda02b4b
Updated version number and CHANGELOG.md
...
Regenerated documentation and executable.
2022-03-25 12:39:55 +01:00
Adam Sawicki
3c6470cf45
New JSON dump format
...
Unified across VMA and D3D12MA.
Updated Python script for visualization - now called GpuMemDumpVis.py.
Also a fix for bug in EXTENSIVE defragmentation algorithm - see #232
Code by @medranSolus
2022-03-24 11:50:34 +01:00
Adam Sawicki
6b098e457e
Small but important fix in the documentation
2022-03-14 18:05:55 +01:00
Adam Sawicki
fadfc3fd13
Added convenience functions vmaCreateAliasingBuffer, vmaCreateAliasingImage
...
Code by @medranSolus
2022-03-14 16:56:30 +01:00
Adam Sawicki
c317c7b3e8
Internal improvement: moved setting of incremental sort in block vector to separate variable.
...
Code by @medranSolus
2022-03-10 15:17:22 +01:00
Adam Sawicki
31910c8b08
Fix in defragmentation versus mapping
...
by @medranSolus
Added TestDefragmentationVsMapping.
2022-03-09 13:24:06 +01:00
Adam Sawicki
e4dd120c2f
Fixed line endings to LF again
...
See #195
2022-03-08 13:50:37 +01:00
Adam Sawicki
85a49729c3
Improvements in documentation regarding defragmentation
2022-03-08 13:46:58 +01:00
Adam Sawicki
e1879e9f10
Removed VMA_ALLOCATION_CREATE_RESERVED_1_BIT, VMA_ALLOCATION_CREATE_RESERVED_2_BIT
...
Improvements in documentation.
2022-03-08 12:25:24 +01:00
Adam Sawicki
b644e72765
Renamed VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_PACKED_BIT to VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT for consistency. Compatibility breaking.
2022-03-07 17:16:49 +01:00
Adam Sawicki
7d182e2c5a
Change in the defragmentation API. Compatibility breaking!
...
Removed VmaDefragmentationMove::dstMemory, dstOffset, internalData, added dstTmpAllocation.
Code by @medranSolus
2022-03-07 17:00:12 +01:00
Adam Sawicki
80a07979f5
Improvements in documentation, especially regarding defragmentation
2022-03-04 16:33:16 +01:00
Adam Sawicki
f828262f43
Changed vmaEndDefragmentation to return void (somewhat compatibility breaking)
...
It couldn't fail anyway.
2022-03-04 14:24:29 +01:00
Adam Sawicki
b1427085f3
Fixed accounting of statistics in defragmentation.
...
Code by @medranSolus
See #232
2022-03-04 13:26:42 +01:00
Adam Sawicki
ea759b65d4
Added missing mutexes for DefragmentPassEnd().
...
Code by @medranSolus
2022-03-04 10:34:26 +01:00
Sidney Just
7b9c21f1fe
Fixed defragmenter not acquiring a lock before touching blocks
2022-03-03 17:05:05 -08:00
Sidney Just
44a5aea4ef
Fixed loop termination when ending defragment passes
2022-03-03 17:04:20 -08:00
Adam Sawicki
46776a4c37
Fixed merge error
2022-03-03 11:33:39 +01:00
Adam Sawicki
caf27e0428
Made allocation Name and UserData separate. COMPATIBILITY BREAKING!
...
Added function vmaSetAllocationName. Added member VmaAllocationInfo::pName.
VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT is now deprecated but still works.
Code mostly by @medranSolus
2022-03-03 11:23:14 +01:00
Adam Sawicki
bd39bed5e6
Fixes in defragmentation
...
Implemented VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT. Fixed allocation mapping after defragmentation.
Also fixed tests - hopefully fixes #248
Code by @medranSolus
2022-03-02 16:10:41 +01:00
Adam Sawicki
01364c7970
Added documentation chapter "VK_EXT_memory_priority"
...
Other fixes in documentation
2022-02-28 12:10:18 +01:00
Adam Sawicki
f02c8a46d8
Improvement in documentation
2022-02-28 10:57:04 +01:00
Adam Sawicki
4039e45a19
Added documentation chapter "Versioning and compatibility"
...
Many improvements in documentation and README.
2022-02-26 13:26:20 +01:00
Adam Sawicki
86c124c772
VMA_MEMORY_USAGE_AUTO* flags: Added support for rare case when a resource used on the device, not used on the host, may still be preferred in host memory
...
An update in the documentation.
2022-02-26 11:49:51 +01:00
Adam Sawicki
88bf8cb9a8
Removed usage of __popcnt
...
Apparently some old processors don't support this instruction. It's up to the user to provide optimized implementation by defining macro VMA_COUNT_BITS_SET.
Fixes #245
2022-02-25 13:51:13 +01:00
Pedro J. Estébanez
d8a9c7fa42
Add missing nullability qualifier
2022-02-24 11:42:44 +01:00
Adam Sawicki
20b9bc5334
Minor fixes in documentation of defragmentation
2022-02-23 16:21:16 +01:00
Adam Sawicki
6a63f2cb4e
Fixed incorrect accounting of memory budget.
...
Code by @medranSolus
Fixes #241
2022-02-23 13:44:51 +01:00
Adam Sawicki
ab75719ee0
Fix for failing CI job on linux.
...
Code by @medranSolus
2022-02-23 10:39:40 +01:00
Adam Sawicki
88510e9801
New API for defragmentation. COMPATIBILITY BREAKING!
...
See structure VmaDefragmentationInfo, VmaDefragmentationMove, VmaDefragmentationPassMoveInfo, VmaDefragmentationStats, function vmaBeginDefragmentation, vmaEndDefragmentation, vmaBeginDefragmentationPass, vmaEndDefragmentationPass.
Switched to TLSF as the default algorithm - in default pools, custom pools, virtual blocks. Removed generic and buddy algorithm. Removed flags: VMA_POOL_CREATE_BUDDY_ALGORITHM_BIT, VMA_POOL_CREATE_TLSF_ALGORITHM_BIT, VMA_VIRTUAL_BLOCK_CREATE_BUDDY_ALGORITHM_BIT, VMA_VIRTUAL_BLOCK_CREATE_TLSF_ALGORITHM_BIT.
Updated and regenerated documentation.
2022-02-22 23:38:19 +01:00
Adam Sawicki
9104ef3d45
Merge branch 'master' of https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
2022-02-22 15:19:47 +01:00
Adam Sawicki
226bd5a6ad
New API for statistics. COMPATIBILITY BREAKING!
...
New structure VmaStatistics, VmaDetailedStatistics, VmaTotalStatistics. Modified structure VmaBudget.
New function vmaCalculateStatistics, vmaGetPoolStatistics, vmaCalculatePoolStatistics, vmaGetVirtualBlockStatistics, vmaCalculateVirtualBlockStatistics. vmaGetHeapBudgets function unchanged.
Updated and rebuilt the docs.
2022-02-22 15:19:35 +01:00
Matus Fedorko
cf5e9899fb
Fix VmaSmallVector::push_back
2022-02-18 13:27:52 +01:00
Adam Sawicki
3fd264ae1d
Added usage of vkGetDeviceBufferMemoryRequirements, vkGetDeviceImageMemoryRequirements from Vulkan 1.3
...
Used inside vmaFindMemoryTypeIndexForBufferInfo, vmaFindMemoryTypeIndexForImageInfo when available.
Added these 2 functions to VmaVulkanFunctions structure.
Regenerated the docs.
2022-02-17 17:34:48 +01:00
Adam Sawicki
aee61b1d25
Added new API for selecting preferred memory type: VMA_MEMORY_USAGE_AUTO, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, VMA_MEMORY_USAGE_AUTO_PREFER_HOST, VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT, VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT, VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT
...
Old values like VMA_MEMORY_USAGE_GPU_ONLY still work as before, for backward compatibility.
Updated documentation accordingly.
Introduced a concept of mappable and non-mappable allocations - with VMA_MEMORY_USAGE_AUTO* an intent to map has to be specified using VMA_ALLOCATION_CREATE_HOST_ACCESS*.
Added mapping hysteresis logic (internal class VmaMappingHysteresis, config macro VMA_MAPPING_HYSTERESIS_ENABLED) that prevents too many calls vkMapMemory/vkUnmapMemory back and forth.
Internal improvement in VmaBlockVector::AllocatePage to try to keep mappable and non-mappable allocations separate.
2022-02-17 14:44:06 +01:00
Adam Sawicki
b41615cfce
Added missing #include <intrin.h>
...
Fixes #237
2022-02-17 11:08:30 +01:00
Adam Sawicki
e51e4d3b40
Fix initialization order in VmaDefragmentationAlgorithm_Generic constructor
...
See #236
2022-02-15 11:26:29 +01:00
Adam Sawicki
cebd53ce67
Merge pull request #235 from RandomShaper/fix_nullability
...
Add missing nullability macros
2022-02-14 18:21:13 +01:00
Adam Sawicki
0a24d5a7f3
Fixes for 2 compiler warnings
...
Closes #236
2022-02-14 18:17:14 +01:00
Pedro J. Estébanez
32f74c51e0
Add missing nullability macros
2022-02-12 13:27:10 +01:00
Adam Sawicki
a1895bc765
Internal fix in VmaBlockVector::AllocatePage
2022-02-08 16:31:11 +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
Tiago Chaves
2d5df2d7a8
Include vulkan.h before #define VMA_VULKAN_VERSION
2022-02-07 14:56:49 -03:00
Adam Sawicki
4d65f7e113
Updated first chapter of the documentation "Quick start"
...
Rebuilt the docs.
Closes #228
2022-02-07 16:58:10 +01:00
Adam Sawicki
5c710e86a0
Added support for Vulkan 1.3
...
Fixes #228
2022-02-04 15:17:02 +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
05d0c89f0b
Minor fix in documentation
2022-02-02 15:45:33 +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