This forum has been archived. All content is frozen. Please use KDE Discuss instead.

GLX for remote vnc

Tags: None
(comma "," separated)
venember
Registered Member
Posts
6
Karma
0

GLX for remote vnc

Fri Jan 08, 2016 10:59 am
Hi,

how can I setup and activate (LIBGL_ALWAYS_INDIRECT=1) the +iglx X server parameter in the kdmrc setup file (or any other solution)? :<

Thanks
luebking
Karma
0

Re: GLX for remote vnc

Fri Jan 08, 2016 10:42 pm
exporting environments for the entire session can be achieved by scriptlets in ~/.kde/env (KDE4) or ~/.config/plasma-workspace/env/ (KDE5)

Just add "indirect_gl.sh" there:
Code: Select all
#!/bin/sh
export LIBGL_ALWAYS_INDIRECT=1


and ensure to "chmod +x" indirect_gl.sh
venember
Registered Member
Posts
6
Karma
0

Re: GLX for remote vnc

Mon Jan 11, 2016 6:49 am
luebking wrote:exporting environments for the entire session can be achieved by scriptlets in ~/.kde/env (KDE4) or ~/.config/plasma-workspace/env/ (KDE5)

Just add "indirect_gl.sh" there:
Code: Select all
#!/bin/sh
export LIBGL_ALWAYS_INDIRECT=1


and ensure to "chmod +x" indirect_gl.sh


Thank you.
I had no "/env" subdirectories in the .kde, .kde4 and .config home directory so I made them.

Unfortunately the Plasma5 and KDE crash during login in openSUSE KDE distribution.
I set a thread in the forum but nothing happened till now...
Developer message:

Code: Select all
Application: Plasma (plasmashell), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fd3f655d900 (LWP 5633))]

