public static void Setup(IntPtr VkInstance) { if (!EnableDebug) return; var CreateDebugReportCallback = Utils.GetInstanceProcAddress<PFN_vkCreateDebugReportCallbackEXT>(VkInstance); var DestroyDebugReportCallback = Utils.GetInstanceProcAddress<PFN_vkDestroyDebugReportCallbackEXT>(VkInstance); var dbgBreakCallback = Utils.GetInstanceProcAddress<PFN_vkDebugReportMessageEXT>(VkInstance); VkDebugReportCallbackCreateInfoEXT dbgCreateInfo = new VkDebugReportCallbackCreateInfoEXT(); dbgCreateInfo.sType = VkStructureType.VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT; dbgCreateInfo.pNext = null; dbgCreateInfo.pfnCallback = MessageCallback; dbgCreateInfo.pUserData = null; dbgCreateInfo.flags = (uint)VkDebugReportFlagBitsEXT.VK_DEBUG_REPORT_ERROR_BIT_EXT | (uint)VkDebugReportFlagBitsEXT.VK_DEBUG_REPORT_WARNING_BIT_EXT; IntPtr debugReportCallback; CreateDebugReportCallback(VkInstance, ref dbgCreateInfo, IntPtr.Zero, &debugReportCallback).Throw(); }
public static extern VkResult vkCreateDebugReportCallbackEXT(VkInstance instance, ref VkDebugReportCallbackCreateInfoEXT pCreateInfo, ref VkAllocationCallbacks pAllocator, VkDebugReportCallbackEXT* pCallback);