From 5b468028dab738be0f01a9af9778ac0d20adc6d7 Mon Sep 17 00:00:00 2001 From: Helco Date: Fri, 8 Mar 2024 15:07:21 +0100 Subject: [PATCH] zzre: Fix three Vulkan validations related to cleanup --- zzre.core/imgui/WindowContainer.cs | 3 +++ zzre/Program.cs | 3 +++ zzre/game/UI.cs | 1 + 3 files changed, 7 insertions(+) diff --git a/zzre.core/imgui/WindowContainer.cs b/zzre.core/imgui/WindowContainer.cs index 02bbdfee..bc170c40 100644 --- a/zzre.core/imgui/WindowContainer.cs +++ b/zzre.core/imgui/WindowContainer.cs @@ -74,6 +74,9 @@ protected override void DisposeManaged() base.DisposeManaged(); foreach (var window in this.ToArray()) window.Dispose(); + onceBeforeUpdate.Invoke(); + onceAfterUpdate.Invoke(); // Window Tags like FramebufferArea will defer disposal + ImGuiRenderer.Dispose(); commandList.Dispose(); if (!fence.Signaled) diff --git a/zzre/Program.cs b/zzre/Program.cs index d1bf9a3b..f3d73dae 100644 --- a/zzre/Program.cs +++ b/zzre/Program.cs @@ -172,6 +172,9 @@ private static void CommonCleanup(ITagContainer diContainer) diContainer.TryGetTag(out GraphicsDevice graphicsDevice); diContainer.TryGetTag(out Sdl sdl); diContainer.TryGetTag(out OpenALDevice openALDevice); + + graphicsDevice.WaitForIdle(); // otherwise Vulkan Validation is not happy about us destroying textures + diContainer.RemoveTag(dispose: false); diContainer.RemoveTag(dispose: false); diContainer.RemoveTag(dispose: false); diff --git a/zzre/game/UI.cs b/zzre/game/UI.cs index 4babf291..9f6fb8a5 100644 --- a/zzre/game/UI.cs +++ b/zzre/game/UI.cs @@ -97,6 +97,7 @@ protected override void DisposeManaged() renderSystems.Dispose(); tagContainer.Dispose(); assetRegistry.Dispose(); + ProjectionBuffer.Dispose(); zzContainer.OnResize -= HandleResize; }