Bug 417986

Summary: OpenGL Section in Graphical info shows wrong kernel module with NVIDIA + Intel optimus
Product: [Applications] kinfocenter Reporter: Ashcon Mohseninia <ashcon50>
Component: OpenGLAssignee: David Hubner <hubn3rd>
Status: RESOLVED FIXED    
Severity: minor CC: sitter
Priority: NOR    
Version: 5.18.1   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In: 5.18.5
Attachments: Image showing mix up of openGL attributes

Description Ashcon Mohseninia 2020-02-21 11:56:38 UTC
Created attachment 126256 [details]
Image showing mix up of openGL attributes

SUMMARY
When using the NVIDIA GPU through optimus-manager as the primary GPU, Kinfocenter displays a mix up of Nvidia and Intel attributes in the OpenGL section.

Example in attached image shows 3D accelerator device as UHD Graphics 630 but shows the Driver as being NVIDIA, the OpenGL Version being 4.6.0 NVIDIA 440.59 and the Kernel module being i915


STEPS TO REPRODUCE
1. Use optimus manager on a supported laptop and switch to nvidia
2. Launch Kinfocenter
3. Observe mixed vendors in the OpenGL Section as shown in attachment

OBSERVED RESULT


EXPECTED RESULT


SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 
Qt Version: 

ADDITIONAL INFORMATION
Comment 1 Harald Sitter 2020-02-24 10:34:58 UTC
What's the output of `glxinfo -B` and of `qdbus org.kde.KWin /KWin org.kde.KWin.supportInformation`?
Comment 2 Ashcon Mohseninia 2020-02-24 10:44:00 UTC
--GLXINFO--

[ashcon@RB-2018 ~]$ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 6144 MB
    Total available memory: 6144 MB
    Currently available dedicated video memory: 5660 MB
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 1060 with Max-Q Design/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 440.59
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6.0 NVIDIA 440.59
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)

OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 440.59
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20


--QDBUS--
[ashcon@RB-2018 ~]$ qdbus org.kde.KWin /KWin org.kde.KWin.supportInformation
KWin Support Information:
The following information should be used when requesting support on e.g. https://forum.kde.org.
It provides information about the currently running instance, which options are used,
what OpenGL driver and which effects are running.
Please post the information provided underneath this introductory text to a paste bin service
like https://paste.kde.org instead of pasting into support threads.

==========================

Version
=======
KWin version: 5.18.1
Qt Version: 5.14.1
Qt compile version: 5.14.1
XCB compile version: 1.13.1

Operation Mode: X11 only

Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_DRM: yes
HAVE_GBM: yes
HAVE_EGL_STREAMS: yes
HAVE_X11_XCB: yes
HAVE_EPOXY_GLX: yes
HAVE_WAYLAND_EGL: yes

X11
===
Vendor: The X.Org Foundation
Vendor Release: 12007000
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
DAMAGE: yes; Version: 0x11
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
GLX: yes; Version: 0x0

Decoration
==========
Plugin: org.kde.breeze
Theme: 
Plugin recommends border size: None
Blur: 0
onAllDesktopsAvailable: false
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 0, 2
decorationButtonsRight: 6, 3, 4, 5
borderSize: 0
gridUnit: 10
font: Noto Sans,10,-1,0,50,0,0,0,0,0,Regular
smallSpacing: 2
largeSpacing: 10

Platform
==========
Name: KWin::X11StandalonePlatform

Options
=======
focusPolicy: 0
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 4
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
rollOverDesktops: true
focusStealingPreventionLevel: 1
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: 0
commandActiveTitlebar2: 28
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 28
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 28
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
showGeometryTip: false
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
compositingMode: 1
useCompositing: true
hiddenPreviews: 1
unredirectFullscreen: false
glSmoothScale: 2
xrenderSmoothScale: false
maxFpsInterval: 6944444
refreshRate: 0
vBlankTime: 6000000
glStrictBinding: false
glStrictBindingFollowsDriver: true
glCoreProfile: true
glPreferBufferSwap: 99
glPlatformInterface: 1
windowsBlockCompositing: false

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
timeThreshold: 150
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Multi-Head: no
Active screen follows mouse:  no
Number of Screens: 1

