SDL 3 будет предпочитать Wayland вместо X11, если доступны определенные протоколы

О выходе предварительной версии SDL3 и обсуждениях вокруг перехода на Wayland по умолчанию в новой версии библиотек SDL3.

SDL3 — это кроссплатформенная библиотека для разработки, предназначенная для обеспечения низкоуровневого доступа к аудио, клавиатуре, мыши, джойстику и графическому оборудованию на различных платформах, таких как Linux, macOS, Windows, iOS и Android.

Предварительный релиз SDL 3 с HDR и Vulkan для API 2D-рендеринга

Для разработчиков игр наступают веселые времена, поскольку очень популярный SDL (Simple DirectMedia Layer) имеет предварительный релиз грядущего SDL 3, который уже доступен для тестирования.

24 марта, Сэм Лантинга из Valve анонсировал предварительную версию.

Среди основных изменений в SDL 3 можно выделить следующие:

  • API был значительно переработан, чтобы стать проще в использовании и более последовательным;
  • В API 2D-рендеринга появилась поддержка более продвинутых цветовых пространств и HDR-рендеринга;
  • API 2D-рендеринга теперь имеет бэкэнд Vulkan;
  • В test/testffmpeg.c добавлен пример аппаратного ускорения воспроизведения видео с помощью ffmpeg;
  • API фигурных окон был заменен на прозрачные окна;
  • В SDL_time.h добавлены функции определения времени и даты;
  • Поддержка захвата видео с веб-камеры добавлена в SDL_camera.h;
  • Поддержка работы с ручками и планшетами добавлена в SDL_pen.h;
  • Поддержка диалогов открытия и сохранения файлов добавлена в SDL_dialog.h;
  • Кроссплатформенные функции для работы с файлами и каталогами доступны в SDL_filesystem.h;
  • В SDL_storage.h добавлена кроссплатформенная абстракция для работы с пользовательскими и игровыми данными;
  • Обработка main() перенесена в заголовочную библиотеку, и теперь доступен дополнительный поток программ на основе обратных вызовов;
  • Поддержка простых свойств объектов была добавлена в SDL_properties.h. Эти свойства доступны для многих объектов SDL и могут быть использованы для более продвинутой функциональности.

Кроме того, в связи с различными проблемами, требующими решения, похоже, меняется ситуация: по умолчанию используется X11, а не Wayland.

Проблемы перехода на Wayland

Разработчики SDL (Simple DirectMedia Layer) возобновили дискуссию о том, следует ли настраивать Wayland как предпочтительный по сравнению с X11, и был сделан PR для возврата фикса, который устанавливал Wayland как предпочтительный из-за проблем с потребностью в протоколах fifo-v1 и commit-timing-v1.

Цитируем описание проблемы:

Wayland имеет огромное количество нерешённых проблем, связанных с блокировкой представления подвеса поверхности и фундаментальной поломкой реализации FIFO (vsync), приводящей к снижению производительности на GPU.

Это не значит, что «мы должны исправить FIFO в Mesa/других драйверах», а скорее то, что это совершенно невозможно исправить без дополнительного протокола, в данном случае fifo-v11.

Без этого протокола vkQueuePresent или glSwapBuffers должны задерживаться для обратного вызова ‘frame’ после представления изображения. Единственная причина, по которой мы можем обойтись без этого в SteamOS, заключается в том, что Gamescope реализует то, что по сути является fifo-v1, и мы используем его там.

Другая сторона — подвеска поверхности — очень похожа на вышеописанную проблему с использованием обратного вызова кадра и блокировкой. Если окно SDL заслонено, vkQueuePresent будет блокироваться в FIFO, что обычно не нравится играм. Это решается комбинацией fifo-v1 и commit-timing-v1.

Нет никаких преимуществ для игр и обычных приложений, предпочитающих Wayland вместо X11 — только серьезные регрессии производительности и непригодности для использования в данный момент.
Таким образом, мы должны отменить это изменение до тех пор, пока fifo-v1 и commit-timing-v1 не будут выпущены и, по крайней мере, в стабильном релизе для основных композиторов.

В то время как SDL в течение последних двух лет пыталась внедрить Wayland по умолчанию и была вынуждена вернуться к этой идее из-за ряда проблем со сторонним ПО (драйверы NVIDIA, переполнение событий в libwayland, libdecor не справляется с ошибками загрузки плагинов, оверлей Steam не работает с Wayland и т. д.).

Сейчас ситуация выглядит многообещающе, поскольку похоже, что нерешенные проблемы с Wayland решаются, и разработчики знают о них и делают все возможное для их решения. PR, который бы снова вернул поведение Wayland над X11, был закрыт, а слияние отменено с предложением нового решения (и новой проблемы). Цитаты Сэма Лантинга:

Спасибо всем за отзывы!

Похоже, что разработчики Wayland знают о проблемах и делают успехи в их решении. Я оставлю Wayland по умолчанию, пока они этим занимаются, чтобы людям было проще тестировать и предоставлять им обратную связь. Мы переоценим это по мере приближения к полному релизу».

@Joshua-Ashton, вы можете создать отдельные проблемы, которые влияют на это, и создать список задач в исходном отчете запроса на слияние, чтобы отслеживать их?

Я собираюсь закрыть этот разговор, чтобы мы могли сосредоточиться на разработке.

И еще:

Поскольку проблемы с производительностью, мотивирующие этот PR, решаются сочетанием fifo-v1 и commit-timing-v1, давайте проверим наличие этих протоколов перед использованием Wayland по умолчанию.

@Joshua-Ashton, я пойду и закрою этот PR. Можете ли вы открыть новый, чтобы реализовать это?

Для тех, кто следит за развитием событий, это изменение гарантирует, что высокопроизводительные приложения Vulkan, такие как игры, будут иметь наилучшие возможности по умолчанию. Надеемся, что эти протоколы появятся в ближайшее время, но в любом случае пользователь имеет окончательный контроль над используемым бэкендом через переменную окружения SDL_VIDEO_DRIVER.

Хорошая новость заключается в том, что был реализован механизм, и вместо того, чтобы отказываться от Wayland по умолчанию во всех ситуациях, это будет происходить только после проверки протоколов fifo-v1 и commit-timing-v1.

Будем следить за этой темой вместе.

Один мальчик подписался на телеграм-канал Игры в Linux и получил бесплатную игру в Steam! Новости из мира игр в Linux, свежие обзоры игр и полезные инструкции всегда под рукой!

Источник
Константин Дьяченко

Автор и основатель сайта Игры в Linux с 2010 года. Пользователь Linux с 2002. Старый злобный сисадмин с 1997.

Если Вам интересна тематика сайта и вы хотите каким-то образом поучаствовать в жизни сайта и его сообществ - напишите мне! Все контакты в разделе о сайте.

Игры в Linux
Добавить комментарий

Поля email и сайт не являются обязательными. Оставляя комментарий вы соглашаетесь с политикой конфиденциальности сайта.