public unsafe VulkanDebugMessenger(VulkanInstance instance) : base(instance.VK) { _DebugUtils = instance.GetInstanceExtension <ExtDebugUtils>(); DebugUtilsMessengerCreateInfoEXT createInfo = new DebugUtilsMessengerCreateInfo(StructureType.DebugUtilsMessengerCreateInfoExt, null, 0u, _MESSAGE_SEVERITY_IMPORTANT, DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypeGeneralBitExt | DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypeValidationBitExt | DebugUtilsMessageTypeFlagsEXT.DebugUtilsMessageTypePerformanceBitExt, &DebugCallback ); Result result = _DebugUtils.CreateDebugUtilsMessenger(instance, &createInfo, (AllocationCallbacks *)null !, out _Messenger); if (result is not Result.Success) { throw new VulkanException(result, "Failed to create debug messenger,"); } }
private unsafe void SetupDebugMessenger() { if (!EnableValidationLayers || !_vk.TryGetInstanceExtension(_instance, out _debugUtils)) { return; } var createInfo = new DebugUtilsMessengerCreateInfoEXT(); PopulateDebugMessengerCreateInfo(ref createInfo); fixed(DebugUtilsMessengerEXT *debugMessenger = &_debugMessenger) { Result result = _debugUtils.CreateDebugUtilsMessenger(_instance, &createInfo, null, debugMessenger); if (result != Result.Success) { throw new SystemException("Failed to setup Debug Messenger"); } } }