From a130642ddf77a7883d18e31119e508607f4dfa0a Mon Sep 17 00:00:00 2001 From: DH Date: Mon, 5 Jan 2026 06:26:31 +0300 Subject: [PATCH] vk: always explicitly release memory --- rpcsx/gpu/lib/vk/include/vk.hpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/rpcsx/gpu/lib/vk/include/vk.hpp b/rpcsx/gpu/lib/vk/include/vk.hpp index b75f9db01..facf8f684 100644 --- a/rpcsx/gpu/lib/vk/include/vk.hpp +++ b/rpcsx/gpu/lib/vk/include/vk.hpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include @@ -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);