วิธีเปิดใช้งานบริบท GLX ทางอ้อม (+ iglx) ใน Ubuntu 14.04 LTS พร้อมการ์ด nvidia gfx


10

ฉันใช้งาน linux-host สำหรับ Qt-software-development ที่ศูนย์กลาง

ด้วยกล่อง windows ของฉันฉันใช้ Xming เป็น X-server ในพื้นที่และ putty เพื่อเชื่อมต่อกับ linux-host ด้วยการกำหนดค่านี้ฉันสามารถใช้โปรแกรม X (xclock, xterm) และ GLX (qtcreator, gxlinfo, glxgears ... ) ทั้งหมดได้ที่ linux-host

เวิร์กสเตชันหลักของฉันคือ Ubuntu 14.04 LTS พร้อมการ์ด nvidia gfx เมื่อฉันเชื่อมต่อกับ linux-host กับ ubuntu-system โดยใช้ "ssh -p port # -YC my.dev.host.com" ฉันยังสามารถใช้โปรแกรม X ทั้งหมด (xclock, xterm) ได้ แต่ฉันไม่สามารถใช้โปรแกรม GLX ได้ (qtcreator, gxlinfo, glxgears ... )

เท่าที่ฉันได้เรียนรู้นี้เป็นเพราะ X-server ไม่รองรับบริบท GLX ทางอ้อมโดยค่าเริ่มต้นสำหรับรุ่นที่อายุน้อยกว่า 1.16

ดังนั้นคำถามของฉันคือ: ฉันจะเปิดใช้บริบททางอ้อม GLX (X- เซิร์ฟเวอร์และไดรเวอร์ nvidida) ในการติดตั้ง Ubuntu 14.04 LTS ของฉันเพื่อให้สิ่งต่าง ๆ ทำงานตามที่คาดไว้จาก X-server ได้อย่างไร

ขอบคุณสำหรับความช่วยเหลือ!

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

ฉันมีปัญหาที่คล้ายกันเมื่อเรียกใช้แอปพลิเคชัน GL ผ่าน 'ssh -X' และแก้ไขโดยการเพิ่ม "+ iglx" ให้กับ xserver-command ใน /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf .

[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=1ต้องห้ามการใช้ DRI ในนั้นไม่มีข้อความผิดพลาด แต่ glxgears ยังคงแสดงเพียงหนึ่งเฟรม
cmks

ความผิดพลาดของ glxgears ของคุณอาจเป็น: bugs.freedesktop.org/show_bug.cgi?id=99555หรือไม่ ดูเหมือนว่า IGLX จะถูกทำลายใน Xorg เป็นเวลาประมาณหนึ่งปี :(
Steve Dee

5

อีกวิธีหนึ่ง (และ display-manager-Independent) วิธีเพิ่มตัวเลือกคือการเพิ่มส่วนต่อไปนี้ใน /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  

สิ่งนี้ทำงานกับเซิร์ฟเวอร์ ubuntu 16.04 ที่รัน kubuntu-desktop พร้อมกับ NVIDIA GTX 1070 GPU และไดร์เวอร์ไบนารีของ NVIDIA ที่ติดตั้งผ่าน apt


1
ยินดีต้อนรับสู่ถาม Ubuntu! ฉันขอแนะนำให้แก้ไขคำตอบนี้เพื่อขยายด้วยรายละเอียดเฉพาะเกี่ยวกับสถานที่ที่จะเพิ่ม (ดูเพิ่มเติมฉันจะเขียนคำตอบที่ดีได้อย่างไรสำหรับคำแนะนำทั่วไปเกี่ยวกับคำตอบประเภทใดที่ถือว่ามีค่ามากที่สุดใน Ask Ubuntu)
David Foerster

Option "IndirectGLX" "on"ดูเหมือนว่าการตั้งค่าที่ถูกต้องคือ ตามนี้ , enableIndirectGLXต้องประเมินเป็นTRUEดังนั้นBadValueข้อผิดพลาดจะไม่ส่งคืน ค่าเริ่มต้นคือ: FALSE= -iglx(บนบรรทัดคำสั่ง) ดังนั้นทั้งสองชุด: +iglxตัวเลือกบรรทัดคำสั่งหรือIndirectGLX "on"หรือค่า "ความจริง" ที่เทียบเท่า
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.