[Pursuit Camera] How to fix freesync displays that works worse on Nvidia

Everything about displays and monitors. 120Hz, 144Hz, 240Hz, 4K, 1440p, input lag, display shopping, monitor purchase decisions, compare, versus, debate, and more. Questions? Just ask!
andrelip
Posts: 160
Joined: 21 Mar 2014, 17:50

[Pursuit Camera] How to fix freesync displays that works worse on Nvidia

Post by andrelip » 17 Feb 2019, 16:39

If your freesync display have known issues and work worse when using Nvidia instead of AMD like overshooting (AW2518FH) or input lag (Asus Vg25) here is fix:

https://www.youtube.com/watch?v=ihWcwGG ... =youtu.beY

My theory: Remember when you had to use Lightboost to find the perfect timing that activates the strobe? That was a hidden protocol for 3D and it worked like a charm until your turn-off your monitor. Now I think that the AMD implementation of VRR have a similar hidden protocol that Nvidia lacked until those recent drivers. By simpling enabling the G-SYNC it activates something in the monitor that last until it turn off. Even when I changed the input to use the HDMI of my notebook the fix persisted.

God @Chief Blur Buster I summon you!

User avatar
Chief Blur Buster
Site Admin
Posts: 11647
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

How To Reverse Engineer Overdrive Gain on FreeSync Displays?

Post by Chief Blur Buster » 18 Feb 2019, 01:47

Apparently, you did read the pursuit instructions, so good job doing a pursuit camera via hand-waved smartphone! (For other readers, see Easy Pursuit Camera 101 Instructions) -- the hand-wave iPhone video camera following the UFOs on the http://www.testufo.com/ghosting test.

Screenshot of one of the better single-frame-steps (the , and . keys to single framestep a YouTube)

TestUFO Without FreeSync at 0:02

Image

TestUFO With FreeSync (Full framerate, GSYNC Compatible + Windowed Mode) at 0:17

Image

No, I can confirm it's not a hidden DRM-protected protocol.

The same thing actually happens when you use an AMD card too (depending on how the drivers are configured, you MAY have to go into full screen mode with "chrome --disable-gpu-vsync" to properly trigger the AMD FreeSync into working with TestUFO on AMD cards when the browser is running in full screen mode).

It's simply the monitor automatically using a different Overdrive Gain setting when FreeSync is enabled (rather than disabled), or the existence of Dynamic Overdrive. Since the AW2518H doesn't have dynamic overdrive (read Why Variable Overdrive is needed for Good Variable Refresh Rate), I think it's simply changing to a more optimal overdrive setting whenever FreeSync is enabled.

Even for non-dynamic overdrive, some manufacturers keeps their better overdrive settings only for FreeSync mode, so everything looks crappy-ghosty when FreeSync is turned off but looks much better when FreeSync is enabled.

