feat: Add frame generation and enhance UE4 game compatibility

- Add frame generation settings (enabled/disabled, interpolation/extrapolation modes)
- Add frame skipping settings (enabled/disabled, adaptive/fixed modes)
- Implement frame skipping logic with adaptive and fixed modes
- Enhance UE4 crash handling with recovery mechanisms
- Add support for signed and float 32-bit image formats across shader backends
- Update Vulkan Validation Layers to v1.4.321.0
- Fix duplicate frame skipping options in Qt UI
- Improve memory handling for UE4 games (Hogwarts Legacy compatibility)
- Add enhanced bindless texture handling with fallback approach
- Update Android build configuration and dependencies

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-08-05 19:32:28 +10:00
parent 011a546229
commit 117c467ff3
40 changed files with 1004 additions and 76 deletions

View File

@@ -129,6 +129,14 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) {
tr("Determines how sharpened the image will look while using FSR's dynamic contrast."));
INSERT(Settings, fsr2_quality_mode, tr("FSR 2.0 Quality Mode:"),
tr("Selects the quality mode for FSR 2.0 upscaling. Quality provides better image quality, Performance provides better performance."));
INSERT(Settings, frame_generation, tr("Frame Generation:"),
tr("Enables frame generation to create intermediate frames, potentially doubling the perceived frame rate."));
INSERT(Settings, frame_generation_mode, tr("Frame Generation Mode:"),
tr("Interpolation creates frames between existing ones, while Extrapolation predicts future frames."));
INSERT(Settings, frame_skipping, tr("Frame Skipping:"),
tr("Skips frames to maintain performance when the system cannot keep up with the target frame rate."));
INSERT(Settings, frame_skipping_mode, tr("Frame Skipping Mode:"),
tr("Adaptive mode skips frames based on performance, while Fixed mode skips a specific number of frames."));
INSERT(Settings, anti_aliasing, tr("Anti-Aliasing Method:"),
tr("The anti-aliasing method to use.\nSMAA offers the best quality.\nFXAA has a "
"lower performance impact and can produce a better and more stable picture under "
@@ -411,6 +419,26 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent) {
PAIR(FSR2QualityMode, Performance, tr("Performance")),
PAIR(FSR2QualityMode, UltraPerformance, tr("Ultra Performance")),
}});
translations->insert({Settings::EnumMetadata<Settings::FrameGeneration>::Index(),
{
PAIR(FrameGeneration, Disabled, tr("Disabled")),
PAIR(FrameGeneration, Enabled, tr("Enabled")),
}});
translations->insert({Settings::EnumMetadata<Settings::FrameGenerationMode>::Index(),
{
PAIR(FrameGenerationMode, Interpolation, tr("Interpolation")),
PAIR(FrameGenerationMode, Extrapolation, tr("Extrapolation")),
}});
translations->insert({Settings::EnumMetadata<Settings::FrameSkipping>::Index(),
{
PAIR(FrameSkipping, Disabled, tr("Disabled")),
PAIR(FrameSkipping, Enabled, tr("Enabled")),
}});
translations->insert({Settings::EnumMetadata<Settings::FrameSkippingMode>::Index(),
{
PAIR(FrameSkippingMode, Adaptive, tr("Adaptive")),
PAIR(FrameSkippingMode, Fixed, tr("Fixed")),
}});
translations->insert({Settings::EnumMetadata<Settings::AspectRatio>::Index(),
{
PAIR(AspectRatio, R16_9, tr("Default (16:9)")),