Что Vulkan swapchain делает с фреймбуфером по умолчанию в оконной системе

#c #linux #graphics #x11 #vulkan

#c #linux #графика #x11 #vulkan

Вопрос:

У меня есть несколько недоразумений по поводу поверхности vulkan и ее связи с цепочкой обмена и оконной системой. Как я понял, VkSurface — это абстракция window, а VkSwapchain — это коллекция буферов фреймов, которую мы можем представить в этом окне. Но, насколько я понимаю, оконная система X11 создает буфер кадров по умолчанию вместе с созданием окна. Итак, что происходит с этим буфером кадров по умолчанию, когда мы создаем цепочку обмена? Включен ли он в цепочку обмена или удален? Или, может быть, swapchain — это оболочка вокруг буферов кадров, которые оконная система уже создала?

Комментарии:

1. X11 сам по себе является спецификацией, способ ее реализации может варьироваться, то же самое относится и к Vulkan. Из-за этого вы можете сказать, как это делается только для определенной комбинации ОС, X11 и реализации Vulkan. Наверняка есть вещи, которые более вероятны, чем другие, но общего ответа на этот вопрос нет.

Ответ №1:

IIRC нет «фреймбуфера по умолчанию». Swapchain просто создает количество запрошенных вами растровых изображений, и с расширением Present X это похоже на то, как Vulkan абстрагирует его. Вы представляете любой из них по своему усмотрению, и X выдаст вам событие, когда изображение становится «бездействующим» и может быть использовано вами снова. Вы можете посмотреть это в исходном коде драйвера mesa.