http://bugs.winehq.org/show_bug.cgi?id=56285
--- Comment #5 from garrett m garrettm4@protonmail.com --- Thinking about this some more, maybe a new environment variable (WINE_PHYSICAL_PIXEL_SPACE=1) could avoid a lot of logic by ignoring the DE's display scale / Wine's DPI setting, but maybe keep the DPI setting for the cursor, and report physical pixels to the app instead of logical pixels. This would fix older, non-DPI aware games with native resolutions equal to the display resolution. For non-DPI aware games with native resolutions less than the display resolution, everything seems to already work, but it would be nice to have an environment variable to pillar-box fullscreen output and pick the filter for older games / apps. This could also be used for manual scaling of select non-fullscreen apps like old windowed games and XP era (or older) apps too (e.g., WinXP FreeCell).
Say
WINE_APP_WINDOW_UPSCALE=[<n>,<nearest|linear>] WINE_APP_FULLSCREEN_UPSCALE=[<none|fill|aspect|integer>,<nearest|linear>]
where,
MANUAL WINDOW SCALING n - manual scaling factor to apply to windowed app/game (integer value, but maybe fp for fraction scaling)
AUTO FULLSCREEN SCALING BEHAVIOR none - do not scale fullscreen app, center output on screen fill - scale requested window size to fill screen, ignoring aspect ratio aspect - scale requested window size to fill screen, preserving aspect ratio integer - scale requested window size to fill screen using closest integer value
SCALING FILTER nearest - nearest neighbor upscaling filter (useful for old XP/9x apps and games with integer scaling factor) linear - bilinear upscaling filter