Browse Source

vulkan: fix build on machines without vulkan 1.3

nikeinikei 3 years ago
parent
commit
dfa9b7da34

+ 12 - 9
src/modules/graphics/vulkan/Graphics.cpp

@@ -879,29 +879,32 @@ void Graphics::initVMA() {
 	vulkanFunctions.vkMapMemory = vkMapMemory;
 	vulkanFunctions.vkUnmapMemory = vkUnmapMemory;
 	vulkanFunctions.vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges;
-    vulkanFunctions.vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges;
+	vulkanFunctions.vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges;
 	vulkanFunctions.vkBindBufferMemory = vkBindBufferMemory;
 	vulkanFunctions.vkBindImageMemory = vkBindImageMemory;
 	vulkanFunctions.vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirements;
 	vulkanFunctions.vkGetImageMemoryRequirements = vkGetImageMemoryRequirements;
 	vulkanFunctions.vkCreateBuffer = vkCreateBuffer;
 	vulkanFunctions.vkCreateImage = vkCreateImage;
-    vulkanFunctions.vkDestroyBuffer = vkDestroyBuffer;
-    vulkanFunctions.vkDestroyImage = vkDestroyImage;
+	vulkanFunctions.vkDestroyBuffer = vkDestroyBuffer;
+	vulkanFunctions.vkDestroyImage = vkDestroyImage;
 	vulkanFunctions.vkCmdCopyBuffer = vkCmdCopyBuffer;
 
-    vulkanFunctions.vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2KHR;
-    vulkanFunctions.vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR;
-    vulkanFunctions.vkBindBufferMemory2KHR = vkBindBufferMemory2KHR;
-    vulkanFunctions.vkBindImageMemory2KHR = vkBindImageMemory2KHR;
-    vulkanFunctions.vkGetPhysicalDeviceMemoryProperties2KHR = vkGetPhysicalDeviceMemoryProperties2KHR;
+	vulkanFunctions.vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2KHR;
+	vulkanFunctions.vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2KHR;
+	vulkanFunctions.vkBindBufferMemory2KHR = vkBindBufferMemory2KHR;
+	vulkanFunctions.vkBindImageMemory2KHR = vkBindImageMemory2KHR;
+	vulkanFunctions.vkGetPhysicalDeviceMemoryProperties2KHR = vkGetPhysicalDeviceMemoryProperties2KHR;
 
 	vulkanFunctions.vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirements;
 	vulkanFunctions.vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirements;
 
 	allocatorCreateInfo.pVulkanFunctions = &vulkanFunctions;
 #else
-	allocatorCreateInfo.pVulkanFunctions = nullptr;
+	VmaVulkanFunctions vulkanFunctions{};
+	vulkanFunctions.vkGetInstanceProcAddr = &vkGetInstanceProcAddr;
+	vulkanFunctions.vkGetDeviceProcAddr = &vkGetDeviceProcAddr;
+	allocatorCreateInfo.pVulkanFunctions = &vulkanFunctions;
 #endif
 
 	if (vmaCreateAllocator(&allocatorCreateInfo, &vmaAllocator) != VK_SUCCESS) {

+ 2 - 0
src/modules/graphics/vulkan/UseVMA.cpp

@@ -1,2 +1,4 @@
+#include "VulkanWrapper.h"
+
 #define VMA_IMPLEMENTATION
 #include "vk_mem_alloc.h"

+ 2 - 0
src/modules/graphics/vulkan/VulkanWrapper.h

@@ -9,6 +9,8 @@
 #define VMA_DYNAMIC_VULKAN_FUNCTIONS 0
 #else
 #include <vulkan/vulkan.h>
+#define VMA_STATIC_VULKAN_FUNCTIONS 0
+#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1
 #endif
 
 #endif //LOVE_GRAPHICS_VULKAN_VULKANWRAPPER_H