ci(amd64/clang/lsan): fix leak sanitizer errors #57

Merged
light7734 merged 35 commits from ci/leak_sanatizer_fix into main 2025-10-09 14:08:14 +00:00
2 changed files with 41 additions and 34 deletions
Showing only changes of commit 099af13f2f - Show all commits

View file

@ -1,6 +1,7 @@
#include <app/system.hpp>
#include <renderer/backend/vk/context/instance.hpp>
#include <renderer/backend/vk/utils.hpp>
#include <vulkan/vulkan_core.h>
#if defined(_WIN32)
#error "Unsupported platform (currently)"
@ -190,11 +191,21 @@ void Instance::initialize_instance()
.pValues = &setting_duplicate_message_limit,
},
});
auto disable = VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT;
auto validation_features = VkValidationFeaturesEXT {
.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,
.enabledValidationFeatureCount = 0u,
.pEnabledValidationFeatures = nullptr,
.disabledValidationFeatureCount = 1u,
.pDisabledValidationFeatures = &disable,
};
const VkLayerSettingsCreateInfoEXT layer_settings_create_info = {
.sType = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT,
.pNext = &validation_features,
.settingCount = settings.size(),
.pSettings = settings.data()
.pSettings = settings.data(),
};
auto layers = std::vector<const char *> {

View file

@ -44,39 +44,39 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device)
.oldSwapchain = nullptr,
}
);
log_dbg("CREATED SWAPCHAIN @ {:x}", std::bit_cast<size_t>(m_swapchain));
m_resolution = capabilities.currentExtent;
m_device->name(m_swapchain, "swapchain {}", idx++);
m_device->wait_idle();
// m_images = m_device->get_swapchain_images(m_swapchain);
// m_image_views.resize(m_images.size());
// for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views))
// {
// view = m_device->create_image_view(VkImageViewCreateInfo {
// .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
// .image = image,
// .viewType = VK_IMAGE_VIEW_TYPE_2D,
// .format = surface_format.format,
// .components = VkComponentMapping {
// .r = VK_COMPONENT_SWIZZLE_IDENTITY,
// .g = VK_COMPONENT_SWIZZLE_IDENTITY,
// .b = VK_COMPONENT_SWIZZLE_IDENTITY,
// .a = VK_COMPONENT_SWIZZLE_IDENTITY,
// },
// .subresourceRange = VkImageSubresourceRange {
// .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
// .baseMipLevel = 0u,
// .levelCount = 1u,
// .baseArrayLayer = 0u,
// .layerCount = 1u,
// }
// });
//
// m_device->name(image, "swapchain image {}", idx++);
// m_device->name(view, "swapchain image view {}", idx++);
// }
m_images = m_device->get_swapchain_images(m_swapchain);
m_image_views.resize(m_images.size());
for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views))
{
view = m_device->create_image_view(VkImageViewCreateInfo {
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = image,
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = surface_format.format,
.components = VkComponentMapping {
.r = VK_COMPONENT_SWIZZLE_IDENTITY,
.g = VK_COMPONENT_SWIZZLE_IDENTITY,
.b = VK_COMPONENT_SWIZZLE_IDENTITY,
.a = VK_COMPONENT_SWIZZLE_IDENTITY,
},
.subresourceRange = VkImageSubresourceRange {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = 0u,
.levelCount = 1u,
.baseArrayLayer = 0u,
.layerCount = 1u,
}
});
m_device->name(image, "swapchain image {}", idx++);
m_device->name(view, "swapchain image view {}", idx++);
}
m_device->wait_idle();
}
Swapchain::~Swapchain()
@ -89,13 +89,9 @@ Swapchain::~Swapchain()
try
{
m_device->wait_idle();
log_dbg("DESTROYING SWAPCHAIN @ {:x}", std::bit_cast<size_t>(m_swapchain));
std::this_thread::sleep_for(std::chrono::seconds { 10 });
m_device->destroy_image_views(m_image_views);
m_device->destroy_swapchain(m_swapchain);
m_device->wait_idle();
std::this_thread::sleep_for(std::chrono::seconds { 10 });
std::cout << "EEP" << std::endl;
}
catch (const std::exception &exp)
{