comptime USE_DEBUG_LAYERS
This commit is contained in:
@@ -5,6 +5,11 @@ const c = @import("c.zig");
|
||||
const vk = @import("vk");
|
||||
const builtin = @import("builtin");
|
||||
|
||||
const USE_DEBUG_LAYERS = switch (builtin.mode) {
|
||||
.ReleaseSafe, .Debug => true,
|
||||
.ReleaseSmall, .ReleaseFast => false,
|
||||
};
|
||||
|
||||
const BaseDispatch = vk.BaseWrapper(.{
|
||||
.createInstance = true,
|
||||
.getInstanceProcAddr = true,
|
||||
@@ -13,9 +18,9 @@ const BaseDispatch = vk.BaseWrapper(.{
|
||||
});
|
||||
const InstanceDispatch = vk.InstanceWrapper(.{
|
||||
.destroyInstance = true,
|
||||
.createDebugUtilsMessengerEXT = true,
|
||||
.destroyDebugUtilsMessengerEXT = true,
|
||||
.submitDebugUtilsMessageEXT = true,
|
||||
.createDebugUtilsMessengerEXT = USE_DEBUG_LAYERS,
|
||||
.destroyDebugUtilsMessengerEXT = USE_DEBUG_LAYERS,
|
||||
.submitDebugUtilsMessageEXT = USE_DEBUG_LAYERS,
|
||||
});
|
||||
const DeviceDispatch = vk.DeviceWrapper(.{});
|
||||
|
||||
@@ -28,7 +33,7 @@ vkd: DeviceDispatch,
|
||||
window: *c.GLFWwindow,
|
||||
|
||||
instance: vk.Instance,
|
||||
messenger: vk.DebugUtilsMessengerEXT,
|
||||
messenger: if (USE_DEBUG_LAYERS) vk.DebugUtilsMessengerEXT else void,
|
||||
|
||||
pub fn mainLoop(self: Self) void {
|
||||
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);
|
||||
defer layers.deinit();
|
||||
|
||||
switch (builtin.mode) {
|
||||
.ReleaseSafe, .Debug => {
|
||||
try layers.append("VK_LAYER_KHRONOS_validation");
|
||||
try exts.append("VK_EXT_debug_utils");
|
||||
},
|
||||
.ReleaseSmall, .ReleaseFast => {},
|
||||
if (USE_DEBUG_LAYERS) {
|
||||
try layers.append("VK_LAYER_KHRONOS_validation");
|
||||
try exts.append("VK_EXT_debug_utils");
|
||||
}
|
||||
|
||||
var glfw_ext_count: u32 = 0;
|
||||
@@ -194,19 +196,31 @@ fn initVulkan(self: *Self) !void {
|
||||
.pp_enabled_extension_names = exts.items.ptr,
|
||||
.enabled_layer_count = @intCast(layers.items.len),
|
||||
.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.vki = try InstanceDispatch.load(self.instance, self.vkb.dispatch.vkGetInstanceProcAddr);
|
||||
errdefer self.vki.destroyInstance(self.instance, null);
|
||||
|
||||
self.messenger = try self.vki.createDebugUtilsMessengerEXT(self.instance, &debug_create_info, null);
|
||||
errdefer self.vki.destroyDebugUtilsMessengerEXT(self.instance, self.messenger, null);
|
||||
if (USE_DEBUG_LAYERS) self.messenger = try self.vki.createDebugUtilsMessengerEXT(
|
||||
self.instance,
|
||||
&debug_create_info,
|
||||
null,
|
||||
);
|
||||
errdefer if (USE_DEBUG_LAYERS) self.vki.destroyDebugUtilsMessengerEXT(
|
||||
self.instance,
|
||||
self.messenger,
|
||||
null,
|
||||
);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user