[Question] More CRTCs than supported displays; questions about intel-virtual-output and VIRTUAL1

Andrew Parsons parsonsandrew1 at gmail.com
Fri Jul 24 00:38:21 UTC 2020


Hello all,

TL;DR: my questions concern the following two topics:
- CRTCs and Intel integrated GPUs
- intel-virtual-output utility

I have a laptop with both an Intel integrated GPU and an AMD discrete GPU.

```
➜  ~ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x70 cap: 0x9, Source Output, Sink Offload crtcs: 4
outputs: 8 associated providers: 1 name:Intel
Provider 1: id: 0x44 cap: 0x6, Sink Output, Source Offload crtcs: 5
outputs: 0 associated providers: 1 name:AMD Radeon Pro WX3100 @
pci:0000:3b:00.0
```

I am certain that both are configured correctly:

```
➜  ~ DRI_PRIME=0 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 620 (WHL GT2)
➜  ~ DRI_PRIME=1 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon Pro WX3100 (POLARIS12, DRM 3.33.0,
5.3.0-53-generic, LLVM 9.0.1)
```

I had hoped to configure a four-way multihead configuration (3 monitors
using the dGPU, and the built-in display driven by the iGPU). Alas, this
seems to be impossible with my hardware; the AMD device lacks an output and
merely serves as an offloading device.
While investigating this, I came across something I didn't quite
understand. Officially, the Intel UHD 620 supports three displays. However,
`xrandr` shows that there are four CTRCs available on Provider 0 (Intel).

```
➜  ~ xrandr --verbose | grep CRTC
CRTC:       0
CRTCs:      1 0 2
CRTCs:      1 0 2
CRTC:       1
CRTCs:      1 0 2
CRTC:       2
CRTCs:      1 0 2
CRTCs:      1 0 2
CRTCs:      1 0 2
CRTCs:      1 0 2
CRTCs:      3
```

It seems that the fourth CRTC ("third" when zero-indexed) is used by
VIRTUAL1 output.

```
➜  ~ xrandr --verbose | tail
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Identifier: 0x6f
Timestamp:  22792
Subpixel:   no subpixels
Clones:
CRTCs:      3
Transform:  1.000000 0.000000 0.000000
           0.000000 1.000000 0.000000
           0.000000 0.000000 1.000000
          filter:
```

Out of curiosity, I thought to move CRTC 3 to a connected but disabled
monitor (DP2). However, this doesn't seem to work.

```
➜  ~ xrandr --output DP2 --crtc 3
xrandr: output DP2 cannot use crtc 0x67
```

After some Googling, I've come to believe that the VIRTUAL1 output has been
created by the intel-virtual-output utility. To be honest, I find the man
page for this package vague. "The tool connects local VirtualHeads to a
remote output, allowing the primary display to extend onto the remote
outputs."
I'm admittedly (and probably quite clearly) a newbie when it comes to
graphics, so this description tells me very little. Moreover, the help menu
lists options for starting Bumblebee, something I believe is
Nvidia-specific.  Every forum thread I've read mentioning this utility
involves an Nvidia card.

My questions are:
1. Why or how can I have more CRTCs than officially supported outputs for
the Intel UHD 620?
2. What does the intel-virtual-output utility do for me, a hybrid Intel/AMD
user?
3. Why do I need VIRTUAL1?
4. What would happen if I removed the intel-virtual-output utility?

Thank you in advance,
Andrew Parsons
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg/attachments/20200723/9e167bef/attachment.htm>


More information about the xorg mailing list