LINUX.ORG.RU
ФорумGames

60фпс, но нет плавности

 , ,


1

1

Добрый день. Может поможете разобраться нубу со следующей проблемой: запускаю игры из-под протоновского Wine и в таких играх, как battlefiled 4,1,5 при стабильных 60фпс периодически появляется какая-то тормознутость. На графике фреймтайма ничего не происходит, фпс держится на 60 (залочено), но фпс как-будто проседает до 40. Какой-то закономерности не заметил. То идёт плавно, то начинается такая фигня при взгляде на забор какой-то левый, то в другой случайной сцене. Вертикалку отключать и включать пробовал. Проц 50%, видеокарта с запасом АМД, дрова от kisak (пробовал и стоковые, и оибаф), ядро xanmod (на стоковом 6.5 тоже самое). Linux mint 21.3. В Интернете не нашел ничего по этому поводу,на протонДБ тишина, значит проблема частная. Пробовал также через лутрис запускать. В других играх более-менее нормально, кроме Rage2 - там при локе на 60фпс фреймтайм идет в виде симметричного забора и картинка по восприятию кадров 20. Может кто сталкивался или знает, куда копать?

Перемещено hobbit из general

Ответ на: комментарий от Krapkert

Верно?

Нет. Приложение игры может работать не на полный экран, а в оконном режиме без рамок и в разрешении как у экрана. Следовательно композитинг будет включен.

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

Приложение игры может работать не на полный экран, а в оконном режиме без рамок и в разрешении как у экрана.

Это не должно быть проблемой. По крайней мере, в GNOME Shell такой режим не хуже «настоящего» полноэкранного в плане производительности.

anonymous
()
Ответ на: комментарий от Dr64h

проверь какую-нибудь нативную игру, например Xonotic.

Я пробовал Left 4 Dead2 нативный - всё отлично. В других играх тоже проблем не замечал: FlatOut 2 Ultimate Carange, WreckFest, RE 4 Remake, Re Village - тестил, такое поведение не замечал. Rage2 без лимита фпс идет более-менее, но стоит залочить или включить вертикалку - частокол во фреймтайме и 20фпс по ощущениям.

Танчики тоже пробовал - тоже норм (или не замечал). Вот с батлфилдами не очень. Чем новее игра, тем чаще случается.

Krapkert
() автор топика

Везде, где можно, повырубай vsync. Описанное чень похоже на лаги сихронизации. Если не любишь тиринг в играх, заимей экран с FreeSync, другого решения нет. Мангохуд точно просадок на графике фпс не рисует?

pekmop1024 ★★★★★
()
Последнее исправление: pekmop1024 (всего исправлений: 1)

А какая конкретно видеокарта и остальное железо? На RX570 раньше замечал подобное поведение в разных играх, хотя загрузка GPU была около 60-70%. Не знаю с чем это связано. Сейчас стоит RX7600 и всё отлично.

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

Везде, где можно, повырубай vsync

По моим наблюдениям разницы нет. В тех играх, что я чуть выше указал и где не было ощутимых проблем, синхронизация в половине случаев была включена. В БФ отключена. Но пробовал и включать

Если не любишь тиринг в играх, заимей экран с FreeSync

У меня как раз такой. Пробовал отключать в настройках моника эту фичу в rage2, но безрезультатно

Мангохуд точно просадок на графике фпс не рисует?

Обычный фреймтайм. Не всегда ровной линией, но в целом норм. ФПС чётко на 60.

А через что запускаешь? Какой-то лаунчер?

PortProton. Лутрис тоже пробовал

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

на любом циннамоне есть микрофризы, просто вне игр обычно они не бросаются в глаза.

Причина, скорее всего, в куче блокирующих перерисовку фоновых задач.

Я могу назвать 3 фактора, увеличивающих количество фризов:

- время с запуска. Через пару недель аптайма контекстное меню начинает открыться полсекунды

- обновление элементов интерфейса, например, часы с секундами или график температуры в трее

- нагрузка на процессор другими приложениями

Временно уменьшает количество фризов перезапуск оболочки через контрол-альт-бекспейс или ребут.

