diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs')
| -rw-r--r-- | Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs b/Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs deleted file mode 100644 index 7e39a251..00000000 --- a/Ryujinx.Graphics.Vulkan/VulkanDebugMessenger.cs +++ /dev/null @@ -1,153 +0,0 @@ -using Ryujinx.Common.Configuration; -using Ryujinx.Common.Logging; -using Ryujinx.Common.Utilities; -using Silk.NET.Vulkan; -using Silk.NET.Vulkan.Extensions.EXT; -using System; -using System.Runtime.InteropServices; - -namespace Ryujinx.Graphics.Vulkan -{ - class VulkanDebugMessenger : IDisposable - { - private static string[] _excludedMessages = new string[] - { - // NOTE: Done on purpose right now. - "UNASSIGNED-CoreValidation-Shader-OutputNotConsumed", - // TODO: Figure out if fixable - "VUID-vkCmdDrawIndexed-None-04584", - // TODO: Might be worth looking into making this happy to possibly optimize copies. - "UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout", - // TODO: Fix this, it's causing too much noise right now. - "VUID-VkSubpassDependency-srcSubpass-00867" - }; - - private readonly Vk _api; - private readonly Instance _instance; - private readonly GraphicsDebugLevel _logLevel; - private readonly ExtDebugUtils _debugUtils; - private readonly DebugUtilsMessengerEXT? _debugUtilsMessenger; - private bool _disposed; - - public VulkanDebugMessenger(Vk api, Instance instance, GraphicsDebugLevel logLevel) - { - _api = api; - _instance = instance; - _logLevel = logLevel; - - _api.TryGetInstanceExtension(instance, out _debugUtils); - - Result result = TryInitialize(out _debugUtilsMessenger); - - if (result != Result.Success) - { - Logger.Error?.Print(LogClass.Gpu, $"Vulkan debug messenger initialization failed with error {result}"); - } - } - - private Result TryInitialize(out DebugUtilsMessengerEXT? debugUtilsMessengerHandle) - { - debugUtilsMessengerHandle = null; - - if (_debugUtils != null && _logLevel != GraphicsDebugLevel.None) - { - var messageType = _logLevel switch - { - GraphicsDebugLevel.Error => DebugUtilsMessageTypeFlagsEXT.ValidationBitExt, - GraphicsDebugLevel.Slowdowns => DebugUtilsMessageTypeFlagsEXT.ValidationBitExt | - DebugUtilsMessageTypeFlagsEXT.PerformanceBitExt, - GraphicsDebugLevel.All => DebugUtilsMessageTypeFlagsEXT.GeneralBitExt | - DebugUtilsMessageTypeFlagsEXT.ValidationBitExt | - DebugUtilsMessageTypeFlagsEXT.PerformanceBitExt, - _ => throw new ArgumentException($"Invalid log level \"{_logLevel}\".") - }; - - var messageSeverity = _logLevel switch - { - GraphicsDebugLevel.Error => DebugUtilsMessageSeverityFlagsEXT.ErrorBitExt, - GraphicsDebugLevel.Slowdowns => DebugUtilsMessageSeverityFlagsEXT.ErrorBitExt | - DebugUtilsMessageSeverityFlagsEXT.WarningBitExt, - GraphicsDebugLevel.All => DebugUtilsMessageSeverityFlagsEXT.InfoBitExt | - DebugUtilsMessageSeverityFlagsEXT.WarningBitExt | - DebugUtilsMessageSeverityFlagsEXT.VerboseBitExt | - DebugUtilsMessageSeverityFlagsEXT.ErrorBitExt, - _ => throw new ArgumentException($"Invalid log level \"{_logLevel}\".") - }; - - var debugUtilsMessengerCreateInfo = new DebugUtilsMessengerCreateInfoEXT() - { - SType = StructureType.DebugUtilsMessengerCreateInfoExt, - MessageType = messageType, - MessageSeverity = messageSeverity - }; - - unsafe - { - debugUtilsMessengerCreateInfo.PfnUserCallback = new PfnDebugUtilsMessengerCallbackEXT(UserCallback); - } - - DebugUtilsMessengerEXT messengerHandle = default; - - Result result = _debugUtils.CreateDebugUtilsMessenger(_instance, SpanHelpers.AsReadOnlySpan(ref debugUtilsMessengerCreateInfo), ReadOnlySpan<AllocationCallbacks>.Empty, SpanHelpers.AsSpan(ref messengerHandle)); - - if (result == Result.Success) - { - debugUtilsMessengerHandle = messengerHandle; - } - - return result; - } - - return Result.Success; - } - - private unsafe static uint UserCallback( - DebugUtilsMessageSeverityFlagsEXT messageSeverity, - DebugUtilsMessageTypeFlagsEXT messageTypes, - DebugUtilsMessengerCallbackDataEXT* pCallbackData, - void* pUserData) - { - var msg = Marshal.PtrToStringAnsi((IntPtr)pCallbackData->PMessage); - - foreach (string excludedMessagePart in _excludedMessages) - { - if (msg.Contains(excludedMessagePart)) - { - return 0; - } - } - - if (messageSeverity.HasFlag(DebugUtilsMessageSeverityFlagsEXT.ErrorBitExt)) - { - Logger.Error?.Print(LogClass.Gpu, msg); - } - else if (messageSeverity.HasFlag(DebugUtilsMessageSeverityFlagsEXT.WarningBitExt)) - { - Logger.Warning?.Print(LogClass.Gpu, msg); - } - else if (messageSeverity.HasFlag(DebugUtilsMessageSeverityFlagsEXT.InfoBitExt)) - { - Logger.Info?.Print(LogClass.Gpu, msg); - } - else // if (messageSeverity.HasFlag(DebugUtilsMessageSeverityFlagsEXT.VerboseBitExt)) - { - Logger.Debug?.Print(LogClass.Gpu, msg); - } - - return 0; - } - - public void Dispose() - { - if (!_disposed) - { - if (_debugUtilsMessenger.HasValue) - { - _debugUtils.DestroyDebugUtilsMessenger(_instance, _debugUtilsMessenger.Value, Span<AllocationCallbacks>.Empty); - } - - _disposed = true; - } - } - } -} |
