Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • A amd
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,466
    • Issues 1,466
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • drm
  • amd
  • Issues
  • #2056
Closed
Open
Issue created Jun 18, 2022 by NM64@NM64

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 OSes (Mint 20.3 Cinnamon & XFCE, Xubuntu 22.04, Manjaro KDE 21.2.6...) on a slew of different AMD hardware (Ryzen 4800U 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 it's default EDID lists 60Hz before 144Hz (the "1920x1080@144" modeline is a custom one that they manually added):

  • 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 will 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.

Edited Jun 19, 2022 by NM64
Assignee
Assign to
Time tracking