[RESPONDED] External monitor stuck at 30 fps when using egpu

Doesn’t matter, as long as they both speak the same protocol. It’s one of the few wayland advantages, no?

1 Like

supposedly, but they are more close to dialects for the same protocol.

either way, that package is not installed in a default fedora workstation install, and so not on my framework either.

any news doc?

You can simply install it?

Either way, I noticed your Memory Regions and Bars (or rather Bar 0) is quite low (256MB).

Yours:

< 	Region 0: Memory at 6060000000 (64-bit, prefetchable) [size=256M]
< 	Region 2: Memory at 6070000000 (64-bit, prefetchable) [size=2M]

Mine:

> 	Region 0: Memory at 4200000000 (64-bit, prefetchable) [size=8G]
> 	Region 2: Memory at 4100000000 (64-bit, prefetchable) [size=2M]

Yours:

< 		BAR 0: current size: **256MB**, supported: 256MB 512MB 1GB 2GB 4GB 8GB 16GB

Mine:

> 		BAR 0: current size: **8GB**, supported: 256MB 512MB 1GB 2GB 4GB 8GB

Edit:

Maybe check to see what sudo dmesg | grep BAR= returns?
Mine says [301815.117731] [drm] Detected VRAM RAM=8176M, BAR=8192M

resizable bar support. something that I did research on in the forums. it’s supposedly set to auto in the BIOS, but the BIOS is not smart about that feature apparently. See here: ReBAR Support

@Anachron here’s the result of that command:
sudo dmesg | grep BAR=
[16708.178065] [drm] Detected VRAM RAM=16368M, BAR=256M

Do you use dual-RAM or single-RAM slots?

Also can you please install and send me the output of wlr-randr or something similiar that gnome has?

RAM is 32GB of DDR4-3200 JEDEC (2 x 16GB sticks)
gnome-settings monitor config ($HOME/.config/monitors.xml):

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1</scale>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>eDP-1</connector>
          <vendor>BOE</vendor>
          <product>0x095f</product>
          <serial>0x00000000</serial>
        </monitorspec>
        <mode>
          <width>2256</width>
          <height>1504</height>
          <rate>59.999</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1</scale>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>HDMI-1</connector>
          <vendor>ACI</vendor>
          <product>VS248</product>
          <serial>HALMQS145821</serial>
        </monitorspec>
        <mode>
          <width>1920</width>
          <height>1080</height>
          <rate>60.000</rate>
        </mode>
      </monitor>
    </logicalmonitor>
    <logicalmonitor>
      <x>1920</x>
      <y>0</y>
      <scale>1</scale>
      <monitor>
        <monitorspec>
          <connector>eDP-1</connector>
          <vendor>BOE</vendor>
          <product>0x095f</product>
          <serial>0x00000000</serial>
        </monitorspec>
        <mode>
          <width>2256</width>
          <height>1504</height>
          <rate>59.999</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>
</monitors>

@Anachron also, I tried installing and testing wlr-randr as I’m guessing that it’s something you’re familiar with:
wlr-randr
compositor doesn't support wlr-output-management-unstable-v1

@Anachron @Loell_Framework any ideas?

Probably good to know which BIOS version you’ve installed?

I’ve installed the 03.06 beta one.

(The Firmware handles the ReBar support)

Can you also tell us why you think it’s limiting to 30fps? Because I don’t see anything showing 30fps.

Please tell us more about what programs and show us what is giving you the 30fps value.

It could be that you’re running a game for example and you use vsync. Vsync locks the fps to either 30 or 60 afaik.

anything using VSync is limited to 30 FPS when on the external display. bios 3.06 beta here too

External screen on eGPU:


Laptop screen:

Am starting to wonder if this is a gnome mutter issue. will test with KDE later to be sure.

Someone on Mastodon posted this recently:

The ritual to convince Linux to run both of my 4k displays at 60 Hz when it initially refuses to recognize that both are 60 Hz capable:

1. Turn off the 60 Hz one.
2. Turn off the 30 Hz one.
3. Turn that one back on. It is now 60 Hz.
4. Turn the first one back on.

I’ve sunk many evenings into debugging this and so far this is the best solution that works consistently.

So maybe you just need to force 60hz on your display. Not sure how you do that with Mutter, for me I would have to modify my river config.

Edit:
Also, do you need vsync? You could turn it off and check if that allows the programs to have more fps.

I know that vsync off would allow me to reach (and exceed) my monitor’s target, but that doesn’t help either, as it still appears to render at 30fps. it’s almost as if the compositor doesn’t actually know my external monitor’s refresh rate.

Yeah, please try my 2 suggestions.

See archwiki, specifically 2.2 and 2.2.1.

Should also add modprobe.blacklist=noveau

Last ditch, can you use the monitoring tools at the end of the archwiki link and see if this gist is relevant?

2.2 and 2.2.1 are specific to southern islands support (HD 7000, not RX 7000) and sea islands support (HD 8000), and so are pointless in regards to my setup (RX 6800). Module nouveau is specific to nvidia, and is not loaded either, so blacklisting that is also pointless. Your last point, however, is interesting as it points out similar issues that I have been having. It may also be worth pointing out that I have never seen the GPU in my enclosure spin up it’s fans past boot (I at least know they work), so stuck clocks may be a real thing here.