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

Merged
Shinmegumi merged 6 commits from dma-feature into master 2025-08-23 19:42:11 +02:00
5 changed files with 26 additions and 0 deletions
Showing only changes of commit bfb0b13ec0 - Show all commits

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

@ -452,6 +452,19 @@
<item>2</item>
</integer-array>
<string-array name="dmaAccuracyNames">
<item>@string/slider_default</item>
<item>@string/renderer_accuracy_normal</item>
<item>@string/renderer_accuracy_high</item>
<item>@string/renderer_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>