[vk] tmp: workaround for RAII crash on exit

Prevent double-free

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter 2025-07-20 22:11:02 -04:00
parent ce56a4b83c
commit e8e0d7fa20
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6

View file

@ -11,6 +11,7 @@
#include <vector>
#include "common/common_types.h"
#include "common/settings.h"
#include "common/logging/log.h"
#include "video_core/vulkan_common/vk_enum_string_helper.h"
#include "video_core/vulkan_common/vma.h"
@ -309,7 +310,10 @@ const char* Exception::what() const noexcept {
}
void Destroy(VkInstance instance, const InstanceDispatch& dld) noexcept {
dld.vkDestroyInstance(instance, nullptr);
// FIXME: A double free occurs here if RAII is enabled.
if (!Settings::values.enable_raii.GetValue()) {
dld.vkDestroyInstance(instance, nullptr);
}
}
void Destroy(VkDevice device, const InstanceDispatch& dld) noexcept {
@ -412,7 +416,10 @@ void Destroy(VkInstance instance, VkDebugReportCallbackEXT handle,
}
void Destroy(VkInstance instance, VkSurfaceKHR handle, const InstanceDispatch& dld) noexcept {
dld.vkDestroySurfaceKHR(instance, handle, nullptr);
// FIXME: A double free occurs here if RAII is enabled.
if (!Settings::values.enable_raii.GetValue()) {
dld.vkDestroySurfaceKHR(instance, handle, nullptr);
}
}
VkResult Free(VkDevice device, VkDescriptorPool handle, Span<VkDescriptorSet> sets,