On some monitors, via Factory Menu or Service Menu, I am able to adjust an Overdrive Gain setting between value 0x00 through 0x80 which produces the same effect in non-FreeSync modes (both image #1 and #2). Overdrive Gain is a generic setting built into many panels. Simple few-setting overdrive adjustments are often mapping to hardcoded Overdrive Gain settings.

Now, two theories:
(A) That there is an Overdrive Gain setting that is accessible by DDC.
(B) That there is the use of software-based (GPU shader) overdrive similar to the old ATI Radeon overdrive

To get in-between values (e.g. between "AMA OFF", "AMA High", "AMA Premium") require hacking around an Overdrive Gain setting.
For some monitors, sometimes I have to run Entech SoftMCCS and try to find the hidden DDC/CI adjustment (VCP command) that corresponds to an Overdrive Gain, but often that setting is not even accessible except to a firmware engineer. Occasionally one can hunt down a hidden VCP command by dumping all 256 VCP settings, changing the generic overdrive setting, then dumping all 256 VCP codes again to see what changed, and then figure out if I can access intermediate (in-between) overdrive settings that way.

I haven't found any settings accessible on AW2518H, but if there is one, maybe NVIDIA drivers is adjusting that DDC command. It would be an unlocked command if it exists. But usually most monitors are simply choosing a different Overdrive Gain default (a hex number between 0x00 thru 0x80 .... or in decimal, a number between 0 and 128).

Try downloading Entech Taiwan SoftMCCS.
1. Disable the GSYNC Compatible checkbox
2. Launch SoftMCCS and then dump all 256 values and then copy-paste log to Notepad, save as .txt file. Quit SoftMCCS.
3. Enable the GSYNC Compatible checkbox
4. Launch SoftMCCS and then dump all 256 values and then copy-paste log to Notepad, save as .txt file. Quick SoftMCCS.
5. Run a diff utility on the two text files to see which VCP command changed.
6. Now try manually commanding the monitor to that specific VCP register using the "Command-line Editor" to send a custom datagram.


For example, VCP 0x10 is brightness. The first byte 0x03 is "Send Command". So telling the monitor to set Brightness OSD to a setting of 64 (hex 0x40), requires sending this four hex byte sequence: 03 10 00 40
0x03 - Send command
0x10 - The VCP command number for Brightness
0x00 - High byte of new brightness setting for monitor OSD
0x40 - Low byte of new brightness setting for monitor OSD.

So theoretically, you discover that enabling the checkbox for GSYNC Compatible, you observe a weird number change at 0xEF or 0xEC when you try to diff the two text files.

Then you'd try testing it (Change "EF" to the value or values you discover has changed):

03 EF 00 10
03 EF 00 20
03 EF 00 30
03 EF 00 40

To test four different "Overdrive Gain" settings (if, theoretically "Overdrive Gain" mapped to VCP command 0xEF).

Have a second screen ready (multimonitor, or laptop screen). Be prepared to factory reset it with a second screen, of a bad VCP command causes your monitor to go on the fritz (e.g. command that accidentally turns off backlight, for example). So keep that backup of all 256 VCP commands handy so you can write the correct values back later if need be...

Now, if you wanted to write a computer program that does this, you'd obviously use the SetVCPFeature() API and/or the GetVCPFeatureAndVCPFeatureReply() API available in Microsoft Windows. That is, if you were a software developer that wanted to remotely operate (via PC program) the monitor's own main OSD menu / hidden service menu / factory menu adjustments. Sometimes some monitor menus are completely inaccessible via VCP

For Linux use the ddcutil code (or see its source code).

Glossary
DDC = Display Data Channel (a wire on a VGA pin, on an HDMI cable, on a DVI cable, or a micropacket on DVI cable)
CI = Command Interface
DDC/CI = Display Data Channel / Command Interface
VESA = that standards organization
MCCS = Monitor Control Command Set
VCP = Virtual Control Panel (a method of PC controlling the monitor's menus in a hidden way)

Links to VESA docs
DDC/CI Spec
VESA MCCS Spec Version 2.2a
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

andrelip
Posts: 160
Joined: 21 Mar 2014, 17:50

Re: How to fix freesync displays that works worse on Nvidia

Post by andrelip » 18 Feb 2019, 01:51

But would that overdrive gain settings persists after VRR got disabled / source input change / resolution and hertz change? A new finding is that I was unable to create 1920@1080p 60hz using VT of 240hz when this feature is not activated but worked very well after that (g-sync was disabled). I forgot that when I turned off the computer and I had to boot on vga mode.

I will try the MCCS now

User avatar
Chief Blur Buster
Site Admin
Posts: 11647
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: How to fix freesync displays that works worse on Nvidia

Post by Chief Blur Buster » 18 Feb 2019, 01:53

andrelip wrote:But would that overdrive gain settings persists after VRR got disabled / source input change / resolution and hertz change?
Implementation specific. (aka "Who knows?" and "Depends on how the manufacturer wrote the monitor's firmware")

If the setting did not persist.... then in theory, a software developer could write a utility that reset the VCP command upon a mouse click, or upon a hotkey, or an event such as a resolution-change event or computer-wakeup event.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

andrelip
Posts: 160
Joined: 21 Mar 2014, 17:50

Re: How to fix freesync displays that works worse on Nvidia

Post by andrelip » 18 Feb 2019, 01:58

3 values diff at VPC table and the timing string:

before:
03:52:51.1156D...Timing string = 278,40 kHz (-), 240,00 Hz (-)

after:
03:55:41.7516D...Timing string = 279,30 kHz (-), 239,90 Hz (-)

User avatar
Chief Blur Buster
Site Admin
Posts: 11647
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: How to fix freesync displays that works worse on Nvidia

Post by Chief Blur Buster » 18 Feb 2019, 02:04

andrelip wrote:3 values diff at VPC table and the timing string:

before:
03:52:51.1156D...Timing string = 278,40 kHz (-), 240,00 Hz (-)

after:
03:55:41.7516D...Timing string = 279,30 kHz (-), 239,90 Hz (-)
Interesting.
(New observation for me)

Maybe look at the Custom Resolution Utility numbers for the FreeSync enabled mode, and see if you can recreate the same numbers (at max Hz) as a non-FreeSync mode?

This might not be what keys the new Overdrive Gain setting though, but that's another unturned stone to try, to see if you can gain more control of the monitor's overdrive.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

andrelip
Posts: 160
Joined: 21 Mar 2014, 17:50

Re: How to fix freesync displays that works worse on Nvidia

Post by andrelip » 18 Feb 2019, 02:15

Is there a way to get the current timings on CRU? It did not change and the max value there is at the CEA-861 block but with a refresh of 239.760hz that did not match any of the cases. On nvidia (when I try to create a custom resolution) it reports a rounded the refresh rate to 240hz but reports the horizontal rate to 278,40 kHz on both cases. Could the VCP params have influence on which resolution are accepted or not? If the answer is yes then it should be changing more than the overdrive gain.
Last edited by andrelip on 18 Feb 2019, 02:22, edited 1 time in total.

User avatar
Chief Blur Buster
Site Admin
Posts: 11647
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: How to fix freesync displays that works worse on Nvidia

Post by Chief Blur Buster » 18 Feb 2019, 02:21

andrelip wrote:Is there a way to get the current timings on CRU? It did not change and the max value there is at the CEA-861 block but with a refresh of 239.760hz that did not match any of the cases.[/b]
That's a vertical refresh rate (number of full refresh cycles per second)
andrelip wrote:but reports the horizontal rate to 278,40 kHz on both cases.
That's a horizontal refresh rate (number of pixel rows per second)

Try loading up NVIDIA Custom Resolution with GSYNC disabled versus enabled, and see if the numbers are changing in there. Change Resolution -> Customize -> Create Custom Resolution ... will automatically display the signal's current timings. Screenshot the screen before and after enabling the GSYNC checkbox, and see if any values has changed.

You'll see two refresh rate numbers -- left-hand number is the horizontal refresh rate (scanrate in kilohertz) and the right-hand number is the vertical refresh rate (refresh cycles per second).
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

andrelip
Posts: 160
Joined: 21 Mar 2014, 17:50

Re: How to fix freesync displays that works worse on Nvidia

Post by andrelip » 18 Feb 2019, 02:25

Chief Blur Buster wrote:
andrelip wrote:Is there a way to get the current timings on CRU? It did not change and the max value there is at the CEA-861 block but with a refresh of 239.760hz that did not match any of the cases.[/b]
That's a vertical refresh rate (number of full refresh cycles per second)
andrelip wrote:but reports the horizontal rate to 278,40 kHz on both cases.
That's a horizontal refresh rate (number of pixel rows per second)

Try loading up NVIDIA Custom Resolution with GSYNC disabled versus enabled, and see if the numbers are changing in there. Change Resolution -> Customize -> Create Custom Resolution ... will automatically display the signal's current timings. Screenshot the screen before and after enabling the GSYNC checkbox, and see if any values has changed.

You'll see two refresh rate numbers -- left-hand number is the horizontal refresh rate (scanrate in kilohertz) and the right-hand number is the vertical refresh rate (refresh cycles per second).
Just did that and the timings there did not change at all. The vertical refresh rate is displayed rounded at 240hz and the horizontal is reported as 278,40 kHz. The horizontal value is the same reported by softMCCS BEFORE we send the signal by enabling g-sync.

User avatar
k2viper
Posts: 293
Joined: 23 Jan 2018, 06:30

Re: How to fix freesync displays that works worse on Nvidia

Post by k2viper » 18 Feb 2019, 02:31

Nvidia control panel is known as innacurate in reporting exact refreshrate timings. I recommend using CRU to find any differences in current (240hz) refreshrates under Extension blocks.

But, should resulutions under CRU ever be different when freesync/gsync is monitor enabled?

Post Reply