@@ -51,18 +51,18 @@ class SuperResolutionProvider
5151
5252 ValidateSourceSettingsAttribs (Attribs);
5353
54- float ScaleFactor = 1 . 0f ;
55- switch (Attribs. OptimizationType )
56- {
57- // clang-format off
58- case SUPER_RESOLUTION_OPTIMIZATION_TYPE_MAX_QUALITY: ScaleFactor = 12 .f / 16 . f ; break ;
59- case SUPER_RESOLUTION_OPTIMIZATION_TYPE_HIGH_QUALITY: ScaleFactor = 11 .f / 16 . f ; break ;
60- case SUPER_RESOLUTION_OPTIMIZATION_TYPE_BALANCED: ScaleFactor = 9 . f / 16 . f ; break ;
61- case SUPER_RESOLUTION_OPTIMIZATION_TYPE_HIGH_PERFORMANCE: ScaleFactor = 8 . f / 16 . f ; break ;
62- case SUPER_RESOLUTION_OPTIMIZATION_TYPE_MAX_PERFORMANCE: ScaleFactor = 5 . f / 16 . f ; break ;
63- default : ScaleFactor = 9 . f / 16 . f ; break ;
64- // clang-format on
65- }
54+ static constexpr float ScaleFactors[] = {
55+ 24 . f / 32 . f , // MAX_QUALITY (75% )
56+ 22 . f / 32 . f , // HIGH_QUALITY (69%)
57+ 18 . f / 32 . f , // BALANCED (56%)
58+ 16 .f / 32 . f , // HIGH_PERFORMANCE (50%)
59+ 11 .f / 32 . f , // MAX_PERFORMANCE (34%)
60+ } ;
61+
62+ static_assert ( _countof (ScaleFactors) == SUPER_RESOLUTION_OPTIMIZATION_TYPE_COUNT,
63+ " Scale factor table must match SUPER_RESOLUTION_OPTIMIZATION_TYPE_COUNT " ) ;
64+
65+ const float ScaleFactor = Attribs. OptimizationType < SUPER_RESOLUTION_OPTIMIZATION_TYPE_COUNT ? ScaleFactors[Attribs. OptimizationType ] : ScaleFactors[SUPER_RESOLUTION_OPTIMIZATION_TYPE_BALANCED];
6666
6767 Settings.OptimalInputWidth = std::max (1u , static_cast <Uint32>(Attribs.OutputWidth * ScaleFactor));
6868 Settings.OptimalInputHeight = std::max (1u , static_cast <Uint32>(Attribs.OutputHeight * ScaleFactor));
0 commit comments