samstyle / Xpeccy

Multiplatform emulator of retro computers
MIT License
73 stars 15 forks source link

показывалку FPS надобно #24

Closed qboneteam closed 5 years ago

qboneteam commented 5 years ago

а то не ясно - тормозит хрессу в данном конкретном окружении, или нет

Volutar commented 5 years ago

Подписываюсь под такой надобностью. Просто крепки уж ощущения, что прилично кадров скипаются :(

samstyle commented 5 years ago

вам всем надо, сколько полных кадров сэмулировано или сколько их отрисовано? потому как это порой разные числа. PS: и чтобы увидеть торможение, надо притормозить ещё немного подсчётом и выводом фпс :smile: screenshot_20190113_010417

Volutar commented 5 years ago

А что, разве может тормозить еще и сэмулированные кадры? Лично я просто замечаю как регулярно вспышки, длящийся ровно один int, 1/50сек (вывод инфы) просто отсутствуют. И, подозреваю, что не потому что инфы нет, а потому что просто не прорисовывает эмуль. Вот 48 нарисовано на скрине. А 2 оставшихся где? :) Это, получается, какой-то Framedrops? И это нормально?

samstyle commented 5 years ago

В основном тормозит именно эмуляция и формирование картинки в памяти, а не вывод её на экран. 1 фпс в половине случаев выпадает из-за округления. 50 фпс получается в геометрии экрана оригинального спека/скорпиона, а у пентагона на минутку 8 лишних строк, там фпс ниже (прыгает в районе 48-49).

qboneteam commented 5 years ago

А что, разве может тормозить еще и сэмулированные кадры? Лично я просто замечаю как регулярно вспышки, длящийся ровно один int, 1/50сек (вывод инфы) просто отсутствуют. И, подозреваю, что не потому что инфы нет, а потому что просто не прорисовывает эмуль. Вот 48 нарисовано на скрине. А 2 оставшихся где? :) Это, получается, какой-то Framedrops? И это нормально? Это нормально, ни один эмуль ни под линухом, ни под яблосью, ни под виндой не выдаст тебе честные 50фпс

Volutar commented 5 years ago

Это нормально, ни один эмуль ни под линухом, ни под яблосью, ни под виндой не выдаст тебе честные 50фпс

Может я что-то делаю не так, но всякие версии US, и zx-spin и преснопамятный spectaculator настолько постоянно фреймы не выбрасывал. Гигаскрин смотрелся безо всяких обработок/сглаживаний.

Одно дело нерегулярные фреймы, сглаживаемые за счёт буфера (49/51 прыгает, кадр то в этой секунде оказался то в следующей), и совсем другое - безвозвратная их потеря.

samstyle commented 5 years ago

Визуальные "пропуски" кадров, скорее всего, случаются из-за разницы в частоте формирования (48.8Гц для пентагона) и частоте их вывода на экран (50Гц). С одной стороны, можно запрашивать перерисовку окна по готовности кадра, и это сгладит эффект, но тогда что-то надо делать с режимом Fast - рисовать каждый кадр уже будет слишком затратно. PS: тут уже получается не фреймдроп, а оверфрейм - один кадр показывается 2 раза, т.к следующий ещё не подоспел.

Volutar commented 5 years ago

вот по этому снапу можно посмотреть насколько фреймы равномерны. http://volutar.myds.me/gt23.sna Слева три квадрата - чередуются (gigascreen), справа - через кадр. Из гигаскрина трёхцветового хотя бы один раз каждый должен показываться. У меня какие-то из них по пол секунды отсутствуют. Когда оверфрейм - дважды один и тот же кадр на монитор выводится - картинка всего лишь чуть ярче становится. Но тут же просто дропы и причём так совпадает что именно каждый третий временами вываливается. Можно куда-то логировать вообще сколько времени какой спектрумовский фрейм фактически на ПК отображался? Запись с экрана: http://volutar.myds.me/gs_xp-tst.mp4

Протестил с включенным ФПС - у меня показывает 75. Это как понимать?:)) Типа не дожидается реального отображения на мониторе и уже стирает? Вроде скорость 100%...

Подумалось, что это выходит что каждый второй инт он отрисовывает 2 кадра, и один из них оказывается "между кадрами", визуально вообще отсутствует, и вместо 50 получается 75.