DirectX otrzymuje oficjalny kompilator dla Linuksa
Microsoft wydał na GitHubie wersję 1.7.2212 oficjalnego kompilatora HLSL, pozwalającego budować shadery DirectX. Wśród opublikowanych plików znajduje się także binarna wersja dla Linuksa. To pierwsze takie wydanie, ale sam program nie jest nowy.
19.12.2022 07:11
Kompilator shaderów dla DirectX wydano na licencji open source (LLVM) już na początku 2017 roku, a więc niemal sześć lat temu. Nieco ponad rok później kodem zajął się... Google, który opracował wersję DXC kompilującą się na Linuksie (niewątpliwie pomogło użycie LLVM zamiast MSVC). Pingwinowy wariant kompilatora DirectX istnieje zatem już od dobrych czterech lat. Zmiany pozwalające na zbudowanie takowego znajdują się od dawna w oficjalnym repozytorium DirectXShaderCompiler.
Microsoft nigdy jednak nie dodawał do oficjalnych wydań skompilowanej wersji dla Linuksa. Zawsze był to tylko kod źródłowy, skompilowany DXC.EXE z bibliotekami oraz paczka PDB. Od teraz wydawany jest także bin\x64\dxc, co oznacza, że Microsoft uznaje kompilację shaderów DX na Linuksie za oficjalną ścieżkę.
Zobacz także
...i co z tego?
I w zasadzie oznacza to niewiele więcej. Istnieje oficjalna możliwość kompilowania struktur opisanych w wysokopoziomowym języku shaderów HLSL do binarnej postaci DXIL. Krótko mówiąc, da się zbudować z kodu DirectX postać którą umieją "zjeść" sterowniki karty graficznej za pomocą narzędzi wprost z Redmond. Dotychczas trzeba je było składać samodzielnie.
Sama ewolucja DirectX w tę stronę jest dość interesująca. Wszystko wskazuje na to, że migracja ze starego bytecode'u DirectX, działającego wyłącznie w Windows, do przenośnej i nowoczesnej postaci stosującej LLVM na wielu platformach, była zamysłem od samego początku prac nad DirectX 12. Ma to pewne istotne implikacje. Wszak kompilator HLSL to tylko wycinek DirectX, zapewnienie interoperacyjności na tak małym poletku wydaje się mieć mało korzyści, czyż nie?
Przecież obecność kompilatora na Linuksie nie oznacza, że w systemie tym zaczyna działać Direct3D 12. Mogą na niej jednak skorzystać dwa spore i ważne projekty: Mesa D3D12 oraz... WSL2. Jeżeli taki był zamysł Microsoftu od samego początku, to znaczy że firma podzieliła się z nami bardzo małą częścią planów jakie miała od początku dla Windows Subsystem for Linux.
Przyszłość to nie Windows?
Ponieważ DXC jest dziś włączony do zestawu SDK dla Windows (!), stosowanie przenośnych narzędzi LLVM i DXIL stanowi plan na przyszłość DirectX 12 i następców. To ciekawe. Dawny Microsoft uznałby wprowadzanie wieloplatformowości w DirectX za sabotaż. Czy firma chce rozszerzyć dostępność całej platformy na inne systemy? W jakim celu?
Może nowy Xbox ma być czymś zupełnie odmiennym od dotychczasowych? Zresztą, nie musi przecież chodzić tylko o gry. Karmienie karty graficznej zbudowanymi shaderami może służyć między innymi także do obliczeń naukowo technicznych. Nieprędko przyjdzie się nam o tym przekonać, ale już dziś wiemy, że przyszłość DirectX to nie tylko Windows.
Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl