xash3d-fwgs icon indicating copy to clipboard operation
xash3d-fwgs copied to clipboard

[Android] Чёрный экран во время смены уровня в одиночной игре

Open Vladislav4KZ opened this issue 3 years ago • 3 comments

Screenshot_20211014-115413.png

Vladislav4KZ avatar Oct 14 '21 05:10 Vladislav4KZ

Такой баг я обнаружил на Meizu C9 Pro CPU: Spreadtrum SC9832E GPU: Mali-T820 Android 8.1.0 Oreo

На устройстве Nokia 2.2 такого бага нет Android 11 R CPU: MediaTek Helio A22 GPU: PowerVR GE8320

Vladislav4KZ avatar May 04 '22 16:05 Vladislav4KZ

Почему Mali видеокарта постоянно чистка рендера похоже как gl_clear 1

Vad1mCSO2 avatar Nov 26 '23 08:11 Vad1mCSO2

Мы не указываем стратегию обновления экрана явно (на это в egl есть расширение), потому не перерисовываемый экран может выглядить как угодно (особенно на адрено, где тайлы меняются местами.

По  идее можно было бы отключить перерисовку экрана в синглплеере совсем, а для мультиплеера показывать прогрессбар полноэкранно. Тут вопрос - узнаем ли мы именно в том кадре, в котором началась загрузка карты про смену карты чтобы нарисовать и карту и надпись Loading?

Исправлять это "как есть", делая скриншот перед загрузкой будет неэффективно - чтение данных из gpu происходит медлннно и например на некоторых mali чтение пикселей может занять больше секунды.

Изменение стратегии обновление экрана же может сказаться на потреблении и fps, если заставить драйвер каждый раз сохранять старый кадр - он скорее всего будет копировать весь экран. Возможно, можно временно изменить стратегию SwapBuffers? Не уверен что потом можно будет корректно вернуть оригинальную, но с этим можно поэкспериментировать

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

mittorn avatar Nov 27 '23 18:11 mittorn