LINUX.ORG.RU

Fedora 25, GNOME 3, Wayland, портирование игры Gish на Android OS

 , , ,


1

2

Решил оценить готовность дистрибутива Fedora 25 Workstation для повседневного рабочего использования. А что может дать более объективную оценку, чем выполнение какой-нибудь интересной работы в этом окружении?

В качестве такой задачи я выбрал портирование компьютерной игры Gish на Android OS. Недавно я вспомнил про этот оригинальный 2D-платформер и захотел поиграть в него на своём Android-смартфоне. Игра была выпущена в далёком 2004 году, а после попала в самый первый сборник инди-игр Humble Indie Bundle, который собрал более одного миллиона долларов. В знак признательности поддержавшему их сообществу, разработчик игры Cryptic Sea объявил о том, что исходный код Gish'а будет открыт и выпущен под лицензией GNU GPL v2.0, на LOR'е даже писали об этом событии.

Скачав исходники игры, я открыл их в Qt Creator'е [Скриншот] и начал переносить платформер с библиотеки SDL на SDL2. Потом я импортировал проект в Android Studio и продолжил работу уже там. В целом на портирование я отводил по 2-3 часа каждый день после работы. Спустя месяц появилась первая релизная версия игры.

Итак, за один месяц использования GNOME 3 и Wayland я заметил следующие проблемы:

  1. Огромные декорации развёрнутых окон на низких разрешениях экрана выглядят настолько ужасно, что я решил установить расширение Pixel Saver, которое исправило эту проблему, правда, почему-то не во всех приложениях. Например, с GNOME Terminal это расширение не работает.
  2. В некоторых Qt-приложениях видны артефакты отрисовки (см. скрин Qt Creator'а выше, заголовки вкладок) из-за некачественной мимикрии. Работать это не мешает, но смотрится эстетически некрасиво.
  3. Иногда (очень редко) заметны странные мелькания в нижней части экрана. Возможно это какие-то баги в Intel'овских драйверах или Mesa3D, потому что в том же sddm и KDE Plasma 5 я тоже наблюдал такое.
  4. Иногда появлялись проблемы, связанные с различными анимациями окон, их закономерность я не смог выявить.

Теперь о хорошем. Интеграция Wayland и XWayland приложений в GNOME 3 практически бесшовная. В процессе использования я не выявил никаких проблем с отрисовкой, буфером обмена, переключением языка и снятием скриншотов. Ещё соглашусь с тем, что GNOME 3 в Wayland-сеансе работает плавнее и быстрее, чем в X.Org-сессии, видимо, сказывается полное отсутствие тиринга.

Таким образом можно подытожить следующее: Fedora 25 Workstation, несмотря на радикальную и быструю замену X.Org на Wayland, осталась вполне пригодным для работы дистрибутивом. Надеюсь, в Fedora 26 исправят отмеченные мной шероховатости, а софт, который сейчас использует XWayland, переведут на Wayland.

P.S. Если кому интересны результаты портирования Gish, дайте знать, выложу свои наработки в комментариях.

>>> Просмотр (1366x1536, 1837 Kb)

★★★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 1)
Ответ на: комментарий от sloan

но стим снес давно

На рутрекере или 4pda можешь купить версию для Windows или Linux, взять оттуда Data-файлы и всё будет работать. Я тестировал.

Игра распространяется по той же схеме, что и Doom, Quake — исходники пожалуйста, а вот Data-файлы не открыты и их нужно «приобретать».

EXL ★★★★★
() автор топика
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от EXL

да, я уже понял. сэнькс. попробовал демку. прикольно. как тестану собрать с дат-файлами - отчитаюсь тут. удачи в делах.

sloan ★★
()
Ответ на: комментарий от EXL

Интересно, что насчёт SDL2-приложений. Работают они под Wayland или нет. Сейчас буду разбираться.

Когда я последний раз пробовал, у них SetCursorPos не работал.

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

