NVIDIA GFX 카드를 사용하여 Ubuntu 14.04 LTS에서 간접 GLX 컨텍스트 (+ iglx)를 활성화하는 방법


10

Qt 소프트웨어 개발을 위해 Linux 호스트를 중앙 위치에서 실행하고 있습니다.

내 창 상자에서 Xming을 로컬 X 서버로 사용하고 퍼티를 사용하여 해당 Linux 호스트에 연결합니다. 이 구성으로 리눅스 호스트에서 모든 X (xclock, xterm) 및 GLX (qtcreator, gxlinfo, glxgears ...) 프로그램을 사용할 수 있습니다.

내 메인 워크 스테이션은 엔비디아 gfx 카드가 장착 된 우분투 14.04 LTS입니다. 나는 또한 "ssh를 -p 포트 # -Yc my.dev.host.com"를 사용하여 내 우분투 시스템에 리눅스 호스트에 연결할 때 사용할 수있는 모든 X 프로그램 (xclock을, xterm 등) 프로그램을하지만 난 사용할 수 없습니다 GLX 프로그램을 (qtcreator, gxlinfo, glxgears ...).

지금까지 내가 배운 이 1.16을하기 때문에 버전에 기본적으로 X 서버 그나마 지원 간접 GLX 컨텍스트 젊은이다.

그래서 내 질문은 : 우분투 14.04 LTS 설치에서 간접 GLX 컨텍스트 (X-server 및 nvidida 드라이버)를 활성화하여 X 서버에서 예상대로 작동하는 방법은 무엇입니까?

도움을 주셔서 감사합니다!

cmks

다음은 glxgears의 출력입니다.

root@my.dev.host.com:~# 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

답변:


8

'ssh -X'를 통해 일부 GL 응용 프로그램을 실행할 때 비슷한 문제가 있었고 /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf의 xserver-command에 "+ iglx"를 추가하여 문제를 해결했습니다. .

[SeatDefaults]
# Dump core
xserver-command=X -core +iglx

그런 다음 재부팅하거나 Ctrl-Alt-F1, 로그인 및 'sudo service lightdm restart'를 수행하십시오.

이게 도움이 되길 바란다!


glxdemo, glxheads 및 glxinfo가 현재 작동 중입니다. glxgears가 시작되지만 첫 번째 프레임 만 표시합니다. "수직 새로 고침에 동기화 실행"과 관련이 있다고 생각합니다. 여전히 메시지가 libGL error: No matching fbConfigs or visuals found있고libGL error: failed to load driver: swrast
cmks

libGL 오류는 DRI 사용 시도로 인해 발생합니다. 설정하면 LIBGL_ALWAYS_INDIRECT=1DRI 사용이 금지되고 오류 메시지가 없습니다. 그러나 glxgears는 여전히 하나의 프레임 만 보여줍니다
cmks

glxgears가 충돌 할 수 있습니까 : bugs.freedesktop.org/show_bug.cgi?id=99555 ? XGL에서 IGLX가 약 1 년 동안 고장난 것 같습니다 :(
Steve Dee

5

옵션을 추가하는 대안 (및 디스플레이 관리자 독립적) 방법은 /etc/X11/xorg.conf에 다음 섹션을 추가하는 것입니다.

Section "ServerFlags"
    Option "IndirectGLX" "on"
EndSection

다시 시작할 때마다 내 xorg.conf가 계속 덮어 쓰기 lightdm됩니다.
ArcaneDominion

@ArcaneDominion /usr/share/X11/xorg.conf.d 파일에 명령을 넣습니다 (최소 xubuntu 16.04 이상)
gerardw

1

에서 사용자 정의 OpenGL 프로그램을 실행하는 것과 동일한 문제가 발생했습니다 ssh -X. 위의 솔루션은 약간 수정되었습니다.

Section "ServerFlags"  
    Option "AllowIndirectGLX" "on"  
    Option "IndirectGLX" "on"  
EndSection  

이것은 NVIDIA GTX 1070 GPU 및 apt를 통해 설치된 NVIDIA 바이너리 드라이버로 kubuntu-desktop을 실행하는 우분투 16.04 서버에서 작동했습니다.


1
우분투에 오신 것을 환영합니다! 이 답변 을 편집 하여 추가 할 위치에 대한 특정 세부 정보로 확장하십시오. Ask Ubuntu에서 어떤 종류의 답변이 가장 가치있는 것으로 간주되는지에 대한 일반적인 조언은 좋은 답변을 작성하는 방법 도 참조하십시오 .
David Foerster

올바른 설정은 Option "IndirectGLX" "on"입니다. 에 따르면 이에 , enableIndirectGLX로 평가되어야 TRUE너무 BadValue오류가 반환되지 않습니다. 기본값은 FALSE= -iglx(명령 줄에서)입니다. 따라서 set : +iglx명령 행 옵션 IndirectGLX "on"또는 이에 상응하는 "truthy"값
TrinitronX

이진 드라이버에 대한 Nvidia 문서 AllowIndirectGLXProtocol에는 동일한 것에 대한 다른 옵션이 있다고 말합니다 . 그러나 문서가 BadValue설정 이름으로 오류가 반환된다고 언급했기 때문에 문서가 다소 혼란 스럽습니다 AllowIndirectGLXProtocol = "true". 이것은 나중에 " The NVIDIA GLX implementation will prohibit creation of indirect GLX contexts if AllowIndirectGLXProtocol option is set to False." 와 완전히 반대입니다. " 혼란스럽고 문서가 잘못 되었을까요?
TrinitronX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.