comptime USE_DEBUG_LAYERS

This commit is contained in:
David Allemang
2024-03-21 11:49:21 -04:00
parent 85af42ffc1
commit 0d183d79a0

View File

@@ -5,6 +5,11 @@ const c = @import("c.zig");
const vk = @import("vk"); const vk = @import("vk");
const builtin = @import("builtin"); const builtin = @import("builtin");
const USE_DEBUG_LAYERS = switch (builtin.mode) {
.ReleaseSafe, .Debug => true,
.ReleaseSmall, .ReleaseFast => false,
};
const BaseDispatch = vk.BaseWrapper(.{ const BaseDispatch = vk.BaseWrapper(.{
.createInstance = true, .createInstance = true,
.getInstanceProcAddr = true, .getInstanceProcAddr = true,
@@ -13,9 +18,9 @@ const BaseDispatch = vk.BaseWrapper(.{
}); });
const InstanceDispatch = vk.InstanceWrapper(.{ const InstanceDispatch = vk.InstanceWrapper(.{
.destroyInstance = true, .destroyInstance = true,
.createDebugUtilsMessengerEXT = true, .createDebugUtilsMessengerEXT = USE_DEBUG_LAYERS,
.destroyDebugUtilsMessengerEXT = true, .destroyDebugUtilsMessengerEXT = USE_DEBUG_LAYERS,
.submitDebugUtilsMessageEXT = true, .submitDebugUtilsMessageEXT = USE_DEBUG_LAYERS,
}); });
const DeviceDispatch = vk.DeviceWrapper(.{}); const DeviceDispatch = vk.DeviceWrapper(.{});
@@ -28,7 +33,7 @@ vkd: DeviceDispatch,
window: *c.GLFWwindow, window: *c.GLFWwindow,
instance: vk.Instance, instance: vk.Instance,
messenger: vk.DebugUtilsMessengerEXT, messenger: if (USE_DEBUG_LAYERS) vk.DebugUtilsMessengerEXT else void,
pub fn mainLoop(self: Self) void { pub fn mainLoop(self: Self) void {
while (c.glfwWindowShouldClose(self.window) == 0) : (c.glfwPollEvents()) { while (c.glfwWindowShouldClose(self.window) == 0) : (c.glfwPollEvents()) {
@@ -116,12 +121,9 @@ fn initVulkan(self: *Self) !void {
var layers = std.ArrayList([*:0]const u8).init(self.allocator); var layers = std.ArrayList([*:0]const u8).init(self.allocator);
defer layers.deinit(); defer layers.deinit();
switch (builtin.mode) { if (USE_DEBUG_LAYERS) {
.ReleaseSafe, .Debug => {
try layers.append("VK_LAYER_KHRONOS_validation"); try layers.append("VK_LAYER_KHRONOS_validation");
try exts.append("VK_EXT_debug_utils"); try exts.append("VK_EXT_debug_utils");
},
.ReleaseSmall, .ReleaseFast => {},
} }
var glfw_ext_count: u32 = 0; var glfw_ext_count: u32 = 0;
@@ -194,19 +196,31 @@ fn initVulkan(self: *Self) !void {
.pp_enabled_extension_names = exts.items.ptr, .pp_enabled_extension_names = exts.items.ptr,
.enabled_layer_count = @intCast(layers.items.len), .enabled_layer_count = @intCast(layers.items.len),
.pp_enabled_layer_names = layers.items.ptr, .pp_enabled_layer_names = layers.items.ptr,
.p_next = &debug_create_info, .p_next = if (USE_DEBUG_LAYERS) &debug_create_info else null,
}; };
self.instance = try self.vkb.createInstance(&create_info, null); self.instance = try self.vkb.createInstance(&create_info, null);
self.vki = try InstanceDispatch.load(self.instance, self.vkb.dispatch.vkGetInstanceProcAddr); self.vki = try InstanceDispatch.load(self.instance, self.vkb.dispatch.vkGetInstanceProcAddr);
errdefer self.vki.destroyInstance(self.instance, null); errdefer self.vki.destroyInstance(self.instance, null);
self.messenger = try self.vki.createDebugUtilsMessengerEXT(self.instance, &debug_create_info, null); if (USE_DEBUG_LAYERS) self.messenger = try self.vki.createDebugUtilsMessengerEXT(
errdefer self.vki.destroyDebugUtilsMessengerEXT(self.instance, self.messenger, null); self.instance,
&debug_create_info,
null,
);
errdefer if (USE_DEBUG_LAYERS) self.vki.destroyDebugUtilsMessengerEXT(
self.instance,
self.messenger,
null,
);
} }
fn deinitVulkan(self: Self) void { fn deinitVulkan(self: Self) void {
self.vki.destroyDebugUtilsMessengerEXT(self.instance, self.messenger, null); if (USE_DEBUG_LAYERS) self.vki.destroyDebugUtilsMessengerEXT(
self.instance,
self.messenger,
null,
);
self.vki.destroyInstance(self.instance, null); self.vki.destroyInstance(self.instance, null);
} }