Новая архитектура в Mesa 27.0
В ветку разработки Mesa 27.0-девелопер был мержен новый общий слой Vulkan (Common Vulkan Layer). Эта инфраструктура позволяет драйверам Mesa обходить ошибки в приложениях, которые проявляются не специфично для одного GPU, а затрагивают несколько драйверов одновременно. Инициатором работы выступил Samuel Pitoiset из Valve.
Первые пользователи: RADV и NVK
Изначально слой внедрен в два ключевых драйвера:
- RADV (драйвер для AMD Radeon)
- NVK (драйвер для NVIDIA, открытый)
Оба драйвера ранее использовали собственные методы обхода багов, но теперь они делегируют эту логику единому слою в рантайме Mesa. Это упрощает поддержку и позволяет другим драйверам подключаться по мере необходимости.
Конкретный кейс: Metro Exodus
Первым практическим применением нового слоя стала фиксация бага в игре Metro Exodus. Проблема заключается в том, что игра иногда передает NULL в параметр pWaitSemaphores, что является нарушением спецификации Vulkan. Этот баг был зафиксирован еще в 2023 году, но теперь он корректно обрабатывается общим слоем, предотвращая краши или некорректную работу графики.
Значение для экосистемы
Введение общего слоя знаменует переход от хаотичных фиксов в каждом драйвере к стандартизированному подходу. Это снижает дублирование кода и ускоряет исправление проблем, общих для множества приложений и движков. В будущем к слою смогут подключаться и другие Vulkan-драйверы в составе Mesa.
Источник: Phoronix ↗
