Resolution issue

hi,
we are trying to use the display port with the following resolution: 3840X1200 , 30Hz or 60Hz.
Currently it appears that this resolution is not supported:

we used xrandr command with -newmode arg. (we extracted the timing parameters with gtf command).

when we add this resolution with -addmode arg, it fails. maybe it because our screen not support it?

  1. is there any fix to that problem? we still want to use this resolution.
  2. is there any list of supported resolution by our monitor? do we need to update this list manually or maybe use xrandr to do it automatically?

we found in Linux_for_Tegra\source\public\kernel_src\kernel\kernel-4.9\drivers\gpu\drm\drm_edid.c some timing parameters related to specific resolutions but we dont know if we need to change it in order to fix our problem or not.

thanks!

xrandr|690x397

This issue has been asked by other forum users long time ago.

You could try to search “xrandr add mode” or something similar over all jetson forums (TX2/AGX Xavier/TX1…)

The conclusion is our driver does not allow such case. The mode is only accepted when the source is either edid or from device tree hardcoded value.

As for your question.

is there any list of supported resolution by our monitor? do we need to update this list manually or maybe use xrandr to do it automatically?

Maybe you can study some knowledge about display EDID first.

thanks for your answer.
can you guide me where I can start read regard this subjects? (handling with different resolutions?)

thanks

Do you want to study the driver code?

If so, please download the l4t sources from our download center. The driver code will be in kernel/nvidia/drivers/video/tegra/dc/dp.c.

I thought more in a direction of “quick” guide to beginners with zero previous knowledge.
Again, I’m interested in very specific information (what i asked above), So if there is any thing you recommend to start with i will appreciate it.

I can list some points here. But what I am going to tell is just let you know how display works. It may not resolve any problem here.

  1. Back to your original question. You want to add a mode to support 3840x1200 @30/60 hz. Then here comes the question… Have you ever wondered why you cannot just buy a FHD monitor, which only supports 1080p and ask this monitor to render out a 3840x1200 mode? or even more, why you cannot use a FHD monitor to scan out 8k resolution?
    Smart as you may know that it is because the monitor physically cannot support it.

  2. Then how does source device like tegra or your host dGPU knows what mode the monitor can support? There is a eeprom device on your monitor. When HDMI or DP cable is connected to the monitor, the source device (tegra) will read the “edid” from your monitor eeprom. EDID would tell source device what mode is supported here.

  1. Then back to tegra specific setting. As I said previously, our driver does not allow user to add mode arbitrarily. We only accepts what the hardware/edid tells us. It may also cause problem if we directly feed a mode that monitor physically not supports.

  2. Some users also hack a fake edid to our driver because we have some debug functions there which can pick hardcoded edid instead of that one from sink edid. However, it causes problems like unstable signal as my point (3). Thus, I don’t suggest to use that either.

thank you for your detailed answer. I appreciate it!

2 last questions plz:

  1. I want to read the list of supported resolutions by my monitor (the info you mentions in (2) stored in the eeprom).
    how can i obtain it?

.2 If we want to edit the edid as you mentioned in (4) for debugging purposes, is there any guide on how to do this?

2Thanks!

Actually, what xrandr gives you is already the list supported by both your monitor + tegra.

For this one, I wrote a page long time ago to force edid in our driver.

.2 If we want to edit the edid as you mentioned in (4) for debugging purposes, is there any guide on how to do this?

https://elinux.org/Jetson_TX2/r28_Display_debug

However, unfortunately, I do not know how to generate a edid that could match your case.

ok, thank you