mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2025-05-14 08:48:32 +00:00
Improved documentation regarding selecting Vulkan version
See #256 Updated to Doxygen 1.9.4.
This commit is contained in:
parent
0ad6dcd5f4
commit
b51fea7a53
141 changed files with 557 additions and 435 deletions
|
@ -130,9 +130,6 @@ extern "C" {
|
|||
#include <vulkan/vulkan.h>
|
||||
#endif
|
||||
|
||||
// Define this macro to declare maximum supported Vulkan version in format AAABBBCCC,
|
||||
// where AAA = major, BBB = minor, CCC = patch.
|
||||
// If you want to use version > 1.0, it still needs to be enabled via VmaAllocatorCreateInfo::vulkanApiVersion.
|
||||
#if !defined(VMA_VULKAN_VERSION)
|
||||
#if defined(VK_VERSION_1_3)
|
||||
#define VMA_VULKAN_VERSION 1003000
|
||||
|
@ -14029,6 +14026,12 @@ VmaAllocator_T::VmaAllocator_T(const VmaAllocatorCreateInfo* pCreateInfo) :
|
|||
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT is set but required extension or Vulkan 1.2 is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
||||
}
|
||||
#endif
|
||||
#if VMA_VULKAN_VERSION < 1003000
|
||||
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 3, 0))
|
||||
{
|
||||
VMA_ASSERT(0 && "vulkanApiVersion >= VK_API_VERSION_1_3 but required Vulkan version is disabled by preprocessor macros.");
|
||||
}
|
||||
#endif
|
||||
#if VMA_VULKAN_VERSION < 1002000
|
||||
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 2, 0))
|
||||
{
|
||||
|
@ -17565,7 +17568,7 @@ them before every `#include` of this library.
|
|||
This library is written in C++, but has C-compatible interface.
|
||||
Thus you can include and use vk_mem_alloc.h in C or C++ code, but full
|
||||
implementation with `VMA_IMPLEMENTATION` macro must be compiled as C++, NOT as C.
|
||||
Some features of C++14 used. STL containers, RTTI, or C++ exceptions are not used.
|
||||
Some features of C++14 are used. STL containers, RTTI, or C++ exceptions are not used.
|
||||
|
||||
|
||||
\section quick_start_initialization Initialization
|
||||
|
@ -17582,6 +17585,34 @@ VmaAllocatorCreateInfo::vulkanApiVersion and which extensions did you enable
|
|||
by setting VmaAllocatorCreateInfo::flags (like #VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT for VK_KHR_buffer_device_address).
|
||||
Otherwise, VMA would use only features of Vulkan 1.0 core with no extensions.
|
||||
|
||||
\subsection quick_start_initialization_selecting_vulkan_version Selecting Vulkan version
|
||||
|
||||
VMA supports Vulkan version down to 1.0, for backward compatibility.
|
||||
If you want to use higher version, you need to inform the library about it.
|
||||
This is a two-step proces.
|
||||
|
||||
<b>Step 1: Compile time.</b> By default, VMA compiles with code supporting the highest
|
||||
Vulkan version found in the included `<vulkan/vulkan.h>` that is also supported by the library.
|
||||
If this is OK, you don't need to do anything.
|
||||
However, if you want to compile VMA as if only some lower Vulkan version was available,
|
||||
define macro `VMA_VULKAN_VERSION` before every `#include "vk_mem_alloc.h"`.
|
||||
It should have decimal numeric value in form of ABBBCCC, where A = major, BBB = minor, CCC = patch Vulkan version.
|
||||
For example, to compile against Vulkan 1.2:
|
||||
|
||||
\code
|
||||
#define VMA_VULKAN_VERSION 1002000 // Vulkan 1.2
|
||||
#include "vk_mem_alloc.h"
|
||||
\endcode
|
||||
|
||||
<b>Step 2: Runtime.</b> Even when compiled with higher Vulkan version available,
|
||||
VMA can use only features of a lower version, which is configurable during creation of the #VmaAllocator object.
|
||||
By default, only Vulkan 1.0 is used.
|
||||
To initialize the allocator with support for higher Vulkan version, you need to set member
|
||||
VmaAllocatorCreateInfo::vulkanApiVersion to an appropriate value, e.g. using constants like `VK_API_VERSION_1_2`.
|
||||
See code sample below.
|
||||
|
||||
\subsection quick_start_initialization_importing_vulkan_functions Importing Vulkan functions
|
||||
|
||||
You may need to configure importing Vulkan functions. There are 3 ways to do this:
|
||||
|
||||
-# **If you link with Vulkan static library** (e.g. "vulkan-1.lib" on Windows):
|
||||
|
@ -17598,7 +17629,15 @@ You may need to configure importing Vulkan functions. There are 3 ways to do thi
|
|||
- Define `VMA_STATIC_VULKAN_FUNCTIONS` and `VMA_DYNAMIC_VULKAN_FUNCTIONS` to 0.
|
||||
- Pass these pointers via structure #VmaVulkanFunctions.
|
||||
|
||||
Example for case 2:
|
||||
|
||||
\code
|
||||
#define VMA_STATIC_VULKAN_FUNCTIONS 0
|
||||
#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1
|
||||
#include "vk_mem_alloc.h"
|
||||
|
||||
...
|
||||
|
||||
VmaVulkanFunctions vulkanFunctions = {};
|
||||
vulkanFunctions.vkGetInstanceProcAddr = &vkGetInstanceProcAddr;
|
||||
vulkanFunctions.vkGetDeviceProcAddr = &vkGetDeviceProcAddr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue