Browse Source
[android] Rework of frame pacing mode + Surface mode detection per API level. (#3735)
[android] Rework of frame pacing mode + Surface mode detection per API level. (#3735)
This Pr is a reply to certain issues found on Android due to the new artificial waits inside Vulkan (Frame Pacing Mode); which caused GPU/CPU desync's even if TimelineSemaphore (Adreno's drivers) does a constant check to retain synchronization with each frame-data, removes the yield() for all platforms (remains the same on PC) and aligns a new way to handle the output of video by using native Android tools, such as AGP, which makes a bridge inside Vulkan to Android's Surface (screen) and reduces not only the latency, but also improves the smoothness of each frame processed; currently we quantize the amount of frame processed by hinting the surface on Android space and adjust the heuristics of the old handling (yuzu) and we link it to screen refresh rate; this way we ensure that even if the game moves below the screen's HZ, we can always pick up the cadence by clamping the duration of each frame and using a chrono function to work as internal fernce if performance goes below the game speed requirment or game's frame rate requirements. Co-authored-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3735 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Lizzie <lizzie@eden-emu.dev> Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com> Co-committed-by: PavelBARABANOV <pavelbarabanov94@gmail.com>lizzie/xcode-evil-shit-123
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
6 changed files with 221 additions and 12 deletions
-
9src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
-
1src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
-
2src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
-
186src/android/app/src/main/jni/emu_window/emu_window.cpp
-
19src/android/app/src/main/jni/emu_window/emu_window.h
-
16src/video_core/renderer_vulkan/vk_swapchain.cpp
Write
Preview
Loading…
Cancel
Save
Reference in new issue