Exemple #1
0
        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");
                }
            }
        }