From 9da38715fe3e84794e8f583d7706b72d13dfe2ce Mon Sep 17 00:00:00 2001 From: MaranBr Date: Tue, 9 Dec 2025 18:11:05 +0100 Subject: [PATCH] [video_core] Rework GPU Accuracy levels and remove Early Release Fences toggle (#3129) The GPU Accuracy level is now divided into Performance, Balanced and Accurate. 1. Performance prioritizes speed at all costs. It's faster, but it can be unstable and may have some bugs (which is expected). 2. Balanced maintains excellent performance and is safer against bugs and shader corruption. 3. Accurate is the most precise and the most expensive in terms of hardware. Only a few games still need this level to work properly. The Release Early Fences toggle has also been removed by @PavelBARABANOV, as it's not needed anymore. Co-authored-by: PavelBARABANOV Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3129 Reviewed-by: Caio Oliveira Reviewed-by: Maufeat Co-authored-by: MaranBr Co-committed-by: MaranBr --- .../features/settings/model/BooleanSetting.kt | 1 - .../settings/model/view/SettingsItem.kt | 7 -- .../settings/ui/SettingsFragmentPresenter.kt | 1 - .../app/src/main/res/values-ar/strings.xml | 7 -- .../app/src/main/res/values-ckb/strings.xml | 5 -- .../app/src/main/res/values-cs/strings.xml | 5 -- .../app/src/main/res/values-de/strings.xml | 5 -- .../app/src/main/res/values-es/strings.xml | 7 -- .../app/src/main/res/values-fa/strings.xml | 7 -- .../app/src/main/res/values-fr/strings.xml | 7 -- .../app/src/main/res/values-he/strings.xml | 5 -- .../app/src/main/res/values-hu/strings.xml | 5 -- .../app/src/main/res/values-id/strings.xml | 5 -- .../app/src/main/res/values-it/strings.xml | 7 -- .../app/src/main/res/values-ja/strings.xml | 5 -- .../app/src/main/res/values-ko/strings.xml | 5 -- .../app/src/main/res/values-nb/strings.xml | 5 -- .../app/src/main/res/values-pl/strings.xml | 7 -- .../src/main/res/values-pt-rBR/strings.xml | 7 -- .../src/main/res/values-pt-rPT/strings.xml | 5 -- .../app/src/main/res/values-ru/strings.xml | 7 -- .../app/src/main/res/values-sr/strings.xml | 5 -- .../app/src/main/res/values-uk/strings.xml | 7 -- .../app/src/main/res/values-vi/strings.xml | 5 -- .../src/main/res/values-zh-rCN/strings.xml | 7 -- .../src/main/res/values-zh-rTW/strings.xml | 7 -- .../app/src/main/res/values/arrays.xml | 4 +- .../app/src/main/res/values/strings.xml | 8 +-- src/common/settings.cpp | 11 ++-- src/common/settings.h | 18 ++--- src/common/settings_enums.h | 2 +- src/qt_common/config/shared_translation.cpp | 11 ++-- src/qt_common/config/shared_translation.h | 6 +- src/video_core/dma_pusher.cpp | 2 +- src/video_core/fence_manager.h | 65 +++++-------------- src/video_core/gpu_thread.cpp | 9 +-- .../renderer_opengl/gl_rasterizer.cpp | 3 - .../renderer_vulkan/vk_master_semaphore.cpp | 25 ++++++- .../renderer_vulkan/vk_query_cache.cpp | 11 +--- .../renderer_vulkan/vk_rasterizer.cpp | 3 - src/yuzu/main_window.cpp | 18 ++--- 41 files changed, 76 insertions(+), 266 deletions(-) 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 398e2ee418..2e72e15846 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 @@ -25,7 +25,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"), RENDERER_FAST_GPU("use_fast_gpu_time"), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), - RENDERER_EARLY_RELEASE_FENCES("early_release_fences"), SYNC_MEMORY_OPERATIONS("sync_memory_operations"), BUFFER_REORDER_DISABLE("disable_buffer_reorder"), RENDERER_DEBUG("debug"), 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 cc1ce41e4b..b1fe56a866 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 @@ -689,13 +689,6 @@ abstract class SettingsItem( descriptionId = R.string.renderer_reactive_flushing_description ) ) - put( - SwitchSetting( - BooleanSetting.RENDERER_EARLY_RELEASE_FENCES, - titleId = R.string.renderer_early_release_fences, - descriptionId = R.string.renderer_early_release_fences_description - ) - ) put( SwitchSetting( BooleanSetting.SYNC_MEMORY_OPERATIONS, 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 2a6929301c..80b6ddb7b2 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 @@ -460,7 +460,6 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_SAMPLE_SHADING_FRACTION.key) add(HeaderSetting(R.string.veil_renderer)) - add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key) add(IntSetting.DMA_ACCURACY.key) add(BooleanSetting.BUFFER_REORDER_DISABLE.key) add(BooleanSetting.RENDERER_FAST_GPU.key) 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 283ab0bc4d..2f94caa411 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. مزامنة عمليات الذاكرة يضمن اتساق البيانات بين عمليات الحوسبة والذاكرة. هذا الخيار قد يحل المشكلات في بعض الألعاب، ولكن قد يقلل الأداء في بعض الحالات. يبدو أن الألعاب التي تستخدم Unreal Engine 4 هي الأكثر تأثرًا. تعطيل إعادة ترتيب المخزن المؤقت @@ -880,11 +878,6 @@ Vulkan لاشيء - - عادي - عالي - أقصى - افتراضي غير آمن 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 0e6bdb9c94..c682c05923 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 تێکبدات. هاوبەشیی کردارەکانی بیرگە دڵنیایی داتا لە نێوان کردارەکانی کۆمپیوتەر و بیرگە. ئەم هەڵبژاردە کێشەکان لە هەندێک یاری چارەسەر دەکات، بەڵام لە هەندێک حاڵەت کارایی کەم دەکاتەوە. وا دیارە یارییەکانی Unreal Engine 4 زۆرترین کاریگەریان هەیە. ڕێکخستنەوەی بافر ناچالاک بکە @@ -625,9 +623,6 @@ ڤوڵکان هیچ - - ئاسایی - بەرز بنەڕەتی 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 88ef0661a6..7c88f08bf6 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 - 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í Zajišťuje konzistenci dat mezi výpočetními a paměťovými operacemi. Tato volba by měla opravit problémy v některých hrách, ale může v některých případech snížit výkon. Nejvíce postižené se zdají být hry s Unreal Engine 4. Zakázat přeřazování vyrovnávací paměti @@ -612,9 +610,6 @@ Vulkan Žádné - - Normální - Vysoká Výchozí 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 046746cfd6..7d04bd941c 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 - 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 Stellt die Datenkonsistenz zwischen Compute- und Speicheroperationen sicher. Diese Option sollte Probleme in einigen Spielen beheben, kann aber in einigen Fällen die Leistung verringern. Spiele mit Unreal Engine 4 scheinen am stärksten betroffen zu sein. Puffer-Neuanordnung deaktivieren @@ -790,9 +788,6 @@ Wirklich fortfahren? Vulkan Keiner - - Normal - Hoch Standard 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 d0b83addb1..f11e27c5fe 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 - 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 Garantiza la consistencia de los datos entre las operaciones de computación y memoria. Esta opción debería solucionar problemas en algunos juegos, pero también puede reducir el rendimiento en algunos casos. Los juegos de Unreal Engine 4 a menudo ven los cambios más significativos de los mismos. Desactivar reordenamiento de búfer @@ -839,11 +837,6 @@ Vulkan Ninguno - - Normal - Alto - Extremo - Predeterminado Inseguro 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 e4f713ec4c..ef7bdadfe2 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -65,8 +65,6 @@ پردازنده و حافظه پرده عدن تنظیمات آزمایشی برای بهبود عملکرد و قابلیت. این تنظیمات ممکن است باعث نمایش صفحه سیاه یا سایر مشکلات بازی شود. - رهاسازی حصارها زودتر - به رفع مشکل 0 فریم بر ثانیه در بازی‌هایی مانند DKCR:HD، Subnautica Below Zero و Ori 2 کمک می‌کند، اما ممکن است بارگذاری یا عملکرد بازی‌های Unreal Engine را مختل کند. همگام‌سازی عملیات حافظه اطمینان از سازگاری داده‌ها بین عملیات محاسباتی و حافظه. این گزینه ممکن است مشکلات برخی بازی‌ها را رفع کند، اما در برخی موارد ممکن است عملکرد را کاهش دهد. به نظر می‌رسد بازی‌های با Unreal Engine 4 بیشترین تأثیر را داشته باشند. غیرفعال کردن مرتب‌سازی مجدد بافر @@ -760,11 +758,6 @@ Vulkan هیچ - - معمولی - زیاد - افراطی (کند) - پیش فرض ناایمن (سریع) 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 2779558202..11f6c37c58 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 - 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 Garantit la cohérence des données entre les opérations de calcul et de mémoire. Cette option devrait résoudre les problèmes dans certains jeux, mais peut réduire les performances dans certains cas. Les jeux utilisant Unreal Engine 4 semblent être les plus affectés. Désactiver le réordonnancement du tampon @@ -852,11 +850,6 @@ Vulkan Aucune - - Normal - Haut - Extrême - Défaut Dangereux 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 c694c740ed..2935d8f2e2 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. סנכרון פעולות זיכרון מבטיח עקביות נתונים בין פעולות חישוב וזיכרון. אפשרות זו אמורה לתקן בעיות במשחקים מסוימים, אך עלולה להפחית ביצועים במקרים מסוימים. נראה שהמשחקים עם Unreal Engine 4 הם המושפעים ביותר. השבת סידור מחדש של חוצץ @@ -666,9 +664,6 @@ Vulkan אין שום דבר - - רגיל - גבוה ברירת מחדל 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 790dfb85a2..8237c12054 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ő - 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 Biztosítja az adatok konzisztenciáját a számítási és memória-műveletek között. Ez az opciónak javítania kell néhány játékban előforduló problémát, de bizonyos esetekben csökkentheti a teljesítményt. Az Unreal Engine 4-et használó játékok látszanak a legérintettebbek. Puffer újrarendezés letiltása @@ -761,9 +759,6 @@ Vulkan Nincs - - Normál - Magas Alapértelmezett 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 1006f6c616..b27b24504b 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 - 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 Memastikan konsistensi data antara operasi komputasi dan memori. Opsi ini seharusnya memperbaiki masalah di beberapa game, tetapi mungkin mengurangi performa dalam beberapa kasus. Game dengan Unreal Engine 4 tampaknya yang paling terpengaruh. Nonaktifkan Penyusunan Ulang Buffer @@ -811,9 +809,6 @@ Vulkan Tak ada - - Normal - Tinggi Bawaan 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 bd9599cb36..154e2ab954 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 - 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 Garantisce la coerenza dei dati tra le operazioni di calcolo e memoria. Questa opzione dovrebbe risolvere problemi in alcuni giochi, ma potrebbe ridurre le prestazioni in alcuni casi. I giochi con Unreal Engine 4 sembrano essere i più colpiti. Disabilita riordino buffer @@ -852,11 +850,6 @@ Vulkan Nessuna - - Normale - Alta - Estrema - Predefinito Non sicura 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 73f20324b2..0a3b0cfe56 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ゲームの読み込みやパフォーマンスに影響する可能性があります。 メモリ操作の同期 計算処理とメモリ操作間のデータ一貫性を保証します。 このオプションは一部のゲームの問題を修正しますが、場合によってはパフォーマンスが低下する可能性があります。 Unreal Engine 4のゲームが最も影響を受けるようです。 バッファの再並べ替えを無効化 @@ -666,9 +664,6 @@ Vulkan なし - - 標準 - デフォルト 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 0004b40ce6..8299024930 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 게임의 로딩이나 성능에 문제를 일으킬 수 있습니다. 메모리 작업 동기화 컴퓨팅 및 메모리 작업 간 데이터 일관성을 보장합니다. 이 옵션은 일부 게임의 문제를 해결할 수 있지만 경우에 따라 성능이 저하될 수 있습니다. Unreal Engine 4 게임이 가장 큰 영향을 받는 것으로 보입니다. 버퍼 재정렬 비활성화 @@ -720,9 +718,6 @@ Vulcan 없음 - - 보통 - 높음 기본값 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 cfb459f1fb..47d4600de4 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 - 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 Sikrer datakonsistens mellom beregnings- og minneoperasjoner. Dette alternativet bør fikse problemer i noen spill, men kan redusere ytelsen i noen tilfeller. Spill med Unreal Engine 4 ser ut til å være de mest berørte. Deaktiver bufferomorganisering @@ -638,9 +636,6 @@ Vulkan Ingen - - Normal - Høy Standard 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 b38d6c6acd..0cccbee6fe 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 - 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 Zapewnia spójność danych między operacjami obliczeniowymi i pamięciowymi. Ta opcja powinna naprawiać problemy w niektórych grach, ale może zmniejszyć wydajność w niektórych przypadkach. Gry z Unreal Engine 4 wydają się być najbardziej dotknięte. Wyłącz przestawianie bufora @@ -876,11 +874,6 @@ Vulkan Żadny - - Normalny - Wysoki - Ekstremalne - 預設 Niezalecane 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 78db5084f6..e1f310c1d2 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 - 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 Garante a consistência de dados entre operações de computação e memória. Esta opção pode corrigir problemas em alguns jogos, mas também pode reduzir o desempenho, sendo os jogos da Unreal Engine 4 os mais afetados. Desativar Reordenação de Buffers @@ -840,11 +838,6 @@ uma tentativa de mapeamento automático Vulkan Nenhum - - Normal - Alta - Extrema - Padrão Insegura 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 410af298db..d166937bee 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 - 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 Garante a consistência dos dados entre operações de computação e memória. Esta opção deve corrigir problemas em alguns jogos, mas pode reduzir o desempenho nalguns casos. Os jogos com Unreal Engine 4 parecem ser os mais afectados. Desativar reordenação de buffer @@ -773,9 +771,6 @@ uma tentativa de mapeamento automático Vulcano Nenhum - - Normal - Alto Predefinido 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 d03e79447e..4a866c8b5f 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. Синхронизация операций с памятью Обеспечивает согласованность данных между вычислительными операциями и операциями с памятью. Эта опция должна исправлять проблемы в некоторых играх, но может снижать производительность в некоторых случаях. Наиболее сильно это затрагивает игры на Unreal Engine 4. Отключить переупорядочивание буфера @@ -874,11 +872,6 @@ Vulkan Никакой - - Нормальная - Высокая - Экстрим - По умолчанию Небезопасно 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 8c9a3e1f81..141b18b578 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. Синхронизација меморијских операција Осигурава конзистентност података између рачунских и меморијских операција. Ова опција би требало да поправи проблеме у неким играма, али може смањити перформансе у неким случајевима. Чини се да су игре са Unreal Engine 4 највише погођене. Онемогући преуређивање бафера @@ -771,9 +769,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 62298b1531..e357b64a5c 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, можуть працювати некоректно або взагалі не запускатися. Синхронізація операцій з пам\'яттю Забезпечує узгодженість даних між обчислювальними операціями та операціями з пам\'яттю. Ця опція має виправляти проблеми в деяких іграх, але може знижувати продуктивність у деяких випадках. Ігри на Unreal Engine 4, здається, найбільш постраждалі. Вимкнути переупорядкування буфера @@ -876,11 +874,6 @@ Vulkan Вимкнено - - Нормальна - Висока - Екстремально - Типово Небезпечно 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 1576271530..5622702d60 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 - 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ớ Đảm bảo tính nhất quán dữ liệu giữa các thao tác tính toán và bộ nhớ. Tùy chọn này nên khắc phục sự cố trong một số trò chơi, nhưng có thể làm giảm hiệu suất trong một số trường hợp. Các trò chơi với Unreal Engine 4 có vẻ bị ảnh hưởng nhiều nhất. Tắt sắp xếp lại bộ đệm @@ -638,9 +636,6 @@ Vulkan Trống - - Trung bình - Khỏe Mặc định 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 645afc95a4..66bc406da9 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游戏的加载或性能。 同步内存操作 确保计算和内存操作之间的数据一致性。 此选项应能修复某些游戏中的问题,但在某些情况下可能会降低性能。 使用Unreal Engine 4的游戏似乎受影响最大。 禁用缓冲重排序 @@ -848,11 +846,6 @@ Vulkan - - 正常 - - 极致 - 默认 不安全 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 2d7a6b427d..1672ffa916 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遊戲的載入或效能。 同步記憶體操作 確保計算和記憶體操作之間的資料一致性。 此選項應能修復某些遊戲中的問題,但在某些情況下可能會降低效能。 使用Unreal Engine 4的遊戲似乎受影響最大。 停用緩衝區重新排序 @@ -848,11 +846,6 @@ Vulkan - - 標準 - - 極高 - 預設 不安全 diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index b1aab5351d..93fd4ff780 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -98,9 +98,9 @@ - @string/renderer_accuracy_normal + @string/renderer_accuracy_low + @string/renderer_accuracy_medium @string/renderer_accuracy_high - @string/renderer_accuracy_extreme diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index d0d4e48fd9..ef8082a849 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 - 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 Ensures data consistency between compute and memory operations. This option should fix issues in some games, but may also reduce performance in some cases. Unreal Engine 4 games often see the most significant changes thereof. Disable Buffer Reorder @@ -924,9 +922,9 @@ None - Normal - High - Extreme + Performance + Balanced + Accurate Default diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 706a899fcd..b4eafe5d22 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -149,13 +149,16 @@ void UpdateGPUAccuracy() { values.current_gpu_accuracy = values.gpu_accuracy.GetValue(); } -bool IsGPULevelExtreme() { - return values.current_gpu_accuracy == GpuAccuracy::Extreme; +bool IsGPULevelLow() { + return values.current_gpu_accuracy == GpuAccuracy::Low; +} + +bool IsGPULevelMedium() { + return values.current_gpu_accuracy == GpuAccuracy::Medium; } bool IsGPULevelHigh() { - return values.current_gpu_accuracy == GpuAccuracy::Extreme || - values.current_gpu_accuracy == GpuAccuracy::High; + return values.current_gpu_accuracy == GpuAccuracy::High; } bool IsDMALevelDefault() { diff --git a/src/common/settings.h b/src/common/settings.h index 6690411d2d..4a8d352c5f 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -414,9 +414,9 @@ struct Values { SwitchableSetting gpu_accuracy{linkage, #ifdef ANDROID - GpuAccuracy::Normal, + GpuAccuracy::Low, #else - GpuAccuracy::High, + GpuAccuracy::Medium, #endif "gpu_accuracy", Category::RendererAdvanced, @@ -424,7 +424,7 @@ struct Values { true, true}; - GpuAccuracy current_gpu_accuracy{GpuAccuracy::High}; + GpuAccuracy current_gpu_accuracy{GpuAccuracy::Medium}; SwitchableSetting dma_accuracy{linkage, DmaAccuracy::Default, @@ -457,15 +457,6 @@ struct Values { Specialization::Default, true, true}; -#ifdef ANDROID - SwitchableSetting early_release_fences{linkage, - false, - "early_release_fences", - Category::RendererAdvanced, - Specialization::Default, - true, - true}; -#endif SwitchableSetting sync_memory_operations{linkage, false, "sync_memory_operations", @@ -771,7 +762,8 @@ extern Values values; bool getDebugKnobAt(u8 i); void UpdateGPUAccuracy(); -bool IsGPULevelExtreme(); +bool IsGPULevelLow(); +bool IsGPULevelMedium(); bool IsGPULevelHigh(); bool IsDMALevelDefault(); diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index c2d443ce1c..5090349270 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -133,7 +133,7 @@ ENUM(VSyncMode, Immediate, Mailbox, Fifo, FifoRelaxed); ENUM(VramUsageMode, Conservative, Aggressive); ENUM(RendererBackend, OpenGL, Vulkan, Null); ENUM(ShaderBackend, Glsl, Glasm, SpirV); -ENUM(GpuAccuracy, Normal, High, Extreme); +ENUM(GpuAccuracy, Low, Medium, High); ENUM(DmaAccuracy, Default, Unsafe, Safe); ENUM(CpuBackend, Dynarmic, Nce); ENUM(CpuAccuracy, Auto, Accurate, Unsafe, Paranoid, Debugging); diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index 48190eda79..6609c3e357 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -277,9 +277,8 @@ std::unique_ptr InitializeTranslations(QObject* parent) INSERT(Settings, gpu_accuracy, tr("GPU Accuracy:"), - tr("Controls the GPU emulation accuracy.\nMost games render fine with Normal, but High is still " - "required for some.\nParticles tend to only render correctly with High " - "accuracy.\nExtreme should only be used as a last resort.")); + tr("Controls the GPU emulation accuracy.\nMost games render fine with Performance or Balanced modes, but Accurate is still " + "required for some.\nParticles tend to only render correctly with Accurate mode.")); INSERT(Settings, dma_accuracy, tr("DMA Accuracy:"), @@ -507,9 +506,9 @@ std::unique_ptr ComboboxEnumeration(QObject* parent) }}); translations->insert({Settings::EnumMetadata::Index(), { - PAIR(GpuAccuracy, Normal, tr("Normal")), - PAIR(GpuAccuracy, High, tr("High")), - PAIR(GpuAccuracy, Extreme, tr("Extreme")), + PAIR(GpuAccuracy, Low, tr("Performance")), + PAIR(GpuAccuracy, Medium, tr("Balanced")), + PAIR(GpuAccuracy, High, tr("Accurate")), }}); translations->insert({Settings::EnumMetadata::Index(), { diff --git a/src/qt_common/config/shared_translation.h b/src/qt_common/config/shared_translation.h index 8cc54644af..299c31eaf8 100644 --- a/src/qt_common/config/shared_translation.h +++ b/src/qt_common/config/shared_translation.h @@ -61,9 +61,9 @@ static const std::map use_docked_mode_texts_map }; static const std::map gpu_accuracy_texts_map = { - {Settings::GpuAccuracy::Normal, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Normal"))}, - {Settings::GpuAccuracy::High, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "High"))}, - {Settings::GpuAccuracy::Extreme, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Extreme"))}, + {Settings::GpuAccuracy::Low, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Performance"))}, + {Settings::GpuAccuracy::Medium, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Balanced"))}, + {Settings::GpuAccuracy::High, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Accurate"))}, }; static const std::map renderer_backend_texts_map = { diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index 7c3776f44d..af41773282 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp @@ -103,7 +103,7 @@ bool DmaPusher::Step() { ProcessCommands(headers); }; - const bool use_safe = Settings::IsDMALevelDefault() ? Settings::IsGPULevelHigh() : Settings::IsDMALevelSafe(); + const bool use_safe = Settings::IsDMALevelDefault() ? (Settings::IsGPULevelMedium() || Settings::IsGPULevelHigh()) : Settings::IsDMALevelSafe(); if (use_safe) { safe_process(); diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h index b77235f438..61e4da9609 100644 --- a/src/video_core/fence_manager.h +++ b/src/video_core/fence_manager.h @@ -72,66 +72,33 @@ public: } void SignalFence(std::function&& func) { - const bool delay_fence = Settings::IsGPULevelHigh(); - - #ifdef __ANDROID__ - const bool use_optimized = Settings::values.early_release_fences.GetValue(); - #else - constexpr bool use_optimized = false; - #endif - + if constexpr (!can_async_check) { + TryReleasePendingFences(); + } const bool should_flush = ShouldFlush(); CommitAsyncFlushes(); TFence new_fence = CreateFence(!should_flush); - - if (use_optimized) { - if (!delay_fence) { - TryReleasePendingFences(); - } - - if (delay_fence) { - guard.lock(); - uncommitted_operations.emplace_back(std::move(func)); - } - } else { - if constexpr (!can_async_check) { - TryReleasePendingFences(); - } - - if constexpr (can_async_check) { - guard.lock(); - } - - if (delay_fence) { - uncommitted_operations.emplace_back(std::move(func)); - } + if constexpr (can_async_check) { + guard.lock(); } - - pending_operations.emplace_back(std::move(uncommitted_operations)); - QueueFence(new_fence); - - if (!delay_fence) { + if (Settings::IsGPULevelLow() || (Settings::IsGPULevelMedium() && !should_flush)) { func(); + } else { + uncommitted_operations.emplace_back(std::move(func)); } - + if (!uncommitted_operations.empty()) { + pending_operations.emplace_back(std::move(uncommitted_operations)); + uncommitted_operations.clear(); + } + QueueFence(new_fence); fences.push(std::move(new_fence)); - if (should_flush) { rasterizer.FlushCommands(); } - - if (use_optimized) { - if (delay_fence) { - guard.unlock(); - cv.notify_all(); - } - } else { - if constexpr (can_async_check) { - guard.unlock(); - cv.notify_all(); - } + if constexpr (can_async_check) { + guard.unlock(); + cv.notify_all(); } - rasterizer.InvalidateGPUCache(); } diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp index af09365ec6..8d8d857a02 100644 --- a/src/video_core/gpu_thread.cpp +++ b/src/video_core/gpu_thread.cpp @@ -79,15 +79,8 @@ void ThreadManager::FlushRegion(DAddr addr, u64 size) { if (!is_async) { // Always flush with synchronous GPU mode PushCommand(FlushRegionCommand(addr, size)); - return; } - if (!Settings::IsGPULevelExtreme()) { - return; - } - auto& gpu = system.GPU(); - u64 fence = gpu.RequestFlush(addr, size); - TickGPU(); - gpu.WaitForSyncOperation(fence); + return; } void ThreadManager::TickGPU() { diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index d5ad363a5b..602509bfdb 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -629,9 +629,6 @@ void RasterizerOpenGL::ReleaseFences(bool force) { void RasterizerOpenGL::FlushAndInvalidateRegion(DAddr addr, u64 size, VideoCommon::CacheType which) { - if (Settings::IsGPULevelExtreme()) { - FlushRegion(addr, size, which); - } InvalidateRegion(addr, size, which); } diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp index e65755de64..a82e2c73fa 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp @@ -80,7 +80,9 @@ void MasterSemaphore::Wait(u64 tick) { if (!semaphore) { // If we don't support timeline semaphores, wait for the value normally std::unique_lock lk{free_mutex}; - free_cv.wait(lk, [&] { return gpu_tick.load(std::memory_order_relaxed) >= tick; }); + free_cv.wait(lk, [&] { + return gpu_tick.load(std::memory_order_acquire) >= tick; + }); return; } @@ -216,15 +218,32 @@ void MasterSemaphore::WaitThread(std::stop_token token) { wait_queue.pop(); } +#ifdef ANDROID + VkResult status; + do { + status = fence.GetStatus(); + if (status == VK_NOT_READY) { + std::this_thread::sleep_for(std::chrono::microseconds(100)); + } + } while (status == VK_NOT_READY); + + if (status == VK_SUCCESS) { + fence.Reset(); + } else { + vk::Check(status); + continue; + } +#else fence.Wait(); fence.Reset(); +#endif { std::scoped_lock lock{free_mutex}; free_queue.push_front(std::move(fence)); - gpu_tick.store(host_tick); + gpu_tick.store(host_tick, std::memory_order_release); } - free_cv.notify_one(); + free_cv.notify_all(); } } diff --git a/src/video_core/renderer_vulkan/vk_query_cache.cpp b/src/video_core/renderer_vulkan/vk_query_cache.cpp index 89e0b1114e..2b47ea7dd7 100644 --- a/src/video_core/renderer_vulkan/vk_query_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_query_cache.cpp @@ -1415,14 +1415,10 @@ bool QueryCacheRuntime::HostConditionalRenderingCompareValues(VideoCommon::Looku return false; } - const bool is_gpu_high = Settings::IsGPULevelHigh(); - if (!is_gpu_high && impl->device.GetDriverID() == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) { - return true; - } - auto driver_id = impl->device.GetDriverID(); - if (driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY || - driver_id == VK_DRIVER_ID_ARM_PROPRIETARY || driver_id == VK_DRIVER_ID_MESA_TURNIP) { + const bool is_gpu_high = Settings::IsGPULevelHigh(); + + if ((!is_gpu_high && driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) || driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY || driver_id == VK_DRIVER_ID_ARM_PROPRIETARY || driver_id == VK_DRIVER_ID_MESA_TURNIP) { return true; } @@ -1443,7 +1439,6 @@ bool QueryCacheRuntime::HostConditionalRenderingCompareValues(VideoCommon::Looku } if (!is_in_bc[0] && !is_in_bc[1]) { - // Both queries are in query cache, it's best to just flush. return true; } HostConditionalRenderingCompareBCImpl(object_1.address, equal_check); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index b66f5a0502..da101fc4b7 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -730,9 +730,6 @@ void RasterizerVulkan::ReleaseFences(bool force) { void RasterizerVulkan::FlushAndInvalidateRegion(DAddr addr, u64 size, VideoCommon::CacheType which) { - if (Settings::IsGPULevelExtreme()) { - FlushRegion(addr, size, which); - } InvalidateRegion(addr, size, which); } diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index 32f15156f7..711a5cc924 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -1267,9 +1267,6 @@ void MainWindow::InitializeWidgets() { QMenu context_menu; for (auto const& gpu_accuracy_pair : ConfigurationShared::gpu_accuracy_texts_map) { - if (gpu_accuracy_pair.first == Settings::GpuAccuracy::Extreme) { - continue; - } context_menu.addAction(gpu_accuracy_pair.second, [this, gpu_accuracy_pair] { Settings::values.gpu_accuracy.SetValue(gpu_accuracy_pair.first); UpdateGPUAccuracyButton(); @@ -3563,16 +3560,15 @@ void MainWindow::OnToggleDockedMode() { void MainWindow::OnToggleGpuAccuracy() { switch (Settings::values.gpu_accuracy.GetValue()) { - case Settings::GpuAccuracy::High: { - Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Normal); + case Settings::GpuAccuracy::Low: + Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Medium); break; - } - case Settings::GpuAccuracy::Normal: - case Settings::GpuAccuracy::Extreme: - default: { + case Settings::GpuAccuracy::Medium: Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::High); break; - } + case Settings::GpuAccuracy::High: + Settings::values.gpu_accuracy.SetValue(Settings::GpuAccuracy::Low); + break; } QtCommon::system->ApplySettings(); @@ -4260,7 +4256,7 @@ void MainWindow::UpdateGPUAccuracyButton() { const auto gpu_accuracy_text = ConfigurationShared::gpu_accuracy_texts_map.find(gpu_accuracy)->second; gpu_accuracy_button->setText(gpu_accuracy_text.toUpper()); - gpu_accuracy_button->setChecked(gpu_accuracy != Settings::GpuAccuracy::Normal); + gpu_accuracy_button->setChecked(gpu_accuracy != Settings::GpuAccuracy::Low); } void MainWindow::UpdateDockedButton() {