diff options
author | Mary <mary@mary.zone> | 2023-04-01 10:05:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-01 08:05:02 +0000 |
commit | f5a6f45b27d43f8314227e4a8e7f9ddd681a4277 (patch) | |
tree | 480dd766c2c02b7f5e9494f2a879ac37d0e9e63c /Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | |
parent | 210557951bd2393f31876d9fc8861e029f64a51a (diff) |
vulkan: Separate debug utils logic from VulkanInitialization (#4609)1.1.691
* vulkan: Separate debug utils logic from VulkanInitialization
Also checks for VK_EXT_debug_utils existence instead of force enabling it and allow possible error during messenger init
* Address gdkchan's comment
* Use CreateDebugUtilsMessenger Span variant
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/VulkanRenderer.cs')
-rw-r--r-- | Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index d8cb5e2b..81dec12e 100644 --- a/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -36,7 +36,6 @@ namespace Ryujinx.Graphics.Vulkan internal KhrPushDescriptor PushDescriptorApi { get; private set; } internal ExtTransformFeedback TransformFeedbackApi { get; private set; } internal KhrDrawIndirectCount DrawIndirectCountApi { get; private set; } - internal ExtDebugUtils DebugUtilsApi { get; private set; } internal uint QueueFamilyIndex { get; private set; } internal Queue Queue { get; private set; } @@ -57,11 +56,11 @@ namespace Ryujinx.Graphics.Vulkan internal HashSet<ITexture> Textures { get; } internal HashSet<SamplerHolder> Samplers { get; } + private VulkanDebugMessenger _debugMessenger; private Counters _counters; private SyncManager _syncManager; private PipelineFull _pipeline; - private DebugUtilsMessengerEXT _debugUtilsMessenger; internal HelperShader HelperShader { get; private set; } internal PipelineFull PipelineInternal => _pipeline; @@ -345,9 +344,8 @@ namespace Ryujinx.Graphics.Vulkan Api = api; - _instance = VulkanInitialization.CreateInstance(api, logLevel, _getRequiredExtensions(), out ExtDebugUtils debugUtils, out _debugUtilsMessenger); - - DebugUtilsApi = debugUtils; + _instance = VulkanInitialization.CreateInstance(api, logLevel, _getRequiredExtensions()); + _debugMessenger = new VulkanDebugMessenger(api, _instance, logLevel); if (api.TryGetInstanceExtension(_instance, out KhrSurface surfaceApi)) { @@ -794,11 +792,6 @@ namespace Ryujinx.Graphics.Vulkan MemoryAllocator.Dispose(); - if (_debugUtilsMessenger.Handle != 0) - { - DebugUtilsApi.DestroyDebugUtilsMessenger(_instance, _debugUtilsMessenger, null); - } - foreach (var shader in Shaders) { shader.Dispose(); @@ -818,6 +811,8 @@ namespace Ryujinx.Graphics.Vulkan Api.DestroyDevice(_device, null); + _debugMessenger.Dispose(); + // Last step destroy the instance Api.DestroyInstance(_instance, null); } |