Gallium Nine
Gallium Nine (также Галлий Девять, d3dadapter9, тот самый нативный D3D9) — это такая штука из мира Линукса, которая пыталась сделать запуск старых игор под DirectX 9 менее болезненным. По сути, это стейт-трекер Direct3D 9 для Gallium3D, компонента графического стека Mesa. Задумка была в том, чтобы оффтопик-игры, использующие D3D9, могли шуршать напрямую через Mesa драйвера, минуя тормозную трансляцию в OpenGL, которую по дефолту делал Wine.
Предыстория эпичного костыля[править]
Анонимус, возжелавший погонять в какой-нибудь Обливион или Сталкер Зов Чернобыля под своим любимым пингвином, неизбежно сталкивался с Wine. А Wine, хоть и могуч, в те времена (да и сейчас не всегда блещет) транслировал вызовы Direct3D 9 в OpenGL. На бумаге гладко, а на деле — просадки FPS, артефакты, фризы и прочие радости жизни, особенно если у тебя не топовый Intel i7 последнего поколения. Производительность могла отличаться от нативной венды в разы, вызывая закономерное жжение чуть ниже спины и вечные споры на тему «Линукс для игр не готов».
И вот, примерно декаду назад, на сцену выкатился Gallium Nine. Идея была в том, чтобы использовать архитектуру Gallium3D в Mesa, которая позволяет относительно легко добавлять поддержку разных графических API. «А давайте, — сказали сумрачные гении, — запилим поддержку D3D9 прямо в Mesa!». Сказано — сделано.
Wine (обычно специальной сборки, вроде `wine-staging`, или через отдельный пакет `gallium-nine-standalone`) при наличии этой штуки и подходящего драйвера (открытые дрова для AMD и Intel, использующие Gallium3D) мог напрямую передавать команды D3D9 в Mesa, а та — уже видяхе. Путь рендеринга сокращался: вместо `D3D9 -> WineD3D (OpenGL) -> Mesa -> GPU` получалось `D3D9 -> Gallium Nine (Mesa) -> GPU`.
Лулзы и профит[править]
В теории и иногда на практике это давало заметный профит. Старые D3D9-игрушки, которые еле ворочались через стандартный WineD3D, могли ВНЕЗАПНО ожить и показать вполне играбельный FPS, иногда даже приближаясь к нативным показателям, а то и (в редких случаях, на слабом железе) превосходя их. Некоторые тесты показывали значительный прирост по сравнению с WineD3D, хотя разница с более поздним DXVK (транслятор D3D9/10/11 в Vulkan) была уже не такой драматичной, часто измеряясь единицами процентов, но иногда G9 всё же вырывался вперед. Особенно хорошо Gallium Nine мог себя показать на встройках Intel или старых картах AMD Radeon, где Vulkan либо не работал, либо работал кое-как. Еще одним плюсом называли меньшую склонность к статтерингу от компиляции шейдеров по сравнению с DXVK и меньшее потребление CPU и RAM.
Грусть, печаль, тлен[править]
Как и любой костыль, Gallium Nine не был лишён недостатков:
- Только для Mesa/Gallium3D: Владельцы карт Nvidia с их проприетарным блобом курили в сторонке. Технология работала только с открытыми драйверами AMD (radeon, radeonsi) и Intel.
- Только D3D9: В отличие от DXVK, который со временем научился переваривать и D3D10/11, Gallium Nine был заточен исключительно под старый D3D9.
Закат и утилизация[править]
Эпоха доминирования Gallium Nine закончилась с приходом Vulkan и, главное, DXVK. DXVK, транслирующий D3D9/10/11 в Vulkan, показал сравнимую, а часто и лучшую производительность, при этом работая на большем спектре железа (включая Nvidia) и поддерживая более новые версии DirectX. Интеграция DXVK в Proton от Valve сделала его стандартом де-факто для игр под Линуксом через Steam.
Gallium Nine стал терять актуальность. Разработчики забили, майнтейнеров почти не осталось, и технология перестала активно развиваться. В августе 2024 года было объявлено о планах по удалению Gallium Nine из Mesa, а в апреле 2025 года он был официально помечен как deprecated (устаревший) в Mesa 25.1, с планами полного удаления в Mesa 25.2 (третий квартал 2025 года). Причинами названы неактивная разработка, малое число пользователей и тот факт, что «DXVK просто работает» лучше для большинства сценариев и на большем количестве оборудования.
Сегодня Gallium Nine — это уже почти музейный экспонат. Интересный кусок истории Линукс-гейминга, важный костыль своей эпохи, но в 2025 году практически не имеющий практического применения для конечного пользователя, за исключением, возможно, каких-то очень специфичных сценариев на очень старом или маломощном ARM железе (где он, по некоторым данным, мог быть эффективнее DXVK). Но и этот последний оплот пал под натиском Vulkan и DXVK. R.I.P.