С декабря 2019 года Igalia разрабатывает новый драйвер Mesa с открытым исходным кодом для Raspberry Pi 4 и, в феврале прошлого года, объявила о реализации демо-версии классического треугольника Vulkan. Через четыре месяца после анонса проекта Vulkan для Raspberry Pi 4 (v3dv) они объединились с Mesa upstream. Это означает, что драйвер v3dv Vulkan Raspberry Pi 4 стал частью официальных драйверов Mesa. Таким образом, он дает несколько преимуществ, например, его легко найти, поскольку он теперь доступен в официальном репозитории Mesa. Теперь об ошибках можно сообщать в официальном трекере ошибок репозитория Mesa.
В июне они прошли более 70 000 тестов из набора Khronos Conformance Test Suite для Vulkan 1.0 и реализовали значительную часть Vulkan 1.0 API. Это не означает, что драйвер готов к производственному использованию, поскольку они реализовали полный API Vulkan 1.0. В настоящее время они проходят более 100 000 тестов в Kronos Conformance Test Suite (CTS) и реализовали полный API Vulkan 1.0. На данный момент компания работает над демо-версией Sascha Willems.
«К сожалению, на сегодняшний день не существует множества приложений и игр Vulkan, подобных этим, которые мы могли бы легко протестировать и отладить на Raspberry Pi, что представляет собой проблему. Одним из способов обойти это ограничение, которое было предложено после моей презентации на XDC, было использование Zink, слоя OpenGL to Vulkan в Mesa. Используя Zink, мы можем взять существующие приложения OpenGL, которые в настоящее время доступны для Raspberry Pi, и использовать их для более тщательного тестирования нашей реализации Vulkan, расширяя наши возможности тестирования, пока мы ждем роста экосистемы Vulkan на Raspberry Pi 4 », – говорят представители Igalia.
Для этой настольной версии OpenGL Zink требовалось несколько дополнительных функций Vulkan 1.0, которых нам не хватало в V3DV, таких как логические операции с альфа-каналами, VK_KHR_main maintenance1. При тестировании этих функций с помощью соответствующих тестов CTS они обнаружили ошибку в альфа-тесте, который в настоящее время находится на рассмотрении.
Краткосрочная цель Igalia – пройти все тесты CTS для достижения соответствия Vulkan 1.0.
Для операций передачи драйвер использует блок текстуры и битовый шейдер. Чтобы обеспечить улучшенную поддержку, команда изучает лучшие варианты, поскольку они не могут чаще использовать блок фильтрации текстур (TFU). Современные графические процессоры TMU содержат блоки адресации текстур (TA) и блоки фильтрации текстур (TF). Блоки адресации текстуры отображают тексели в пиксели и могут выполнять режимы адресации текстуры. Блоки фильтрации текстур дополнительно выполняют аппаратную фильтрацию текстур. Другой план – улучшить производительность в системах Windows (WSI), поскольку из-за больших размеров все еще остаются некоторые проблемы.
Для достижения долгосрочной цели они думают об улучшении повторного использования драйвера OpenGL, поскольку драйверы Vulkan используют части, которые уже используются драйверами GL. Это касается лишь некоторых функций, которые похожи, но не совсем такие же, и над которыми можно работать. Кроме того, в долгосрочной перспективе одна из самых важных вещей – это проводить больше реальных испытаний.
В дальнейшем Igalia планирует использовать Zink для тестирования большего количества приложений и, надеемся, выявления ошибок драйверов, которые помогут им улучшить V3DV.
Источник: Все изображения были взяты с Open Source Summit и Igalia.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.