Открытый код компилятора шейдеров DirectX

Еще в 2017 году был представлен первый этап разработки шейдерного компилятора DirectX с открытым исходным кодом, и с тех пор Microsoft продолжает совершенствовать его, улучшая поддержку Linux, добавляя новые функции и устраняя другие недочеты в проекте «DirectXShaderCompiler». Недавно компания выпустила новую версию этого DirectX Shader Compiler, в которой появился еще один новый компонент с открытым исходным кодом.

21.02.2025 компания Microsoft выпустила февральский релиз 2025 года своего DirectX Shader Compiler, содержащий различные исправления и улучшения кода с июля прошлого года в предыдущем релизе.

Примечательно, что в февральском обновлении 2025 года Microsoft выложила в открытый доступ свой DirectX Intermediate Language (DXIL) Validator Hash. Еще в июле прошлого года они изложили планы по реализации DXIL DLL с открытым исходным кодом. Это двухэтапный подход к открытому исходному коду DXIL DLL, а также к его рефакторингу.

Прошлым летом они объявили о планах по открытому исходному коду DXIL Validator Hash. Там они объяснили, что такое DXIL Validator Hash:

«Ограничения, накладываемые на модуль DXIL, обеспечиваются валидатором DXIL Validator, который выступает в роли инструмента бинарного анализа, запускаемого на сгенерированном бинарном файле DXIL и проверяющего его соответствие заданным требованиям DXIL.

Валидатор существует в двух формах: внутренний валидатор, который является полностью открытым исходным кодом и встроен в динамическую библиотеку DXC dxcompiler, и внешний валидатор, который построен из смеси открытого и закрытого исходного кода и распространяется в динамической библиотеке DXIL вместе с релизами DXC для Linux и Windows.

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

Время выполнения DirectX проверяет хэш на каждом шейдере, вычисляя хэш из DXIL и сравнивая вычисленное значение со значением, записанным в бинарном файле шейдера. Эта проверка выполняется для всех шейдеров, если только вы не используете AgilitySDK с включенной экспериментальной функцией D3D12ExperimentalShaderModels (см.: D3D12EnableExperimentalFeatures на learn.microsoft).

Хэш валидатора DXIL не является криптографически стойким и никогда не задумывался как средство безопасности. Единственная цель хэширования валидатора — предоставить пользователям и драйверам уверенность в корректности сгенерированного бинарного файла шейдера и обнаружить недопустимые программные конструкции, которые в настоящее время не могут быть пойманы ранее в компиляторе.»

В качестве первого шага в рамках этой инициативы Microsoft выложила хэш-код DXIL в открытый доступ.

Этот код вошел в февральский релиз 2025 года DirectX Shader Compiler для дальнейшего развития возможностей DXIL. Ранее разработчики за пределами Microsoft уже занимались реверс-инжинирингом алгоритма хэширования, а теперь он официально стал открытым. Это поможет в таких ситуациях, как компиляция шейдеров для DirectX вне хостов Windows или выборочные двоичные файлы для Linux, которые Microsoft предоставляла в прошлом.

Один мальчик подписался на телеграм-канал Игры в Linux и получил бесплатную игру в Steam! Новости из мира игр в Linux, свежие обзоры игр и полезные инструкции всегда под рукой!

Источник
Константин Дьяченко

Автор и основатель сайта Игры в Linux с 2010 года. Пользователь Linux с 2002. Старый злобный сисадмин с 1997.

Если Вам интересна тематика сайта и вы хотите каким-то образом поучаствовать в жизни сайта и его сообществ - напишите мне! Все контакты в разделе о сайте.

Игры в Linux
Добавить комментарий

Поля email и сайт не являются обязательными. Оставляя комментарий вы соглашаетесь с политикой конфиденциальности сайта.