fixed memory bug introduced by 48796a0fa3

This commit is contained in:
Lorenzo Torres 2025-03-17 19:44:53 +01:00
parent 1d64275dee
commit 3a210a6959

View file

@ -82,16 +82,16 @@ pub const Instance = struct {
defer avaliableExtensions.deinit(); defer avaliableExtensions.deinit();
_ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, avaliableExtensions.items.ptr); _ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, avaliableExtensions.items.ptr);
// Check the extensions we want against the extensions the user has // Check the extensions we want against the extensions the user has
for(extensions) |need_ext| { for (extensions) |need_ext| {
var found = false; var found = false;
for(avaliableExtensions.items) |useable_ext| { for (avaliableExtensions.items) |useable_ext| {
const extensionName: [*c]const u8 = &useable_ext.extensionName; const extensionName: [*c]const u8 = &useable_ext.extensionName;
if(std.mem.eql(u8, std.mem.sliceTo(need_ext, 0), std.mem.sliceTo(extensionName, 0))){ if (std.mem.eql(u8, std.mem.sliceTo(need_ext, 0), std.mem.sliceTo(extensionName, 0))) {
found = true; found = true;
break; break;
} }
} }
if(!found){ if (!found) {
std.debug.panic("ERROR: Needed vulkan extension {s} not found\n", .{need_ext}); std.debug.panic("ERROR: Needed vulkan extension {s} not found\n", .{need_ext});
} }
} }
@ -107,19 +107,19 @@ pub const Instance = struct {
// Every layer we do have we add to this list, if we don't have it no worries just print a message and continue // Every layer we do have we add to this list, if we don't have it no worries just print a message and continue
var newLayers = std.ArrayList([*c]const u8).init(allocator); var newLayers = std.ArrayList([*c]const u8).init(allocator);
// Loop over layers we want // Loop over layers we want
for(validation_layers) |want_layer| { for (validation_layers) |want_layer| {
var found = false; var found = false;
for(availableLayers.items) |useable_validation| { for (availableLayers.items) |useable_validation| {
const layer_name: [*c]const u8 = &useable_validation.layerName; const layer_name: [*c]const u8 = &useable_validation.layerName;
if (std.mem.eql(u8, std.mem.sliceTo(want_layer, 0), std.mem.sliceTo(layer_name, 0))){ if (std.mem.eql(u8, std.mem.sliceTo(want_layer, 0), std.mem.sliceTo(layer_name, 0))) {
found = true; found = true;
break; break;
} }
} }
if(!found){ if (!found) {
std.debug.print("WARNING: Compiled in debug mode, but wanted validation layer {s} not found.\n", .{want_layer}); std.debug.print("WARNING: Compiled in debug mode, but wanted validation layer {s} not found.\n", .{want_layer});
std.debug.print("NOTE: Validation layer will be removed from the wanted validation layers\n", .{}); std.debug.print("NOTE: Validation layer will be removed from the wanted validation layers\n", .{});
} else{ } else {
try newLayers.append(want_layer); try newLayers.append(want_layer);
} }
} }
@ -138,7 +138,7 @@ pub const Instance = struct {
.pApplicationInfo = &app_info, .pApplicationInfo = &app_info,
.enabledExtensionCount = @intCast(extensions.len), .enabledExtensionCount = @intCast(extensions.len),
.ppEnabledExtensionNames = extensions.ptr, .ppEnabledExtensionNames = extensions.ptr,
.enabledLayerCount = @intCast(newLayers.capacity), .enabledLayerCount = @intCast(newLayers.items.len),
.ppEnabledLayerNames = newLayers.items.ptr, .ppEnabledLayerNames = newLayers.items.ptr,
}; };
@ -849,7 +849,7 @@ pub fn Device(comptime n: usize) type {
pub fn waitIdle(self: Self) void { pub fn waitIdle(self: Self) void {
const mapErrorRes = mapError(c.vkDeviceWaitIdle(self.handle)); const mapErrorRes = mapError(c.vkDeviceWaitIdle(self.handle));
if(mapErrorRes) {} else |err| { if (mapErrorRes) {} else |err| {
std.debug.panic("Vulkan wait idle error: {any}\n", .{err}); std.debug.panic("Vulkan wait idle error: {any}\n", .{err});
} }
} }