Проект, за которым все мы пристально следим — NVK, драйвер NVIDIA Vulkan с открытым исходным кодом, разработанный сообществом (не NVIDIA), и похоже, что работа над ним идет довольно успешно. Разработчик Фэйт Экстранд (Faith Ekstrand) написала небольшую статью в блоге Collabora, в которой подробно описала работу, проделанную с момента первоначального вступительного сообщения в октябре прошлого года.
Важные улучшения NVK
- Поддержка графических процессоров Maxwell и Kepler. Кароль Хербст опубликовал запрос на слияние, добавив обработку различных битов настройки состояния, необходимых для шейдеров на старом оборудовании, еще в августе. Однако, несмотря на то, что ветка Кароля существовала некоторое время, она перестала работать, когда я добавил жесткую зависимость MME (Macro Method Expander) для отрисовки и очистки. Поддержка аппаратного обеспечения до Тьюринга была окончательно разблокирована благодаря Мэри и ее работе по включению MME на старом оборудовании. Я также потратил неделю или две в декабре на исправление ошибок в Maxwell, и в настоящее время он не слишком далеко ушел от Turing в плане уровня сдачи CTS.
- Геометрия, тесселяция и обратная связь по преобразованиям. Хотя эти функции не требуются для Vulkan 1.0, они довольно важны для запуска современных игр. Внутренняя часть компилятора codegen уже поддерживает их, так что эта часть была сделана. В ноябре или около того Джордж Оузунудис проделал работу по подключению их через NVK и включению соответствующих функций Vulkan.
- Томас Андерсон реализовал VK_KHR_draw_indirect_count, а также перевернул кучу более мелких расширений.
- Echo немного поиграл с NVK+DXVK и добился успеха в запуске некоторых игр. Это все еще ранние дни и требует некоторых хаков. Однако несколько игр уже работают, и я смог продемонстрировать Hollow Knight и F1 2017 на встрече Collabora в мае.
- Мохамед Ахмед в настоящее время работает над VK_KHR_sampler_ycbcr_conversion в качестве своего проекта стажировки GSoC.
Кроме того, поддерживается еще множество расширений, что означает, что они близки к увеличению поддерживаемой версии Vulkan с 1.0 до потенциально возможной 1.3.
Предстоит еще много работы, так как драйвер еще не прошел тесты соответствия, но вся работа, которая была проделана над драйвером, означает, что по сравнению с прошлым годом было проведено на 60% больше тестов. В настоящее время нет сроков, когда можно ожидать включения NVK непосредственно в Mesa, поскольку он идет вместе с необходимым новым API ядра.
Что касается текущей производительности? Над этим еще предстоит поработать, поскольку большая часть работы направлена на то, чтобы заставить все это работать с несколькими проблемными областями производительности, отмеченными в сообщении в блоге. Также продолжается работа над новым внутренним компилятором для аппаратного обеспечения NVIDIA под кодовым названием NAK или Nvidia Awesome Kompiler.