У меня с этой функцией и на X11 были проблемы. А вот на Android'е работает без проблем, что странно.

EXL ★★★★★
() автор топика
Ответ на: комментарий от eternal_sorrow

Так

Применил эти патчи, пересобрал GTK+3, сделал пакет:

http://esxi.z-lab.me:666/~exl_lab/software/gtk3-3.22.15-2.fc25.x86_64.rpm (4.4M)

Ставил его в систему так (не знаю, правильные ли флажки я выбрал у rpm, опытные пользователи RPM-дистров могут меня поправить):

# rpm -Uvh --force gtk3-3.22.15-2.fc25.x86_64.rpm

Потом, ребутнулся, запустил dconf-editor и выставил там настройку /org/gtk/settings/hide-titlebar-when-maximized в true:

http://esxi.z-lab.me:666/~exl_lab/screens/G3_dconf_editor.png

Далее перезапустил GTK+-приложения и заголовки, которые раньше убого смотрелись на развёрнутых окнах, отключились. В GNOME Terminal и в других GTK+3-приложениях под Wayland'ом теперь всё нормально:

http://esxi.z-lab.me:666/~exl_lab/screens/G3_GTerm_M.png
http://esxi.z-lab.me:666/~exl_lab/screens/G3_Rhythm.png

Такие дела. Вроде теперь всё норм. А Pixel Saver я удалять не стал, так как он работает для приложений на других тулкитах.

EXL ★★★★★
() автор топика
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Насколько я знаю пока таких планов нет.

Не понимаю, почему для неGNOME-приложений без CSD не сделать дефолтные рамки окна

Это какие? И как? Можно например через Cairo, ну будет зависимость от Cairo. Да и всё равно будет чужеродно и работать не так

Sunderland93 ★★★★★
()
Ответ на: Так от EXL

а у меня из не GTK3 приложений только chromium и у него системная рамка отключается элементарно. pixel saver с этими патчами работает, проблем никаких нет, но я ради такого дела снёс его и реинкарнировал своё расширение https://github.com/eternal-sorrow/app-menu-window-title, которое выполняет функцию pixel saver касательно заголовка окна в панели

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Вообще то gnome-shell в иксах давно уже рисует рамки окон с помощью gtk

В иксах ведётся server-side decorations, приложение запрашивает рамку для своего окна у иксов. В GNOME on Wayland только client-side decorations, то есть там клиентское окно рисует себе рамку, и если оно этого не умеет - будет лысым (в прямом смысле слова). В Plasma, что в Wayland, что в иксах, всегда только server-side decorations, который можно отрубить по запросу от приложения (чтобы не было двух заголовков).

Sunderland93 ★★★★★
()
Ответ на: комментарий от EXL

Кстати, такая же бадяга в Sway и прочих композиторах типа Weston - только клиентская отрисовка. Хотя протокол не обязывает её применять. Так что KWin сейчас единственный правильный Wayland-композитор. Жаль недоделанный пока.

Sunderland93 ★★★★★
()
Ответ на: комментарий от Sunderland93

не надо мне объяснять отличия CSD от SSD.

приложение запрашивает рамку для своего окна

ничего оно не запрашивает, напротив ему нужно явным образом сказать, если оно рамку не хочет

у иксов

иксы тут вообще не при делах, рамку рисует декоратор (в большинстве современных окружений совмещённый с WM)

Вообще то gnome-shell в иксах давно уже рисует рамки окон с помощью gtk.

это я говорил про это:

Можно например через Cairo, ну будет зависимость от Cairo

там уже давно зависимость от gtk (а через него и от cairo)

так же это я упомянул к тому, что сделать в GNOME на Wayland SSD не так уж сложно, там всё для этого есть и будут декорации ничем не выпадающие из общего стиля

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 2)
Ответ на: комментарий от eternal_sorrow

что сделать в GNOME на Wayland SSD не так уж сложно, там всё для этого есть

