Estoy ejecutando un host Linux para el desarrollo de software Qt en un lugar central.
Con mi caja de Windows uso Xming como un servidor X local y masilla para conectarme a ese host Linux. Con esta configuración, puedo usar todos los programas X (xclock, xterm) y GLX (qtcreator, gxlinfo, glxgears ...) en el host de Linux.
Mi estación de trabajo principal es ubuntu 14.04 LTS con una tarjeta nvidia gfx. Cuando me conecto al host Linux con mi sistema ubuntu usando "ssh -p port # -YC my.dev.host.com", también puedo usar todos los programas X (xclock, xterm) pero no puedo usar los programas GLX (qtcreator, gxlinfo, glxgears ...).
Hasta ahora aprendí que esto se debe a que el servidor X no admite contextos GLX indirectos por defecto para la versión más joven 1.16.
Entonces mis preguntas son: ¿Cómo puedo habilitar contextos GLX indirectos (servidor X y controlador nvidida) en mi instalación ubuntu 14.04 LTS para que todo funcione como se espera de un servidor X?
¡Gracias por cualquier ayuda!
cmks
Aquí está la salida de glxgears, tal vez eso ayude:
[email protected]:~# LIBGL_DEBUG=verbose glxgears
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL: Can't open configuration file /root/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 35
Current serial number in output stream: 37
libGL error: No matching fbConfigs or visuals found
ylibGL error: failed to load driver: swrast
LIBGL_ALWAYS_INDIRECT=1
prohíbe el uso de DRI, entonces no hay mensajes de error. Pero glxgears todavía solo muestra un cuadroUna forma alternativa (e independiente del administrador de pantalla) de agregar las opciones es agregar la siguiente sección a /etc/X11/xorg.conf:
fuente
lightdm
.Estaba teniendo el mismo problema al ejecutar un programa OpenGL personalizado
ssh -X
. La solución anterior funcionó con una ligera modificación.Esto funcionó con el servidor ubuntu 16.04 que ejecuta kubuntu-desktop con GPU NVIDIA GTX 1070 y el controlador binario NVIDIA instalado a través de apt.
fuente
Option "IndirectGLX" "on"
. De acuerdo con esto ,enableIndirectGLX
debe evaluar paraTRUE
queBadValue
no se devuelva el error. El valor predeterminado es:FALSE
=-iglx
(en la línea de comando). Así sucesivamente, ya sea de conjunto:+iglx
opción de línea de comando, ORIndirectGLX "on"
o valor equivalente "verdadero"AllowIndirectGLXProtocol
para lo mismo. Sin embargo, sus documentos son algo confusos, porque mencionan que elBadValue
error se devolverá con su nombre de configuración comoAllowIndirectGLXProtocol = "true"
. Esto es completamente opuesto a lo que dicen más tarde "The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False.
" ¿Entonces es confuso, y tal vez los documentos están mal?