Еще в 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, свежие обзоры игр и полезные инструкции всегда под рукой!
![]()