The license has not been renewed yet, or at least the payment hasn’t come through so far, or it hasn’t been entered into my database by our sales guy.
Ok. So lets try something. I’m working off the reported decoded EDID from this GitHub issue… SP8 120Hz mode not available · Issue #825 · linux-surface/linux-surface · GitHub
… which states a maximum pixelclock of 720 Mhz for the MS Surface Pro 8 panel. We should double-check that, so can you please post the full output of the terminal command
xrandr --verbose ?
Assuming those limits would be right, it could be difficult to create a fixed refresh rate video mode for 100 Hz refresh, but might be possible for 75 Hz:
The gtf command line tool (Generalized Timing Formula) gives this:
gtf 2880 1920 75
“# 2880x1920 @ 75.00 Hz (GTF) hsync: 150.30 kHz; pclk: 601.20 MHz”
Modeline “2880x1920_75.00” 601.20 2880 3120 3440 4000 1920 1921 1924 2004 -HSync +Vsync
The cvt tool gives:
cvt 2880 1920 75
“# 2880x1920 74.96 Hz (CVT) hsync: 150.38 kHz; pclk: 601.50 MHz”
Modeline “2880x1920_75.00” 601.50 2880 3128 3440 4000 1920 1923 1933 2006 -hsync +vsync
In both cases the dotclock stays below the 720 Mhz limit. Unfortunately trying those tools with 100 Hz will yield dot clocks of 817 and 819 Mhz beyond the hardware limit, so unlikely to work. And we can’t use reduced blanking modes to stay within limits, because these only work for refresh rates that are multiples of 60 Hz, ie. not 75 Hz or 100 Hz.
Anyhow, if you want to try the 75 Hz mode, this would be a command to enter:
xrandr --newmode "2880x1920_75.00" 601.20 2880 3120 3440 4000 1920 1921 1924 2004 -HSync +Vsync
To define a mode based on the gtf output from above - a copy and paste of the modeline.
xrandr --addmode eDP-1 2880x1920_75.00
To make that mode available on video output eDP-1 which I think would be your touchscreen.
xrandr --output eDP-1 --mode 2880x1920_75.00 --rate 75
To switch to 75 Hz, or you can also use the display settings GUI. Be aware that an invalid mode could end with a black screen. So maybe using the GUI is better for the last step, if it gets you one of those auto-reverts if proper setting is not confirmed within 10 seconds. Or blindly typing `xrandr --output eDP-1 --rate 120`` should also do the trick.
This as a first test. If the EDID output of that linked GitHub issue is correct, it looks like as if Microsoft does use non-standard mode timings for the 60 and 120 Hz modes, so it could be that the panel doesn’t like fixed refresh rate modes other than 60 and 120 Hz.
The VRR mode we tried works very different from the panels perspective - as if it is always running at 120 Hz, but then tricks are played with dynamically extending the vblank to get all the intermediate rates from 30 Hz - 120 Hz.
Those plots look as if it works in principle, and within the hardware supported range from 8.33 msecs to 33.33 msecs, I’m not displeased with these results. But outside that range, ie. for framerates lower than ~ 30 fps, the current PTB algorithm can’t get stable results on Intel. That would need some parameter tweaking + luck, or possibly enhancements to the Linux Intel display driver, the latter impossible without me having such hardware myself and the time and funding to do.
Seems within the display native range it is reasonably stable, with a fixed offset between “wanted” and reality of about 2 msecs, an offset one could correct for. PTB does some calibration during startup, but for various reasons that can be thrown off a bit, hence the median error of around 2 msecs.
I guess you’d only need a fixed rate for your case, so you could try
VRRTest('const') to see how stable it is under the constant condition, which is also the most easy to handle. If you edit line 33 of VRRTest.m you can define your own target
delay = 0.010 for 10 msecs / 100 Hz target, or
delay = 0.013333 for 13.333 msecs / 75 Hz target.
Setting the optional
useVulkan flag to 1 in
VRRTest is another thing one can try to reduce jitter. May or may not make things better or worse. Technically the Vulkan mode is part of some experimental prototype enhancements to the Linux Vulkan and display drivers that I have developed here to get some fantastics, rock-solid and accurate results on AMD gpu’s already 1.5 years ago. Unfortunately I have not found the time to turn that into something production ready, again mostly due to lack of funding, caused by our unsupportive “penny wise, pound foolish” user-base. So it sits on my disc drive and collects dust. But maybe even standard Vulkan setups may give some improvement in jitter…
[80 of 60 minutes paid support used, not yet paid support fully exhausted.]