Screen 0:
---------
Name: eDP-1-1
Geometry: 0,0,1920x1080
Scale: 1
Refresh Rate: 143.998


Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 1060 with Max-Q Design/PCIe/SSE2
OpenGL version string: 3.1.0 NVIDIA 440.59
OpenGL platform interface: GLX
OpenGL shading language version string: 1.40 NVIDIA via Cg compiler
Driver: NVIDIA
Driver version: 440.59
GPU class: Unknown
OpenGL version: 3.1
GLSL version: 1.40
X server version: 1.20.7
Linux kernel version: 5.5.5
Direct rendering: Requires strict binding: no
GLSL shaders:  yes
Texture NPOT support:  yes
Virtual Machine:  no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace:  no

Loaded Effects:
---------------
zoom
kwin4_effect_frozenapp
kwin4_effect_fadingpopups
kwin4_effect_windowaperture
kwin4_effect_morphingpopups
kwin4_effect_sessionquit
kwin4_effect_maximize
kwin4_effect_fade
kwin4_effect_dialogparent
kwin4_effect_login
kwin4_effect_logout
slidingpopups
slide
screenshot
magiclamp
desktopgrid
colorpicker
presentwindows
highlightwindow
blur
contrast
startupfeedback
screenedge
kscreen

Currently Active Effects:
-------------------------
blur
contrast

Effect Settings:
----------------
zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
enableFocusTracking: false
followFocus: true
focusDelay: 350
moveFactor: 20
targetZoom: 1

kwin4_effect_frozenapp:
isActiveFullScreenEffect: false

kwin4_effect_fadingpopups:
isActiveFullScreenEffect: false

kwin4_effect_windowaperture:
isActiveFullScreenEffect: false

kwin4_effect_morphingpopups:
isActiveFullScreenEffect: false

kwin4_effect_sessionquit:
isActiveFullScreenEffect: false

kwin4_effect_maximize:
isActiveFullScreenEffect: false

kwin4_effect_fade:
isActiveFullScreenEffect: false

kwin4_effect_dialogparent:
isActiveFullScreenEffect: false

kwin4_effect_login:
isActiveFullScreenEffect: false

kwin4_effect_logout:
isActiveFullScreenEffect: false

slidingpopups:
slideInDuration: 150
slideOutDuration: 250

slide:
duration: 500
horizontalGap: 45
verticalGap: 20
slideDocks: false
slideBackground: true

screenshot:

magiclamp:

desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true

colorpicker:

presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: false
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: false
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0

highlightwindow:

blur:

contrast:

startupfeedback:
type: 1

screenedge:

kscreen:
Comment 3 Bug Janitor Service 2020-03-10 04:33:11 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 4 Ashcon Mohseninia 2020-03-10 11:13:05 UTC
I forgot to change the bug status last time i posted the info. Sorry
Comment 5 Harald Sitter 2020-03-11 11:16:58 UTC
I'm pretty sure what's going on is that only a single DRI device on the bus is loaded into the infocenter view.

What needs to happen is that foreach /dev/dri/cardN we need to load the data and show it, but currently we only ever look at card0.
Comment 6 Harald Sitter 2020-04-03 13:47:03 UTC
Git commit 72a09a3f2787fb32e9cde83f1f4fcf19e5ab54d2 by Harald Sitter.
Committed on 03/04/2020 at 13:41.
Pushed by sitter into branch 'Plasma/5.18'.

make opengl module support multiple dri devices

Summary:
previously the code would only ever look at dri0 when that may not actually
be the device that is used. instead list all possible devices (I am
assuming in nvidia/intel combos the actual computations may happen on any
of them depending on configuration).
as a side effect we can no longer list a single kernel module but instead
list the module per-device.
the devices use cardN names on linux.
for the /proc based fallback we do not use cardN but simply N (to be
improved in master with localized string).

the legacy /proc/dri/ support was entirely removed. it's not a thing since
linux 3.12, which is from 2013.

on freebsd we continue to only support one device, in part because I have
no way to test multi-device support. the info is woefully underwhelming and
could as well not be there anyway TBH.
FIXED-IN: 5.18.5

Test Plan: vm with 3 cards show all of them with suitable info

Reviewers: apol

Reviewed By: apol

Subscribers: pino, zzag, apol, adridg, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D27980

M  +104  -89   Modules/opengl/opengl.cpp

https://commits.kde.org/kinfocenter/72a09a3f2787fb32e9cde83f1f4fcf19e5ab54d2