2016-11-20 35 views
2

我寫了一些Vulkan代碼,我想我碰到了一些驅動程序錯誤(Linux,mesa 13,intel)。該驅動程序只提供VK_PRESENT_MODE_MAILBOX_KHR(違反規範)。我的印象是,如果我創建了imageCount爲2的交換鏈,則產生的行爲應該等於VK_PRESENT_MODE_FIFO_KHR。 我的推理是一個圖像正在呈現,所以交換鏈只會給我一個圖像,並表示其可用性(vkAcquireNextImageKHR與信號量),如果另一個提交。然後它會交換出下一個vblank完成時顯示的圖像。 但是,我得到了非常高的幀率,所以很明顯,並非所有圖像都實際呈現。 目前的引擎是否有可能對內存進行某種處理並立即釋放圖像?Vulkan:VK_PRESENT_MODE_MAILBOX_KHR有兩個圖像相當於VK_PRESENT_MODE_FIFO_KHR?

回答

2

事實證明,我錯過了創建交換鏈時所提供的映像數量最小的事實。因此,英特爾驅動程序宣稱它至少需要2張圖像,但無論如何都會創建4張或更多圖像。多麼奇怪。