У меня все надежды на переписывание корявых мест при портировании на wayland :(

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

PortProton. Лутрис тоже пробовал

Было бы яснее, если бы мы увидели с какими настройками запускается игра.

То идёт плавно, то начинается такая фигня при взгляде на забор какой-то левый, то в другой случайной сцене.

У меня что-то подобное было в Borderlands 2, но там какие-то проблемы с шейдерами были, помог только запуск с Wine-GE.

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

У меня все надежды на переписывание корявых мест при портировании на wayland :( Пробовал через экспериметальный вэйланд запускать - не лучше. Причина, скорее всего, в куче блокирующих перерисовку фоновых задач.

Но в других играх, причём потяжелее, такого нет

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

Было бы яснее, если бы мы увидели с какими настройками запускается игра.

https://imgur.com/a/0Dna5dN

Тут и график фреймтаймов в сценах, когда картинка неплавная; скрин с Rage2 и его частоколом; настройки протона.

А прямо на форум скрины можно заливать или только вот так ссылками?

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

А прямо на форум скрины можно заливать или только вот так ссылками?

Тут только ссылками, как и на большинстве форумов.

У RAGE 2 многие отмечают проблемы с FPS. https://www.protondb.com/app/548570

FSR, ESYNC/FSYNC, USE_SHADER_CACHE, сделаны для повышения производительности, но в некоторых ситуациях могут наоборот всё сделать хуже.

Иногда игре необходимо указать точное количество используемых ядер процессора, ограничить FPS до 60, либо до герцовки монитора. Ну и запуск в разных режимах (полноэкранный, оконный без рамки, в виртуальном рабочем столе), может влиять на производительность и на некоторые другие вещи.

Опции USE_GSTREAMER и FORCE_LARGE_ADDRESS_AWARE я не встречал в других лаунчерах, FORCE_LARGE_ADDRESS_AWARE вроде как для 32-битных игр нужен, так что можно его вообще отключить, а USE_GSTREAMER по идее может влиять на внутриигровые видеоролики.

Ещё я бы посмотрел в сторону Wine-GE и Proton-GE, туда добавляют кучу исправлений для разных проблемных игр.

Dr64h ★★★
()

Пару лет назад Асинк патч на Wine вроде видел на ютубе, что помогает. Вот dxvk советуют, вот просто меняют пермишны и всё топ. Как альтернативный вариант - перегрев. Можно ещё новый Windows NT sync primitives патч для ядра попробовать, мб улушит, ибо там совсем космические цифры прироста.

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

В настройках выставляю всегда полный экран

Не имеет значения. X11 не любит переключение видеорежимов, lcd экраны тоже плохо себя ведут, поэтому во во всяких модных игровых фотках вайна присутствует патч fshack/fsfix, который заменяет полноэкнаррый режим на окно без рамки.

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

Не имеет значения. X11 не любит переключение видеорежимов, lcd экраны тоже плохо себя ведут, поэтому во во всяких модных игровых фотках вайна присутствует патч fshack/fsfix, который заменяет полноэкнаррый режим на окно без рамки.

А что мне тогда делать? Я ж не могу его принудительно отключить или принудительно запустить в полный экран приложение, если оно на самом деле в рамке

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

заимей экран с FreeSync

Это значит ограничиться играми в которых есть встроенный ограничитель кадров. Нсли кадров больше чем экран может дать - разрывы будут всё равно. Внешний ограничитель работает через анал, всегда приносит инпут-лаг

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

Если фрисинк включён - монитор должен показывать сколько на него кадров передаётся, полазай по меню монитора. Если всегда 60 - это либо больше 60, либо композитор всё глушит и на экран передаётся 60 по вяленому велению

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

А что мне тогда делать? Я ж не могу его принудительно отключить или принудительно запустить в полный экран приложение, если оно на самом деле в рамке

Хз. Насколько я понимаю, это не отключается через переменные среды, так что нужно найти сборку вайна без этого патча. В ванильном вайне вроде нет. Лутрис раньше предоставлял выбор вайна с fshack и без.

Вообще, в теории можно в игре выбрать разрешение типа 1024x768 и посмотреть, стало ли оно выводиться на монитор или просто растягивается на родное средствами вайна.

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

Это значит ограничиться играми в которых есть встроенный ограничитель кадров. Нсли кадров больше чем экран может дать - разрывы будут всё равно. Внешний ограничитель работает через анал, всегда приносит инпут-лаг

Пробовал и со встроенным в батлу играть и с внешним - разницы нет. «дропы фпс» как-будто в основном встречаются при взгляде на растительность или дымы. Но не каждый раз. Может особенности взаимодействия вайна и движка игры. Если бы кто мог у себя потестить…))

Если фрисинк включён - монитор должен показывать сколько на него кадров передаётся, полазай по меню монитора. Если всегда 60 - это либо больше 60, либо композитор всё глушит и на экран передаётся 60 по вяленому велению

Опции вывода фпс на монике нет. Но я пробовал фрисинк отключать - не помогло.

Да это батла в цикле однопоточно сильно нагружающий код запускает

х3. Проц выше 50% не поднимается в бф5. В 4ой около 25%.

выбрать разрешение типа 1024x768 и посмотреть, стало ли оно выводиться на монитор или просто растягивается на родное средствами вайна.

