Merge pull request #347 from Rob2309/extends-marker
Add attribute to mark pNext pointers with the Vulkan struct they extend
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index a094898..fbe4f13 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -234,6 +234,12 @@
#define VMA_CALL_POST
#endif
+// Define this macro to decorate pNext pointers with an attribute specifying the Vulkan
+// structure that will be extended via the pNext chain.
+#ifndef VMA_EXTENDS_VK_STRUCT
+ #define VMA_EXTENDS_VK_STRUCT(vkStruct)
+#endif
+
// Define this macro to decorate pointers with an attribute specifying the
// length of the array they point to if they are not null.
//
@@ -1319,7 +1325,7 @@
Please note that some structures, e.g. `VkMemoryPriorityAllocateInfoEXT`, `VkMemoryDedicatedAllocateInfoKHR`,
can be attached automatically by this library when using other, more convenient of its features.
*/
- void* VMA_NULLABLE pMemoryAllocateNext;
+ void* VMA_NULLABLE VMA_EXTENDS_VK_STRUCT(VkMemoryAllocateInfo) pMemoryAllocateNext;
} VmaPoolCreateInfo;
/** @} */
@@ -2227,7 +2233,7 @@
VmaAllocation VMA_NOT_NULL allocation,
VkDeviceSize allocationLocalOffset,
VkBuffer VMA_NOT_NULL_NON_DISPATCHABLE buffer,
- const void* VMA_NULLABLE pNext);
+ const void* VMA_NULLABLE VMA_EXTENDS_VK_STRUCT(VkBindBufferMemoryInfoKHR) pNext);
/** \brief Binds image to allocation.
@@ -2264,7 +2270,7 @@
VmaAllocation VMA_NOT_NULL allocation,
VkDeviceSize allocationLocalOffset,
VkImage VMA_NOT_NULL_NON_DISPATCHABLE image,
- const void* VMA_NULLABLE pNext);
+ const void* VMA_NULLABLE VMA_EXTENDS_VK_STRUCT(VkBindImageMemoryInfoKHR) pNext);
/** \brief Creates a new `VkBuffer`, allocates and binds memory for it.