reckfellENGINE

Wayland и X11: выбор и диагностика

Точные настройки и CLI, fallback, фактический бэкенд, HDR и libdecor.

На этой странице

Display server отвечает за окна и ввод. Renderer отвечает за построение изображения, а rendering driver — за графический API. Например, wayland, forward_plus и vulkan обозначают три разных выбора.

Xwayland позволяет X11-приложению работать внутри Wayland-сеанса. Поэтому Wayland-сеанс не доказывает, что игра использует нативный Wayland-бэкенд. Механизм описан в официальной документации Xwayland.

Настройка проекта и редактора

В Project Settings включите Advanced Settings и задайте display/display_server/driver.linuxbsd:

  • default — стандартный порядок бэкендов данной сборки;
  • x11 — запрос X11;
  • wayland — запрос Wayland;
  • headless — работа без графического окна, не тест Wayland/X11.

В текущих исходниках Linux регистрирует X11 раньше Wayland, если включены оба. Не считайте порядок обещанием для любой пользовательской сборки: бэкенд может быть исключён при компиляции. Перезапустите приложение и проверьте фактический выбор.

Для самого редактора есть отдельная настройка Editor Settings → Run → Platforms → LinuxBSD → Prefer Wayland (run/platforms/linuxbsd/prefer_wayland), по умолчанию false. Она требует перезапуска и учитывается при наличии WAYLAND_DISPLAY. Это не переименование графического драйвера Vulkan и не настройка HDR.

Временный выбор через CLI

Выполняйте в Linux из папки экспортированной игры. Сначала проверьте доступные варианты в справке именно этого исполняемого файла:

Командная строка
./MyGame.x86_64 --help
./MyGame.x86_64 --display-driver wayland
./MyGame.x86_64 --display-driver x11

Последние две команды — отдельные запуски для сравнения. Правильное имя параметра — --display-driver. --display-server в текущем парсере отсутствует. Не путайте его с --rendering-driver, выбирающим графический API.

Если указанного CLI-бэкенда нет в сборке, парсер сообщает Unknown display driver и прекращает запуск: fallback на этой стадии не происходит. Если бэкенд зарегистрирован, но не смог инициализироваться, движок пробует другие зарегистрированные оконные бэкенды. Такой fallback не гарантирован: другой бэкенд также может отсутствовать или не подключиться. Автоматическая попытка fallback не выбирает headless вместо оконного режима.

Узнать фактический бэкенд

Сохраните класс в RuntimeDisplayInfo.cs. Из C#-скрипта внутри дерева вызовите ReckfellApi.Print(RuntimeDisplayInfo.Describe());:

C#
using Reckfell;

public static class RuntimeDisplayInfo
{
    public static string Describe() =>
        $"display={DisplayServer.GetName()}; " +
        $"renderer={RenderingServer.GetCurrentRenderingMethod()}; " +
        $"driver={RenderingServer.GetCurrentRenderingDriverName()}";
}

По текущим исходникам DisplayServer.GetName() возвращает Wayland или X11 для соответствующего Linux-бэкенда; это имена с заглавными буквами, в отличие от CLI-значений. Сравнивайте фактический результат и сообщение о fallback, а не только настройку проекта. Проверенный headless-запуск этого примера в Windows возвращает display=headless; это не подтверждение работы Linux-бэкенда.

HDR и ограничения окон

В текущем Wayland-бэкенде HDR-вывод требует поддержки renderer, графического драйвера, формата поверхности и подходящего диапазона яркости окна. X11-бэкенд не предоставляет этот HDR-путь, включая запуск X11-приложения через Xwayland. wayland само по себе не гарантирует HDR: проверяйте состояние конкретного окна по руководству HDR.

Текущая реализация Wayland не выполняет произвольный window_set_position для обычного top-level окна. Не рассчитывайте, что логика размещения окон X11 будет работать без изменений. Проверяйте позиционирование, несколько экранов, масштаб, ввод и дополнительные окна на целевом compositor; не пытайтесь исправить ограничения оконного протокола сменой PCK.

Временно исключить libdecor из диагностики

Если проблема связана с рамкой или заголовком Wayland-окна и сборка использует libdecor, можно проверить отдельный запуск:

Командная строка
RECKFELL_WAYLAND_DISABLE_LIBDECOR=1 ./MyGame.x86_64 --display-driver wayland

Префикс задаёт переменную только этому процессу. Он не переключает Wayland на X11 и не чинит все ошибки интерфейса; клиентские декорации могут исчезнуть. Включите verbose-лог при необходимости увидеть, пропущена ли проверка libdecor. Для обычного запуска уберите этот префикс.

Диагностика

СимптомПроверка
Unknown display driverСписок в --help этой сборки, имя --display-driver и включённые бэкенды.
После запроса Wayland используется X11Лог инициализации/fallback и фактический DisplayServer.GetName().
Оба оконных бэкенда не запускаютсяДоступность сеанса и сокетов для процесса, состав сборки и ошибки графического драйвера. Headless — отдельный режим.
Не работает HDRНативный Wayland, renderer/поверхность/дисплей и состояние окна; сеанс Wayland недостаточен.
Не меняется позиция окнаОграничение текущего top-level Wayland API; не результат неправильной архитектуры экспорта.

Справка CLI и C#-пример проверены установленным Windows Runtime. Выбор Linux-бэкенда, fallback, HDR, libdecor и оконные ограничения сверены с исходниками; Linux-сеанс, команды shell и реальная работа окон этим прогоном не проверены. Для состава пакета см. экспорт для Linux.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.