В начале этого года была информация о том, что компания Microsoft работает над своим первым расширением для Vulkan, и сегодня оно наконец-то появилось в обновлении спецификации Vulkan 1.3.264.
Это новое — и первое — расширение Microsoft Vulkan называется VK_MSFT_layered_driver и призвано помочь общему загрузчику Vulkan лучше справляться с многослойными драйверами, например, Vulkan отображается поверх аппаратных драйверов Direct3D 12 в Windows.
Как поясняется в документации на расширение VK_MSFT_layered_driver:
«Загрузчик Vulkan способен сортировать физические устройства в соответствии с критериями, зависящими от платформы. Например, в Windows загрузчик использует LUID, чтобы расположить физические устройства в том же порядке, что и DXGI-адаптеры. Однако возможно наличие нескольких драйверов Vulkan, обеспечивающих поддержку одного и того же физического устройства, например, когда один из них является «родной» реализацией, предоставляемой производителем, а другой — «многоуровневой» реализацией поверх другого API. Примерами многоуровневых реализаций могут служить VulkanOn12 (он же Dozen), основанный на D3D12, и MoltenVK, основанный на Metal.
В системе, где физическое устройство имеет два возможных драйвера, порядок сортировки между ними в настоящее время не определен. Идеальный порядок сортировки должен располагать все родные/неслоистые драйверы в порядке сортировки перед слоистыми драйверами, поскольку следует ожидать, что родные драйверы обеспечат большую функциональность и более высокую производительность, так как слоистость неизбежно добавляет накладные расходы. Однако загрузчик не имеет возможности узнать, какому драйверу отдать предпочтение.
Дополнительной проблемой, которая не решается в данной спецификации, является случай, когда для одного физического устройства имеется несколько «родных» драйверов. В этом случае порядок сортировки остается неопределенным, поскольку правильное упорядочивание между драйверами неочевидно».
Еще одно новое расширение, появившееся в сегодняшнем обновлении спецификации Vulkan, — VK_EXT_frame_boundary. Оно призвано помочь инструментам/отладчикам группировать представления очередей по кадрам в нетривиальных сценариях. Над этим расширением работали инженеры из Google, Imagination, Arm, NVIDIA и Huawei.
Более подробная информация о сегодняшнем обновлении спецификации Vulkan 1.3.264 доступна на GitHub.