а что я должен увидеть? Мне кажется, в любом случае низкое разрешение растянется на весь экран. Как и в винде

Krapkert
() автор топика

… фпс держится на 60 (залочено), но фпс как-будто проседает до 40.

Решения не знаю, но в каком направлении копать есть идеи. По описанию - типичная проблема для X11 сессии.

Разобраться в причине сложно, в первую очередь стоит отключить всякие TearFree в конфигах и понять в каком режиме игра выводит картинку. Основные варианты:

  1. Запущен композитор, игра выводит через него. Основные признаки - альтаб происходит быстро, как между обычными окнами. VSync в игре ни на что не влияет, может только увеличить задержку. Кадры выводятся как в винде при использовании fastsync (без разрывов, но без синхронизации по времени), только с доп. задержкой. Такой способ вывода сносно работает при fps в игре x2+ относительно частоты монитора, тогда задержка будет низкая (не в X11 сессии) и косяки отсутствия синхронизации по времени не так заметны. Играть с 60 fps локом в таком режиме плохая идея. VSync и VRR не работают, косяки могут усугубляться недостатками композитора. Наиболее распространенный вариант.

  2. Нет композитинга, игра выводит напрямую. Признаки: в системе отсутствуют графические эффекты UI типа плавных анимаций, альтабы долгие, часто некрасивые с черными экранами и артефактами, картинка может рваться даже за пределами игр. VSync работает как ожидается, VRR должен работать, нет проблем с задержками. Типичная ситуация для пользователей wm, редкая для пользователей de (kde/gnome/cinnamon).

  3. Композитинг при запущенной игре обходится/отключается. Всё как в п.2, только без запущенной игры всё работает как в п.1. Поведение по умолчанию и способ включить эту опцию зависит от DE. Циннамоном не пользовался, вроде там эта штука отключена по умолчанию и всё работает как в п.1. И, вроде как, в настройках была опция отключить композитинг полностью или для фуллскрин приложений.

К сожалению, при игре в X11 сессии придется постоянно разбираться с костылями и мириться с неприятными компромиссами.

p.s.: всегда желательно ограничивать fps так, чтобы gpu не загружалась на 100%. Не важно, линукс или винда, это сильно увеличивать задержку.

Если таки использовать VRR (free/g-sync), то его надо использовать в связке с VSync, а fps лимит установить чуть ниже частоты монитора (на 2-3 fps) или еще ниже, чтобы не грузить gpu на 100%.

Если в системе несколько мониторов, то один надо отключить. Игры в мультимониторной конфигурации имеют свои нюансы, а в X11 это категорически противопоказано.

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

Еще что заметил, что на винде явно видны разрывы кадров при выключенной синхронизации, а на лине их нет

Не включена в драйверах случайно опция Tear-Free? Или как она там в AMD называется.

Ещё я бы попробовал установить какой-нибудь WM простенький, первый попавшийся и попробовать запустить игру под ним. Чтобы локализовать ДЕ виновато или нет.

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

скорее снижать настройки графона, а то получается какое-то деление на ноль

Именно ограничить fps. Например, игра выдает 80 fps и упирается в gpu, а инпут лаг в 100 мс. Ограничив до 70 fps задержка упадет до 60 мс.

Можно снизить настройки графики, но нагружать gpu по полной всё равно нельзя для нормальной задержки изображения. Работает для любой игры, под любой ОС.

С появлением такого явления как генерация фреймов вопрос задержек в играх встал на столько остро, что нвидия с амд начали продвигать в игры нормальный подход к решению этой проблемы. Типа включаешь reflex и не ломаешь голову над ручным ограничением кадров.

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

Я не знаю, что вы там курили, но input lag в 60 мс — это адские тормоза, которые ощутят даже нечувствительные к задержкам люди.

От игры зависит, 60 мс для 70 fps игры - не такая уж и редкость.

Пример эффекта от ограничения fps-a: https://youtu.be/K_k1mjDeVEo?t=269

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

Звучит как что-то, с чем лучше не связываться, и продолжать играть в своё удовольствие, а не бороться с цифрами :) Я всё равно использую обычный vsync на 60 Гц, хотя в мониторе есть FreeSync — мне просто лень разбираться, как это всё включать.

В некоторых играх, например, Wasteland 3 (да, технически это «спасибо, что оно вообще работает и даже проходимо») есть заметные как будто микрофризы, хотя если vsync выключить, то видно, что запас производительности есть. И frame time стабилен. Куда тут можно копнуть? Оно не особо мешает в пошаговой игре, скорее любопытно.

anonymous
()
Ответ на: комментарий от Shadow

