我写了一些Vulkan代码,我认为我遇到了一些驱动程序错误(Linux,mesa 13,intel)。该驱动程序仅提供VK_PRESENT_MODE_MAILBOX_KHR
(规范违规)。我的印象是,如果我创建一个imageCount为2的交换链,结果行为应该等同于VK_PRESENT_MODE_FIFO_KHR
。
我的理由是正在呈现一个图像,因此如果提交了另一个图像,交换链将仅向我提供图像并发出信号(vkAcquireNextImageKHR
信号量)。然后它将换出下一个vblank完成时呈现的图像。
但是,我获得了非常高的帧率,因此很明显并非所有图像都是实际呈现的。
是否有可能当前的引擎对内部存储器进行某种形式的操作并且几乎可以立即释放图像?
答案 0 :(得分:2)
原来我错过了创建交换链时提供的图像数量最少的事实。因此,英特尔驱动程序宣称它至少需要2个图像,但无论如何,无论如何,它都会创建4个或更多图像。多奇怪。