vk: always explicitly release memory

This commit is contained in:
DH 2026-01-05 06:26:31 +03:00
parent ea28a6c13e
commit a130642ddf

View file

@ -3,7 +3,6 @@
#include <rx/FileLock.hpp>
#include <rx/MemoryTable.hpp>
#include <rx/die.hpp>
#include <rx/format.hpp>
#include <rx/print.hpp>
#include <cstddef>
@ -173,6 +172,12 @@ public:
mDeviceMemory = nullptr;
}
VkDeviceMemory release() {
auto result = mDeviceMemory;
mDeviceMemory = nullptr;
return result;
}
DeviceMemory &operator=(DeviceMemory &&other) noexcept {
std::swap(mDeviceMemory, other.mDeviceMemory);
std::swap(mSize, other.mSize);
@ -388,7 +393,10 @@ class MemoryResource {
public:
MemoryResource() = default;
~MemoryResource() { clear(); }
~MemoryResource() {
clear();
mMemory.release();
}
using NativeHandle = DeviceMemory::NativeHandle;
@ -459,7 +467,7 @@ public:
if ((requirements.memoryTypeBits & (1 << mMemory.getMemoryTypeIndex())) ==
0) {
rx::die("unexpected requirements for {} memory, {}", debugName,
requirements);
requirements.memoryTypeBits);
}
std::lock_guard lock(mMtx);