SDK - xrandr - Source Output cap

Dear Sir
We are developing kernel driver of an USB to HDMI on Jetson Xavier NX, which will use Xorg server with “Source Output cap”
However it is not enabled.
Is there the source code of nvidia_drv.so(/usr/lib/xorg/modules/drivers)?
Or is there other way to enable “Source Output cap”?

Hi,

This source is not public. What is the purpose of using Xorg with this setting?

If kernel supports this, then maybe other kind of high level display backend like weston would work too.

Dear Wayne.
We are trying to develop Wireless Panel on Jetson platform through USB to HDMI interface.
However, there’s no source code for this part can be modified.
Is it possible that we can get the source code to modify?
Thanks.

Hi,

I think not possible.

Could you explain why a development in wireless panel would require Xorg driver?

Dear Wayne.
In X-window system, as 2nd graphic, the USB graphic needs “source output cap” of Nvidia’s xorg(as 1st graphic) driver to create the view of the USB graphic.
Then USB graphic will display this view through USB and its HDMI.
What we expect is as the following

Dear Wayne
Is it possible to get a binary release of nvidia_drv.so with “Source Output cap” enabled?
Or is there a schedule for Nvidia to release this(library .so file is enough)?
Or there is another way to create a X-window view on a USB graphic on Jetson?

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

Hi,

Can someone explain why there is a need of “source output cap”?

I checked some pages like below. And such feature is used when there is dGPU case.

https://download.nvidia.com/XFree86/Linux-x86_64/435.21/README/primerenderoffload.html

I still have no idea why this issue is related to bring up usb → hdmi function.
Please share more detail about your setup or driver code you are using. Does this usb graphic ever leverage our tegradc driver? or you just want this feature because there are other existing usb driver that is using Xorg?

Dear Wayne
USB graphic works as the secondary GPUs. It should be added to the master as output sink making the slave-outputs work. So this need the master can support source output capability.

It is not related to bring up usb → hdmi function, but it is related to the USB graphic. You can just consider this USB graphic as secondary GPU (based on DRM multi-adapter).

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

please check if AllowPRIMEDisplayOffloadSink option in xorg.conf can help or not.

Dear Wayne
1.
No, AllowPRIMEDisplayOffloadSink does NOT help.
As the following

What we want is that as output sink, the master makes slave-outputs work.
I found the following description, should we try “AllowNVIDIAGPUScreens”?

Appendix B. X Config Options (nvidia.com)

The following NVIDIA X driver options are global to the X server, and should be specified in the “ServerLayout” section of the X configuration file.

Option "AllowNVIDIAGPUScreens" "boolean"

When this option is enabled, and the X server version supports GPU screens (xorg-server 1.13 or newer), the NVIDIA X driver will allow GPU screens to be created for each NVIDIA GPU detected in the system for which there is no X screen configured or auto-configured.

GPU screens within the X server are generally not directly addressable by X11 applications: the ‘screen’ index in any X protocol request can only specify X screens, not GPU screens. But, GPU screens are useful for PRIME render offload configurations.

Default: The NVIDIA X driver will allow GPU screens on X.Org xserver version 1.20.7 and higher.

Option "AllowPRIMEDisplayOffloadSink" "boolean"

RandR PRIME Display Offload Sink support, also known as “Reverse PRIME”, is disabled by default for NVIDIA RandR providers on X.Org X servers prior to version 1.20.7 due to latent bugs that can result in crashes when used with the NVIDIA driver. X server version 1.20.6 contains fixes for the crashing, but cannot be detected automatically.

This option overrides the default behavior, allowing PRIME Display Offload Sink to be used regardless of X server version.

Default: PRIME Display Offload Sink will be allowed only for X server 1.20.7 or newer.

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

Hello,

  1. What is your xorg.conf like now?
  2. You want the USB side to be the output sink and get the rendering from tegra display controller, right?

Dear Wayne
Yes, we want the USB side to be the output sink and get the rendering from tegra display controller.
xorg.cong is as attachment.

xorg.conf (852 Bytes)

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

Hello,

I think the Option “AllowNVIDIAGPUScreens” should be write in separate serverlayout section.

Example:

Section "ServerLayout"
Identifier "layout"
Screen 0 "intel"
Inactive "nvidia"
Option "AllowNVIDIAGPUScreens" "true"

Dear Wayne
Source output cap is still disable. The attachments are log and the xorg.conf file.

Xorg.1.log (20.3 KB) xorg.conf (1.1 KB)

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

We’re discussing internally whether this use case can be supported on Xavier NX.
We will do the update once clarified. Please stay tuned.

Sorry for late reply.
It is not yet to support PRIME feature in Xorg. So maybe you should try other methods.

Is it a custom board? Could you share what kind of usb dGPU device is it? Is it able to run on devkit?

Dear Wayne

  1. The USB graphic device is SM768 from Siliconmotion.
  2. Xavier NX board is from Aetina. The USB bus and the graphic part of the Xavier NX are the same as Nvidia’s board. Aetina’s board can recognize the USB graphic as USB3.0 device. The trouble is the driver of SM768 uses “Source output cap” feature.
  3. Is there other way to maintain indirect display driver on Xavier NX?

Millitronic Co., LTD
www.millitronic.com.tw
Regards
Bayer

Currently, there is no method for this. We are still planning if this could be supported in future release.

  1. Is there other way to maintain indirect display driver on Xavier NX?