aboutsummaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vkh_device.c12
-rw-r--r--src/vkh_device.h1
-rw-r--r--src/vma/VmaUsage.cpp5
3 files changed, 12 insertions, 6 deletions
diff --git a/src/vkh_device.c b/src/vkh_device.c
index 8659ef3..3d8b62f 100644
--- a/src/vkh_device.c
+++ b/src/vkh_device.c
@@ -38,6 +38,7 @@ VkhDevice vkh_device_create(VkhApp app, VkhPhyInfo phyInfo, VkDeviceCreateInfo *
VK_CHECK_RESULT(vkCreateDevice(phyInfo->phy, pDevice_info, NULL, &dev));
VkhDevice vkhd = vkh_device_import(app->inst, phyInfo->phy, dev);
vkhd->vkhApplication = app;
+ vkhd->imported = false;
return vkhd;
}
VkhDevice vkh_device_import(VkInstance inst, VkPhysicalDevice phy, VkDevice vkDev) {
@@ -45,16 +46,14 @@ VkhDevice vkh_device_import(VkInstance inst, VkPhysicalDevice phy, VkDevice vkDe
dev->dev = vkDev;
dev->phy = phy;
dev->instance = inst;
+ dev->imported = true;
vkGetPhysicalDeviceMemoryProperties(phy, &dev->phyMemProps);
#ifdef VKH_USE_VMA
- if (!dev->allocator) {
- VmaAllocatorCreateInfo allocatorInfo = {.physicalDevice = phy, .device = vkDev};
- vmaCreateAllocator(&allocatorInfo, &dev->allocator);
- }
+ VmaAllocatorCreateInfo allocatorInfo = {.physicalDevice = phy, .device = vkDev};
+ vmaCreateAllocator(&allocatorInfo, &dev->allocator);
#else
#endif
-
return dev;
}
VkResult vkh_device_status(VkhDevice dev) { return dev == NULL ? VK_ERROR_UNKNOWN : dev->status; }
@@ -99,7 +98,8 @@ void vkh_device_destroy(VkhDevice dev) {
vmaDestroyAllocator(dev->allocator);
#else
#endif
- vkDestroyDevice(dev->dev, NULL);
+ if (!dev->imported)
+ vkDestroyDevice(dev->dev, NULL);
free(dev);
}
diff --git a/src/vkh_device.h b/src/vkh_device.h
index 1340bdf..f44381f 100644
--- a/src/vkh_device.h
+++ b/src/vkh_device.h
@@ -42,6 +42,7 @@ typedef struct _vkh_device_t {
VmaAllocator allocator;
#endif
VkhApp vkhApplication;
+ bool imported;
} vkh_device_t;
#ifdef __cplusplus
diff --git a/src/vma/VmaUsage.cpp b/src/vma/VmaUsage.cpp
index f15a951..25e5d07 100644
--- a/src/vma/VmaUsage.cpp
+++ b/src/vma/VmaUsage.cpp
@@ -4,6 +4,11 @@ vk_mem_alloc.h to include definitions of its internal implementation
*/
#pragma warning(push)
#pragma warning(disable : 4100; disable : 4127; disable : 4324)
+
+//#define VMA_DEBUG_LOG(format, ...) printf(format "\n", ##__VA_ARGS__)
+// Alternatively, tell VMA how to print leaks explicitly
+//#define VMA_LEAK_LOG_FORMAT(format) "VMA LEAK: " format
+
#define VMA_IMPLEMENTATION
#include <cstdio>
#include "../vk_mem_alloc.h"