2560x1440@144Hz not running at full 144Hz with "force composition pipeline" enabled

Like the title says, running a display at 2560x1440@144Hz with “force composition pipeline” enabled doesn’t run it at 144Hz. It’s hard to tell what exactly is happening but the display is definitely not running at the full 144Hz. Comparing side by side with a 1920x1080@144Hz display, it looks noticeably worse. Lowering the resolution to 1920x1080@144Hz works as expected so I believe it has something to do with the resolution specifically. On Windows, 2560x1440@144Hz works just fine. I’d like to be able to force the pipeline on for vsync as I find it much more reliable than what compositors do.

Running on RTX 2060 over DisplayPort 1.2 with Linux 5.9.14, driver version 455.45.01.

nvidia-bug-report.log.gz (301.8 KB)

Unfortunately, no Xorg logs were included in the archive, doesn’t really matter, though.
Looks like you have two monitors connected, 1440p@144+ForceComposition and 1080p@144 w/o ForceComposition.
Does the effect also appear if you

  1. force composition pipeline on both
  2. only connect the 1440p monitor
  3. use ForceFullCompositionPipeline
  4. use an ealier driver than 450
    Also, I remember a bug with KWin and the composition pipeline, does it looks oddly scaled?

Sorry, forgot to mention but I did try 1-3.

Trying out driver version 440.100, it’s still the same except with the second monitor disabled it works! Hardly the ideal solution though.

The picture appears to be correct, just sluggish.

450 had some bugfixes regarding the composition pipeline, looks like some others have been introduced.
Just to make sure, did you disable compositing in kwin so it doesn’t tries to compo twice?
Did you check case 1) on driver 440?

Yes and yes. Couldn’t make it run smooth on 440 with both monitors on.

Edit: To add, I also tried setting the second monitor to 60Hz in all tests, which had no effect.

So it really only depends on screen height.
Does enabling kwin composition have any effect?
How many fps does glxgears report?

No force pipeline, kwin compositing on with vsync off
73222 frames in 5.0 seconds = 14644.327 FPS
73601 frames in 5.0 seconds = 14720.171 FPS

No force pipeline, kwin compositing off
206249 frames in 5.0 seconds = 41249.719 FPS
212772 frames in 5.0 seconds = 42554.246 FPS

Force pipeline on both monitors, kwin compositing on with vsync off
68483 frames in 5.0 seconds = 13695.896 FPS
69137 frames in 5.0 seconds = 13827.323 FPS

Force pipeline on both monitors, kwin compositing off
198187 frames in 5.0 seconds = 39637.234 FPS
201195 frames in 5.0 seconds = 40238.531 FPS

Force pipeline only on main monitor, kwin compositing on with vsync off
70323 frames in 5.0 seconds = 14064.221 FPS
71658 frames in 5.0 seconds = 14331.574 FPS

Force pipeline only on main monitor, kwin compositing off
199429 frames in 5.0 seconds = 39885.734 FPS
205791 frames in 5.0 seconds = 41158.094 FPS

Hopefully that’s all the cases. Just to be clear, this is on driver 455.45.

I rather meant with vsync on, to check if there’s some odd throttling while using the compo pipeline.

Ah sorry, here:

No force pipeline, kwin compositing on with vsync on
70009 frames in 5.0 seconds = 14001.599 FPS
70751 frames in 5.0 seconds = 14150.053 FPS

Force pipeline only on main monitor, kwin compositing on with vsync on
68720 frames in 5.0 seconds = 13743.832 FPS
69476 frames in 5.0 seconds = 13895.100 FPS

Force pipeline on both monitors, kwin compositing on with vsync on
65737 frames in 5.0 seconds = 13147.360 FPS
65943 frames in 5.0 seconds = 13187.772 FPS

Those are rather odd values, should be the monitor’s refresh rate.
export | grep GL
show any unsual variables?

No output.

I tried toggling the “sync to vblank” setting on in the control panel under X screen -> OpenGL settings. It makes glxgears run at a stable 144 FPS even with force pipeline on. Everything still feels suggish though. I also tried logging out and back in with the setting saved, no luck.

In the past, I’ve always had “sync to vblank” off and “force full composition pipeline” on using two 1920x1080 displays. Just to reiterate, everything works fine with force pipeline on with the latest driver if I set the resolution to 1920x1080 on the 2560x1440 display.

Correction: I did some tests again and 1920x1080@144Hz with force pipeline seems to only work correctly over DVI. Even just 1920x1080@144Hz over HDMI or DP is no good.

This leads me to believe that it’s not actually the resolution, but the connection. I imagine if DVI supported 2560x1440@144Hz it would work. I wonder why the connection would be the problem.

To recap, the issue now seems to be the force pipeline setting not playing nice over DP or HDMI at high refresh rates. This really does sound like a driver bug. Is there a way to let NVIDIA know directly or am I already in the right place?

It’s the right place, though visual effects that can only be observed when sitting in front of a unique system are often neglected. Though I wonder why no other user reported this so far. It’s not that this is a very special setup.
Just to rule out any cross-effects from Kwin, did you try switching to something simple, like openbox?

I actually used to run openbox and still had my configs around! Unfortunately the issue persists even there.

I’d also be curious to hear if anyone else has had similar issues. Maybe people who aren’t used to high refresh rate displays don’t notice the problem. Like it still feels better than 60Hz but having used a 144Hz display for 4-5 years now it’s obvious that something is wrong. Or, maybe people don’t use the force pipeline options.

Since Openbox can be considered as bare Xserver + some menus, any side-effects from WM can be ruled out.
Since in your first nvidia-bug-report.log no Xorg logs and config files were included, can you please recreate it? Maybe this time they’re included and somthing odd is visible.

I made a new one and had a quick glance at it but didn’t see an Xorg log in it. Are these what you’re looking for?
Xorg.0.log (34.2 KB)
xorg.conf (1.6 KB)

Here’s the log anyway:
nvidia-bug-report.log.gz (199 KB)

Nothing unusual in xorg.conf but as soon as ForceCompositionpipeline gets enabled, Xorg log reports slowdowns, also dmesg reports it. No excessive irqs, though.
You have nvidia-drm.modeset=1 enabled on kernel command-line, shouldn’t make a difference but please check if anything changes when you disable it.
Also check for module options files:

I set the kernel option after reporting the issue in an attempt to solve an unrelated problem. I also checked /etc/modprobe.d and /lib/modprobe.d, no files containing that option. I’ll just remove it since it didn’t work out anyway.

Ok, do you see anything in ‘top’ eating much cpu when moving windows?