DLSS в открытом драйвере NVK: почему эта новость гораздо интереснее, чем кажется на первый взгляд.
Есть новости, которые живут один день. Их обсуждают, делают пару репостов и благополучно забывают. А есть новости, которые выглядят небольшими техническими заметками, но на самом деле оказываются симптомом гораздо более крупных процессов внутри индустрии. История с экспериментальной поддержкой DLSS в открытом Vulkan-драйвере NVK относится именно ко второй категории.
Когда в заголовках начали появляться формулировки вроде «NVK получил поддержку DLSS», многие восприняли это буквально. Логика понятна: есть открытый драйвер для видеокарт NVIDIA под Linux, в него добавили DLSS, значит теперь пользователи получают все преимущества технологии без необходимости использовать официальный стек компании. Звучит красиво. Почти революционно.
Проблема лишь в том, что реальность значительно сложнее и, если честно, интереснее.
Меня всегда немного раздражает, когда подобные события описывают максимально упрощённо. Потому что за одной строкой новости скрывается довольно необычная инженерная история, которая затрагивает не только Linux, Vulkan или DLSS. Она показывает, как сегодня взаимодействуют открытые и закрытые технологии в индустрии, где идеологические границы постепенно начинают размываться.
И это уже намного важнее очередного списка поддерживаемых игр.
История, которая ещё несколько лет назад выглядела бы невозможной
Чтобы понять значимость происходящего, нужно вспомнить, насколько разными были миры Mesa и NVIDIA ещё относительно недавно.
Сообщество Mesa десятилетиями строило открытую графическую инфраструктуру. Разработчики создавали драйверы, публиковали исходный код, документировали архитектурные решения, обсуждали патчи публично. Всё происходило по правилам открытого программного обеспечения.
NVIDIA существовала практически в противоположной философии.
Компания традиционно делала ставку на закрытые драйверы, внутренние технологии и собственную экосистему. CUDA, NGX, DLSS — всё это создавалось как часть контролируемой среды, где ключевые компоненты оставались под полным контролем производителя.
Поэтому сама идея того, что открытый драйвер Mesa каким-то образом сможет взаимодействовать с DLSS, ещё несколько лет назад выглядела бы довольно странно.
Не невозможной технически. Именно странно.
Потому что проблема никогда не сводилась исключительно к программированию. Она была связана с тем, что две экосистемы развивались независимо друг от друга и преследовали совершенно разные цели.
Сегодня ситуация изменилась.
Не радикально. Но достаточно заметно.
Что именно произошло в NVK
Если убрать громкие формулировки и посмотреть на реальные изменения, окажется, что разработчики не добавили в NVK собственную реализацию DLSS.
Это важнейший момент.
Никакого открытого аналога DLSS не появилось. Никто не декомпилировал алгоритмы NVIDIA. Никто не переписал нейросетевые модели. Никто не создал независимый вариант NGX.
Вместо этого была реализована поддержка механизма, который позволяет использовать уже существующие закрытые компоненты NVIDIA.
Здесь на сцену выходит расширение Vulkan под названием VK_NVX_binary_import. Обычно его упоминают исключительно в технической документации, и большинство пользователей никогда о нём не слышало. Между тем именно вокруг него построена вся история.
Грубо говоря, расширение позволяет импортировать готовые бинарные CUDA-модули. То есть приложение может передать драйверу уже скомпилированный машинный код для GPU и попросить его выполнить.
Это принципиально отличается от традиционной модели работы графических драйверов.
В обычной ситуации драйвер получает шейдеры или промежуточное представление программы, после чего самостоятельно занимается компиляцией под конкретное железо. Здесь же ему буквально говорят: ничего не анализируй, ничего не пересобирай, просто выполни этот бинарный блок.
Именно такая возможность открывает путь к запуску компонентов DLSS.
Не реализации DLSS.
Запуску.
Разница кажется небольшой только на первый взгляд.
Почему слова имеют значение
Когда в новостях пишут «драйвер получил поддержку DLSS», создаётся впечатление завершённой интеграции. У пользователя возникает вполне логичное ожидание: технология работает примерно так же, как на официальном драйвере NVIDIA.
Но происходящее в NVK больше напоминает ситуацию, когда вам удалось подобрать ключ к закрытому помещению, а не построить его самостоятельно.
DLSS остаётся проприетарной технологией.
Его основные вычислительные компоненты по-прежнему принадлежат NVIDIA.
Алгоритмы остаются закрытыми.
Модели остаются закрытыми.
NGX остаётся закрытым.
Открытый драйвер просто получает возможность взаимодействовать с уже существующими бинарными блоками.
Мне кажется показательным, что разработчики спрятали функциональность за переменной окружения NVK_EXPERIMENTAL_DLSS. Такие решения редко принимаются случайно.
Когда инженер оставляет функцию выключенной по умолчанию, он обычно хочет сказать очень простую вещь:
«Да, это работает. Иногда. Но мы пока не готовы обещать вам стабильность».
В техническом мире подобная честность встречается не так часто, как хотелось бы.
Самый интересный вопрос: зачем это вообще понадобилось
Вот здесь начинается действительно любопытная часть истории.
Многие рассматривают NVK исключительно как альтернативный драйвер для Linux. Но если посмотреть на тенденции последних лет, становится очевидно, что проект постепенно превращается в важный элемент экосистемы Proton и Steam Play.
А это уже меняет контекст.
Игры, выходящие сегодня на ПК, всё чаще рассчитывают на наличие технологий вроде DLSS. Иногда они используются как дополнительная опция. Иногда становятся практически обязательной частью производительности проекта.
Разработчики движков ориентируются на реальность рынка, а не на идеологические предпочтения сообщества открытого ПО.
Если DLSS есть у миллионов пользователей, его начинают учитывать при проектировании графических систем.
Поэтому NVK оказывается в довольно необычной ситуации.
С одной стороны, это открытый драйвер.
С другой — он должен обеспечивать совместимость с экосистемой, внутри которой закрытые технологии уже давно стали частью инфраструктуры.
Получается своеобразный парадокс. Чем успешнее становится Linux как игровая платформа, тем чаще ему приходится взаимодействовать с проприетарными решениями.
Иногда очень тесно.
Где заканчивается инженерия и начинается компромисс
Мне кажется, именно здесь проходит главный философский нерв всей истории.
Долгое время сторонники открытого программного обеспечения исходили из идеи, что любые важные технологии рано или поздно получат открытые аналоги. Эта логика отлично работала во многих областях.
OpenGL получил Mesa.
DirectX получил DXVK и VKD3D.
Множество закрытых инструментов обзавелись свободными альтернативами.
Но история с современными ИИ-алгоритмами масштабирования оказывается гораздо сложнее.
DLSS — это уже не просто набор математических формул. Это результат огромных инвестиций в обучение моделей, инфраструктуру, внутренние инструменты и специализированные аппаратные возможности.
Повторить всё это силами сообщества крайне сложно.
Поэтому вместо стратегии полной замены начинает появляться другая стратегия — интеграция.
Не копировать.
Не переписывать.
Научиться сосуществовать.
И вот тут, признаюсь, у меня двойственные ощущения.
С практической точки зрения подход выглядит разумным. Пользователи получают совместимость. Игры запускаются. Производительность растёт.
С идеологической точки зрения всё становится менее однозначным.
Чем больше открытый стек зависит от закрытых бинарников, тем сложнее говорить о полной независимости.
Почему до полноценной поддержки ещё очень далеко
Отдельно стоит сказать о том, как некоторые медиа подали эту историю. Складывалось впечатление, будто NVK уже превратился в полноценную замену официального драйвера NVIDIA для современных игровых сценариев.
Это откровенно преждевременно.
Экспериментальная поддержка и промышленная готовность — совершенно разные вещи.
На текущем этапе известно о проблемах совместимости. Есть игры, в которых наблюдаются визуальные артефакты. Есть проекты, где поведение отличается от ожидаемого. Есть версии DLSS, которые требуют дополнительной доработки.
Собственно, сами разработчики никогда этого не скрывали.
Именно поэтому в инженерной среде реакция оказалась заметно спокойнее, чем в некоторых новостных публикациях. Люди, которые работают с драйверами, прекрасно понимают, сколько времени проходит между фразой «получилось запустить» и фразой «можно рекомендовать всем пользователям».
Иногда годы.
Иногда больше.
Почему эта история всё равно очень важна
При всех ограничениях происходящее нельзя назвать незначительным экспериментом.
Наоборот.
Я бы сказал, что перед нами один из самых любопытных эпизодов в развитии Linux-гейминга за последние годы.
Не потому, что появился ещё один способ включить DLSS.
И даже не потому, что открытый драйвер получил новую функцию.
Интересно другое.
Впервые становится отчётливо видно, как меняется сама модель взаимодействия между открытыми и закрытыми технологиями. Раньше они существовали параллельно. Иногда конкурировали. Иногда игнорировали друг друга.
Теперь они начинают пересекаться внутри одной программной архитектуры.
Причём не через официальные партнёрские программы, не через громкие анонсы компаний и не через маркетинговые презентации.
Через работу нескольких инженеров, которые пытаются заставить сложные системы разговаривать друг с другом.
В каком-то смысле именно такие истории и двигают индустрию вперёд. Не рекламные ролики, не красивые лозунги и не обещания со сцены.
Пара десятков патчей.
Несколько месяцев экспериментов.
И очень упрямое желание проверить, получится ли сделать то, что ещё вчера казалось сомнительной затеей.
С DLSS в NVK именно такая история и происходит. Она ещё не закончилась. Возможно, впереди будут серьёзные доработки, откаты, новые ограничения и неожиданные проблемы. Это нормальный путь для любого сложного проекта.
Но уже сейчас можно сказать одну вещь: новость оказалась значительно глубже, чем выглядела в первых заголовках. И дело здесь вовсе не в самом DLSS.