vk.com

Выберите язык

SDL откатывает предпочтение Wayland перед X11 из-за проблем экосистемы

  SDL, широко используемая в кросс-платформенных играх, временно отменяет предпочтение Wayland перед X11 в своей текущей разработке кода SDL 3.0 из-за некоторых проблем с экосистемой Wayland.
 
  Два года назад SDL сделала попытку включить поддержку Wayland по умолчанию, но в результате откатила это изменение из-за ошибок и проблем с экосистемой. В новой разрабатываемой версии SDL 3.0 снова появилось предпочтение Wayland, но недавно был подан запрос на отмену этого предпочтения.
 
  Джошуа Эштон (Joshua Ashton) из команды Linux графики Valve подал запрос, в котором предлагается отменить предпочтение Wayland перед X11. В объяснении запроса Эштон указывает следующее:
  У Wayland существует ряд нерешенных проблем, связанных с блокировкой отображения поверхностей и неработающей реализацией FIFO (vsync), что приводит к снижению производительности, зависящей от работы с графическим процессором.
  Важно отметить, что здесь не рассматривается вопрос "все проблемы должны быть исправлены в Mesa/других драйверах". На самом деле, данные проблемы невозможно решить без дополнительного протокола, а именно fifo-v1.
  В отсутствие данного протокола, после отображения изображения функции vkQueuePresent или glSwapBuffers должны блокироваться для обратного вызова "кадра". Единственной причиной, по которой мы смогли реализовать это в SteamOS, является то, что Gamescope на практике реализует протокол fifo-v1 и мы используем его.
  Другой важной проблемой является блокировка отображения поверхностей при их перекрытии - аналогичная проблеме, указанной выше. Если окно SDL будет перекрыто, функция vkQueuePresent будет блокироваться в режиме FIFO, что обычно не нравится играм. Эта проблема решается с помощью протоколов fifo-v1 и commit-timing-v1.
  Сейчас использование Wayland вместо X11 играм и обычным приложениям не дает никаких преимуществ, а, наоборот, приводит к снижению производительности и непригодности. Поэтому мы должны временно откатить это изменение до выхода протоколов fifo-v1 и commit-timing-v1, а их поддержка будет стабилизирована и будет поддерживаться основными композиторами.
  Запрос на объединение был принят. Подробности в коммите.