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
Ashkan Aliabadi
bead9eadfa
Fix misspellings.
2020-08-21 11:51:19 -07:00
Adam Sawicki
21936114ff
Merge branch 'master' of https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
2020-08-18 16:43:58 +02:00
Adam Sawicki
0620c8e5e1
Add test and documentation for resource aliasing (overlap).
2020-08-18 16:43:44 +02:00
Adam Sawicki
b9ad5e79db
Merge pull request #145 from stricmp/master
...
Fix VMA_DYNAMIC_VULKAN_FUNCTIONS compilation errors when VK_NO_PROTOTYPES is defined
2020-08-18 14:44:55 +02:00
Adam Sawicki
0ef61c2fd5
Fix in documentation chapter "Finding out if memory is mappable"
...
Fixes #143
2020-08-18 14:20:37 +02:00
Tri S
416996cbff
Fix VMA_DYNAMIC_VULKAN_FUNCTIONS compilation errors when VK_NO_PROTOTYPES is defined
2020-08-10 19:13:28 +07:00
Doğukan Korkmaztürk
67bf13cd08
Fix a typo in the explanation of VMA_ALLOCATION_CREATE_MAPPED_BIT
2020-07-27 23:55:03 -04:00
Adam Sawicki
db4c1639bf
Fix compilation errors
2020-07-16 16:41:53 +02:00
Adam Sawicki
d594faafee
Replace usage of old VK_LAYER_LUNARG_standard_validation and extension VK_EXT_debug_report with new VK_LAYER_KHRONOS_validation and extension VK_EXT_debug_utils also in VmaReplay
2020-07-15 17:12:28 +02:00
Adam Sawicki
8caf0bd1c0
Replace usage of old layer VK_LAYER_LUNARG_standard_validation and extension VK_EXT_debug_report with new layer VK_LAYER_KHRONOS_validation and extension VK_EXT_debug_utils
2020-07-15 16:56:30 +02:00
Nico Weber
08bce5328b
mac: Only call system aligned_alloc() with the 11.0+ SDK.
...
The 10.15 SDK only declares it for C++17 and C11. In Chromium, we only
call this from .cc files, and these are C++14 still for now.
The 11.0 SDK declares it independent of language version (as long as
__DARWIN_C_LEVEL >= __DARWIN_C_FULL, which it is by default, at least
on macOS).
So this calls the system version in fewer scenarios than possible,
but it keeps the preprocessor checks fairly small.
Bug: chromium:1098741
Change-Id: I1e30f88bb040876bca2b59adee0a1cff33b9ff03
2020-07-06 13:31:56 -04:00
Nico Weber
c331971b30
Only use system aligned_alloc on mac/ios if the SDK has them.
...
Bug: chromium:1098741
Change-Id: I4df73f581c2a6895c7f136ff974db0371c48cc5e
2020-07-06 13:31:48 -04:00
Nico Weber
5ef3d923d5
Fix argument order for aligned_alloc on mac.
...
I pasted this from the _aligned_malloc() branch, and _aligned_malloc()
apparently has the argments swapped compared to aligned_alloc() :/
Bug: chromium:1098741
Change-Id: Iddd92a7beb9e75ddc63b96f757457ec4258fd1ca
2020-07-06 13:31:41 -04:00
Nico Weber
1268da7b97
Make vulkan_memory_allocator build with the MacOSX11.0 SDK.
...
The 11.0 SDK adds a declaration of aligned_malloc() that's available
on macOS 10.15 and later. vulkan_memory_allocator also defines a
symbol with the same name, which causes problems.
As fix, rename the vulkan_memory_allocator version to
vma_aligned_malloc(). Use this opportunity to use the same mechanism on
Windows (a no-op), and, while here, call the system aligned_malloc()
on macOS 10.15 from there too.
Bug: chromium:1098741
Change-Id: If738a1451a08c0813532fc4b778d9118a23210b7
2020-07-06 13:31:32 -04:00
Adam Sawicki
7cb859d3a0
Improvement in VmaAlignUp, VmaAlignDown
2020-07-06 17:39:20 +02:00
Kevin Trogant
67824c5b00
Correct if in mapping example
...
We want to know if the memory is mappable, which means that the memory properties should include the `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT`.
2020-07-03 12:20:36 +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
1ebda1eecc
Add assert to check success of a CPU memory allocation
2020-06-24 17:16:26 +02:00
Adam Sawicki
f9921aefdd
Fix VmaAllocator_T::ImportVulkanFunctions_Dynamic for cases when Vulkan 1.1 is used
...
#133
2020-06-04 13:31:31 +02:00
Adam Sawicki
650ebdf783
Remove invalid outdated assert in vmaBeginDefragmentationPass
...
Closes #132
2020-05-25 17:17:11 +02:00
Adam Sawicki
72983b0aa1
Clarified documentation in few places to mention textures need to use LINEAR layout when accessed from the host
...
Rebuilt HTML documentation. Used new Doxygen 1.8.18.
Closes #129
2020-05-08 18:43:25 +02:00
Hartmut Behrens
1e11595592
fix(docs): instance not optional in quick start
2020-05-03 13:06:27 +02:00
Adam Sawicki
755fd47121
Minor fix in comment
2020-04-24 17:05:07 +02:00
Adam Sawicki
72740d8d63
Fix indentation - always use 4 spaces instead of tabs
2020-04-24 17:02:50 +02:00
Adam Sawicki
74bc7c78fe
Port memory recording in VMA to C++11
...
Closes #126
2020-04-24 16:59:34 +02:00
Adam Sawicki
ff472352b9
Add .editorconfig file to configure supporting editors to use proper whitespaces for indentation
2020-04-24 12:42:06 +02:00
Adam Sawicki
25d9b2c0ec
Add function vmaFlushAllocations, vmaInvalidateAllocations for multiple allocations at once
...
Closes #119
Added internal class VmaSmallVector.
Refactored common code into a new function VmaAllocator_T::GetFlushOrInvalidateRange.
Regenerated docs.
2020-04-19 19:02:28 +02:00
Adam Sawicki
a8a5b1f81b
Merge pull request #122 from expipiplus1/joe-120
...
Return VkResult in vmaInvalidateAllocation and vmaFlushAllocation
2020-04-19 17:20:57 +02:00
Adam Sawicki
ba9d4b3323
Merge pull request #121 from expipiplus1/joe-len
...
Add missing length annotation in vmaAllocateMemoryPages
2020-04-19 17:18:47 +02:00
Joe Hermaszewski
b52c5a3e84
Return VkResult in vmaInvalidateAllocation and vmaFlushAllocation
...
Fixes #120
2020-04-10 21:39:27 +08:00
Joe Hermaszewski
fc931bd5ac
Add missing length annotation in vmaAllocateMemoryPages
2020-04-10 21:27:55 +08:00
Adam Sawicki
6be35971a2
Minor fixes for #115
2020-04-09 16:20:13 +02:00
Adam Sawicki
9b3a159515
Merge branch 'master' into joe-const
2020-04-08 17:15:53 +02:00
Adam Sawicki
facf05ee63
Some fixes after fb3a337
#115
2020-04-08 17:09:59 +02:00
Adam Sawicki
fb3a33777d
Merge pull request #115 from expipiplus1/joe-annotations
...
Add annotations for nullability and length
2020-04-08 16:31:39 +02:00
Adam Sawicki
b713c3435b
Add #if VMA_DYNAMIC_VULKAN_FUNCTIONS == 1 around VmaAllocator_T::ImportVulkanFunctions_Dynamic
...
Refers to #56
2020-04-07 20:51:18 +02:00
Adam Sawicki
d8bdd78e26
Minor fix after c0cf25d
2020-04-07 20:47:25 +02:00
Joe Hermaszewski
4810460894
Do not include nullability and length annotations in documentation
2020-04-07 22:41:03 +08:00
Joe Hermaszewski
f22cd7b3c6
Add const qualifier to handles where possible
...
This mirrors the Vulkan specification where handles are often passed with a const qualifier
2020-04-07 20:21:30 +08:00
Joe Hermaszewski
08bc59bee5
Add length annotation for VmaAllocatorCreateInfo::pHeapSizeLimit
2020-04-07 20:21:30 +08:00
Joe Hermaszewski
b9725fc203
Annotate types with lengths instead of parameters/members
2020-04-07 20:21:28 +08:00
Joe Hermaszewski
3a756282ab
Disable -Wnullability-completeness for the implementation
2020-04-07 20:20:48 +08:00
Joe Hermaszewski
35939a0fd1
Add VMA_NULLABLE to pointed to out values
2020-04-07 20:20:48 +08:00
Joe Hermaszewski
c6f8c86085
Add annotations for nullability and length
...
These are only present on the declarations in the C API.
New macros
- `VMA_NULLABLE`
- `VMA_NOT_NULL`
- `VMA_NULLABLE_NON_DISPATCHABLE`
- `VMA_NOT_NULL_NON_DISPATCHABLE`
- `VMA_LEN_IF_NOT_NULL`
On clang `VMA_NOT_NULL` and `VMA_NULLABLE` are defined as `_Nonnull` and
`_Nullable`. Clang will use these annotations to generate diagnostics
when these functions or structs are incorrectly used.
`VMA_NULLABLE_NON_DISPATCHABLE` and `VMA_NOT_NULL_NON_DISPATCHABLE` are
not defined on platforms where Vulkan's non-dispatchable handles are not
pointers; on platforms where they are, these macros are defined to be
`VMA_NULLABLE` and `VMA_NOT_NULL` respectively.
`LEN_IF_NOT_NULL` is not defined for any compiler. It is included to
mirror the `len` attribute in the Vulkan XML spec in order to aid in
development of other language bindings for this library.
It was tempting to use C's array syntax (`foo(int len, int arr[len])`)to
specify lengths, however this is not possible to use with optional
pointers, nor is it possible to use inside structs. For the sake of
consistency only `VMA_LEN_IF_NOT_NULL` is used (additionally neither
clang not gcc generate warnings for function misuse when the array
length specifier is anything but an integer literal).
- Also correct a couple of typos
- Also add assert on ppName in vmaGetPoolName
Closes #114
2020-04-07 20:20:47 +08:00
Joe Hermaszewski
c0cf25df3d
Add CPP #error if trying to use recording on a non-Windows platform
2020-04-07 19:59:33 +08:00
Joe Hermaszewski
0360182776
Add const qualifier to handles where possible
...
This mirrors the Vulkan specification where handles are often passed with a const qualifier
2020-04-07 17:40:40 +08:00
Adam Sawicki
f575c5070b
Further changes in importing pointers to Vulkan functions
...
Reverted change removing configuration macro VMA_STATIC_VULKAN_FUNCTIONS.
Added configuration macro VMA_DYNAMIC_VULKAN_FUNCTIONS.
Fixes for Android.
Closes #111 , also refers to #56 .
2020-03-31 19:11:41 +02:00
Sidney Just
bb7bdb99ec
Fixed a race condition with incremental defragmentation. The issue here is that VmaBlockVector::DefragmentationEnd() relied on the mutex being previously locked to safely mutate its data, but with incremental defrag this isn't guaranteed to be the case anymore.
2020-03-27 09:58:25 -07:00
Adam Sawicki
3d1ce4ebb8
Support VK_KHR_buffer_device_address but not VK_EXT_buffer_device_address
...
To avoid mess in the code. They are not identical! "EXT" version lacks flag VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT* flag.
Refers to #56
2020-03-25 10:34:05 +01:00
Adam Sawicki
204a810449
Fix documentation to state that VmaAllocatorCreateInfo::instance is now required
...
Compatibility breaking!
Closes #107
2020-03-24 15:58:45 +01:00
Adam Sawicki
297639774c
Remove outdated comment
2020-03-24 12:40:54 +01:00
Adam Sawicki
4405c51aab
Fix compilation of VmaReplay project
2020-03-23 18:58:04 +01:00
Adam Sawicki
451bf601d8
Bump version number to 3.0.0-development as we broken backward compatibility
...
Also rebuilt the docs.
2020-03-23 18:24:02 +01:00
Adam Sawicki
b58de2be50
Merge pull request #105 from Didgy74/master
...
Add pUserData to VmaDeviceMemoryCallbacks
2020-03-23 18:21:16 +01:00
Adam Sawicki
2952959820
Fix a comment broken accidentally
2020-03-23 18:19:35 +01:00
Adam Sawicki
954631ac2a
Improve internal fetching pointers to Vulkan functions to always use vkGetInstanceProcAddr/vkGetDeviceProcAddr
...
No longer refers to statically linked Vulkan functions.
Removed configuration macro VMA_STATIC_VULKAN_FUNCTIONS.
Hopefully will help for #56 .
2020-03-23 18:13:36 +01:00
Adam Sawicki
77b55b38f4
Fix VmaAllocator_T::AllocateDedicatedMemory to make it compiling with Vulkan SDK 1.1.130.0 (linux)
...
Closes #104
2020-03-23 15:42:55 +01: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
Nils Petter Skålerud
d00c9b6ff8
Fixed bug where pUserData was not being assigned during initialization.
...
Signed-off-by: Nils Petter Skålerud <np_skalerud@hotmail.com>
2020-03-19 19:38:52 +01:00
Nils Petter Skålerud
eebf47cd1c
Added a member void* pUserData to VmaDeviceMemoryCallbacks
...
Updated PFN_vmaAllocateDeviceMemoryFunction to use new pUserData member
Updated PFN_vmaFreeDeviceMemoryFunction to use new pUserData member
Signed-off-by: Nils Petter Skålerud <np_skalerud@hotmail.com>
2020-03-19 19:20:19 +01:00
Adam Sawicki
39aeff7a43
Remove incorrect asserts from vmaCreateBuffer
...
Closes #102
2020-03-16 15:39:44 +01:00
Adam Sawicki
1b8bdb216e
Remove unused variable in VmaBlockVector::AllocatePage
...
Fixes #101
2020-03-11 17:08: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
Frank Richter
c534e61379
Typo fix
2020-03-08 13:24:06 +01:00
Adam Sawicki
e8a8544322
Sample application: Print physical device parameters like deviceID and deviceName
2020-03-06 14:48:30 +01:00
Adam Sawicki
a4f2eb9d45
Don't enable extensions that are promoted to core Vulkan 1.1
...
Add PrintEnabledFeatures to print which features and extensions are enabled on console.
2020-03-06 14:39:42 +01:00