为什么验证层不说我忘记销毁设备或表面?

Why validation layer doesn't say me I forgot to destroy a device or a surface?

我向我的实例添加了 VK_LAYER_LUNARG_standard_validation 个验证层。接下来我创建了一个调试回调和其他 vulkan 对象。对于测试用例,我要清除的唯一对象是实例(因为验证层应该报告实例销毁)。从所有对象中,我的层仅报告 VkDebugReportCallbackEXT:

validation layer: Debug Report callbacks not removed before DestroyInstance

为什么它没有提到 VkSurfaceKHRVkDevice(它们肯定是创建的)。

其中一些 was fixed 在头部,但尚未作为 SDK 发布。

另一件事是 vkDestroyInstance 相关消息只能通过 vkCreateInstancepNext 提供的临时调试报告回调来报告。原因是所有子对象都必须在 vkDestroyInstance 之前销毁,包括您的调试回调,因此它在 vkDestroyInstance 期间不可用。

因此,也将您的 VkDebugReportCallbackCreateInfoEXT 链接到 vkCreateInstancepNext 链。