Announcement

Collapse
No announcement yet.

AMDGPU To Allow Memory Re-Clocking Soon For Multi-Monitor Setups

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    Originally posted by pal666 View Post
    can vrr(freesync) be used to align them?
    I think the Nvidia Windows driver does that.

    Comment


    • #22
      Among other things, with the latest improvements do GPU fans now turn off automatically at low temperature?

      Comment


      • #23
        And there is some work left:

        Comment


        • #24
          A month later...
          ...finally had time to try 5.4rc1 @ Ubutnu, and f*ing finally I am able to enable OverDrive
          Code:
          ppfeaturemask=0xfffd7fff
          and with
          Code:
          amdgpu.dcfeaturemask=2
          in place, no moar flicker on MCLK changes!!! Two identical FHD 60Hz monitors here.

          Thank you @adg5f, thank you AMD.

          Now, just some thoughts here. I wonder if somehow the driver could calculate the "least common multiple" of refresh rates of all monitors, what would become "safe" vblank period for all monitors, and only allow MCLK change at these particular moments. For example, suppose we have one 60Hz monitor and another 144Hz monitor. LCM for 60 & 144 would be 720, meaning that every 720 refreshes on both monitors, vblank should align, allowing to change MCLK without visible impact...

          Comment


          • #25
            Originally posted by Zgembo View Post
            A month later...
            ...finally had time to try 5.4rc1 @ Ubutnu, and f*ing finally I am able to enable OverDrive
            Code:
            ppfeaturemask=0xfffd7fff
            and with
            Code:
            amdgpu.dcfeaturemask=2
            in place, no moar flicker on MCLK changes!!! Two identical FHD 60Hz monitors here.
            Wow, I've running 'amd-staging-drm-next' #bc344f1322e1 (drm/amdgpu/dm/mst: Use ->atomic_best_encoder) which should incorporate all this stuff but it still flicker on MCLK changes.

            I'm using this flags:
            Code:
            amdgpu.dcfeaturemask=2
            (for 2 or more identical monitors)
            Code:
            ppfeaturemask=0xffff ffff
            (unlock access to adjust clocks and voltages)

            I'll try with your boot parameters and latest 'amd-staging-drm-next', too.

            Are you really running with 'echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level'?
            And please send 'cat /sys/kernel/debug/dri/0/amdgpu_pm_info'

            Oh, which gfx card are you running? - RX580, 8 GB, here.

            Thank you @adg5f, thank you AMD.

            Now, just some thoughts here. I wonder if somehow the driver could calculate the "least common multiple" of refresh rates of all monitors, what would become "safe" vblank period for all monitors, and only allow MCLK change at these particular moments. For example, suppose we have one 60Hz monitor and another 144Hz monitor. LCM for 60 & 144 would be 720, meaning that every 720 refreshes on both monitors, vblank should align, allowing to change MCLK without visible impact...
            As Alex stated severall times: Hardware only can save power with identical monitors.
            Last edited by nuetzel; 04 October 2019, 03:57 PM. Reason: Added RX580.

            Comment


            • #26
              Originally posted by nuetzel View Post
              Are you really running with 'echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level'?
              yes, confirmed.

              Originally posted by nuetzel View Post
              And please send 'cat /sys/kernel/debug/dri/0/amdgpu_pm_info'
              Code:
              # cat /sys/kernel/debug/dri/0/amdgpu_pm_info
              Clock Gating Flags Mask: 0x3fbcf
                  Graphics Medium Grain Clock Gating: On
                  Graphics Medium Grain memory Light Sleep: On
                  Graphics Coarse Grain Clock Gating: On
                  Graphics Coarse Grain memory Light Sleep: On
                  Graphics Coarse Grain Tree Shader Clock Gating: Off
                  Graphics Coarse Grain Tree Shader Light Sleep: Off
                  Graphics Command Processor Light Sleep: On
                  Graphics Run List Controller Light Sleep: On
                  Graphics 3D Coarse Grain Clock Gating: Off
                  Graphics 3D Coarse Grain memory Light Sleep: Off
                  Memory Controller Light Sleep: On
                  Memory Controller Medium Grain Clock Gating: On
                  System Direct Memory Access Light Sleep: Off
                  System Direct Memory Access Medium Grain Clock Gating: On
                  Bus Interface Medium Grain Clock Gating: Off
                  Bus Interface Light Sleep: On
                  Unified Video Decoder Medium Grain Clock Gating: On
                  Video Compression Engine Medium Grain Clock Gating: On
                  Host Data Path Light Sleep: On
                  Host Data Path Medium Grain Clock Gating: On
                  Digital Right Management Medium Grain Clock Gating: Off
                  Digital Right Management Light Sleep: Off
                  Rom Medium Grain Clock Gating: On
                  Data Fabric Medium Grain Clock Gating: Off
                  Address Translation Hub Medium Grain Clock Gating: Off
                  Address Translation Hub Light Sleep: Off
              
              GFX Clocks and Power:
                  1000 MHz (MCLK)
                  329 MHz (SCLK)
                  500 MHz (PSTATE_SCLK)
                  1000 MHz (PSTATE_MCLK)
                  800 mV (VDDGFX)
                  33.162 W (average GPU)
              
              GPU Temperature: 39 C
              GPU Load: 0 %
              MEM Load: 0 %
              
              UVD: Disabled
              
              VCE: Disabled
              Originally posted by nuetzel View Post
              Oh, which gfx card are you running? - RX580, 8 GB, here.
              Sapphire RX570 ITX 4GB.
              Now, you mentioned that it doesn't work for you, I did dome double checking... It works for me, but under some very specific conditions.
              This may be the thing that matter, I have identical 1080p monitors, but they are connected via different means; primary via DisplayPort, secondary via DVI-D.
              1. I still see flicker on Ubuntu login screen (but hardly, this thing ain't graphically intensive at all, rarely boosts MCLK)
              2. When I login into Wayland session, my secondary monitor does mode switch for some reason, and then re-clocking works smooth as silk. It only goes bad after screen-lock loop (see below), but can be fixed again by setting, applying, un-setting & re-appllying "Adjust for TV" (underscan) in "Display Settings" (sorry, have no clue what would be xrandr equivalent for Wayland for changing the modes in cli).
              3. When I login into X session, there is no mode change, but I get heavy flicker! However, for some strange reason, if I do
                Code:
                xrandr --output DVI-D-0 --mode 1680x1050 --right-of DisplayPort-0; xrandr --output DVI-D-0 --mode 1920x1080 --right-of DisplayPort-0
                the flicker goes away! If i just turn output on and off, flicker is still there. Only lowering resolution from native 1080p and then reverting it back fixes the issue. Also, after a screen-lock loop (both monitors go power-safe off, then on on key input), flicker comes back, but is fixable with the above forced resolution mode switch.
              I've compared all xrandr mode and setting details for 1080p mode before forced switch and after, I don't see any difference in monitor modes, regardless the fact if I get MCLK re-clocking flicker or not. It must be something wrong with how kernel sets the 1080p mode on one of my monitors, in a way that vblanks are not in sync, probably due to different connector types... But then why forcing mode changes via xrandr and "Display Settings" fixes the thing?
              Unfortunately, my card only has one of each port type, so I can't check if same problem happens when monitors are connected via same ports (perhaps you could try?). I guess this kernel feature is rather young, but rather important for some of us, we shall do some bug reports upstream...
              Last edited by Zgembo; 06 October 2019, 12:48 AM.

              Comment


              • #27
                $2000 bounty of interest for Linux @ 144hz+

                Comment


                • #28
                  Fluid 144Hz in browsers work without issues on Polaris/Vega + Compton/Picom/TearFree if CPU clock governor doesn't screw you. It's not a real mystery, is it?

                  Comment


                  • #29
                    Ubuntu 19.10 5.4.3-050403-generic + 5.5-rc1

                    wish mine would stop running the memory flat out ( its manually edited bios putting to a speed that gives it a chance to not roast @ 90 deg all day )
                    I know if I manually edit the bios and drop it to 150mhz its 12w , and if it gets really hot I unplug the second monitor and it runs @ 10w but that means every time I want to play a game I need to switch bios

                    /etc/default/grub
                    GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.dcfeaturemask=2 amdgpu.ppfeaturemask=0xfffd7fff amdgpu.ppfeaturemask=0xffffffff amdgpu.dc=1 amdgpu.cik_support=1 radeon.cik_support=0 radeon.si_support=0 amdgpu.si_support=1"





                    sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info
                    Clock Gating Flags Mask: 0x0
                    Graphics Medium Grain Clock Gating: Off
                    Graphics Medium Grain memory Light Sleep: Off
                    Graphics Coarse Grain Clock Gating: Off
                    Graphics Coarse Grain memory Light Sleep: Off
                    Graphics Coarse Grain Tree Shader Clock Gating: Off
                    Graphics Coarse Grain Tree Shader Light Sleep: Off
                    Graphics Command Processor Light Sleep: Off
                    Graphics Run List Controller Light Sleep: Off
                    Graphics 3D Coarse Grain Clock Gating: Off
                    Graphics 3D Coarse Grain memory Light Sleep: Off
                    Memory Controller Light Sleep: Off
                    Memory Controller Medium Grain Clock Gating: Off
                    System Direct Memory Access Light Sleep: Off
                    System Direct Memory Access Medium Grain Clock Gating: Off
                    Bus Interface Medium Grain Clock Gating: Off
                    Bus Interface Light Sleep: Off
                    Unified Video Decoder Medium Grain Clock Gating: Off
                    Video Compression Engine Medium Grain Clock Gating: Off
                    Host Data Path Light Sleep: Off
                    Host Data Path Medium Grain Clock Gating: Off
                    Digital Right Management Medium Grain Clock Gating: Off
                    Digital Right Management Light Sleep: Off
                    Rom Medium Grain Clock Gating: Off
                    Data Fabric Medium Grain Clock Gating: Off
                    Address Translation Hub Medium Grain Clock Gating: Off
                    Address Translation Hub Light Sleep: Off

                    GFX Clocks and Power:
                    1000 MHz (MCLK)
                    798 MHz (SCLK)
                    662 MHz (PSTATE_SCLK)
                    800 MHz (PSTATE_MCLK)
                    900 mV (VDDGFX)
                    74.162 W (average GPU)

                    GPU Temperature: 73 C
                    GPU Load: 0 %
                    MEM Load: 0 %

                    UVD: Disabled

                    VCE: Disabled

                    This is mine idle @ night

                    xrandr
                    Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 16384 x 16384
                    DP-1 disconnected (normal left inverted right x axis y axis)
                    DVI-D-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
                    1280x1024 60.02*+ 75.02
                    DVI-D-2 connected primary 1280x1024+1280+0 (normal left inverted right x axis y axis) 376mm x 301mm
                    1280x1024 60.02*+ 75.02
                    Last edited by MasterCATZ; 14 December 2019, 06:36 AM.

                    Comment

                    Working...
                    X