Actual deleak, debug object names

This commit is contained in:
2025-11-29 00:28:32 +01:00
parent 81a56f393e
commit 493937f870
8 changed files with 123 additions and 6 deletions

View File

@@ -104,6 +104,7 @@ pub fn init(engine: *Engine) !Swapchain {
}, &engine.vk_allocator.interface);
};
errdefer engine.device.destroyRenderPass(render_pass, &engine.vk_allocator.interface);
engine.setObjectName(render_pass, "RP", .{});
var swapchain: Swapchain = .{
.params = params,
@@ -133,6 +134,7 @@ pub fn deinit(self: *Swapchain, engine: *Engine) void {
}
engine.device.destroyRenderPass(self.render_pass, &engine.vk_allocator.interface);
engine.destroySemaphore(self.semaphore_image_acquired);
self.* = undefined;
}
@@ -173,6 +175,7 @@ pub fn recreate(self: *Swapchain, engine: *Engine) !void {
.old_swapchain = old_swapchain,
}, &engine.vk_allocator.interface);
errdefer engine.device.destroySwapchainKHR(new_swapchain, &engine.vk_allocator.interface);
engine.setObjectName(new_swapchain, "SC {d}×{d}", .{ extent.width, extent.height });
// --- DESTROY OLD SWAPCHAIN AND ITS IMAGES --------------------------------
@@ -209,6 +212,7 @@ pub fn recreate(self: *Swapchain, engine: *Engine) !void {
.height = extent.height,
.target_queue = .graphics,
.usage = .depth,
.name = "@Depth",
});
errdefer new_depth_texture.deinit(engine);
@@ -223,13 +227,14 @@ pub fn recreate(self: *Swapchain, engine: *Engine) !void {
errdefer for (swapchain_images.items) |*x| x.deinit(engine);
for (images) |image| {
for (images, 0..) |image, index| {
swapchain_images.appendAssumeCapacity(try SwapchainImage.init(engine, .{
.image = image,
.format = self.params.surface_format.format,
.render_pass = self.render_pass,
.extent = extent,
.depth_stencil_image_view = new_depth_texture.image_view,
.index = index,
}));
}
@@ -246,6 +251,7 @@ pub fn recreate(self: *Swapchain, engine: *Engine) !void {
var semaphore_image_acquired = try engine.createSemaphore();
errdefer engine.destroySemaphore(semaphore_image_acquired);
engine.setObjectName(semaphore_image_acquired, "S Acquired[E]", .{});
const res = try engine.device.acquireNextImageKHR(new_swapchain, std.math.maxInt(u64), semaphore_image_acquired, .null_handle);
if (res.result == .not_ready or res.result == .timeout) {
@@ -407,6 +413,8 @@ const SwapchainImage = struct {
render_pass: vk.RenderPass,
extent: vk.Extent2D,
depth_stencil_image_view: vk.ImageView,
index: usize,
};
fn init(engine: *Engine, props: InitProps) !SwapchainImage {
@@ -423,17 +431,21 @@ const SwapchainImage = struct {
},
});
errdefer engine.destroyImageView(image_view);
engine.setObjectName(image_view, "IV Swapchain[{d}]", .{props.index});
const semaphore_image_acquired = try engine.createSemaphore();
errdefer engine.destroySemaphore(semaphore_image_acquired);
engine.setObjectName(image_view, "S Acquired[{d}]", .{props.index});
const semaphore_render_finished = try engine.createSemaphore();
errdefer engine.destroySemaphore(semaphore_render_finished);
engine.setObjectName(image_view, "S Rendered[{d}]", .{props.index});
const fence = try engine.createFence(.{
.flags = .{ .signaled_bit = true },
});
errdefer engine.destroyFence(fence);
engine.setObjectName(image_view, "F Rendered[{d}]", .{props.index});
const framebuffer = try engine.createFramebuffer(.{
.render_pass = props.render_pass,
@@ -443,6 +455,7 @@ const SwapchainImage = struct {
.layers = 1,
});
errdefer engine.destroyFramebuffer(framebuffer);
engine.setObjectName(image_view, "FB Swapchain[{d}]", .{props.index});
return .{
.image = props.image,