From 4cc9aa691db243e524a15aa347ab013d55178198 Mon Sep 17 00:00:00 2001 From: Kleidis Date: Sun, 7 Dec 2025 00:28:58 +0100 Subject: [PATCH] [android] Remove all frame skip / frame interpolation code (#3152) Both options do nothing, however one was exposed to the user making them think it actually helps. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3152 Reviewed-by: MaranBr Reviewed-by: Lizzie Reviewed-by: Caio Oliveira Co-authored-by: Kleidis Co-committed-by: Kleidis --- src/android/app/src/main/AndroidManifest.xml | 1 - .../features/settings/model/BooleanSetting.kt | 4 - .../settings/model/view/SettingsItem.kt | 15 -- .../settings/ui/SettingsFragmentPresenter.kt | 1 - .../yuzu_emu/fragments/EmulationFragment.kt | 7 - .../app/src/main/res/values-ar/strings.xml | 4 - .../app/src/main/res/values-ckb/strings.xml | 4 - .../app/src/main/res/values-cs/strings.xml | 4 - .../app/src/main/res/values-de/strings.xml | 8 - .../app/src/main/res/values-es/strings.xml | 4 - .../app/src/main/res/values-fa/strings.xml | 4 - .../app/src/main/res/values-fr/strings.xml | 4 - .../app/src/main/res/values-he/strings.xml | 4 - .../app/src/main/res/values-hu/strings.xml | 4 - .../app/src/main/res/values-id/strings.xml | 4 - .../app/src/main/res/values-it/strings.xml | 4 - .../app/src/main/res/values-ja/strings.xml | 4 - .../app/src/main/res/values-ko/strings.xml | 4 - .../app/src/main/res/values-nb/strings.xml | 4 - .../app/src/main/res/values-pl/strings.xml | 4 - .../src/main/res/values-pt-rBR/strings.xml | 4 - .../src/main/res/values-pt-rPT/strings.xml | 4 - .../app/src/main/res/values-ru/strings.xml | 4 - .../app/src/main/res/values-sr/strings.xml | 4 - .../app/src/main/res/values-uk/strings.xml | 4 - .../app/src/main/res/values-vi/strings.xml | 4 - .../src/main/res/values-zh-rCN/strings.xml | 4 - .../src/main/res/values-zh-rTW/strings.xml | 4 - .../app/src/main/res/values/strings.xml | 4 - src/common/settings.h | 7 +- .../renderer_vulkan/renderer_vulkan.cpp | 138 ------------------ 31 files changed, 1 insertion(+), 272 deletions(-) diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml index 7b11cb54fd..3b236c8765 100644 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -24,7 +24,6 @@ SPDX-License-Identifier: GPL-3.0-or-later - diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 6eb828ec8c..398e2ee418 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -52,10 +52,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_FW_VERSION("show_firmware_version"), SOC_OVERLAY_BACKGROUND("soc_overlay_background"), - - FRAME_INTERPOLATION("frame_interpolation"), -// FRAME_SKIPPING("frame_skipping"), - ENABLE_INPUT_OVERLAY_AUTO_HIDE("enable_input_overlay_auto_hide"), PERF_OVERLAY_BACKGROUND("perf_overlay_background"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index b2f23fb678..cc1ce41e4b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -236,21 +236,6 @@ abstract class SettingsItem( override fun reset() = BooleanSetting.USE_DOCKED_MODE.reset() } - put( - SwitchSetting( - BooleanSetting.FRAME_INTERPOLATION, - titleId = R.string.frame_interpolation, - descriptionId = R.string.frame_interpolation_description - ) - ) - -// put( -// SwitchSetting( -// BooleanSetting.FRAME_SKIPPING, -// titleId = R.string.frame_skipping, -// descriptionId = R.string.frame_skipping_description -// ) -// ) put( SwitchSetting( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 1e58fd5223..2a6929301c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -463,7 +463,6 @@ class SettingsFragmentPresenter( add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key) add(IntSetting.DMA_ACCURACY.key) add(BooleanSetting.BUFFER_REORDER_DISABLE.key) - add(BooleanSetting.FRAME_INTERPOLATION.key) add(BooleanSetting.RENDERER_FAST_GPU.key) add(IntSetting.FAST_GPU_TIME.key) add(IntSetting.RENDERER_SHADER_BACKEND.key) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index 905ae777df..37e187380e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -1127,14 +1127,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { val actualFps = perfStats[FPS] if (BooleanSetting.SHOW_FPS.getBoolean(needsGlobal)) { - val enableFrameInterpolation = - BooleanSetting.FRAME_INTERPOLATION.getBoolean() -// val enableFrameSkipping = BooleanSetting.FRAME_SKIPPING.getBoolean() - var fpsText = String.format("FPS: %.1f", actualFps) - if (enableFrameInterpolation) { - fpsText = String.format("eFPS: %.1f", actualFps) - } sb.append(fpsText) } diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 21b298ea01..283ab0bc4d 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -98,8 +98,6 @@ كثافة تمرير تظليل العينة. تؤدي القيم الأعلى إلى تحسين الجودة بشكل أكبر، ولكنها تقلل أيضًا من الأداء إلى حد كبير. العارض - تحسين سرعة الإطارات - يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب. إطلاق الأسوار مبكرًا يساعد في إصلاح مشكلة 0 إطار في الثانية في ألعاب مثل DKCR:HD وSubnautica Below Zero وOri 2، ولكن قد يتسبب في تعطيل التحميل أو الأداء في ألعاب Unreal Engine. مزامنة عمليات الذاكرة @@ -472,8 +470,6 @@ الشاشة تأثيرات بعد المعالجة - قيد التطوير: تخطي الإطارات - تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية. مستوى الدقة الدقة (الإرساء/محمول) VSync وضع diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 7c2dd83953..0e6bdb9c94 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -76,8 +76,6 @@ چڕی تێپەڕاندنی سێبەرکردنی نموونە. بەهای زیاتر کوالێتی باشتر دەکات بەڵام کارایی زیاتر کەم دەکاتەوە. رێندرەر - تحسين توقيت الإطارات - يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب. زێدەکردنی پەرستارەکان زووتر یارمەتی دەدات لە چارەسەری 0 FPS لە یارییەکانی وەک DKCR:HD، Subnautica Below Zero و Ori 2، بەڵام ڕەنگە بارکردن یان کارایی لە یارییەکانی Unreal Engine تێکبدات. هاوبەشیی کردارەکانی بیرگە @@ -382,8 +380,6 @@ پیشاندان پاشپڕۆسەکردن - قيد التطوير: تخطي الإطارات - تێپەڕاندنی فرەیمەکان بکە بۆ باشترکردنی کارایی بە کەمکردنەوەی ژمارەی فرەیمە ڕێندرکراوەکان. ئەم تایبەتمەندییە هێشتا کاردەکرێت و لە وەشانە داهاتووەکاندا چالاکدەکرێت. ئاستی وردبینی ڕوونی (دۆخی دەستی/دۆخی دۆک) دۆخی VSync diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index a6972ae021..88ef0661a6 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -76,8 +76,6 @@ Intenzita průchodu stínování vzorku. Vyšší hodnoty zlepšují kvalitu, ale také výrazněji snižují výkon. Renderer - Vylepšené časování snímků - Zajišťuje plynulé a konzistentní zobrazování snímků synchronizací jejich časování, čímž snižuje trhání a nerovnoměrné animace. Ideální pro hry, které trpí nestabilitou časování snímků nebo mikrotrháním během hraní. Uvolnit ploty brzy Pomáhá opravit 0 FPS v hrách jako DKCR:HD, Subnautica Below Zero a Ori 2, ale může narušit načítání nebo výkon v hrách na Unreal Engine. Synchronizace paměťových operací @@ -370,8 +368,6 @@ Zobrazení Postprocesing - WIP: Přeskočení snímků - Přepínání přeskočení snímků pro zlepšení výkonu snížením počtu vykreslených snímků. Tato funkce je stále ve vývoji a bude povolena v budoucích verzích. Úroveň přesnosti Rozlišení (Handheld/Docked) VSync režim diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 26542dcae4..046746cfd6 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -84,8 +84,6 @@ Die Intensität des Sample-Shading-Durchgangs. Höhere Werte verbessern die Qualität stärker, beeinträchtigen aber auch die Leistung stärker. Renderer - Erweiterte Frame-Synchronisation - Sorgt für eine gleichmäßige und konsistente Frame-Wiedergabe durch Synchronisierung der Frame-Zeiten, was Ruckeln und ungleichmäßige Animationen reduziert. Ideal für Spiele, die unter instabilen Frame-Zeiten oder Mikrorucklern leiden. Zäune früher freigeben Behebt 0 FPS in Spielen wie DKCR:HD, Subnautica Below Zero und Ori 2, kann aber Ladezeiten oder Performance in Unreal Engine-Spielen beeinträchtigen. Speicheroperationen synchronisieren @@ -423,12 +421,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Backend - Anzeige - Nachbearbeitung - - WIP: Frame Skipping - Aktivieren Sie Frame Skipping, um die Leistung durch Reduzierung der gerenderten Frames zu verbessern. Diese Funktion wird noch entwickelt und in zukünftigen Versionen verfügbar sein. - Genauigkeitsstufe Auflösung (Handheld/Gedockt) VSync-Modus Ausrichtung diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index 61c792410c..d0b83addb1 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -98,8 +98,6 @@ La intensidad del paso de sombreado de la muestra. Los valores más altos mejoran más la calidad, pero también reducen el rendimiento en mayor medida. Renderizador - Ritmo de fotogramas mejorado - Garantiza una entrega de fotogramas fluida y consistente al sincronizar el tiempo entre fotogramas, reduciendo la tartamudez y la animación desigual. Ideal para juegos que experimentan inestabilidad en el tiempo de fotogramas o microtartamudeos durante el juego. Liberar las vallas antes Ayuda a arreglar 0 FPS en juegos como DKCR:HD, Subnautica Below Zero y Ori 2, pero puede romper la carga o el rendimiento en juegos de Unreal Engine. Sincronizar operaciones de memoria @@ -446,8 +444,6 @@ Pantalla Postprocesado - WIP: Salto de fotogramas - Activa o desactiva el salto de fotogramas para mejorar el rendimiento reduciendo el número de fotogramas renderizados. Esta función está en desarrollo y se habilitará en futuras versiones. Nivel de precisión Resolución (Portátil/Sobremesa) Modo VSync diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 36a2e55f5e..e4f713ec4c 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -65,10 +65,6 @@ پردازنده و حافظه پرده عدن تنظیمات آزمایشی برای بهبود عملکرد و قابلیت. این تنظیمات ممکن است باعث نمایش صفحه سیاه یا سایر مشکلات بازی شود. - در حال توسعه: رد کردن فریم‌ها - با فعال کردن رد کردن فریم‌ها، عملکرد را با کاهش تعداد فریم‌های رندر شده بهبود دهید. این قابلیت در حال توسعه است و در نسخه‌های آینده فعال خواهد شد. - زمان‌بندی پیشرفته فریم‌ها - ارسال یکنواخت و پایدار فریم‌ها را با همگام‌سازی زمان بین آن‌ها تضمین می‌کند، که منجر به کاهش لرزش و انیمیشن‌های ناهموار می‌شود. برای بازی‌هایی که ناپایداری در زمان‌بندی فریم‌ها یا میکرو لرزش در حین بازی دارند ایده‌آل است رهاسازی حصارها زودتر به رفع مشکل 0 فریم بر ثانیه در بازی‌هایی مانند DKCR:HD، Subnautica Below Zero و Ori 2 کمک می‌کند، اما ممکن است بارگذاری یا عملکرد بازی‌های Unreal Engine را مختل کند. همگام‌سازی عملیات حافظه diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 862a58d9ef..2779558202 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -98,8 +98,6 @@ L\'intensité de la passe d\'ombrage d\'échantillon. Des valeurs plus élevées améliorent davantage la qualité mais réduisent aussi plus fortement les performances. Rendu - Synchronisation avancée des frames - Assure une diffusion fluide et régulière des frames en synchronisant leur timing, réduisant ainsi les saccades et les animations irrégulières. Idéal pour les jeux souffrant d`instabilité de timing des frames ou de micro-saccades pendant le jeu. Libérer les barrières plus tôt Résout les problèmes de 0 FPS dans des jeux comme DKCR:HD, Subnautica Below Zero et Ori 2, mais peut perturber le chargement ou les performances des jeux Unreal Engine. Synchroniser les opérations mémoire @@ -447,8 +445,6 @@ Affichage Post-traitement - WIP: Saut de frames - Activez ou désactivez le saut d\'images pour améliorer les performances en réduisant le nombre d\'images affichées. Cette fonctionnalité est en cours de développement et sera activée dans les futures versions. Niveau de précision Résolution (Mode Portable/Mode TV) Mode VSync diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 3efd19bb1c..c694c740ed 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -76,8 +76,6 @@ עוצמת מעבר ההצללה לדוגמה. ערכים גבוהים יותר משפרים את האיכות יותר אך גם מפחיתים את הביצועים במידה רבה יותר. רנדרר - סנכרון פריימים מתקדם - מבטיח אספקה חלקה ועקבית של פריימים על ידי סנכרון התזמון ביניהם, מפחית קפיצות ואנימציה לא אחידה. אידיאלי למשחקים עם בעיות בתזמון פריימים או מיקרו-קפיצות במהלך המשחק. שחרר גדרות מוקדם עוזר לתקן 0 FPS במשחקים כמו DKCR:HD, Subnautica Below Zero ו-Ori 2, אך עלול לפגוע בטעינה או בביצועים במשחקי Unreal Engine. סנכרון פעולות זיכרון @@ -406,8 +404,6 @@ תצוגה עיבוד לאחר - בעבודה: דילוג פריימים - החלף דילוג על פריימים כדי לשפר ביצועים על ידי הפחתת מספר הפריימים המוצגים. תכונה זו עדיין בפיתוח ותופעל בגרסאות עתידיות. רמת דיוק רזולוציה (מעוגן/נייד) מצב VSync diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index f540e20c0c..790dfb85a2 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -76,8 +76,6 @@ A mintavételezés árnyékolási lépés intenzitása. A magasabb értékek jobb minőséget eredményeznek, de nagyobb mértékben csökkentik a teljesítményt. Megjelenítő - Továbbfejlesztett Képkocka-időzítés - Biztosítja a képkockák sima és egyenletes kézbesítését azok időzítésének szinkronizálásával, csökkentve a megakadásokat és egyenetlen animációkat. Ideális azokhoz a játékokhoz, amelyek képkocka-időzítési instabilitást vagy mikro-reccsenést tapasztalnak játék közben. Korai kerítés-felszabadítás Segít javítani a 0 FPS-t olyan játékokban, mint a DKCR:HD, Subnautica Below Zero és az Ori 2, de ronthatja az Unreal Engine játékok betöltését vagy teljesítményét. Memória-műveletek szinkronizálása @@ -401,8 +399,6 @@ Kijelző Utófeldolgozás - Folyamatban: Képkihagyás - Kapcsolja be a képkihagyást a teljesítmény javításához a renderelt képkockák számának csökkentésével. Ez a funkció még fejlesztés alatt áll, és a jövőbeli kiadásokban lesz elérhető. Pontosság szintje Felbontás (Kézi/Dockolt) VSync mód diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index ab733dfddd..1006f6c616 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -98,8 +98,6 @@ Intensitas proses pencahayaan sampel. Nilai lebih tinggi meningkatkan kualitas lebih baik tetapi juga mengurangi performa lebih besar. Renderer - Penyelarasan Frame Tingkat Lanjut - Memastikan pengiriman frame yang halus dan konsisten dengan menyinkronkan waktu antar frame, mengurangi stuttering dan animasi tidak rata. Ideal untuk game yang mengalami ketidakstabilan waktu frame atau micro-stutter selama gameplay. Lepas Pagar Lebih Awal Membantu memperbaiki 0 FPS di game seperti DKCR:HD, Subnautica Below Zero dan Ori 2, tapi mungkin mengganggu loading atau performa di game Unreal Engine. Sinkronisasi Operasi Memori @@ -437,8 +435,6 @@ Tampilan Pascaproses - WIP: Loncatan Frame - Aktifkan atau nonaktifkan frame skipping untuk meningkatkan performa dengan mengurangi jumlah frame yang dirender. Fitur ini masih dalam pengembangan dan akan diaktifkan di rilis mendatang. Tingkatan Akurasi Resolusi (Handheld/Docked) Mode Sinkronisasi Vertikal diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index c87f627487..bd9599cb36 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -98,8 +98,6 @@ L\'intensità della passata di ombreggiatura campione. Valori più alti migliorano la qualità ma riducono maggiormente le prestazioni. Renderer - Sincronizzazione avanzata fotogrammi - Garantisce una consegna fluida e costante dei fotogrammi sincronizzandone i tempi, riducendo scatti e animazioni irregolari. Ideale per giochi che presentano instabilità nei tempi dei fotogrammi o micro-scatti durante il gameplay. Rilascia le barriere prima Risolve problemi di 0 FPS in giochi come DKCR:HD, Subnautica Below Zero e Ori 2, ma potrebbe compromettere caricamento o prestazioni in giochi Unreal Engine. Sincronizza operazioni di memoria @@ -447,8 +445,6 @@ Schermo Post-elaborazione - WIP: Salto fotogrammi - Attiva o disattiva il salto dei fotogrammi per migliorare le prestazioni riducendo il numero di fotogrammi renderizzati. Questa funzionalità è ancora in sviluppo e verrà abilitata nelle versioni future. Livello di accuratezza Risoluzione (Portatile/Docked) Modalità VSync diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index e8623a2f6b..73f20324b2 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -76,8 +76,6 @@ サンプルシェーディング処理の強度。高い値ほど品質は向上しますが、パフォーマンスも大きく低下します。 レンダラー - 高度なフレーム同期 - フレーム間のタイミングを同期させることで、スムーズで一貫したフレーム配信を確保し、カクつきや不均一なアニメーションを軽減します。フレームタイミングの不安定さやマイクロスタッターが発生するゲームに最適です。 フェンスを早期に解放 DKCR:HD、Subnautica Below Zero、Ori 2などのゲームで0 FPSを修正しますが、Unreal Engineゲームの読み込みやパフォーマンスに影響する可能性があります。 メモリ操作の同期 @@ -401,8 +399,6 @@ ディスプレイ 後処理 - WIP: フレームスキップ - フレームスキップを切り替えて、レンダリングされるフレーム数を減らしパフォーマンスを向上させます。この機能は開発中であり、今後のリリースで有効になります。 精度 解像度(携帯モード/TVモード) 垂直同期モード diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index f092596451..0004b40ce6 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -76,8 +76,6 @@ 샘플 쉐이딩 패스의 강도. 값이 높을수록 품질이 더 향상되지만 성능도 더 크게 저하됩니다. 렌더러 - 향상된 프레임 페이싱 - 프레임 간 타이밍을 동기화하여 부드럽고 일관된 프레임 전달을 보장하며, 끊김과 불균일한 애니메이션을 줄입니다. 프레임 타이밍 불안정이나 게임 플레이 중 미세 끊김이 발생하는 게임에 이상적입니다. 펜스 조기 해제 DKCR:HD, Subnautica Below Zero, Ori 2 등의 게임에서 0 FPS 현상을 해결하지만, Unreal Engine 게임의 로딩이나 성능에 문제를 일으킬 수 있습니다. 메모리 작업 동기화 @@ -401,8 +399,6 @@ 디스플레이 후처리 - 작업 중: 프레임 스킵 - 렌더링되는 프레임 수를 줄여 성능을 향상시키기 위해 프레임 스킵을 전환합니다. 이 기능은 현재 개발 중이며 향후 출시 버전에서 활성화될 예정입니다. 정확도 수준 해상도 (휴대 모드/독 모드) 수직동기화 모드 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 7424699f11..cfb459f1fb 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -76,8 +76,6 @@ Intensiteten til prøveskyggepasseringen. Høyere verdier forbedrer kvaliteten mer, men reduserer også ytelsen i større grad. Renderer - Avansert bildevindu-synkronisering - Sikrer jevn og konsekvent bildelevering ved å synkronisere tiden mellom bilder, noe som reduserer hakking og ujevn animasjon. Ideelt for spill som opplever ustabil bildetid eller mikro-hakk under spilling. Frigjør gjerder tidlig Løser 0 FPS i spill som DKCR:HD, Subnautica Below Zero og Ori 2, men kan forårsake problemer med lasting eller ytelse i Unreal Engine-spill. Synkroniser minneoperasjoner @@ -382,8 +380,6 @@ Skjerm Etterbehandling - WIP: Hoppe over bilder - Slå av/på frame skipping for å forbedre ytelsen ved å redusere antall renderte bilder. Denne funksjonen er fortsatt under utvikling og vil bli aktivert i fremtidige versjoner. Nøyaktighetsnivå Oppløsning (håndholdt/dokket) VSync-modus diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 9ff88ed8d2..b38d6c6acd 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -98,8 +98,6 @@ Intensywność przebiegu cieniowania próbki. Wyższe wartości poprawiają jakość, ale także w większym stopniu zmniejszają wydajność. Renderer - Zaawansowana synchronizacja klatek - Zapewnia płynne i spójne wyświetlanie klatek poprzez synchronizację ich czasu, redukując zacinanie i nierówną animację. Idealne dla gier z niestabilnym czasem klatek lub mikro-zacinaniem podczas rozgrywki. Wcześniejsze zwalnianie zabezpieczeń Pomaga naprawić 0 FPS w grach takich jak DKCR:HD, Subnautica Below Zero i Ori 2, ale może zaburzyć ładowanie lub wydajność w grach Unreal Engine. Synchronizuj operacje pamięci @@ -468,8 +466,6 @@ Wyświetlacz Postprocessing - WIP: Pomijanie klatek - Włącz lub wyłącz pomijanie klatek, aby poprawić wydajność poprzez zmniejszenie liczby renderowanych klatek. Ta funkcja jest wciąż w fazie rozwoju i zostanie włączona w przyszłych wersjach. Poziom precyzji emulacji Rozdzielczość (Handheld/Zadokowany) Synchronizacja pionowa VSync diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 839bd60672..78db5084f6 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -98,8 +98,6 @@ Fração de Sombreamento de Amostra: Define a intensidade do sample shading. Quanto maior, melhor a qualidade, mas maior o impacto no desempenho. Renderizador - Enhanced Frame Pacing - Sincronização Melhorada de Quadros: Sincroniza o tempo entre os quadros para uma entrega mais uniforme, reduzindo travamentos e animações irregulares. Útil em jogos que sofrem com microtravamentos ou instabilidade na taxa de frames. Release Fences Early Liberar Cercas Antecipadamente: Ajuda a corrigir 0 FPS em jogos como DKCR:HD, Subnautica Below Zero e Ori 2, mas pode prejudicar o carregamento ou o desempenho em jogos feitos com Unreal Engine. Sincronizar Operações de Memória @@ -446,8 +444,6 @@ Tela Pós-Processamento - WIP: Pular quadros - Ative ou desative o pulo de quadros para melhorar o desempenho reduzindo o número de quadros renderizados. Este recurso ainda está em desenvolvimento e será habilitado em versões futuras. Nível de precisão Resolução (Portátil/Modo TV) Modo de VSync diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index a0e68076b6..410af298db 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -76,8 +76,6 @@ A intensidade da passagem de sombreamento de amostra. Valores mais elevados melhoram a qualidade, mas também reduzem o desempenho numa maior medida. Renderizador - Sincronização avançada de frames - Garante uma entrega suave e consistente de frames sincronizando o seu tempo, reduzindo engasgadelas e animações irregulares. Ideal para jogos que experienciam instabilidade no tempo de frames ou micro-engasgadelas durante o jogo. Libertar barreiras antecipadamente Ajuda a corrigir 0 FPS em jogos como DKCR:HD, Subnautica Below Zero e Ori 2, mas pode afetar carregamento ou desempenho em jogos Unreal Engine. Sincronizar Operações de Memória @@ -405,8 +403,6 @@ Ecrã Pós-processamento - WIP: Saltar frames - Ative ou desative o salto de frames para melhorar o desempenho reduzindo o número de frames renderizados. Esta funcionalidade ainda está em desenvolvimento e será ativada em versões futuras. Nível de precisão Resolução (Portátil/Ancorado) Modo VSync diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 574c93fa72..d03e79447e 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -98,8 +98,6 @@ Интенсивность прохода сэмплового затенения. Более высокие значения улучшают качество, но и сильнее снижают производительность. Рендеринг - Улучшенная синхронизация кадров - Обеспечивает плавную и стабильную подачу кадров за счет синхронизации их времени, уменьшая подтормаживания и неравномерную анимацию. Идеально для игр с нестабильным временем кадров или микро-подтормаживаниями во время игры. Ранний релиз ограждений Помогает исправить 0 FPS в играх типа DKCR:HD, Subnautica Below Zero и Ori 2, но может нарушить загрузку или производительность в играх на Unreal Engine. Синхронизация операций с памятью @@ -466,8 +464,6 @@ Дисплей Постобработка - В разработке: Пропуск кадров - Включите или отключите пропуск кадров для повышения производительности за счет уменьшения количества отображаемых кадров. Эта функция находится в разработке и будет включена в будущих версиях. Уровень точности Разрешение (портативное/в док-станции) Режим верт. синхронизации diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index c546dbdaf3..8c9a3e1f81 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -75,8 +75,6 @@ Интензитет проласка сенчења узорка. Веће вредности побољшавају квалитет више, али такође више смањују перформансе. Рендерер - Побољшани оквирни пејсинг - Осигурава глатку и доследан испоруку оквира синхронизацијом времена између оквира, смањење муцања и неуједначене анимације. Идеално за игре које доживљавају временски оквир нестабилност или микро-штитнике током играња. Ranije oslobađanje ograda Pomaže u popravci 0 FPS u igrama kao što su DKCR:HD, Subnautica Below Zero i Ori 2, ali može oštetiti učitavanje ili performanse u Unreal Engine igrama. Синхронизација меморијских операција @@ -405,8 +403,6 @@ Приказ Постпроцесирање - ВИП: Фрамескип - Пребацивање оквира прескакање да бисте побољшали перформансе смањењем броја пружених оквира. Ова функција се и даље ради и биће омогућена у будућим издањима. Ниво тачности Резолуција (ручно / прикључено) Всинц мод diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 3209d1bd4b..62298b1531 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -98,8 +98,6 @@ Інтенсивність проходу затінення зразка. Вищі значення покращують якість, але й сильніше знижують продуктивність. Візуалізатор - Покращена синхронізація кадрів - Забезпечує плавну та стабільну подачу кадрів шляхом синхронізації їх часу, зменшуючи підвисання та нерівномірну анімацію. Ідеально для ігор з нестабільним часом кадрів або мікро-підвисаннями під час гри. Release fences early Це налаштування може бути необхідним для виправлення помилок 0FPS у деяких іграх (зокрема DKCR:HD, Subnautica та Ori 2). Водночас інші ігри, особливо створені на рушії Unreal Engine, можуть працювати некоректно або взагалі не запускатися. Синхронізація операцій з пам\'яттю @@ -468,8 +466,6 @@ Дисплей Постобробка - В розробці: Пропуск кадрів - Увімкніть або вимкніть пропуск кадрів для покращення продуктивності за рахунок зменшення кількості візуалізованих кадрів. Ця функція ще розробляється та буде доступна у майбутніх версіях. Рівень точності Роздільна здатність (Портативний/Док) Режим верт. синхронізації diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 22506f63f0..1576271530 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -76,8 +76,6 @@ Cường độ của bước tô bóng mẫu. Giá trị cao hơn cải thiện chất lượng tốt hơn nhưng cũng giảm hiệu suất nhiều hơn. Trình kết xuất - Đồng bộ khung hình nâng cao - Đảm bảo cung cấp khung hình mượt mà và ổn định bằng cách đồng bộ hóa thời gian giữa các khung hình, giảm giật lag và hoạt ảnh không đồng đều. Lý tưởng cho các trò chơi gặp vấn đề về thời gian khung hình không ổn định hoặc giật lag nhẹ trong khi chơi. Giải phóng rào chắn sớm Giúp sửa lỗi 0 FPS trong các trò chơi như DKCR:HD, Subnautica Below Zero và Ori 2, nhưng có thể ảnh hưởng đến tải hoặc hiệu suất trong trò chơi Unreal Engine. Đồng bộ hoá thao tác bộ nhớ @@ -380,8 +378,6 @@ Hiển thị Hậu xử lý - WIP: Bỏ qua khung hình - Bật hoặc tắt bỏ qua khung hình để cải thiện hiệu suất bằng cách giảm số lượng khung hình được kết xuất. Tính năng này đang được phát triển và sẽ được kích hoạt trong các bản phát hành tương lai. Mức độ chính xác Độ phân giải (Handheld/Docked) Chế độ VSync diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 3223b34221..645afc95a4 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -98,8 +98,6 @@ 采样着色处理的强度。值越高,质量改善越多,但性能降低也越明显。 渲染器 - 增强帧同步 - 通过同步帧间时间确保流畅一致的帧交付,减少卡顿和不均匀动画。适合存在帧时间不稳定或游戏过程中出现微卡顿的游戏。 提前释放围栏 可修复《大金刚国度:热带寒流》《深海迷航:零度之下》和《奥日2》等游戏中的0 FPS问题,但可能影响Unreal Engine游戏的加载或性能。 同步内存操作 @@ -443,8 +441,6 @@ 显示 后处理 - 开发中:跳帧 - 启用或禁用跳帧以减少渲染帧数,提高性能。此功能仍在开发中,将在未来版本中启用。 精度等级 分辨率 (掌机模式/主机模式) 垂直同步模式 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index d2a1115362..2d7a6b427d 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -98,8 +98,6 @@ 採樣著色處理的強度。數值越高,品質改善越多,但效能降低也越明顯。 渲染器 - 增強幀同步 - 通過同步幀間時間確保幀傳輸流暢一致,減少卡頓和不均勻動畫。適合存在幀時間不穩定或遊戲過程中出現些微卡頓的遊戲。 提前釋放圍欄 可修復《咚奇剛歸來HD》、《深海迷航:冰點之下》和《聖靈之光2》等遊戲中的0 FPS問題,但可能影響Unreal Engine遊戲的載入或效能。 同步記憶體操作 @@ -443,8 +441,6 @@ 顯示 後處理 - 開發中:跳幀 - 啟用或停用跳幀以減少渲染幀數,提高效能。此功能仍在開發中,將在未來版本中啟用。 準確度層級 解析度 (手提/底座) 垂直同步 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 9e2c42ef76..d0d4e48fd9 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -105,8 +105,6 @@ The intensity of the sample shading pass. Higher values improve quality more but also reduce performance to a greater extent. Renderer - Enhanced Frame Pacing - Ensures smooth and consistent frame delivery by synchronizing the timing between frames, reducing stuttering and uneven animation. Ideal for games that experience frame timing instability or micro-stutters during gameplay. Release Fences Early Helps fix 0 FPS in games like DKCR:HD, Subnautica Below Zero and Ori 2, but may break loading or performance in Unreal Engine games. Sync Memory Operations @@ -489,8 +487,6 @@ Display Post-Processing - WIP: Frameskip - Toggle frame skipping to improve performance by reducing the number of rendered frames. This feature is still being worked on and will be enabled in future releases. Accuracy level Resolution (Handheld/Docked) VSync mode diff --git a/src/common/settings.h b/src/common/settings.h index 674813452e..e2fa2e75d9 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -333,12 +333,7 @@ struct Values { "shader_backend", Category::Renderer, Specialization::RuntimeList}; SwitchableSetting vulkan_device{linkage, 0, "vulkan_device", Category::Renderer, Specialization::RuntimeList}; -#ifdef __ANDROID__ - SwitchableSetting frame_interpolation{linkage, true, "frame_interpolation", Category::Renderer, - Specialization::RuntimeList}; - SwitchableSetting frame_skipping{linkage, false, "frame_skipping", Category::Renderer, - Specialization::RuntimeList}; -#endif + SwitchableSetting use_disk_shader_cache{linkage, true, "use_disk_shader_cache", Category::Renderer}; SwitchableSetting optimize_spirv_output{linkage, diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index e6e72cdca7..3b47570a7e 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -180,145 +180,7 @@ RendererVulkan::~RendererVulkan() { void(device.GetLogical().WaitIdle()); } -#ifdef __ANDROID__ -class BooleanSetting { - public: -// static BooleanSetting FRAME_SKIPPING; - static BooleanSetting FRAME_INTERPOLATION; - explicit BooleanSetting(bool initial_value = false) : value(initial_value) {} - - [[nodiscard]] bool getBoolean() const { - return value; - } - - void setBoolean(bool new_value) { - value = new_value; - } - - private: - bool value; - }; - - // Initialize static members -// BooleanSetting BooleanSetting::FRAME_SKIPPING(false); - BooleanSetting BooleanSetting::FRAME_INTERPOLATION(false); - -// extern "C" JNIEXPORT jboolean JNICALL -// Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameSkippingEnabled(JNIEnv* env, jobject /* this */) { -// return static_cast(BooleanSetting::FRAME_SKIPPING.getBoolean()); -// } - - extern "C" JNIEXPORT jboolean JNICALL - Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameInterpolationEnabled(JNIEnv* env, jobject /* this */) { - return static_cast(BooleanSetting::FRAME_INTERPOLATION.getBoolean()); - } - - void RendererVulkan::InterpolateFrames(Frame* prev_frame, Frame* interpolated_frame) { - if (!prev_frame || !interpolated_frame || !prev_frame->image || !interpolated_frame->image) { - return; - } - - const auto& framebuffer_layout = render_window.GetFramebufferLayout(); - // Fixed aggressive downscale (50%) - VkExtent2D dst_extent{ - .width = framebuffer_layout.width / 2, - .height = framebuffer_layout.height / 2 - }; - - // Check if we need to recreate the destination frame - bool needs_recreation = false; // Only recreate when necessary - if (!interpolated_frame->image_view) { - needs_recreation = true; // Need to create initially - } else { - // Check if dimensions have changed - if (interpolated_frame->framebuffer) { - needs_recreation = (framebuffer_layout.width / 2 != dst_extent.width) || - (framebuffer_layout.height / 2 != dst_extent.height); - } else { - needs_recreation = true; - } - } - - if (needs_recreation) { - interpolated_frame->image = CreateWrappedImage(memory_allocator, dst_extent, swapchain.GetImageViewFormat()); - interpolated_frame->image_view = CreateWrappedImageView(device, interpolated_frame->image, swapchain.GetImageViewFormat()); - interpolated_frame->framebuffer = blit_swapchain.CreateFramebuffer( - Layout::FramebufferLayout{dst_extent.width, dst_extent.height}, - *interpolated_frame->image_view, - swapchain.GetImageViewFormat()); - } - - scheduler.RequestOutsideRenderPassOperationContext(); - scheduler.Record([&](vk::CommandBuffer cmdbuf) { - // Transition images to transfer layouts - TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); - TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); - - // Perform the downscale blit - VkImageBlit blit_region{}; - blit_region.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1}; - blit_region.srcOffsets[0] = {0, 0, 0}; - blit_region.srcOffsets[1] = { - static_cast(framebuffer_layout.width), - static_cast(framebuffer_layout.height), - 1 - }; - blit_region.dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1}; - blit_region.dstOffsets[0] = {0, 0, 0}; - blit_region.dstOffsets[1] = { - static_cast(dst_extent.width), - static_cast(dst_extent.height), - 1 - }; - - // Using the wrapper's BlitImage with proper parameters - cmdbuf.BlitImage( - *prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - *interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - blit_region, VK_FILTER_NEAREST - ); - - // Transition back to general layout - TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_GENERAL); - TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_GENERAL); - }); - } -#endif - void RendererVulkan::Composite(std::span framebuffers) { - #ifdef __ANDROID__ - static int frame_counter = 0; - static int target_fps = 60; // Target FPS (30 or 60) - int frame_skip_threshold = 1; - - bool frame_skipping = false; //BooleanSetting::FRAME_SKIPPING.getBoolean(); - bool frame_interpolation = BooleanSetting::FRAME_INTERPOLATION.getBoolean(); - #endif - - if (framebuffers.empty()) { - return; - } - - #ifdef __ANDROID__ - if (frame_skipping) { - frame_skip_threshold = (target_fps == 30) ? 2 : 2; - } - - frame_counter++; - if (frame_counter % frame_skip_threshold != 0) { - if (frame_interpolation && previous_frame) { - Frame* interpolated_frame = present_manager.GetRenderFrame(); - InterpolateFrames(previous_frame, interpolated_frame); - blit_swapchain.DrawToFrame(rasterizer, interpolated_frame, framebuffers, - render_window.GetFramebufferLayout(), swapchain.GetImageCount(), - swapchain.GetImageViewFormat()); - scheduler.Flush(*interpolated_frame->render_ready); - present_manager.Present(interpolated_frame); - } - return; - } - #endif - SCOPE_EXIT { render_window.OnFrameDisplayed(); };