使用验证层将错误打印到标准输出,但没有回调

Errors printed to stdout with validation layers, but no callback

我已经关注 this tutorial and when setting up validation layers the author says we have to setup debug callbacks 所以可以在标准输出中打印日志。

我没有设置它们,但应用程序正在我的终端中打印各种错误消息:Swapchain(ERROR): object 0x1cdd2d0 type: 1 location: 292 msgCode: 3: VkDestroyInstance() called before all of its associated VkSurfaceKHRs were destroyed 例如,当省略对 vkDestroySurfaceKHR.

的调用时

我正在使用 VK_LAYER_LUNARG_standard_validation,没有特定的扩展名(仅 VK_KHR_surfaceVK_KHR_xcb_surface)。

这是预期的行为吗?

验证层的默认日志记录行为在 6 月 1 日左右改回了原样,因为人们希望将消息发送到标准输出,而无需提供回调或在应用程序目录中放置 vk_layer_settings.txt。教程网站在这方面可能已过时。

如果这是不需要的行为,更改它的最简单方法是获取 vk_layer_settings.txt(在 SDK 中提供)的副本并对其进行编辑以将行为更改为您想要的行为,然后将其放入应用程序启动时的当前目录是什么。

作为替代方案,您也可以编写调试回调。

有关详细信息,请参阅 LunarXchange website 上的图层文档。