gpt4 book ai didi

linux - 如何在 SSH 之上使用 OpenGL?

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:32 47 4
gpt4 key购买 nike

我正在尝试在远程计算机上使用 PyBullet。远程计算机具有带 410 个驱动程序的 NVIDIA RTX 2070 GPU 卡。 xlogo 工作正常。

快速测试给我错误:

>>> import pybullet as p; p.connect(p.GUI);
pybullet build time: May 13 2019 09:52:59
startThreads creating 1 threads.
starting thread 0
started thread 0
argc=2
argv[0] = --unused
argv[1] = --start_demo_name=Physics Server
ExampleBrowserThreadFunc started
X11 functions dynamically loaded using dlopen/dlsym OK!
X11 functions dynamically loaded using dlopen/dlsym OK!
Creating context
Failed to create GL 3.3 context ... using old-style GLX context
Failed to create an OpenGL context

我可以使用 glxgears 得到这样的错误:

$ glxgears
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 151 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 31
Current serial number in output stream: 32

为了调试它,我尝试这样做:

$ ldd `which glxgears`
linux-vdso.so.1 (0x00007ffce6fad000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fc9a9ecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc9a9b2e000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fc9a97f6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc9a9405000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fc9a91d4000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fc9a8f1e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc9a8cff000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc9aa35e000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fc9a8ad7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc9a88d3000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fc9a86cf000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fc9a84c9000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fc9a82b4000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc9a80ac000)

显然,这里没有使用 nvidia:

$ ll /usr/lib/x86_64-linux-gnu/libGL*                                    
lrwxrwxrwx 1 root root 22 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLdispatch.so -> libGLdispatch.so.0.0.0
lrwxrwxrwx 1 root root 22 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 -> libGLdispatch.so.0.0.0
-rw-r--r-- 1 root root 599K mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0.0.0
lrwxrwxrwx 1 root root 29 juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1 -> libGLESv1_CM_nvidia.so.410.48
-rwxr-xr-x 1 root root 59K juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.410.48
lrwxrwxrwx 1 root root 21 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so -> libGLESv1_CM.so.1.0.0
lrwxrwxrwx 1 root root 21 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1 -> libGLESv1_CM.so.1.0.0
-rw-r--r-- 1 root root 43K mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1.0.0
lrwxrwxrwx 1 root root 26 juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2 -> libGLESv2_nvidia.so.410.48
-rwxr-xr-x 1 root root 109K juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.410.48
lrwxrwxrwx 1 root root 18 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv2.so -> libGLESv2.so.2.0.0
lrwxrwxrwx 1 root root 18 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv2.so.2 -> libGLESv2.so.2.0.0
-rw-r--r-- 1 root root 71K mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLESv2.so.2.0.0
lrwxrwxrwx 1 root root 16 août 24 2017 /usr/lib/x86_64-linux-gnu/libGLEW.so -> libGLEW.so.2.0.0
lrwxrwxrwx 1 root root 16 août 24 2017 /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0 -> libGLEW.so.2.0.0
-rw-r--r-- 1 root root 575K août 24 2017 /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0.0
-rw-r--r-- 1 root root 671 juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGL.la
lrwxrwxrwx 1 root root 14 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGL.so -> libGL.so.1.0.0
lrwxrwxrwx 1 root root 14 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGL.so.1 -> libGL.so.1.0.0
-rw-r--r-- 1 root root 555K mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
-rw-r--r-- 1 root root 905K mai 22 2016 /usr/lib/x86_64-linux-gnu/libGLU.a
lrwxrwxrwx 1 root root 15 mai 22 2016 /usr/lib/x86_64-linux-gnu/libGLU.so -> libGLU.so.1.3.1
lrwxrwxrwx 1 root root 15 juin 14 2018 /usr/lib/x86_64-linux-gnu/libGLU.so.1 -> libGLU.so.1.3.1
-rw-r--r-- 1 root root 443K mai 22 2016 /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
lrwxrwxrwx 1 root root 44 juin 18 12:42 /usr/lib/x86_64-linux-gnu/libGLX.0.so -> /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
lrwxrwxrwx 1 root root 23 juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0 -> libGLX_nvidia.so.410.48
lrwxrwxrwx 1 root root 20 févr. 8 23:02 /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0 -> libGLX_mesa.so.0.0.0
-rw-r--r-- 1 root root 469K févr. 8 23:02 /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0
lrwxrwxrwx 1 root root 23 juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0 -> libGLX_nvidia.so.410.48
-rwxr-xr-x 1 root root 1,3M juin 18 12:27 /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.410.48
lrwxrwxrwx 1 root root 15 juin 18 12:48 /usr/lib/x86_64-linux-gnu/libGLX.so.0 -> libGLX.so.0.0.0
-rw-r--r-- 1 root root 67K mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLX.so.0.0.0
lrwxrwxrwx 1 root root 15 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLX.so.0.bak -> libGLX.so.0.0.0
lrwxrwxrwx 1 root root 15 mai 10 14:17 /usr/lib/x86_64-linux-gnu/libGLX.so.bak -> libGLX.so.0.0.0

我尝试安装 libglvnd,重新安装 nvidia,但没有任何改变。

我有点迷失在这里。我真的不知道我应该进一步调查什么。

最佳答案

我不认为这里可以做很多事情。 Core X11(通过“INDIRECT”模式下的 GLX 扩展)仅支持相对较旧的 OpenGL 子集。大多数现代 opengl 驱动程序以“直接”模式工作:您使用 DRI 扩展与 X 服务器通信,为您分配一些视频内存/屏幕区域,然后使用 GPU 直接渲染到该视频内存,完全绕过网络层。

根据您的 opengl 驱动程序和程序(必须能够回退到间接模式),您可能会通过将 LIBGL_ALWAYS_INDIRECT 变量设置为 1 来获得一些运气

关于linux - 如何在 SSH 之上使用 OpenGL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56647701/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com