xrandr --set "scaling mode" insists on only scaling to the first resolution and refresh rate in the monitor's physical EDID no matter what
This was tested in a slew of Linux distros (Xubuntu 23.04, Manjaro KDE 21.2.6, Xubuntu 22.04, Mint 20.3 Cinnamon & XFCE...) on a slew of different AMD hardware (Ryzen 4800U iGPU, AMD A8-7600 iGPU, AMD E-350 iGPU, Radeon HD 5870 dGPU) over a slew of different video outputs (DisplayPort, HDMI, DVI, VGA) with a slew of different displays (HDMI TV, DVI LCD monitor, VGA CRT monitor).
Simply put, the xrandr --set "scaling mode" command will insist on using the first resolution and refresh rate of your monitor's physical EDID regardless of what refresh rate the OS is set to with no way to override it - custom xrandr modelines do not change this behavior and neither does including custom modelines in xorg.conf; heck even using the "PreferredMode" option in xorg.conf doesn't change this.
The command used was the following, replacing "[CURRENT_VIDEO_OUTPUT]" with the corresponding active output (e.g. DisplayPort-0, HDMI-0, etc etc):
xrandr --output [CURRENT_VIDEO_OUTPUT] --set "scaling mode" "Full aspect"
The problem is that there are high-refresh monitors that make their first-listed refresh rate be 60Hz rather than the monitor's maximum refresh rate; my own 75Hz DVI monitor is like this as is evidenced by running the xrandr
command in the terminal - it lists 60Hz refresh rates first, then 75Hz, and the 144Hz monitor used by the following user on Reddit is exactly the same whereby its default EDID lists 60Hz before 144Hz (the "1920x1080@144" modeline is a custom one that they manually added):
- [archive.org mirror] https://reddit.com/r/archlinux/comments/k646lm/how_do_i_change_default_refresh_rate_in_xorgconf/
In such situations, using the xrandr --set "scaling mode" command will always have the GPU render and output at 60Hz regardless of whether you set your OS to output at 75Hz, 144Hz, or even something less like 30Hz or 24Hz - it's these less-than-60Hz refresh rates where it becomes obvious that it's still in fact rendering at 60Hz, not just re-packaging a 30Hz video signal into a 60Hz output.
I was also able to confirm using a different, older VGA monitor where 75Hz is in fact the first-listed refresh rate on its EDID according to xrandr and, sure enough, using the xrandr --set "scaling mode" command would have things always output at 75Hz instead (and presumably actually render at 75Hz - I didn't test that bit super-thoroughly). Similarly, if I use a CRT monitor where the EDID is more of a guaranteed guideline (only lists 1024x768 75Hz as max) and doesn't specify the highest capable resolution (1920x1152 IIRC) and refresh rate (upwards of 125Hz), making custom resolutions of higher resolutions and/or refresh rates still results in the xrandr --set "scaling mode" command ignoring my custom resolutions and/or refresh rates and it instead continues using 1024x768 75Hz as is described in the CRT monitor's EDID.
Since custom resolutions (whether added via the xrandr --newmode command or via xorg.conf) are ignored by the xrandr --set "scaling mode" command, one would think that you could simply supply a custom EDID via the "CustomEDID" xorg,conf option but, sadly, the "CustomEDID" xorg.conf option is not supported in both AMDGPU and radeon.
So, as I state in the title, the xrandr --set "scaling mode" command will always insist on using the first resolution and refresh rate listed in your monitor's physical EDID no matter what.