Сделать можно всё. Сейчас там этого нет. Запусти MPV там и в Plasma Wayland. В гноме он будет без рамки окна, а курсор над окном будет раза в 3 увеличиваться. И закрыть окно можно будет только через killall. В кедах всё будет нормально.

Sunderland93 ★★★★★
()
Ответ на: комментарий от Sunderland93

Запусти MPV там... В гноме он будет без рамки окна, а курсор над окном будет раза в 3 увеличиваться. И закрыть окно можно будет только через killall

На машине с nvidia gpu, mpv запускается почему-то с рамкой. А на ноуте с amd gpu голое окно. Обе машины на Wayland, насторой одинаковые, кроме использования vdpau и vaapi соотвественно. Везде можно закрыть окна по Alt+F4 и в меню (рядом с обзор). Никаких увеличений курсора нет.

nvl ★★★
()
Ответ на: комментарий от Sunderland93

Это какие? И как? Можно например через Cairo, ну будет зависимость от Cairo. Да и всё равно будет чужеродно и работать не так

Такие же, как у GNOME Terminal, например. То бишь вот. Рисовать их для НЕ-GTK3+ приложений тоже.

EXL ★★★★★
() автор топика
Ответ на: комментарий от nvl

А как, в этом случае, осуществляется доступ к элементам управления, расположенным в titlebar?

Нормально. Заголовки с элементами управления не затрагиваются, только такие скрываются при развороте окна на весь экран.

EXL ★★★★★
() автор топика
Ответ на: комментарий от Sunderland93

Так оно тоже клиентом рисуется

А что в случае с XWayland и non-GTK приложениями?

В любом случае, мне кажется они всё равно будут делать SSD для тулкитов, отличных от GTK+. И, чувствую, тогда будут несколько иные приколы: https://i.imgur.com/zwtl3SG.png

EXL ★★★★★
() автор топика
Ответ на: комментарий от EXL

А что в случае с XWayland и non-GTK приложениями?

Ну как Qt-приложения в XWayland отрисовываются ты видел - как обычно. Кстати сама GNOME Shell работает всегда в XWayland, видимо как раз для этих случаев (в чём можно убедиться введя в консоли xlsclients). А вот если нативно под Qt Wayland пускануть.....в любом случае серверных декораций пока не предусмотрено.

И, чувствую, тогда будут несколько иные приколы: https://i.imgur.com/zwtl3SG.png

Надо реализовывать как в KWin - серверная декорация по умолчанию, клиентская по запросу. Тогда будет нормально. А вообще - CSD изначально тупиковая ветвь. Нужно допиливать концепцию DWD - Dynamic Window Decorations, когда рамка рисуется на стороне сервера, но при этом в неё можно пихать кастомные виджеты. Что-то мне подсказывает что подобное и работает в Макоси

Sunderland93 ★★★★★
()
Ответ на: комментарий от Sunderland93

в гноме он будет без рамки окна

так и есть, правда я его всё равно использую только в полноэкранном режиме, так что это не важно.

а курсор над окном будет раза в 3 увеличиваться.

ничего похожего

И закрыть окно можно будет только через killall

свободно закрывается по горячей клавише Q

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

ничего похожего

свободно закрывается по горячей клавише Q

Да? Странно, я проверял в GNOME 3.22, там было так. Завтра на более свежем гноме проверю

Sunderland93 ★★★★★
()
Ответ на: комментарий от nvl

кроме использования vdpau

из-за этого mpv может использовать другой вид рендеринга

я точно помню, что когда тестировал mpv под wayland (на nouveau), то, в зависимости от выбранного рендеринга, окно начинало себя странно вести

actionless ★★★★★
()
Ответ на: комментарий от actionless

Да, действилельно. Если запустить mpv с параметрами

$ mpv --hwdec=no --vo=opengl
окно стало без рамки, указатель мы над окном становиться больше. Окно не закрывается по Alt+F4 и из меню, но закрывается по Q.

