renderer_vulkan: add Extended Dynamic State user setting

Add configurable EDS levels (Disabled/EDS1/EDS2/EDS3) to allow users to
troubleshoot graphics issues by controlling which Vulkan Extended Dynamic
State features are enabled. Defaults to EDS3 for maximum performance.

Implements setting in both desktop and Android frontends with proper
translations and descriptions.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-10-17 18:52:30 +10:00
parent ac21b19165
commit b85fd5fc73
10 changed files with 79 additions and 7 deletions

View File

@@ -30,7 +30,8 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
SHOW_THERMAL_OVERLAY("show_thermal_overlay"),
SHOW_RAM_METER("show_ram_meter"),
SHOW_SHADER_BUILDING_OVERLAY("show_shader_building_overlay"),
SHOW_PERFORMANCE_GRAPH("show_performance_graph");
SHOW_PERFORMANCE_GRAPH("show_performance_graph"),
USE_CONDITIONAL_RENDERING("use_conditional_rendering");
override fun getBoolean(needsGlobal: Boolean): Boolean =
NativeConfig.getBoolean(key, needsGlobal)

View File

@@ -38,6 +38,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
ASTC_RECOMPRESSION("astc_recompression"),
SHADER_BACKEND("shader_backend"),
VRAM_USAGE_MODE("vram_usage_mode"),
EXTENDED_DYNAMIC_STATE("extended_dynamic_state"),
// Applet Mode settings
CABINET_APPLET_MODE("cabinet_applet_mode"),

View File

@@ -1014,6 +1014,8 @@ class SettingsFragmentPresenter(
add(HeaderSetting(R.string.advanced_graphics_header))
add(IntSetting.SHADER_BACKEND.key)
add(IntSetting.VRAM_USAGE_MODE.key)
add(IntSetting.EXTENDED_DYNAMIC_STATE.key)
add(BooleanSetting.USE_CONDITIONAL_RENDERING.key)
add(HeaderSetting(R.string.frame_skipping_header))
add(IntSetting.FRAME_SKIPPING.key)

View File

@@ -404,6 +404,20 @@
<item>2</item>
</integer-array>
<string-array name="extendedDynamicStateNames">
<item>Disabled</item>
<item>EDS1</item>
<item>EDS2</item>
<item>EDS3</item>
</string-array>
<integer-array name="extendedDynamicStateValues">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</integer-array>
<string-array name="vramUsageModeNames">
<item>Conservative</item>
<item>Aggressive</item>

View File

@@ -1239,6 +1239,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<string name="shader_backend_description">Controls which shader backend to use for rendering.</string>
<string name="vram_usage_mode">VRAM Usage Mode</string>
<string name="vram_usage_mode_description">Controls how aggressively VRAM is used. Conservative mode limits VRAM usage for better stability.</string>
<string name="extended_dynamic_state">Extended Dynamic State</string>
<string name="extended_dynamic_state_description">Controls which Vulkan Extended Dynamic State features are enabled. EDS3 (default) enables all features for maximum compatibility. EDS2/EDS1 limit features for troubleshooting graphics issues. Disabled turns off all EDS features. Try lower settings if you experience rendering problems in some games.</string>
<string name="use_conditional_rendering">Use Conditional Rendering</string>
<string name="use_conditional_rendering_description">Enables conditional rendering based on query results. Disabling this can fix flickering objects in some games but may impact performance. Try disabling if you see objects appearing and disappearing rapidly.</string>
<string name="frame_skipping">Frame Skipping</string>
<string name="frame_skipping_description">Skips frames to maintain performance when the system cannot keep up with the target frame rate.</string>
<string name="frame_skipping_mode">Frame Skipping Mode</string>