How to limit the HDMI output resolution
Is it possible to limit the maximum resolution of the Jetson TX2’s HDMI output to Full HD (1920×1080@60p)?
I checked the Display Configuration and Bringup in the Jetson Linux Developer Guide, but I couldn’t understand the value of the options that should be specified in nvimp_util.
The current setting seems to be 4096x2160@60p, but I don’t know how this setting was generated.
I think I should change the sizeIn and sizeOut options of the nvimp_util command from the current setting to Full HD and replace the device tree.
Please let me know if there is a way to do this.
The available modes starts with the monitor providing that information (the “EDID” via a query of the monitor).
What do you see from the command “xrandr
”? Of the modes shown you can then pick among them. On a system with man pages you might look at “man xrandr”. You won’t use this to add modes, but you can use it to pick among the modes which exist based on the hardware port name. For example, if this is on “DP-0
” device name, and if there is a line for “1024x768
”, then something like this from inside the GUI (or from a text terminal in which you’ve exported the correct DISPLAY):
xrandr --output DP-0 --mode 1920x1080
(you might see a “rate” you can set if there are multiple refresh rates)
Beware that embedded system video drivers only accept modes reported by EDID. You cannot pick something not from EDID.
Thank you for your quick answer.
Is it possible to filter the modes reported by the monitor?
If the monitor reports a 4K mode, I would like to exclude modes above Full HD from the settings.
I believe I can adjust the modes that the video driver can support by changing the device tree using nvimp_util, but I don’t know how to do that and would like to know.
I have never tried to do this. Someone else will need to answer for anything specific.
In theory it would be possible with a kernel edit, although using xrandr would be a much easier/simpler solution. Perhaps there is a way to do so with device tree, but I’ve not heard of it (which does not mean it doesn’t exist). This is where EDID is normally handled:
nvidia/drivers/video/tegra/dc/
…which refers to out of tree content, not directly within the kernel.
When the kernel source is downloaded from NVIDIA it includes some directory tree content outside of the Linux kernel’s standard content. When various features are enabled in the kernel, that content is referred to via a relative path. A normal “NVIDIA” tree has this as its base of content:
sources
├── hardware
│ └── nvidia
└── kernel
├── kernel-4.9
├── nvgpu
└── nvidia
The actual kernel content which you would think of as “Linux” is within:
sources/kernel/kernel-4.9/
…and the content for “drivers/video/tegra/dc/
” is in:
sources/kernel/nvidia/
Using the out of tree content directory tree, you can find EDID handling in:
sources/kernel/nvidia/drivers/video/tegra/dc/edid.c
…and of course other content in that directory.
Is there a reason you don’t want to use xrandr
?