diff --git a/crates/renderer/src/lib.rs b/crates/renderer/src/lib.rs index 8e437ae..8785a83 100644 --- a/crates/renderer/src/lib.rs +++ b/crates/renderer/src/lib.rs @@ -175,6 +175,21 @@ impl Renderer { } } +/// Ensures all Vulkan resources are destroyed in the correct order. +impl Drop for Renderer { + fn drop(&mut self) { + unsafe { + self.device.destroy_device(None); + + if let Some(utils) = &self.debug_utils { + utils.destroy_debug_utils_messenger(self.debug_messenger, None); + } + + self.instance.destroy_instance(None); + } + } +} + /// The callback function invoked by Vulkan's validation layers. /// /// This function translates Vulkan debug messages into `tracing` events.