2016-11-20 4 views
2

Я написал код Vulkan, и я думаю, что нажимаю некоторые ошибки драйверов (Linux, mesa 13, intel). Водитель предлагает только VK_PRESENT_MODE_MAILBOX_KHR (нарушение спецификации). У меня создалось впечатление, что если я создам свою цепочку подкачки с образцом 2, то полученное поведение должно быть эквивалентно VK_PRESENT_MODE_FIFO_KHR. Мое рассуждение заключается в том, что представлено одно изображение, поэтому цепочка подкачки даст мне только изображение и сигнализирует его доступность (vkAcquireNextImageKHR с семафором), если другой был отправлен. Затем он заменит, какое изображение будет представлено в следующем завершении vblank. Однако я получаю очень высокие частоты кадров, поэтому ясно, что не все изображения представлены на самом деле. Возможно ли, что нынешний движок делает что-то вроде blit во внутренней памяти и снимает изображение практически сразу?Vulkan: VK_PRESENT_MODE_MAILBOX_KHR с двумя изображениями, эквивалентными VK_PRESENT_MODE_FIFO_KHR?

ответ

2

Оказывается, я пропустил тот факт, что количество изображений, которое вы предоставляете при создании swapchain, является минимальным. Поэтому драйвер Intel рекламирует, что ему требуется как минимум 2 изображения, но в любом случае будет создавать 4 или более, независимо от того, что вы ему рассказываете. Как странно.