Vulkan:VK_PRESENT_MODE_MAILBOX_KHR 有两个图像相当于 VK_PRESENT_MODE_FIFO_KHR?
Vulkan: VK_PRESENT_MODE_MAILBOX_KHR with two images equivalent to VK_PRESENT_MODE_FIFO_KHR?
我写了一些 Vulkan 代码,我想我遇到了一些驱动程序错误(Linux、mesa 13、intel)。驱动程序仅提供 VK_PRESENT_MODE_MAILBOX_KHR
(违反规范)。我的印象是,如果我创建 imageCount 为 2 的交换链,结果行为应该等同于 VK_PRESENT_MODE_FIFO_KHR
。
我的理由是正在呈现一张图片,因此如果提交了另一张图片,交换链只会给我一张图片并表示其可用性(vkAcquireNextImageKHR
带有信号量)。然后它将换出在下一个 vblank 完成时显示的图像。
但是,我获得了非常高的帧率,因此很明显并非所有图像都实际呈现。
目前的引擎是否有可能对内部存储器进行某种 blit 操作并几乎立即释放图像?
结果我错过了一个事实,即您在创建交换链时提供的图像数量是最少的。因此英特尔驱动程序宣传它至少需要 2 个图像,但无论如何都会创建 4 个或更多图像,无论您告诉它什么。好奇怪。
我写了一些 Vulkan 代码,我想我遇到了一些驱动程序错误(Linux、mesa 13、intel)。驱动程序仅提供 VK_PRESENT_MODE_MAILBOX_KHR
(违反规范)。我的印象是,如果我创建 imageCount 为 2 的交换链,结果行为应该等同于 VK_PRESENT_MODE_FIFO_KHR
。
我的理由是正在呈现一张图片,因此如果提交了另一张图片,交换链只会给我一张图片并表示其可用性(vkAcquireNextImageKHR
带有信号量)。然后它将换出在下一个 vblank 完成时显示的图像。
但是,我获得了非常高的帧率,因此很明显并非所有图像都实际呈现。
目前的引擎是否有可能对内部存储器进行某种 blit 操作并几乎立即释放图像?
结果我错过了一个事实,即您在创建交换链时提供的图像数量是最少的。因此英特尔驱动程序宣传它至少需要 2 个图像,但无论如何都会创建 4 个或更多图像,无论您告诉它什么。好奇怪。