Thread 6 (Thread 0x7fd3d3916700 (LWP 5648)):
#0 0x00007fd3ef286cfc in __lll_lock_wait () at /lib64/libpthread.so.0
#1 0x00007fd3ef280bb2 in pthread_mutex_lock () at /lib64/libpthread.so.0
#2 0x00007fd3eb532fcc in () at /usr/lib64/libGL.so.1
#3 0x00007fd3eb537b11 in () at /usr/lib64/libGL.so.1
#4 0x00007fd3eb537fbb in () at /usr/lib64/libGL.so.1
#5 0x00007fd3e7160ff0 in () at /usr/lib64/tls/libnvidia-tls.so.352.63
#6 0x00007fd3ec155210 in () at /usr/lib64/libglib-2.0.so.0
#7 0x00007fd3ec112d94 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#8 0x00007fd3ec113208 in () at /usr/lib64/libglib-2.0.so.0
#9 0x00007fd3ec11336c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#10 0x00007fd3f039d52b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#11 0x00007fd3f034763a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#12 0x00007fd3f0173b1c in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#13 0x00007fd3f34749a5 in () at /usr/lib64/libQt5Qml.so.5
#14 0x00007fd3f017894f in () at /usr/lib64/libQt5Core.so.5
#15 0x00007fd3ef27e4a4 in start_thread () at /lib64/libpthread.so.0
#16 0x00007fd3efa88bdd in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7fd3c7cae700 (LWP 5649)):
#0 0x00007fd3ef286d9a in __lll_unlock_wake () at /lib64/libpthread.so.0
#1 0x00007fd3ef282121 in __pthread_mutex_unlock_usercnt () at /lib64/libpthread.so.0
#2 0x00007fd3eb532ce5 in () at /usr/lib64/libGL.so.1
#3 0x00007fd3eb538018 in () at /usr/lib64/libGL.so.1
#4 0x00007fd3e7161001 in () at /usr/lib64/tls/libnvidia-tls.so.352.63
#5 0x00007fd3ec155210 in () at /usr/lib64/libglib-2.0.so.0
#6 0x00007fd3ec112d94 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#7 0x00007fd3ec113208 in () at /usr/lib64/libglib-2.0.so.0
#8 0x00007fd3ec11336c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#9 0x00007fd3f039d52b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#10 0x00007fd3f034763a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#11 0x00007fd3f0173b1c in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#12 0x00007fd3f34749a5 in () at /usr/lib64/libQt5Qml.so.5
#13 0x00007fd3f017894f in () at /usr/lib64/libQt5Core.so.5
#14 0x00007fd3ef27e4a4 in start_thread () at /lib64/libpthread.so.0
#15 0x00007fd3efa88bdd in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7fd3c641e700 (LWP 5650)):
#0 0x00007fd3ef286cfc in __lll_lock_wait () at /lib64/libpthread.so.0
#1 0x00007fd3ef280bb2 in pthread_mutex_lock () at /lib64/libpthread.so.0
#2 0x00007fd3eb532fcc in () at /usr/lib64/libGL.so.1
#3 0x00007fd3eb537b11 in () at /usr/lib64/libGL.so.1
#4 0x00007fd3eb537fbb in () at /usr/lib64/libGL.so.1
#5 0x00007fd3e7160ff0 in () at /usr/lib64/tls/libnvidia-tls.so.352.63
#6 0x00007fd3ec155210 in () at /usr/lib64/libglib-2.0.so.0
#7 0x00007fd3ec112d94 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#8 0x00007fd3ec113208 in () at /usr/lib64/libglib-2.0.so.0
#9 0x00007fd3ec11336c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#10 0x00007fd3f039d52b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#11 0x00007fd3f034763a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#12 0x00007fd3f0173b1c in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#13 0x00007fd3f34749a5 in () at /usr/lib64/libQt5Qml.so.5
#14 0x00007fd3f017894f in () at /usr/lib64/libQt5Core.so.5
#15 0x00007fd3ef27e4a4 in start_thread () at /lib64/libpthread.so.0
#16 0x00007fd3efa88bdd in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7fd3c4a4e700 (LWP 5658)):
#0 0x00007fd3ef28407f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1 0x00007fd3f5c4ea84 in () at /usr/lib64/libQt5Script.so.5
#2 0x00007fd3f5c4eac9 in () at /usr/lib64/libQt5Script.so.5
#3 0x00007fd3ef27e4a4 in start_thread () at /lib64/libpthread.so.0
#4 0x00007fd3efa88bdd in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7fd335d76700 (LWP 5659)):
#0 0x00007fd3ec1564d4 in g_mutex_unlock () at /usr/lib64/libglib-2.0.so.0
#1 0x00007fd3ec113376 in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#2 0x00007fd3f039d52b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#3 0x00007fd3f034763a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4 0x00007fd3f0173b1c in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#5 0x00007fd3f4009e42 in () at /usr/lib64/libQt5Quick.so.5
#6 0x00007fd3f017894f in () at /usr/lib64/libQt5Core.so.5
#7 0x00007fd3ef27e4a4 in start_thread () at /lib64/libpthread.so.0
#8 0x00007fd3efa88bdd in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7fd3f655d900 (LWP 5633)):
[KCrash Handler]
#6 0x00007fd3ef9d3d38 in raise () at /lib64/libc.so.6
#7 0x00007fd3ef9d518a in abort () at /lib64/libc.so.6
#8 0x00007fd3f016682e in () at /usr/lib64/libQt5Core.so.5
#9 0x00007fd3f40735c4 in () at /usr/lib64/libQt5Quick.so.5
#10 0x00007fd3f4074545 in () at /usr/lib64/libQt5Quick.so.5
#11 0x00007fd3f407544e in () at /usr/lib64/libQt5Quick.so.5
#12 0x00007fd3f0898c3b in QWindow::event(QEvent*) () at /usr/lib64/libQt5Gui.so.5
#13 0x00007fd3f40ac621 in QQuickWindow::event(QEvent*) () at /usr/lib64/libQt5Quick.so.5
#14 0x0000000000442316 in DesktopView::event(QEvent*) ()
#15 0x00007fd3f16d08cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#16 0x00007fd3f16d59d6 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#17 0x00007fd3f0349cf3 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#18 0x00007fd3f08916e4 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () at /usr/lib64/libQt5Gui.so.5
#19 0x00007fd3f089237d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib64/libQt5Gui.so.5
#20 0x00007fd3f08779f8 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Gui.so.5
#21 0x00007fd3e07d9ed0 in () at /usr/lib64/libQt5XcbQpa.so.5
#22 0x00007fd3ec113097 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#23 0x00007fd3ec1132c8 in () at /usr/lib64/libglib-2.0.so.0
#24 0x00007fd3ec11336c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#25 0x00007fd3f039d50f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#26 0x00007fd3f034763a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#27 0x00007fd3f034f2fd in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#28 0x0000000000436571 in main ()



Could you help me in this also?
Thanks in advance
luebking
Karma
0

Re: GLX for remote vnc

Mon Jan 11, 2016 9:50 am
Unspecific abort in QtQuick, you'll have to install debug packages for any useful information, but since it's also locked in several GL threads, I assume a relation.

QtQuick afair hard-depends on GL 2.0, but LIBGL_ALWAYS_INDIRECT will effectively set back GL caps to 1.3 (unless maybe on the nvidia blob)
venember
Registered Member
Posts
6
Karma
0

Re: GLX for remote vnc

