Состояние поддержки Wayland в проприетарных драйверах NVIDIA

Остин Шафер (Austin Shafer), работающий в компании NVIDIA над драйвером для платформы Linux, опубликовал отчёт с информацией о состоянии поддержки Wayland в проприетарных драйверах NVIDIA, и перечислил области в которых связанные с Wayland возможности пока отстают от X11. Отставание связано как с проблемами в самом драйвере NVIDIA, так и с общими ограничениями протокола Wayland и композитных серверов на его основе. Информация соответствует ветке драйверов NVIDIA 575, находящейся на стадии бета-тестирования.

Возможности, которые пока не планируется поддерживать в драйверах NVIDIA на системах с Wayland и Xwayland из-за ограничений протокола Wayland и композитных серверов:

  • Cтереовывод (формирования стереокартинки с разными буферами для левого и правого глаза), используя GLX, EGL и Vulkan.
  • Режим SLI Mosaic, позволяющий объединить несколько GPU в один логический GPU для создания большого виртуального экрана, состоящего из нескольких дисплеев.
  • Конфигуратор nvidia-settings не позволяет добиться идентичного уровня настроек в разных композитных менеджерах, так как на системах с Wayland отсутствует единый механизм конфигурации экранов.

Некоторые функции не удаётся реализовать из-за невозможности обеспечить их одинаковую поддержку в разных композитных серверах Wayland. Но при этом данные возможности могут быть реализованы в приложениях, используя графический API Vulkan и Vulkan-расширение VK_KHR_display (“Vulkan Direct to Display”), позволяющее напрямую работать с экраном, минуя композитный сервер.
Через Vulkan и прямое взаимодействие оборудованием будет предоставлена возможность использования в приложениях следующих возможностей (добавление поддержки возможно потребует внесения изменений в приложения):

  • Стереовывод (VK_KHR_multiview с отрисовкой в несколько вьюпортов).
  • Режим Vulkan Explicit SLI (через VK_KHR_device_group).
  • Группы фреймбуферов (Swap Group, через VK_NV_present_barrier).
  • Блокировки кадров (Frame Lock) и общие блокировки (Genlock).

Возможности, которые уже находятся в разработке или которые планируется добавить в будущих выпусках драйверов NVIDIA:

  • Выставление по умолчанию параметра “nvidia-drm modeset=1”.
  • Поддержка использования с Wayland дисплейных мультиплексоров (mux), используемых на ноутбуках с двумя GPU (интегрированным и дискретным) для прямого соединения дискретного GPU c встроенным или внешним экраном. В конфигурациях с X-сервером дисплейный мультиплексор может автоматически переключать вывод на экран, когда полноэкранное приложение использует дискретный GPU. В окружениях на базе Wayland данная возможность пока не поддерживается из-за отсутствия поддержки подобного переключения в композитных серверах.
  • Расширенные режимы дисплеев, такие как деформация, смешивание, смещение пикселей и свойства COLOR_ENCODING/COLOR_RANGE. Для использования в композитных серверах данные возможности могут быть реализованы через свойства DRM.
  • Поддержка в nvidia-drm (Direct Rendering Manager) механизма Presentation Timing для синхронизации вывода кадров на экран.
  • Поддержка API VDPAU (Video Decode and Presentation) для задействования в окружениях на базе Wayland механизмов аппаратного ускорения для обработки видео в различных форматах и выноса на сторону GPU таких задач, как пост-обработка, слияние (compositing), отображение и декодирование видео.
  • Поддержка в системах на базе Wayland технологии vGPU, позволяющей использовать виртуальные GPU NVIDIA в системах виртуализации для разделение ресурсов физического GPU NVIDIA.

Возможности, добавленные в драйвер с момента прошлого отчёта:

  • Использование VRR (Variable Refresh Rate) в многомониторных конфигурациях в окружениях с Wayland. Будет добавлено в следующем выпуске драйверов NVIDIA.
  • Выставление по умолчанию параметра “nvidia-drm fbdev=1”, что решит проблемы некорректным выводом при использовании одного экрана драйверами nvidia-drm и simpledrm.
  • Использование с Xwayland буфера вывода на экран (front-buffer) при двойной буферизации.

Release. Ссылка here.