Bug 100139

Summary: [DRI2][PRIME] nouveau driver cannot find any connected connector
Product: Mesa Reporter: Anthoine Bourgeois <anthoine.bourgeois>
Component: Drivers/DRI/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED WORKSFORME QA Contact: Nouveau Project <nouveau>
Severity: normal    
Priority: medium    
Version: 10.3   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: Serial line output with drm.debug=0xe and nouveau.debug=trace

Description Anthoine Bourgeois 2017-03-09 14:31:47 UTC
Created attachment 130147 [details]
Serial line output with drm.debug=0xe and nouveau.debug=trace

I try to follow the documentation at https://nouveau.freedesktop.org/wiki/Optimus/ to enable my nvidia card, I only get black screen with the GPU offloading.

Laptop: DELL M6800
OS: Debian Jessie (8.7) with Mesa 10.3.2 and Xorg server 1.16.4
Kernel: 4.9.13
CPU + iGPU: Intel i7-4810MQ
dGPU: Quadro K4100M

Hardware:
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK104GLM [Quadro K4100M] (rev a1)

Step 1:
$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
   1920x1080     60.01*+  59.93    48.01  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     59.98  
   1280x1024     60.02  
   1440x900      59.89  
   1280x960      60.00  
   1360x768      59.80    59.96  
   1152x864      60.00  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
VGA1 disconnected (normal left inverted right x axis y axis)
DP4 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)

Step 2:
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x8d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 0 name:Intel
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 0 name:nouveau

Step 3:
$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor"
OpenGL vendor string: Intel Open Source Technology Center
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor"
OpenGL vendor string: Intel Open Source Technology Center

Step 4:
$ xrandr --setprovideroffloadsink nouveau Intel
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor"
OpenGL vendor string: nouveau

Step 5:
$ DRI_PRIME=1 glxgears -info
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
GL_RENDERER   = Gallium 0.4 on NVE4
GL_VERSION    = 3.0 Mesa 10.3.2
GL_VENDOR     = nouveau
GL_EXTENSIONS = <lots of extensions>
VisualID 104, 0x68
102606 frames in 5.0 seconds = 20521.141 FPS
103124 frames in 5.0 seconds = 20624.639 FPS

The glxgears window is black and stay black even after a resize.

I see those messages on dmesg:
  [   12.404679] nouveau 0000:01:00.0: No connectors reported connected with modes
  [   12.404700] [drm] Cannot find any crtc or sizes - going 1024x768
So I run the following step 6:
$ xrandr --setprovideroutputsource nouveau Intel

But the problem is still the same.

I also try vgaswitcheroo and the switch on discrete card gives me a black screen too. Fortunately I can switch back to the IGD with my serial line. The option 'nouveau.runpm=0' do not change the issue, so I guest it's not PM related.

How can I help to debug this issue ?
Comment 1 Ilia Mirkin 2017-03-09 14:53:43 UTC
In order for GPU offloading to work with DRI2, you must be running a redirecting compositor. Are you running such a compositor?
Comment 2 Anthoine Bourgeois 2017-03-09 17:42:31 UTC
(In reply to Ilia Mirkin from comment #1)
> In order for GPU offloading to work with DRI2, you must be running a
> redirecting compositor. Are you running such a compositor?

I use xfwm 4.12.3. Is it a redirecting compositor ?

Do you think the vgaswitcheroo is a different problem ? Should I fill a new bug for vgaswitcheroo ?
Comment 3 Ilia Mirkin 2017-03-09 17:53:15 UTC
No clue. I don't use xfwm and don't want to lie about what it does. Most wm's (window managers) are not compositors at all.

vgaswitcheroo likely will have no effect on your system as it most likely does not have a mux for the panel, and clearly both GPUs can be powered on at the same time.
Comment 4 Anthoine Bourgeois 2017-03-10 08:51:45 UTC
(In reply to Ilia Mirkin from comment #3)
> No clue. I don't use xfwm and don't want to lie about what it does. Most
> wm's (window managers) are not compositors at all.

It works with mutter/grome3, so it was a xfwm problem.

> vgaswitcheroo likely will have no effect on your system as it most likely
> does not have a mux for the panel, and clearly both GPUs can be powered on
> at the same time.

Thank you for your help Ilia. I close the bug.
Comment 5 Ilia Mirkin 2017-03-10 16:11:33 UTC
(In reply to Anthoine Bourgeois from comment #4)
> (In reply to Ilia Mirkin from comment #3)
> > No clue. I don't use xfwm and don't want to lie about what it does. Most
> > wm's (window managers) are not compositors at all.
> 
> It works with mutter/grome3, so it was a xfwm problem.

The composition probably just needs to come from a different application. Like xcompmgr or something. Or perhaps xfwm has an option to enable composition.

If you update your stack and switch to DRI3, you won't need to use a compositor. I'd recommend Xorg 1.18 + Mesa 17.0. With the latter you'll get a lot more out of both your iGPU and dGPUs.

If you update to kernel 4.10 you should be able to manually reclock your dGPU in order to make full use of its performance.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.