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

@@ -226,6 +226,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
},
});
errdefer engine.destroyDescriptorSetLayout(global_descriptor_set_layout);
engine.setObjectName(global_descriptor_set_layout, "DSL Global", .{});
const per_batch_descriptor_set_layout = try engine.createDescriptorSetLayout(.{
.bindings = &.{
@@ -238,6 +239,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
},
});
errdefer engine.destroyDescriptorSetLayout(per_batch_descriptor_set_layout);
engine.setObjectName(per_batch_descriptor_set_layout, "DSL PerBatch", .{});
const pipeline_layout = try engine.createPipelineLayout(.{
.set_layouts = &.{
@@ -246,17 +248,21 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
},
});
errdefer engine.destroyPipelineLayout(pipeline_layout);
engine.setObjectName(pipeline_layout, "PL", .{});
const vertex_shader = try engine.createShaderModule(.{ .code = &main_vert_spv });
defer engine.destroyShaderModule(vertex_shader);
engine.setObjectName(vertex_shader, "SM main_vert", .{});
const fragment_shader = try engine.createShaderModule(.{ .code = &main_frag_spv });
defer engine.destroyShaderModule(fragment_shader);
engine.setObjectName(fragment_shader, "SM main_frag", .{});
var vertex_buffer = try VertexBuffer.init(engine, .{
.usage = .vertex,
.target_queue = .graphics,
.array_capacity = 4,
.name = "QuadVB",
});
errdefer vertex_buffer.deinit(engine);
try vertex_buffer.write(engine, .{
@@ -292,6 +298,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
.usage = .index,
.target_queue = .graphics,
.array_capacity = 6,
.name = "QuadIB",
});
errdefer index_buffer.deinit(engine);
try index_buffer.write(engine, .{
@@ -301,6 +308,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
var global_uniforms = try GlobalUniformsBuffer.init(engine, .{
.usage = .uniform,
.target_queue = .graphics,
.name = "GlobalUniforms",
});
errdefer global_uniforms.deinit(engine);
@@ -333,8 +341,10 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
errdefer for (semaphores.items) |x| engine.destroySemaphore(x);
for (0..swapchain.swapchain_images.len) |_| {
semaphores.appendAssumeCapacity(try engine.createSemaphore());
for (0..swapchain.swapchain_images.len) |i| {
const semaphore = try engine.createSemaphore();
engine.setObjectName(semaphore, "S Transfer[{d}]", .{i});
semaphores.appendAssumeCapacity(semaphore);
}
break :blk try semaphores.toOwnedSlice(allocator);
@@ -346,13 +356,11 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
allocator.free(global_uniforms_transfer_semaphores);
}
const global_uniforms_transfer_semaphore = try engine.createSemaphore();
errdefer engine.destroySemaphore(global_uniforms_transfer_semaphore);
var point_lights = try PointLightBuffer.init(engine, .{
.usage = .storage,
.target_queue = .graphics,
.array_capacity = max_point_lights,
.name = "PointLights",
});
errdefer point_lights.deinit(engine);
@@ -360,6 +368,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
.usage = .storage,
.target_queue = .graphics,
.array_capacity = max_directional_lights,
.name = "DirectionalLights",
});
errdefer directional_lights.deinit(engine);
@@ -479,6 +488,7 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
.subpass = 0,
});
errdefer engine.destroyPipeline(pipeline);
engine.setObjectName(pipeline, "P", .{});
const descriptor_pool = try engine.createDescriptorPool(.{
.max_sets = 1 + 256,
@@ -502,12 +512,14 @@ pub fn init(allocator: std.mem.Allocator, engine: *Engine, swapchain: *Swapchain
},
});
errdefer engine.destroyDescriptorPool(descriptor_pool);
engine.setObjectName(descriptor_pool, "DP", .{});
const global_descriptor_set = try engine.allocateDescriptorSet(.{
.descriptor_pool = descriptor_pool,
.set_layout = global_descriptor_set_layout,
.variable_descriptor_count = @intCast(textures.textures.items.len),
});
engine.setObjectName(global_descriptor_set, "DS Global", .{});
const descriptor_images = try allocator.alloc(vk.DescriptorImageInfo, textures.textures.items.len);
for (textures.textures.items, descriptor_images) |texture, *info| {