feat(graphics): add 0.25X quarter resolution downscaling

- Add Res1_4X resolution setup with down_shift=2
- Mark as EXPERIMENTAL in UI labels
- Support on both Qt and Android frontends

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-10-11 13:32:27 +10:00
parent bdd2875642
commit 0c5c1bbf7f
4 changed files with 8 additions and 1 deletions

View File

@@ -616,6 +616,7 @@
<string name="renderer_accuracy_extreme">Extreme (Slow)</string> <string name="renderer_accuracy_extreme">Extreme (Slow)</string>
<!-- Resolutions --> <!-- Resolutions -->
<string name="resolution_quarter">0.25X (180p/270p)</string>
<string name="resolution_half">0.5X (360p/540p)</string> <string name="resolution_half">0.5X (360p/540p)</string>
<string name="resolution_three_quarter">0.75X (540p/810p)</string> <string name="resolution_three_quarter">0.75X (540p/810p)</string>
<string name="resolution_one">1X (720p/1080p)</string> <string name="resolution_one">1X (720p/1080p)</string>

View File

@@ -385,6 +385,7 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent) {
translations->insert( translations->insert(
{Settings::EnumMetadata<Settings::ResolutionSetup>::Index(), {Settings::EnumMetadata<Settings::ResolutionSetup>::Index(),
{ {
PAIR(ResolutionSetup, Res1_4X, tr("0.25X (180p/270p) [EXPERIMENTAL]")),
PAIR(ResolutionSetup, Res1_2X, tr("0.5X (360p/540p) [EXPERIMENTAL]")), PAIR(ResolutionSetup, Res1_2X, tr("0.5X (360p/540p) [EXPERIMENTAL]")),
PAIR(ResolutionSetup, Res3_4X, tr("0.75X (540p/810p) [EXPERIMENTAL]")), PAIR(ResolutionSetup, Res3_4X, tr("0.75X (540p/810p) [EXPERIMENTAL]")),
PAIR(ResolutionSetup, Res1X, tr("1X (720p/1080p)")), PAIR(ResolutionSetup, Res1X, tr("1X (720p/1080p)")),

View File

@@ -264,6 +264,11 @@ const char* TranslateCategory(Category category) {
void TranslateResolutionInfo(ResolutionSetup setup, ResolutionScalingInfo& info) { void TranslateResolutionInfo(ResolutionSetup setup, ResolutionScalingInfo& info) {
info.downscale = false; info.downscale = false;
switch (setup) { switch (setup) {
case ResolutionSetup::Res1_4X:
info.up_scale = 1;
info.down_shift = 2;
info.downscale = true;
break;
case ResolutionSetup::Res1_2X: case ResolutionSetup::Res1_2X:
info.up_scale = 1; info.up_scale = 1;
info.down_shift = 1; info.down_shift = 1;

View File

@@ -144,7 +144,7 @@ ENUM(FullscreenMode, Borderless, Exclusive);
ENUM(NvdecEmulation, Off, Cpu, Gpu); ENUM(NvdecEmulation, Off, Cpu, Gpu);
ENUM(ResolutionSetup, Res1_2X, Res3_4X, Res1X, Res3_2X, Res2X, Res3X, Res4X, Res5X, Res6X, Res7X, ENUM(ResolutionSetup, Res1_4X, Res1_2X, Res3_4X, Res1X, Res3_2X, Res2X, Res3X, Res4X, Res5X, Res6X, Res7X,
Res8X); Res8X);
ENUM(ScalingFilter, NearestNeighbor, Bilinear, Bicubic, Gaussian, ScaleForce, Lanczos, Fsr, Fsr2, MaxEnum); ENUM(ScalingFilter, NearestNeighbor, Bilinear, Bicubic, Gaussian, ScaleForce, Lanczos, Fsr, Fsr2, MaxEnum);