$ mpv --hwdec=vdpau --vo=vdpau

выаводит с рамкой, нормальным указателем и закрывается по Alt+F4

nvl ★★★
()
Ответ на: комментарий от nvl

выаводит с рамкой, нормальным указателем и закрывается по Alt+F4

Кажется, это окно работает через XWayland. Потому что xwininfo реагирует на него.

EXL ★★★★★
() автор топика
Ответ на: комментарий от eternal_sorrow

это кстати не рекомендуется разработчиками mpv, хоть и не запрещается

Именнто такая связка --hwdec=vdpau --vo=vdpau не грузит CPU (~6 %). Хоть что-то поменяешь и начинает процессор работать.

nvl ★★★
()
Ответ на: комментарий от eternal_sorrow

попробуй --hwdec=vdpau --vo=opengl

Я же выше ответил. Фильм под рукой сейчас H.264 720p:

  • --hwdec=vdpau --vo=opengl CPU 30 %
  • --hwdec=vdpau --vo=vdpau CPU 6 %
nvl ★★★
()
Ответ на: комментарий от eternal_sorrow

Есть:

$ mpv --hwdec=vdpau --vo=opengl 'Razbudi.menya.(2017).WEB-DLRip.x264.AFM.mkv'
Playing: Razbudi.menya.(2017).WEB-DLRip.x264.AFM.mkv
 (+) Video --vid=1 (*) 'WEB-DLRip by AFM' (h264)
 (+) Audio --aid=1 --alang=rus (*) 'AC3 5.1 ~384 kbps' (ac3)
File tags:
 Title: Разбуди меня (2017) :: AFM ::
[vo/opengl] retrieving framebuffer depth: OpenGL error INVALID_OPERATION.
VO does not support requested hardware decoder, or loading it failed.
AO: [pulse] 48000Hz 5.1(side) 6ch float
Using software decoding.
VO: [opengl] 1136x616 yuv420p

nvl ★★★
()

О, кстати, забыл поблагодарить andreyu за полезную программу Simple Viewer GL v2.88 — просмотрщик изображений.

Очень сильно помогла мне при определении некоторых текстурных координат благодаря прямоугольным рамкам по клавише <P>.

http://esxi.z-lab.me:666/~exl_lab/screens/G3_SViewGL.png

Спасибо и за реализацию поддержки TGA-формата. На nomacs, gwenview и GNOME Photos были проблемы с некоторыми TGA'шками именно у этой игры.

Небольшое пожелание: выводить «keybindings popup» ещё и по нажатию на F1.

EXL ★★★★★
() автор топика
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от nvl

VO does not support requested hardware decoder, or loading it failed.

Ну точно. Тогда ничего не поделаешь конечно.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от Sunderland93

Вчера кстати обновил mpv, теперь он под Вейландом нормально с рамкой отображается. И при этом работает нативно, не через Xwayland. Правда отвалилось хардварное декодирование через vaapi. Хорошо, что есть vaapi-copy, которое пусть и с оверхедом на обратное копирование в память, но работает с любыми драйверами вывода.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Что-то у меня без рамки. Какая версия и дистр?

$ mpv --version
mpv 0.23.0 (C) 2000-2016 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
ffmpeg library versions:
   libavutil       55.28.100
   libavcodec      57.48.101
   libavformat     57.41.100
   libswscale      4.1.100
   libavfilter     6.47.100
   libswresample   2.1.100
ffmpeg version: 3.1.8
EXL ★★★★★
() автор топика
Ответ на: комментарий от EXL
> mpv --version
mpv 0.25.0 (C) 2000-2017 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
ffmpeg library versions:
   libavutil       55.58.100
   libavcodec      57.89.100
   libavformat     57.71.100
   libswscale      4.6.100
   libavfilter     6.82.100
   libswresample   2.7.100
ffmpeg version: 3.3.2

Gentoo

eternal_sorrow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.