Лол, я как раз на одной крысе композицию отключить не могу, точнее, могу, но возникают жирные чёрные рамки вокруг некоторых (третьегнумных, наверное) окон.

А на другой всё отлично, никаких чёрных рамок. Всюду таинственные вещи.

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

Куда тут можно копнуть?

С VSyncом две беды бывают:

  1. Если fps-а не достаточно чтобы прямо стабильно держать 60 Гц, то часть кадров будет прилетать как 30 Гц. VSync без VRR может работать только на частоте монитора, поделенной на целое число. Т.е. 60 Гц, 30 Гц, 20 Гц, 15 Гц и т.д.

  2. Даже если производительности хватает с запасом, то вылазит другая неприятная особенность. Выше 60 Гц он отобразить не может и складывает кадры в очередь. Это обычно дает задержку в 2 кадра в хорошем случае, и до 6 в самых запущенных.

Оптимальный вариант при нормальной работе VRR в системе - vsync+vrr+ограничение частоты кадров в игре на 58 Гц. VRR позволит нормально играть при 58 Гц и решает проблему из первого пункта. Ограничение частоты кадров в игре же не увеличивает задержку как срабатывающее при обычном vsync-е.

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

но возникают жирные чёрные рамки вокруг некоторых

Смени тему, проверь наличие «теней». перезапусти без композитора.

Я писал много раз - я установил третий гном с gnome-flashback, запускаю metacity с переменной что якобы использую внешний композитор, а сам не использую. И моя жизнь стала простой и комфортной - ускорением 2D занимается Glamor, всё хорошо.

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

Спасибо. Не задумывался, что ограничители не эквивалентны vsync. Насчёт VRR тоже подумаю, хотя есть некоторые сомнения, что оно хорошо поддерживается в нативных играх на Unity, особенно не первой свежести.

В Wine же таких неприятных мелочей обычно нет, только обычный инпут лаг от синхронизации. Например, и Control (4k, средние настройки с максимальными текстурами, 50-60 FPS), и новые DOOM, и новая Prey (в этих всё на максимум, всегда 60 FPS) игрались куда приятнее, чем нативная art of rally, хотя, казалось бы… 😕

anonymous
()
Ответ на: комментарий от Loki13

Не включена в драйверах случайно опция Tear-Free? Или как она там в AMD называется.

Тиринг не был не прописан - не было файла в папке /etc/X11/xorg.conf.d/20-radeon.conf. Пробовал и включать и выключать, но без толку:

Section «Device»

Identifier "Radeon"

Driver "radeon"

Option "TearFree" "on"

EndSection

Ещё я бы попробовал установить какой-нибудь WM простенький, первый попавшийся и попробовать запустить игру под ним. Чтобы локализовать ДЕ виновато или нет.

Я попробовал установить Manjaro и получил совершенно другую картину. Тестил на Battlefield 5. Игра в целом идет менее плавно (хоть и те же 60фпс), но стабильно. Не как в Линукс Минт, когда вроде отличная плавность, потом смотришь на какую-то растительность, дым, эффект и резко «просаживается фпс». На manjaro игра с вертикалкой ощущается лучше и инпут лаг не чувствуется, в отличии от винды, но стоит синхронизацию отключить, как «просадка фпс», но опять же, всё идет в одном ключе, стабильно. Смотри куда хочешь и на что хочешь. В линукс минт наоборот плавность сразу ухудшается при включении вертикальной синхронизации.

Основные варианты:

1 Запущен композитор, игра выводит через него. Основные признаки - альтаб происходит быстро, как между обычными окнами. VSync в игре ни на что не влияет, может только увеличить задержку. Кадры выводятся как в винде при использовании fastsync (без разрывов, но без синхронизации по времени), только с доп. задержкой. Такой способ вывода сносно работает при fps в игре x2+ относительно частоты монитора, тогда задержка будет низкая (не в X11 сессии) и косяки отсутствия синхронизации по времени не так заметны. Играть с 60 fps локом в таком режиме плохая идея. VSync и VRR не работают, косяки могут усугубляться недостатками композитора. Наиболее распространенный вариант.

Наверно, похоже на это поведение. Но игра с локом на 60фпс в других играхтаких проблем не вызывает. Тестировал правда не так много и основательно, но всё же. Rage2, как уже упоминал, в танчиках бывает проскакивает, но не критично.

p.s.: всегда желательно ограничивать fps так, чтобы gpu не загружалась на 100%. Не важно, линукс или винда, это сильно увеличивать задержку.

Я всегда так делаю. По мне, не имеет смысла грузить видюху бесполезными кадрами. А отзывчивость управления при 200+ фпс оставляю киберспортсменам

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