Thu Jan 14, 2016 4:35 pm
luebking wrote:Unspecific abort in QtQuick, you'll have to install debug packages for any useful information, but since it's also locked in several GL threads, I assume a relation.

QtQuick afair hard-depends on GL 2.0, but LIBGL_ALWAYS_INDIRECT will effectively set back GL caps to 1.3 (unless maybe on the nvidia blob)


Hmmm... I am in big trouble...

I have no working KDE or Plasma5 environment in the openSUSE so I can not try your script... no fix till now.
And I am not sure in that it is working, because I do not know that X server accept this at all (iglx disable) or by some GL incompatibility...

And I do not know any other solution with other desktops at all.
luebking
Karma
0

Re: GLX for remote vnc

Fri Jan 15, 2016 10:44 am
You don't need kde/plasma to do this, eg. kdm/sddm should allow you to log into a failsafe session (or maybe openbox or similar is installed)

Stupid question: are you sure you've working GL support at all?
Either log into a failsafe session or press ctrl+alt+F2 to get a textshell login.
in the latter case, after the login first run "export DISPLAY=:0"

The provide the output of "glxinfo"
venember
Registered Member
Posts
6
Karma
0

Re: GLX for remote vnc

Sat Jan 16, 2016 12:36 pm
Sorry for the late answer.

1. It is a remote machine, 40 far from me.
2. It is an openSUSE working server so I can not do everything in every time.
3. I was trying glxinfo locally, it worked but is was a long time ago.
4. Approximately half of the desktops (including Plasma, KDE and failsafe) do not work, but XFCE, LXQT, IceWM and Openbox yes.
5. My test application is the Wakfu game beta server.
6. As I read the X server description I must export the display, BEFORE the graphical environment starting to forward the GLX based things.
7. I was making thousands of experimental tests, but already the nvidia server can not work properly (from remote access). I was trying passworded vnc and ssh tunneling.

So I would need a managed desktop to export the display (as your script would do) AND an Xserver which is able to make the difference between software and hardware rendering AND forward the software output to the remote real display... and I am not a big guru as I see... :<
Or whatever WORKING solution. Opensuse forum does not help for me.
luebking
Karma
0

Re: GLX for remote vnc

Sat Jan 16, 2016 12:53 pm
The failsafe session cannot fail. Or, if it fails, everything fails. However that's not important - if you can log into an openbox session, you can try (glxinfo!) and alter things from there just as well.

LIBGL_ALWAYS_INDIRECT is an environment variable which is interpreted by libGL used by the client process, ie. to apply to eg. plasmashell it needs to be exported to plasmashell - it's NOT required to export it to the X11 server.

LIBGL_ALWAYS_INDIRECT does NOT cause software rendering, that would be LIBGL_ALWAYS_SOFTWARE=1

The nvidia blob doesn't support either environment. You render directly and in hardware.

=> afaik only x11vnc will work (as bonus you get HW accelerated, direct rendering), tight/tigervnc won't
venember
Registered Member
Posts
6
Karma
0

Re: GLX for remote vnc

Sat Jan 16, 2016 3:12 pm
Hmmm.

Client side: win7 + Realvnc (maybe with ssh tunneling). I downloaded ssvnc, it crashes after login.
The server standard Opensuse vnc server in Xinetd (x11vnc, I think), with password and geometry setup
The history: https://forums.opensuse.org/showthread. ... shes/page4 with another Xorg.0.log: working.
The workflow: Realvnc -> vnc login -> opensuse login screen with desktop list ->for example Openbox (or other graphical environment) -> xterm -> glxinfo: XLib: extension GLX missingon display xxx.xxx:2....

I think I make some mistakes in the nvidia driver install, but I do not know, where. I think the server mixes xorg and nvidia features.
I do not know why opensuse operator forces Mesa and noveau when it is absolutely unnecessary in my case.
venember
Registered Member
Posts
6
Karma
0

Re: GLX for remote vnc

Sun Jan 17, 2016 8:27 am
luebking wrote:...
=> afaik only x11vnc will work (as bonus you get HW accelerated, direct rendering), tight/tigervnc won't


The x11vnc WORKS (with ssvnc and realvnc), thank you, luebking.
glxinfo answers.
But there are some errors:
- geometry problems
- Wakfu starts with blank screen, Kodi with "segmentation fault"
- Plasma5 starts also with one screen, then after disconnect the desktop remains to it by plasmashell...
- if the connection lost, the server crashes sometimes.

I will investigate the options and the applications, but it is not OS or desktop problem yet.
Thank you again.


Bookmarks



Who is online

Registered users: abc72656, Bing [Bot], Google [Bot], lockheed, Sogou [Bot], Yahoo [Bot]