mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-03-27 03:49:41 -04:00
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:
@@ -42,6 +42,7 @@ SWITCHABLE(AspectRatio, true);
|
||||
SWITCHABLE(AstcDecodeMode, true);
|
||||
SWITCHABLE(AstcRecompression, true);
|
||||
SWITCHABLE(AudioMode, true);
|
||||
SWITCHABLE(ExtendedDynamicState, true);
|
||||
SWITCHABLE(CpuBackend, true);
|
||||
SWITCHABLE(CpuAccuracy, true);
|
||||
SWITCHABLE(FullscreenMode, true);
|
||||
|
||||
@@ -64,6 +64,7 @@ SWITCHABLE(AspectRatio, true);
|
||||
SWITCHABLE(AstcDecodeMode, true);
|
||||
SWITCHABLE(AstcRecompression, true);
|
||||
SWITCHABLE(AudioMode, true);
|
||||
SWITCHABLE(ExtendedDynamicState, true);
|
||||
SWITCHABLE(CpuBackend, true);
|
||||
SWITCHABLE(CpuAccuracy, true);
|
||||
SWITCHABLE(FullscreenMode, true);
|
||||
@@ -469,6 +470,12 @@ struct Values {
|
||||
Category::RendererAdvanced};
|
||||
SwitchableSetting<bool> barrier_feedback_loops{linkage, true, "barrier_feedback_loops",
|
||||
Category::RendererAdvanced};
|
||||
SwitchableSetting<ExtendedDynamicState, true> extended_dynamic_state{linkage,
|
||||
ExtendedDynamicState::EDS3,
|
||||
ExtendedDynamicState::Disabled,
|
||||
ExtendedDynamicState::EDS3,
|
||||
"extended_dynamic_state",
|
||||
Category::RendererAdvanced};
|
||||
SwitchableSetting<bool> use_conditional_rendering{linkage, true, "use_conditional_rendering",
|
||||
Category::RendererAdvanced};
|
||||
|
||||
|
||||
@@ -853,6 +853,29 @@ inline u32 EnumMetadata<AppletMode>::Index() {
|
||||
return 25;
|
||||
}
|
||||
|
||||
enum class ExtendedDynamicState : u32 {
|
||||
Disabled = 0,
|
||||
EDS1 = 1,
|
||||
EDS2 = 2,
|
||||
EDS3 = 3,
|
||||
};
|
||||
|
||||
template <>
|
||||
inline std::vector<std::pair<std::string, ExtendedDynamicState>>
|
||||
EnumMetadata<ExtendedDynamicState>::Canonicalizations() {
|
||||
return {
|
||||
{"Disabled", ExtendedDynamicState::Disabled},
|
||||
{"EDS1", ExtendedDynamicState::EDS1},
|
||||
{"EDS2", ExtendedDynamicState::EDS2},
|
||||
{"EDS3", ExtendedDynamicState::EDS3},
|
||||
};
|
||||
}
|
||||
|
||||
template <>
|
||||
inline u32 EnumMetadata<ExtendedDynamicState>::Index() {
|
||||
return 26;
|
||||
}
|
||||
|
||||
template <typename Type>
|
||||
inline std::string CanonicalizeEnum(Type id) {
|
||||
const auto group = EnumMetadata<Type>::Canonicalizations();
|
||||
|
||||
Reference in New Issue
Block a user