Renderer: Implement Bicubic and ScaleForce filters.

This commit is contained in:
Fernando Sahmkow 2021-08-17 00:12:52 +02:00
parent c5bbbf3902
commit a6b88e85bf
15 changed files with 624 additions and 38 deletions

View file

@ -48,6 +48,7 @@ void LogSettings() {
log_setting("Core_UseMultiCore", values.use_multi_core.GetValue());
log_setting("CPU_Accuracy", values.cpu_accuracy.GetValue());
log_setting("Renderer_UseResolutionScaling", values.resolution_setup.GetValue());
log_setting("Renderer_ScalingFilter", values.scaling_filter.GetValue());
log_setting("Renderer_UseSpeedLimit", values.use_speed_limit.GetValue());
log_setting("Renderer_SpeedLimit", values.speed_limit.GetValue());
log_setting("Renderer_UseDiskShaderCache", values.use_disk_shader_cache.GetValue());
@ -113,19 +114,10 @@ void UpdateRescalingInfo() {
info.up_scale = 1;
info.down_shift = 1;
break;
case ResolutionSetup::Res3_4X:
info.up_scale = 3;
info.down_shift = 2;
break;
case ResolutionSetup::Res1X:
info.up_scale = 1;
info.down_shift = 0;
break;
case ResolutionSetup::Res3_2X: {
info.up_scale = 3;
info.down_shift = 1;
break;
}
case ResolutionSetup::Res2X:
info.up_scale = 2;
info.down_shift = 0;

View file

@ -54,12 +54,16 @@ enum class NvdecEmulation : u32 {
enum class ResolutionSetup : u32 {
Res1_2X = 0,
Res3_4X = 1,
Res1X = 2,
Res3_2X = 3,
Res2X = 4,
Res3X = 5,
Res4X = 6,
Res1X = 1,
Res2X = 2,
Res3X = 3,
Res4X = 4,
};
enum class ScalingFilter : u32 {
Bilinear = 0,
Bicubic = 1,
ScaleForce = 2,
};
struct ResolutionScalingInfo {
@ -471,6 +475,7 @@ struct Values {
ResolutionScalingInfo resolution_info{};
Setting<ResolutionSetup> resolution_setup{ResolutionSetup::Res1X, "resolution_setup"};
Setting<ScalingFilter> scaling_filter{ScalingFilter::Bilinear, "scaling_filter"};
// *nix platforms may have issues with the borderless windowed fullscreen mode.
// Default to exclusive fullscreen on these platforms for now.
RangedSetting<FullscreenMode> fullscreen_mode{