VirtIO-GPU Vulkan Driver / Mesa

Теги

Фреймворк virtio является абстрактным слоем над устройствами в гипервизоре, реализованном на принципах паравиртуализации.

Ядро Linux поддерживает различные схемы виртуализации, и что, вероятнее всего, будет поддерживать еще больше схем по мере того, как будут появляться новые подходы и схемы виртуализация. Но поскольку все эти схемы работают поверх Linux, как сделать так, чтобы для виртуализации ввода/вывода использовались возможности ядра? Ответ — использовать фреймворк virtio, в котором предложена работоспособная абстракция гипервизоров и предоставлен обычный набор драйверов, предназначенный для виртуализации ввода/вывода.

Linux является экспериментальной площадкой для гипервизоров. Как уже было описано во многих статьях, посвященных гипервизорам в Linux, в Linux предлагается большое количество вариантов реализации гипервизоров с различными свойствами и преимуществами. К их числу относятся виртуальная машина, базирующаяся на ядре Linux ( Kernel-based Virtual Machine - KVM), lguest и пользовательский режим в Linux. Реализация в Linux различных вариантов гипервизоров, может, в свою очередь, требовать от операционной системы дополнительных накладных расходов и возможностей. К числу таких возможностей относится виртуализация устройств. Во фреймворке virtio вместо того, чтобы применять различные способы эмуляции устройств, используется обычный внешний (front end) интерфейс для эмуляции этих устройств, что позволяет стандартизировать интерфейс и увеличивает повторное использование кода в каждой из платформ.

В рамках проекта "Virglrenderer" были выполнены работы по рендерингу Vulkan и компонентов драйвера VirtIO-GPU Vulkan в Mesa для работы на гостевых компьютерах. Код драйвера VirtIO-GPU Vulkan находился в разработке у Google, а разработчик Chia-I Wu изложил свои планы по его продвижению в Mesa. Производительность драйвера VirtIO-GPU Vulkan, как говорят, достойна и работает в таких играх, как Dota 2, некоторые тесты с Steam Play / Proton, Basemark GPU Vulkan показали хороший результат.

Но прежде чем наслаждаться перспективами поддержки Vulkan для гостевых систем, этот драйвер все еще считается экспериментальным и формат сериализации команд еще не доработан. Код VirtIO-GPU Vulkan также зависит от еще неопубликованного/завершенного кода драйвера ядра VirtIO. Драйвер VirtIO-GPU Vulkan будет помечен как экспериментальный. Также есть проблема с RADV, если использовать этот драйвер на хосте, в то время как большая часть тестирования/разработки до сих пор была с графикой Intel и драйвером ANV на хосте. В любом случае, приятно видеть, что драйвер VirtIO-GPU Vulkan для Mesa наконец-то обретает форму и, скорее всего, вскоре будет обновлен в ближайшем будущем.


Исходный код различных front-end драйверов вы можете найти в поддиректории ./drivers ядра Linux.

 

Последние материалы