1
0
Fork 0
forked from eden-emu/eden

[video_core] Add option to control the DMA precision level at runtime (#304)

This adds an option to control the DMA precision level at runtime.

Co-authored-by: crueter <crueter@eden-emu.dev>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Reviewed-on: eden-emu/eden#304
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
This commit is contained in:
MaranBr 2025-08-23 19:42:10 +02:00 committed by crueter
parent a51953e4f9
commit 5b864d406d
Signed by untrusted user: crueter
GPG key ID: 425ACD2D4830EBC6
33 changed files with 262 additions and 4 deletions

View file

@ -27,6 +27,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
RENDERER_SCREEN_LAYOUT("screen_layout"),
RENDERER_ASPECT_RATIO("aspect_ratio"),
RENDERER_OPTIMIZE_SPIRV_OUTPUT("optimize_spirv_output"),
DMA_ACCURACY("dma_accuracy"),
AUDIO_OUTPUT_ENGINE("output_engine"),
MAX_ANISOTROPY("max_anisotropy"),
THEME("theme"),

View file

@ -602,6 +602,15 @@ abstract class SettingsItem(
valuesId = R.array.optimizeSpirvOutputValues
)
)
put(
SingleChoiceSetting(
IntSetting.DMA_ACCURACY,
titleId = R.string.dma_accuracy,
descriptionId = R.string.dma_accuracy_description,
choicesId = R.array.dmaAccuracyNames,
valuesId = R.array.dmaAccuracyValues
)
)
put(
SwitchSetting(
BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS,

View file

@ -448,6 +448,7 @@ class SettingsFragmentPresenter(
add(HeaderSetting(R.string.veil_renderer))
add(BooleanSetting.ENABLE_RAII.key)
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)

View file

@ -117,6 +117,8 @@
<string name="cpu_ticks">دورات</string>
<string name="skip_cpu_inner_invalidation">تخطي إبطال ذاكرة التخزين المؤقت الداخلية للوحدة المركزية</string>
<string name="skip_cpu_inner_invalidation_description">يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقت أثناء تحديثات الذاكرة، مما يقلل استخدام المعالج ويحسن أدائه. قد يسبب هذا أعطالاً أو تعطلًا في بعض الألعاب.</string>
<string name="dma_accuracy">مستوى DMA</string>
<string name="dma_accuracy_description">يتحكم في دقة تحديد مستوى DMA. الدقة الأعلى يمكنها إصلاح بعض المشاكل في بعض الألعاب، ولكنها قد تؤثر أيضًا على الأداء في بعض الحالات. إذا كنت غير متأكد، اتركه على الوضع الافتراضي.</string>
<!-- Memory Layouts -->
<string name="memory_4gb">4 جيجابايت (موصى به)</string>
@ -741,6 +743,12 @@
<string name="renderer_accuracy_high">عالي</string>
<string name="renderer_accuracy_extreme">Extreme (بطيء)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">افتراضي</string>
<string name="dma_accuracy_normal">عادي</string>
<string name="dma_accuracy_high">عالي</string>
<string name="dma_accuracy_extreme">مفرط</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">تیک</string>
<string name="skip_cpu_inner_invalidation">بازنەکردنی ناوەکی CPU</string>
<string name="skip_cpu_inner_invalidation_description">هەندێک لە بازنەکردنەکانی هەڵگر لە کاتی نوێکردنەوەی بیرگە دەنێرێت، کەمکردنەوەی بەکارهێنانی CPU و باشترکردنی کارایی. لەوانەیە لە هەندێک یاری کێشە درووست بکات.</string>
<string name="dma_accuracy">ئاستی DMA</string>
<string name="dma_accuracy_description">کۆنتڕۆڵی وردی ڕێکخستنی DMA دەکات. وردی زیاتر دەتوانێ هەندێک کێشە لە هەندێک یاری چارەسەر بکات، بەڵام لە هەندێک حاڵەتدا کاریگەری لەسەر کارایی هەیە. ئەگەر دڵنیا نیت، بە ڕێکخستنی بنەڕەتی بێڵە.</string>
<string name="memory_4gb">4GB (پێشنیارکراو)</string>
<string name="memory_6gb">6GB (نائاسایش)</string>
@ -688,6 +690,7 @@
<string name="fatal_error">هەڵەی کوشندە</string>
<string name="fatal_error_message">هەڵەیەکی کوشندە ڕوویدا. بۆ وردەکارییەکان لۆگەکە بپشکنە.\nبەردەوامی ئیمولەیشن لەوانەیە ببێتە هۆی تێکچوون و فڕێدانەدەرەوە.</string>
<string name="performance_warning">کوژاندنەوەی ئەم ڕێکخستنە دەبێتە هۆی کەمکردنەوەی کارایی ئیمولەیشن! بۆ باشترین ئەزموون، باشترە ئەم ڕێکخستنە چالاک بهێڵیتەوە.</string>
<!-- Region Names -->
<string name="region_japan">ژاپۆن</string>
<string name="region_usa">ئەمریکا</string>
@ -699,6 +702,7 @@
<string name="memory_byte_shorthand">B</string>
<string name="memory_gigabyte">GB</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">ڤوڵکان</string>
<string name="renderer_none">هیچ</string>
@ -708,6 +712,12 @@
<string name="renderer_accuracy_high">بەرز</string>
<string name="renderer_accuracy_extreme">ئەوپەڕ (خاو)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">بنەڕەتی</string>
<string name="dma_accuracy_normal">ئاسایی</string>
<string name="dma_accuracy_high">بەرز</string>
<string name="dma_accuracy_extreme">زۆر بەرز</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -125,6 +125,8 @@
<string name="cpu_ticks">Takty</string>
<string name="skip_cpu_inner_invalidation">Přeskočit vnitřní invalidaci CPU</string>
<string name="skip_cpu_inner_invalidation_description">Přeskočí některé invalidace mezipaměti na straně CPU během aktualizací paměti, čímž sníží zatížení CPU a zlepší jeho výkon. Může způsobit chyby nebo pády v některých hrách.</string>
<string name="dma_accuracy">Úroveň DMA</string>
<string name="dma_accuracy_description">Ovládá přesnost DMA. Vyšší přesnost může opravit problémy v některých hrách, ale může také ovlivnit výkon. Pokud si nejste jisti, ponechejte výchozí nastavení.</string>
<string name="memory_4gb">4GB (Doporučeno)</string>
<string name="memory_6gb">6GB (Nebezpečné)</string>
@ -684,6 +686,12 @@
<string name="renderer_accuracy_high">Vysoká</string>
<string name="renderer_accuracy_extreme">Extrémní (Pomalé)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Výchozí</string>
<string name="dma_accuracy_normal">Normální</string>
<string name="dma_accuracy_high">Vysoká</string>
<string name="dma_accuracy_extreme">Extrémní</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">CPU-interne Invalidierung überspringen</string>
<string name="skip_cpu_inner_invalidation_description">Überspringt bestimmte Cache-Invalidierungen auf CPU-Seite während Speicherupdates, reduziert die CPU-Auslastung und verbessert die Leistung. Kann in einigen Spielen zu Fehlern oder Abstürzen führen.</string>
<string name="dma_accuracy">DMA-Level</string>
<string name="dma_accuracy_description">Steuert die DMA-Präzisionsgenauigkeit. Eine höhere Präzision kann Probleme in einigen Spielen beheben, kann aber in einigen Fällen auch die Leistung beeinträchtigen. Im Zweifel auf „Standard“ belassen.</string>
<string name="memory_4gb">4 GB (Empfohlen)</string>
<string name="memory_6gb">6 GB (Unsicher)</string>
@ -770,6 +772,12 @@ Wirklich fortfahren?</string>
<string name="renderer_accuracy_high">Hoch</string>
<string name="renderer_accuracy_extreme">Extrem (Langsam)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Standard</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Hoch</string>
<string name="dma_accuracy_extreme">Extrem</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">Omitir invalidación interna de la CPU</string>
<string name="skip_cpu_inner_invalidation_description">Omite ciertas invalidaciones de caché durante actualizaciones de memoria, reduciendo el uso de CPU y mejorando su rendimiento. Puede causar fallos en algunos juegos.</string>
<string name="dma_accuracy">Nivel de DMA</string>
<string name="dma_accuracy_description">Controla la precisión del DMA. Una mayor precisión puede solucionar problemas en algunos juegos, pero también puede afectar el rendimiento en algunos casos. Si no está seguro, déjelo en Predeterminado.</string>
<string name="memory_4gb">4GB (Recomendado)</string>
<string name="memory_6gb">6GB (Inseguro)</string>
@ -819,6 +821,12 @@
<string name="renderer_accuracy_high">Alto</string>
<string name="renderer_accuracy_extreme">Extremo (Lento)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Predeterminado</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Alto</string>
<string name="dma_accuracy_extreme">Extremo</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">تیک‌ها</string>
<string name="skip_cpu_inner_invalidation">رد کردن ابطال داخلی CPU</string>
<string name="skip_cpu_inner_invalidation_description">بعضی ابطال‌های حافظه نهان در هنگام به‌روزرسانی‌های حافظه را رد می‌کند، استفاده از CPU را کاهش داده و عملکرد آن را بهبود می‌بخشد. ممکن است در برخی بازی‌ها باعث مشکلات یا خرابی شود.</string>
<string name="dma_accuracy">سطح DMA</string>
<string name="dma_accuracy_description">دقت صحت DMA را کنترل می کند. دقت بالاتر می تواند مشکلات برخی بازی ها را برطرف کند، اما در برخی موارد نیز می تواند بر عملکرد تأثیر بگذارد. اگر مطمئن نیستید، آن را روی پیش فرض بگذارید.</string>
<string name="memory_4gb">4 گیگابایت (توصیه شده)</string>
<string name="memory_6gb">6 گیگابایت (ناامن)</string>
@ -818,6 +820,12 @@
<string name="renderer_accuracy_high">زیاد</string>
<string name="renderer_accuracy_extreme">افراطی (کند)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">پیش فرض</string>
<string name="dma_accuracy_normal">معمولی</string>
<string name="dma_accuracy_high">بالا</string>
<string name="dma_accuracy_extreme">فوق العاده</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">Ignorer l\'invalidation interne du CPU</string>
<string name="skip_cpu_inner_invalidation_description">Ignore certaines invalidations de cache côté CPU lors des mises à jour mémoire, réduisant l\'utilisation du CPU et améliorant ses performances. Peut causer des bugs ou plantages sur certains jeux.</string>
<string name="dma_accuracy">Niveau DMA</string>
<string name="dma_accuracy_description">Contrôle la précision du DMA. Une précision plus élevée peut résoudre les problèmes dans certains jeux, mais peut aussi affecter les performances dans certains cas. Si vous n\'êtes pas sûr, laissez-la sur Défaut.</string>
<string name="memory_4gb">4 Go (Recommandé)</string>
<string name="memory_6gb">6 Go (Dangereux)</string>
@ -867,6 +869,12 @@
<string name="renderer_accuracy_high">Haut</string>
<string name="renderer_accuracy_extreme">Extrême (Lent)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Défaut</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Élevé</string>
<string name="dma_accuracy_extreme">Extrême</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -127,6 +127,8 @@
<string name="cpu_ticks">טיקים</string>
<string name="skip_cpu_inner_invalidation">דלג על איפוס מטמון פנימי של המעבד</string>
<string name="skip_cpu_inner_invalidation_description">מדלג על איפוסי מטמון מסוימים במהלך עדכוני זיכרון, מפחית שימוש במעבד ומשפר ביצועים. עלול לגרום לתקלות או קריסות בחלק מהמשחקים.</string>
<string name="dma_accuracy">רמת DMA</string>
<string name="dma_accuracy_description">שולטת בדיוק הדיוק של DMA. דיוק גבוה יותר יכול לתקן בעיות בחלק מהמשחקים, אך הוא עלול גם להשפיע על הביצועים במקרים מסוימים. אם אינך בטוח, השאר ברירת מחדל.</string>
<string name="memory_4gb">4GB (מומלץ)</string>
<string name="memory_6gb">6GB (לא בטוח)</string>
@ -749,6 +751,12 @@
<string name="renderer_accuracy_high">גבוה</string>
<string name="renderer_accuracy_extreme">אקסטרים (איטי)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">ברירת מחדל</string>
<string name="dma_accuracy_normal">רגיל</string>
<string name="dma_accuracy_high">גבוה</string>
<string name="dma_accuracy_extreme">קיצוני</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Tick-ek</string>
<string name="skip_cpu_inner_invalidation">CPU belső érvénytelenítés kihagyása</string>
<string name="skip_cpu_inner_invalidation_description">Kihagy néhány CPU-oldali gyorsítótár-érvénytelenítést memóriafrissítések közben, csökkentve a CPU használatát és javítva a teljesítményt. Néhány játékban hibákat vagy összeomlást okozhat.</string>
<string name="dma_accuracy">DMA szint</string>
<string name="dma_accuracy_description">Szabályozza a DMA pontosságát. A magasabb pontosság megoldhat néhány játék problémáit, de bizonyos esetekben befolyásolhatja a teljesítményt. Ha bizonytalan, hagyja Alapértelmezett beállításnál.</string>
<string name="memory_4gb">4GB (Ajánlott)</string>
<string name="memory_6gb">6GB (Nem biztonságos)</string>
@ -856,6 +858,12 @@
<string name="renderer_accuracy_high">Magas</string>
<string name="renderer_accuracy_extreme">Extrém (Lassú)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Alapértelmezett</string>
<string name="dma_accuracy_normal">Normál</string>
<string name="dma_accuracy_high">Magas</string>
<string name="dma_accuracy_extreme">Extrém</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">Lewati Pembatalan Internal CPU</string>
<string name="skip_cpu_inner_invalidation_description">Melewati beberapa pembatalan cache sisi CPU selama pembaruan memori, mengurangi penggunaan CPU dan meningkatkan kinerjanya. Mungkin menyebabkan gangguan atau crash pada beberapa game.</string>
<string name="dma_accuracy">Level DMA</string>
<string name="dma_accuracy_description">Mengontrol akurasi presisi DMA. Presisi yang lebih tinggi dapat memperbaiki masalah di beberapa game, tetapi juga dapat memengaruhi performa dalam beberapa kasus. Jika tidak yakin, biarkan di Bawaan.</string>
<string name="memory_4gb">4GB (Direkomendasikan)</string>
<string name="memory_6gb">6GB (Tidak Aman)</string>
@ -811,6 +813,12 @@
<string name="renderer_accuracy_high">Tinggi</string>
<string name="renderer_accuracy_extreme">Ekstrim (Lambat)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Bawaan</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Tinggi</string>
<string name="dma_accuracy_extreme">Ekstrem</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Tick</string>
<string name="skip_cpu_inner_invalidation">Salta invalidamento interno CPU</string>
<string name="skip_cpu_inner_invalidation_description">Salta alcuni invalidamenti della cache lato CPU durante gli aggiornamenti di memoria, riducendo l\'uso della CPU e migliorandone le prestazioni. Potrebbe causare glitch o crash in alcuni giochi.</string>
<string name="dma_accuracy">Livello DMA</string>
<string name="dma_accuracy_description">Controlla la precisione del DMA. Una precisione più alta può risolvere problemi in alcuni giochi, ma in alcuni casi può influire sulle prestazioni. Se non sei sicuro, lascia su Predefinito.</string>
<string name="memory_4gb">4GB (Consigliato)</string>
<string name="memory_6gb">6GB (Non sicuro)</string>
@ -780,6 +782,12 @@
<string name="renderer_accuracy_high">Alta</string>
<string name="renderer_accuracy_extreme">Estrema (Lenta)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Predefinito</string>
<string name="dma_accuracy_normal">Normale</string>
<string name="dma_accuracy_high">Alto</string>
<string name="dma_accuracy_extreme">Estremo</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">ティック</string>
<string name="skip_cpu_inner_invalidation">CPU内部無効化をスキップ</string>
<string name="skip_cpu_inner_invalidation_description">メモリ更新時のCPU側キャッシュ無効化をスキップし、CPU使用率を減らして性能を向上させます。一部のゲームで不具合やクラッシュが発生する可能性があります。</string>
<string name="dma_accuracy">DMAレベル</string>
<string name="dma_accuracy_description">DMAの精度を制御します。精度を高くすると一部のゲームの問題が修正される場合がありますが、場合によってはパフォーマンスに影響を与える可能性もあります。不明な場合は、デフォルトのままにしてください。</string>
<string name="memory_4gb">4GB (推奨)</string>
<string name="memory_6gb">6GB (安全でない)</string>
@ -739,6 +741,12 @@
<string name="renderer_accuracy_high"></string>
<string name="renderer_accuracy_extreme">最高 (低速)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">デフォルト</string>
<string name="dma_accuracy_normal">標準</string>
<string name="dma_accuracy_high"></string>
<string name="dma_accuracy_extreme">最高</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks"></string>
<string name="skip_cpu_inner_invalidation">CPU 내부 무효화 건너뛰기</string>
<string name="skip_cpu_inner_invalidation_description">메모리 업데이트 시 일부 CPU 측 캐시 무효화를 건너뛰어 CPU 사용량을 줄이고 성능을 향상시킵니다. 일부 게임에서 오류 또는 충돌을 일으킬 수 있습니다.</string>
<string name="dma_accuracy">DMA 수준</string>
<string name="dma_accuracy_description">DMA 정밀도를 제어합니다. 높은 정밀도는 일부 게임의 문제를 해결할 수 있지만 경우에 따라 성능에 영향을 미칠 수도 있습니다. 확실하지 않다면 기본값으로 두세요.</string>
<string name="memory_4gb">4GB (권장)</string>
<string name="memory_6gb">6GB (안전하지 않음)</string>
@ -810,6 +812,12 @@
<string name="renderer_accuracy_high">높음</string>
<string name="renderer_accuracy_extreme">극한 (느림)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">기본값</string>
<string name="dma_accuracy_normal">보통</string>
<string name="dma_accuracy_high">높음</string>
<string name="dma_accuracy_extreme">극단적</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Takter</string>
<string name="skip_cpu_inner_invalidation">Hopp over CPU intern invalidering</string>
<string name="skip_cpu_inner_invalidation_description">Hopper over enkelte CPU-side cache-invalideringer under minneoppdateringer, reduserer CPU-bruk og forbedrer ytelsen. Kan forårsake feil eller krasj i noen spill.</string>
<string name="dma_accuracy">DMA-nivå</string>
<string name="dma_accuracy_description">Styrer DMA-presisjonsnøyaktigheten. Høyere presisjon kan fikse problemer i noen spill, men kan også påvirke ytelsen i noen tilfeller. Hvis du er usikker, la den stå på Standard.</string>
<string name="memory_4gb">4GB (Anbefalt)</string>
<string name="memory_6gb">6GB (Usikkert)</string>
@ -698,6 +700,7 @@
<string name="fatal_error">Fatal Feil</string>
<string name="fatal_error_message">Det oppstod en fatal feil. Sjekk loggen for mer informasjon.\nFortsatt emulering kan føre til krasj og feil.</string>
<string name="performance_warning">Hvis du slår av denne innstillingen, reduseres emuleringsytelsen betydelig! Vi anbefaler at du lar denne innstillingen være aktivert for å få den beste opplevelsen.</string>
<!-- Region Names -->
<string name="region_japan">Japan</string>
<string name="region_usa">USA</string>
@ -709,6 +712,7 @@
<string name="memory_byte_shorthand">B</string>
<string name="memory_gigabyte">GB</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Ingen</string>
@ -718,6 +722,12 @@
<string name="renderer_accuracy_high">Høy</string>
<string name="renderer_accuracy_extreme">Ekstrem (Treg)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Standard</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Høy</string>
<string name="dma_accuracy_extreme">Ekstrem</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Takty</string>
<string name="skip_cpu_inner_invalidation">Pomiń wewnętrzne unieważnienie CPU</string>
<string name="skip_cpu_inner_invalidation_description">Pomija niektóre unieważnienia pamięci podręcznej po stronie CPU podczas aktualizacji pamięci, zmniejszając użycie CPU i poprawiając jego wydajność. Może powodować błędy lub awarie w niektórych grach.</string>
<string name="dma_accuracy">Poziom DMA</string>
<string name="dma_accuracy_description">Kontroluje dokładność precyzji DMA. Wyższy poziom może naprawić problemy w niektórych grach, ale może również wpłynąć na wydajność. Jeśli nie jesteś pewien, pozostaw wartość «Domyślny».</string>
<string name="memory_4gb">4GB (Zalecane)</string>
<string name="memory_6gb">6GB (Niebezpieczne)</string>
@ -707,6 +709,7 @@
<string name="memory_byte_shorthand">B</string>
<string name="memory_gigabyte">GB</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Żadny</string>
@ -716,6 +719,12 @@
<string name="renderer_accuracy_high">Wysoki</string>
<string name="renderer_accuracy_extreme">Ekstremalny (Wolny)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">預設</string>
<string name="dma_accuracy_normal">普通</string>
<string name="dma_accuracy_high"></string>
<string name="dma_accuracy_extreme">極高</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">Pular invalidação interna da CPU</string>
<string name="skip_cpu_inner_invalidation_description">Ignora algumas invalidações de cache do lado da CPU durante atualizações de memória, reduzindo o uso da CPU e melhorando seu desempenho. Pode causar falhas ou travamentos em alguns jogos.</string>
<string name="dma_accuracy">Nível DMA</string>
<string name="dma_accuracy_description">Controla a precisão do DMA. Maior precisão pode corrigir problemas em alguns jogos, mas também pode impactar o desempenho em alguns casos. Se não tiver certeza, deixe em Padrão.</string>
<string name="memory_4gb">4GB (Recomendado)</string>
<string name="memory_6gb">6GB (Inseguro)</string>
@ -868,6 +870,12 @@ uma tentativa de mapeamento automático</string>
<string name="renderer_accuracy_high">Alta</string>
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Padrão</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Alto</string>
<string name="dma_accuracy_extreme">Extremo</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Ticks</string>
<string name="skip_cpu_inner_invalidation">Ignorar invalidação interna da CPU</string>
<string name="skip_cpu_inner_invalidation_description">Ignora algumas invalidações de cache do lado da CPU durante atualizações de memória, reduzindo a utilização da CPU e melhorando o desempenho. Pode causar falhas ou crashes em alguns jogos.</string>
<string name="dma_accuracy">Nível DMA</string>
<string name="dma_accuracy_description">Controla a precisão do DMA. Maior precisão pode corrigir problemas em alguns jogos, mas também pode afetar o desempenho nalguns casos. Se não tiver a certeza, deixe em Predefinido.</string>
<string name="memory_4gb">4GB (Recomendado)</string>
<string name="memory_6gb">6GB (Inseguro)</string>
@ -868,6 +870,12 @@ uma tentativa de mapeamento automático</string>
<string name="renderer_accuracy_high">Alto</string>
<string name="renderer_accuracy_extreme">Estremo (Lento)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Predefinido</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">Alto</string>
<string name="dma_accuracy_extreme">Extremo</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Такты</string>
<string name="skip_cpu_inner_invalidation">Пропустить внутреннюю инвалидацию ЦП</string>
<string name="skip_cpu_inner_invalidation_description">Пропускает некоторые инвалидации кэша на стороне ЦП при обновлениях памяти, уменьшая нагрузку на процессор и повышая производительность. Может вызывать сбои в некоторых играх.</string>
<string name="dma_accuracy">Уровень DMA</string>
<string name="dma_accuracy_description">Управляет точностью DMA. Более высокий уровень может исправить проблемы в некоторых играх, но также может повлиять на производительность. Если не уверены, оставьте значение «По умолчанию».</string>
<string name="memory_4gb">4 ГБ (Рекомендуется)</string>
<string name="memory_6gb">6 ГБ (Небезопасно)</string>
@ -869,6 +871,12 @@
<string name="renderer_accuracy_high">Высокая</string>
<string name="renderer_accuracy_extreme">Экстрим (медленный)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">По умолчанию</string>
<string name="dma_accuracy_normal">Нормальный</string>
<string name="dma_accuracy_high">Высокий</string>
<string name="dma_accuracy_extreme">Экстремальный</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -119,6 +119,8 @@
<string name="cpu_ticks">Тактови</string>
<string name="skip_cpu_inner_invalidation">Preskoči unutrašnje poništavanje CPU-a</string>
<string name="skip_cpu_inner_invalidation_description">Preskače određena poništavanja keša na strani CPU-a tokom ažuriranja memorije, smanjujući opterećenje procesora i poboljšavajući performanse. Može izazvati greške u nekim igrama.</string>
<string name="dma_accuracy">DMA ниво</string>
<string name="dma_accuracy_description">Контролише тачност DMA прецизности. Виши ниво може да поправи проблеме у неким играма, али може и да утиче на перформансе. Ако нисте сигурни, оставите на «Подразумевано».</string>
<!-- Shader Backend -->
<string name="shader_backend">Схадер Бацкенд</string>
@ -864,6 +866,12 @@
<string name="renderer_accuracy_high">Високо</string>
<string name="renderer_accuracy_extreme">Екстремни (спор)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Подразумевано</string>
<string name="dma_accuracy_normal">Нормално</string>
<string name="dma_accuracy_high">Високо</string>
<string name="dma_accuracy_extreme">Екстремно</string>
<!-- ASTC Decoding Method -->
<string name="accelerate_astc">АСТЦ метода декодирања</string>
<string name="accelerate_astc_description">Изаберите како су текстуре са компримираним текстовима декодиране за приказивање: ЦПУ (споро, сигуран), ГПУ (Фаст, Препоручи) или ЦПУ АСИНЦ (без затезача, могу да изазове питања)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Такти</string>
<string name="skip_cpu_inner_invalidation">Пропустити внутрішнє інвалідування CPU</string>
<string name="skip_cpu_inner_invalidation_description">Пропускає деякі інвалідації кешу на стороні CPU під час оновлення пам\'яті, зменшуючи навантаження на процесор і покращуючи продуктивність. Може спричинити збої в деяких іграх.</string>
<string name="dma_accuracy">Рівень DMA</string>
<string name="dma_accuracy_description">Керує точністю DMA. Вищий рівень може виправити проблеми в деяких іграх, але також може вплинути на продуктивність. Якщо не впевнені, залиште значення «Типово».</string>
<string name="memory_4gb">4 ГБ (Рекомендовано)</string>
<string name="memory_6gb">6 ГБ (Небезпечно)</string>
@ -735,6 +737,12 @@
<string name="renderer_accuracy_high">Висока</string>
<string name="renderer_accuracy_extreme">Екстрим (повільно)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Типово</string>
<string name="dma_accuracy_normal">Нормальний</string>
<string name="dma_accuracy_high">Високий</string>
<string name="dma_accuracy_extreme">Екстремальний</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -126,6 +126,8 @@
<string name="cpu_ticks">Tích</string>
<string name="skip_cpu_inner_invalidation">Bỏ qua vô hiệu hóa bên trong CPU</string>
<string name="skip_cpu_inner_invalidation_description">Bỏ qua một số lần vô hiệu hóa bộ nhớ đệm phía CPU trong khi cập nhật bộ nhớ, giảm mức sử dụng CPU và cải thiện hiệu suất. Có thể gây ra lỗi hoặc treo máy trong một số trò chơi.</string>
<string name="dma_accuracy">Cấp độ DMA</string>
<string name="dma_accuracy_description">Điều khiển độ chính xác của DMA. Độ chính xác cao hơn có thể sửa lỗi trong một số trò chơi, nhưng cũng có thể ảnh hưởng đến hiệu suất trong một số trường hợp. Nếu không chắc chắn, hãy để ở Mặc định.</string>
<string name="memory_4gb">4GB (Được đề xuất)</string>
<string name="memory_6gb">6GB (Không an toàn)</string>
@ -701,6 +703,7 @@
<string name="fatal_error">Lỗi nghiêm trọng</string>
<string name="fatal_error_message">Đã xảy ra lỗi nghiêm trọng. Kiểm tra nhật ký để biết chi tiết.\nViệc tiếp tục giả lập có thể dẫn đến sự cố và lỗi.</string>
<string name="performance_warning">Tắt cài đặt này sẽ làm giảm đáng kể hiệu suất giả lập! Để có trải nghiệm tốt nhất, bạn nên bật cài này.</string>
<!-- Region Names -->
<string name="region_japan">Nhật Bản</string>
<string name="region_usa">Hoa Kỳ</string>
@ -712,6 +715,7 @@
<string name="memory_byte_shorthand">B</string>
<string name="memory_gigabyte">GB</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Trống</string>
@ -721,6 +725,12 @@
<string name="renderer_accuracy_high">Khỏe</string>
<string name="renderer_accuracy_extreme">Tối đa (Chậm)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Mặc định</string>
<string name="dma_accuracy_normal">Bình thường</string>
<string name="dma_accuracy_high">Cao</string>
<string name="dma_accuracy_extreme">Cực cao</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -125,6 +125,8 @@
<string name="cpu_ticks">时钟</string>
<string name="skip_cpu_inner_invalidation">跳过CPU内部无效化</string>
<string name="skip_cpu_inner_invalidation_description">在内存更新期间跳过某些CPU端缓存无效化减少CPU使用率并提高其性能。可能会导致某些游戏出现故障或崩溃。</string>
<string name="dma_accuracy">DMA 级别</string>
<string name="dma_accuracy_description">控制 DMA 精度。更高的精度可以修复某些游戏中的问题,但在某些情况下也可能影响性能。如果不确定,请保留为“默认”。</string>
<string name="memory_4gb">4GB (推荐)</string>
<string name="memory_6gb">6GB (不安全)</string>
@ -861,6 +863,12 @@
<string name="renderer_accuracy_high"></string>
<string name="renderer_accuracy_extreme">极高 (慢速)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">默认</string>
<string name="dma_accuracy_normal">普通</string>
<string name="dma_accuracy_high"></string>
<string name="dma_accuracy_extreme">极高</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -118,6 +118,8 @@
<string name="cpu_ticks">時脈</string>
<string name="skip_cpu_inner_invalidation">跳過CPU內部無效化</string>
<string name="skip_cpu_inner_invalidation_description">在記憶體更新期間跳過某些CPU端快取無效化減少CPU使用率並提高其性能。可能會導致某些遊戲出現故障或崩潰。</string>
<string name="dma_accuracy">DMA 級別</string>
<string name="dma_accuracy_description">控制 DMA 精確度。更高的精確度可以修復某些遊戲中的問題,但在某些情況下也可能影響效能。如果不確定,請保留為「預設」。</string>
<!-- Memory Layouts -->
<string name="memory_4gb">4GB (推薦)</string>
@ -866,6 +868,12 @@
<string name="renderer_accuracy_high"></string>
<string name="renderer_accuracy_extreme">極高 (慢)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">預設</string>
<string name="dma_accuracy_normal">普通</string>
<string name="dma_accuracy_high"></string>
<string name="dma_accuracy_extreme">極高</string>
<!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string>

View file

@ -452,6 +452,19 @@
<item>2</item>
</integer-array>
<string-array name="dmaAccuracyNames">
<item>@string/dma_accuracy_default</item>
<item>@string/dma_accuracy_normal</item>
<item>@string/dma_accuracy_high</item>
<item>@string/dma_accuracy_extreme</item>
</string-array>
<integer-array name="dmaAccuracyValues">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</integer-array>
<string-array name="appletEntries">
<item>@string/applet_hle</item>
<item>@string/applet_lle</item>

View file

@ -113,6 +113,8 @@
<string name="fast_cpu_time_description">Use Boost (1700MHz) to run at the Switch\'s highest native clock, or Fast (2000MHz) to run at 2x clock.</string>
<string name="memory_layout">Memory Layout</string>
<string name="memory_layout_description">(EXPERIMENTAL) Change the emulated memory layout. This setting will not increase performance, but may help with games utilizing high resolutions via mods. Do not use on phones with 8GB of RAM or less. Only works on the Dynarmic (JIT) backend.</string>
<string name="dma_accuracy">DMA Level</string>
<string name="dma_accuracy_description">Controls the DMA precision accuracy. Higher precision can fix issues in some games, but it can also impact performance in some cases. If unsure, leave it at Default.</string>
<!-- Shader Backend -->
<string name="shader_backend">Shader Backend</string>
@ -932,6 +934,12 @@
<string name="renderer_accuracy_high">High</string>
<string name="renderer_accuracy_extreme">Extreme (Slow)</string>
<!-- DMA Accuracy -->
<string name="dma_accuracy_default">Default</string>
<string name="dma_accuracy_normal">Normal</string>
<string name="dma_accuracy_high">High</string>
<string name="dma_accuracy_extreme">Extreme</string>
<!-- ASTC Decoding Method -->
<string name="accelerate_astc">ASTC Decoding Method</string>
<string name="accelerate_astc_description">Pick how ASTC-compressed textures are decoded for rendering: CPU (slow, safe), GPU (fast, recommended), or CPU Async (no stutters, may cause issues)</string>

View file

@ -427,7 +427,19 @@ struct Values {
Specialization::Default,
true,
true};
GpuAccuracy current_gpu_accuracy{GpuAccuracy::High};
SwitchableSetting<DmaAccuracy, true> dma_accuracy{linkage,
DmaAccuracy::Default,
DmaAccuracy::Default,
DmaAccuracy::Extreme,
"dma_accuracy",
Category::RendererAdvanced,
Specialization::Default,
true,
true};
SwitchableSetting<AnisotropyMode, true> max_anisotropy{linkage,
#ifdef ANDROID
AnisotropyMode::Default,

View file

@ -136,6 +136,8 @@ ENUM(ShaderBackend, Glsl, Glasm, SpirV);
ENUM(GpuAccuracy, Normal, High, Extreme);
ENUM(DmaAccuracy, Default, Normal, High, Extreme);
ENUM(CpuBackend, Dynarmic, Nce);
ENUM(CpuAccuracy, Auto, Accurate, Unsafe, Paranoid);

View file

@ -102,9 +102,18 @@ bool DmaPusher::Step() {
ProcessCommands(headers);
};
if (Settings::IsGPULevelExtreme()) {
const Settings::DmaAccuracy accuracy = Settings::values.dma_accuracy.GetValue();
const bool use_gpu_accuracy = accuracy == Settings::DmaAccuracy::Default;
// reduces eye bleeding but also macros are dumb so idk
#define CHECK_LEVEL(level) use_gpu_accuracy ? Settings::IsGPULevel##level() : accuracy == Settings::DmaAccuracy::level;
const bool force_safe = CHECK_LEVEL(Extreme)
const bool unsafe_compute = CHECK_LEVEL(High)
#undef CHECK_LEVEL
if (force_safe) {
safe_process();
} else if (Settings::IsGPULevelHigh()) {
} else if (unsafe_compute) {
if (dma_state.method >= MacroRegistersStart) {
unsafe_process();
} else {

View file

@ -288,12 +288,16 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent)
"and safe to set at 16x on most GPUs."));
INSERT(Settings,
gpu_accuracy,
tr("Accuracy Level:"),
tr("GPU emulation accuracy.\nMost games render fine with Normal, but High is still "
tr("GPU Level:"),
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 for debugging.\nThis option can "
"be changed while playing.\nSome games may require booting on high to render "
"properly."));
INSERT(Settings,
dma_accuracy,
tr("DMA Level:"),
tr("Controls the DMA precision accuracy. Higher precision can fix issues in some games, but it can also impact performance in some cases.\nIf unsure, leave it at Default."));
INSERT(Settings,
use_asynchronous_shaders,
tr("Use asynchronous shader building (Hack)"),
@ -522,6 +526,13 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent)
PAIR(GpuAccuracy, High, tr("High")),
PAIR(GpuAccuracy, Extreme, tr("Extreme")),
}});
translations->insert({Settings::EnumMetadata<Settings::DmaAccuracy>::Index(),
{
PAIR(DmaAccuracy, Default, tr("Default")),
PAIR(DmaAccuracy, Normal, tr("Normal")),
PAIR(DmaAccuracy, High, tr("High")),
PAIR(DmaAccuracy, Extreme, tr("Extreme")),
}});
translations->insert(
{Settings::EnumMetadata<Settings::CpuAccuracy>::Index(),
{

View file

@ -270,6 +270,7 @@ Q_DECLARE_METATYPE(UISettings::GameDir*);
// These metatype declarations cannot be in common/settings.h because core is devoid of QT
Q_DECLARE_METATYPE(Settings::CpuAccuracy);
Q_DECLARE_METATYPE(Settings::GpuAccuracy);
Q_DECLARE_METATYPE(Settings::DmaAccuracy);
Q_DECLARE_METATYPE(Settings::FullscreenMode);
Q_DECLARE_METATYPE(Settings::NvdecEmulation);
Q_DECLARE_METATYPE(Settings::ResolutionSetup);