Дэйв Эйрли о DirectX в Linux

 Alex    20 мая 2020 : 17:52

Ввиду появления хайповых новостей о поддержке DirectX в Linux, имеет смысл перевести пост разработчика графического стека Linux Дэвида Эйрли:

Этим утром мне попались на глаза две новости:

a) Реализация DirectX в Linux для вычислительных нагрузок

b) Возможность запуска графических приложений для Linux в Windows

Сначала мне показалось, что эти вещи связаны, но впоследствии выяснилось, что по крайней мере, на данный момент, это абсолютно не связанные проекты.

Для начала я хотел бы дать пояснения для людей, делающих на основе данной информации абсолютно сумасшедшие выводы:

DX12 в Linux будет работать исключительно в WSL2. Microsoft не планирует переносить DX12 в ядро Linux, не работающее в окружении Windows. Сотрудники данной компании также не работают над открытием кода драйверов DX12. Они просто перекомпилируют драйверы пространства пользователя для DX12 (от производителей графических чипов) в формат разделяемых библиотек для Linux с целью последующего использования их совместно с драйвером ядра Linux, преобразующим интерфейс ядра Linux в пропиетарный интерфейс Windows. Это никак не поможет в плане использования DX12 в Linux вне WSL2. Это также никак не поможет в плане улучшения работы игр в Linux.

Специалисты Microsoft отправили разработчикам ядра Linux код драйвера ядра для поддержки данной технологии. Этот драйвер будет реализовывать прослойку между интерфейсом D3DKMT ядра Windows и основнным на ioctl интерфейсом ядра Linux. По сути, драйверы будут функционировать на стороне Windows.

После чтения информации о запуске графических приложений для Linux в Windows я прихожу к выводу о том, что соотвествующая презентация вообще не связана с DX12. На данный момент DX12 планируют использовать для вычислительных задач посредством CUDA/DIrectML. Это объясняется тем, что на данный момент не существует способа вывода результатов рендеринга с использованием DX12 от гостевых Linux-приложений на экран. Еще одним проектом компании является сервер интеграции wayland/RDP, который будет соединять Linux-приложения с RDP-клиентом для вывода их окон на экран под управлением Windows, причем интеграция данной технологии с DX12 является сложной задачей, а интеграция всего получившегося кода со стеком Linux - вообще отдельный вопрос.

Надеюсь, теперь все понятно, но данный подход имеет ряд нюансов, связанных с работой дарйверов и взаимодействием с графической экосистемой Linux, что означает, что драйвер в текущем виде не является достаточно качественным в долговременной перспективе и включение его в состав ядра является плохой идеей.

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

Оригинал