อ่าน 4 นาที
เอ็กซ์แอล
XGL เป็นการ ใช้งาน เซิร์ฟเวอร์แสดงผล ที่ล้าสมัย ซึ่งรองรับ โปรโตคอล X Window System ที่ออกแบบมาเพื่อใช้ประโยชน์จากการ์ดกราฟิกสมัยใหม่ผ่าน ไดรเวอร์ OpenGL โดยวางซ้อนอยู่บน OpenGL [...
เอ็กซ์แอล
| เอ็กซ์แอล | |
|---|---|
Compizบน XGL พร้อมความโปร่งใสที่แท้จริง | |
| ผู้เขียนต้นฉบับ | เดวิด เรฟแมน |
| ปล่อย | 2 มกราคม 2549 |
| พิมพ์ | เซิร์ฟเวอร์แสดงผล |
| เว็บไซต์ | เว็บ |
XGLเป็นการ ใช้งาน เซิร์ฟเวอร์แสดงผล ที่ล้าสมัย ซึ่งรองรับ โปรโตคอล X Window Systemที่ออกแบบมาเพื่อใช้ประโยชน์จากการ์ดกราฟิกสมัยใหม่ผ่าน ไดรเวอร์ OpenGLโดยวางซ้อนอยู่บนOpenGL [ 1 ]รองรับการเร่งความเร็วฮาร์ดแวร์ของแอปพลิเคชัน X, OpenGL และXVideo ทั้งหมด รวมถึงเอฟเฟกต์กราฟิกโดยใช้ตัวจัดการหน้าต่างคอมโพสิตเช่น Compiz หรือ Beryl โครงการนี้เริ่มต้นโดยDavid RevemanจากNovellและเปิดตัวครั้งแรกเมื่อวันที่ 2 มกราคม 2549 มันถูกลบออก[ 2 ]จากเซิร์ฟเวอร์ X.org เพื่อสนับสนุนAIGLXเมื่อวันที่ 12 มิถุนายน 2551
ประวัติศาสตร์
การพัฒนา Xgl เริ่มขึ้นในปี 2547 จนกระทั่งเปิดตัวในปี 2549 การพัฒนานั้นดำเนินการแบบเปิดเผยบนรายชื่อผู้รับจดหมายสาธารณะ แม้ว่าในช่วงไม่กี่เดือนสุดท้าย การพัฒนา Xgl จะเป็นแบบส่วนตัว[ 3 ]ในวันนั้น ซอร์สโค้ดของ Xgl ได้ถูกเปิดเผยต่อสาธารณะอีกครั้ง[ 4 ] [ 5 ]และรวมอยู่ในfreedesktop.orgพร้อมกับการปรับโครงสร้างครั้งใหญ่เพื่อให้รองรับไดรเวอร์แสดงผลได้หลากหลายมากขึ้น แบ็กเอนด์เซิร์ฟเวอร์ X ที่ Xgl ใช้ ได้แก่XglxและXeglในเดือนกุมภาพันธ์ 2549 เซิร์ฟเวอร์ได้รับความสนใจอย่างกว้างขวางหลังจากการแสดงต่อสาธารณะที่ ทีมเดสก์ท็อป Novellได้สาธิตเดสก์ท็อปที่ใช้ Xgl พร้อมเอฟเฟกต์ภาพหลายอย่าง เช่นหน้าต่างโปร่งแสง และเดสก์ท็อป 3 มิติที่หมุนได้[ 6 ] [ 7 ] [ 8 ]เอฟเฟกต์เหล่านี้ได้รับการนำไปใช้ครั้งแรกในตัวจัดการคอมโพสิตที่เรียกว่าglxcompmgr (อย่าสับสนกับ xcompmgr) ซึ่งปัจจุบันเลิกใช้แล้ว เนื่องจากเอฟเฟกต์หลายอย่างไม่สามารถใช้งานได้อย่างเพียงพอหากไม่มีการโต้ตอบที่แน่นแฟ้นยิ่งขึ้นระหว่างตัวจัดการหน้าต่างและตัวจัดการคอมโพสิต เพื่อแก้ปัญหานี้ เดวิด เรฟแมน ได้พัฒนาCompiz ซึ่ง เป็นตัวจัดการหน้าต่างคอมโพสิต OpenGL ตัวแรกที่เหมาะสมสำหรับระบบ X Window System ต่อมาในเดือนกันยายนปี 2006 ตัวจัดการหน้าต่างคอมโพสิตBerylก็ถูกปล่อยออกมาโดยแยกออกมาจาก Compiz เดิม Compiz และ Beryl ได้รวมเข้าด้วยกันอีกครั้งในเดือนเมษายนปี 2007 ส่งผลให้เกิดการพัฒนาCompiz Fusion ขึ้น มา
แบ็กเอนด์
OpenGL ไม่ได้ระบุวิธีการเริ่มต้นใช้งานจอแสดงผลและจัดการบริบทการวาดภาพ แต่การดำเนินการเหล่านี้จะถูกจัดการโดย API เฉพาะของระบบหน้าต่างดั้งเดิม ปัจจุบันมีวิธีการแก้ปัญหาการเริ่มต้นใช้งานนี้อยู่สองวิธีที่แตกต่างกัน โดยส่วนใหญ่แล้วโค้ดของแต่ละระบบจะเหมือนกัน และความแตกต่างจะอยู่ที่ส่วนการเริ่มต้นใช้งานของเซิร์ฟเวอร์เป็นหลัก
Xglx
Xglxเป็นแบ็กเอนด์แรกที่ถูกนำมาใช้สำหรับสถาปัตยกรรมนี้ มันต้องการเซิร์ฟเวอร์ X ที่มีอยู่แล้วเพื่อใช้งาน และใช้GLXในการสร้างหน้าต่าง OpenGL ซึ่ง Xgl จะนำไปใช้ในลักษณะเดียวกับXnestโหมดนี้มีไว้สำหรับใช้ในการพัฒนาในอนาคตเท่านั้น เนื่องจากไม่จำเป็นต้องมีเซิร์ฟเวอร์ X เพื่อใช้งาน Xgl อีกต่อไป
ในงาน XDevConf 2006 (งานประชุมพัฒนา X ปี 2006) NVIDIAได้นำเสนอโดยโต้แย้งว่านี่เป็นทิศทางที่ผิด เพราะเซิร์ฟเวอร์แบบเลเยอร์จะแยกคุณสมบัติของการ์ดออกไป ทำให้ความสามารถเฉพาะของไดรเวอร์ เช่น การรองรับแว่นตา 3 มิติ และการรองรับจอภาพคู่ ทำได้ยากขึ้นมาก[ 9 ]
อย่างไรก็ตาม การมอบหมายการเริ่มต้นใช้งานให้กับเซิร์ฟเวอร์ X ที่มีอยู่แล้ว ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่ฟังก์ชันการทำงานของเซิร์ฟเวอร์ได้ทันที แทนที่จะเสียเวลาจำนวนมากไปกับรายละเอียดเฉพาะของการเชื่อมต่อกับฮาร์ดแวร์วิดีโอจำนวนมาก ในขณะนี้ Xglx ยังไม่รองรับจอภาพหลายจออย่างเป็นทางการ แม้ว่าจะสามารถทำได้แล้วใน Ubuntu Dapper / ATI / NVIDIA (twinview)
เซกล์
Xeglเป็นเป้าหมายระยะยาวของการพัฒนาเซิร์ฟเวอร์ X [ 10 ]มันใช้โค้ดการวาดภาพร่วมกับเซิร์ฟเวอร์ Xglx เป็นจำนวนมาก แต่การเริ่มต้นใช้งาน OpenGL drawable และการจัดการบริบทนั้นจัดการโดย API EGL ที่พัฒนาโดย Khronos (EGL เป็นระบบหน้าต่างที่ไม่ขึ้นกับระบบ ซึ่งเทียบเท่ากับ API GLX และ WGL ซึ่งเปิดใช้งานการสนับสนุน OpenGL ใน X และ Microsoft Windows ตามลำดับ) การใช้งานในปัจจุบันใช้Mesa-soloเพื่อให้การเรนเดอร์ OpenGL ไปยังเฟรมบัฟเฟอร์ของ LinuxหรือDRIไปยังฮาร์ดแวร์กราฟิกโดยตรง ณ เดือนพฤษภาคม 2024 Xegl สามารถทำงานได้โดยใช้ฮาร์ดแวร์กราฟิกRadeon R200 เท่านั้น และการพัฒนาหยุดชะงักลงในขณะนี้ [ 11 ] มีแนวโน้มว่ามันจะยังคงเป็นเช่นนั้นจนกว่าเซิร์ฟเวอร์ Xglx จะได้รับการพิสูจน์แล้ว และไดรเวอร์แบบปิดแหล่งที่มาจะเพิ่มการสนับสนุนสำหรับ API EGL ซึ่งในเวลานั้นมันควรจะเป็นตัวแทนที่โปร่งใสสำหรับเซิร์ฟเวอร์ Xglx ที่ซ้อนกัน
เหตุผล
การจัดโครงสร้างการเรนเดอร์ทั้งหมดไว้บน OpenGL อาจช่วยลดความซับซ้อนในการพัฒนาไดรเวอร์วิดีโอได้ มันขจัดความแตกต่างที่ไม่จำเป็นระหว่างการเร่งความเร็ว2 มิติและ3 มิติ ซึ่งเป็นข้อดีเพราะการทำงานแบบ 2 มิติส่วนใหญ่มักไม่ได้รับการเร่งความเร็ว (ซึ่งขัดกับสามัญสำนึก เนื่องจาก 2 มิติเป็นส่วนย่อยของ 3 มิติ)
นอกจากนี้ยังลบโค้ดที่ขึ้นอยู่กับไดรเวอร์ทั้งหมดออกจากเซิร์ฟเวอร์ X และช่วยให้ การทำงานของ CompositeและRender เร็วขึ้น โดยไม่ขึ้นอยู่กับไดรเวอร์กราฟิก
คู่แข่ง
การเร่งความเร็วฮาร์ดแวร์สำหรับการวาดภาพ 2 มิติเป็นคุณสมบัติทั่วไปของระบบหน้าต่างหลายระบบ (รวมถึง X11) มานานหลายปีแล้ว ความแปลกใหม่ของ XGL และระบบที่คล้ายกันคือการใช้ API ที่พัฒนาขึ้นมาโดยเฉพาะสำหรับการเรนเดอร์ 3 มิติเพื่อเร่งความเร็วการทำงานของเดสก์ท็อป 2 มิติ ก่อนที่ X11 จะนำการวาดภาพแบบลดรอยหยักมาใช้ การใช้ API การเรนเดอร์ 3 มิติสำหรับการเรนเดอร์เดสก์ท็อป 2 มิติเป็นสิ่งที่ไม่พึงประสงค์ เนื่องจาก API ดังกล่าวไม่ได้ให้การรับประกันการเรนเดอร์ที่แม่นยำระดับพิกเซล ซึ่งเป็นส่วนหนึ่งของคำจำกัดความโปรโตคอล X11 ดั้งเดิม
การเรนเดอร์หน้าต่างและเดสก์ท็อปด้วย OpenGL ที่เร่งความเร็วด้วยฮาร์ดแวร์ ซึ่งจำกัดเฉพาะการใช้ OpenGL สำหรับการจัดองค์ประกอบพื้นผิว ได้ถูกนำมาใช้ใน Mac OS X ในเทคโนโลยีที่เรียกว่าQuartz Extremeตั้งแต่Mac OS X เวอร์ชัน 10.2 Quartz 2D Extremeเป็นการปรับปรุงคุณสมบัตินี้และเปรียบเทียบได้โดยตรงมากขึ้นกับ XGL เช่นเดียวกับ XGL, Quartz 2D Extreme นำการเร่งความเร็ว OpenGL มาใช้กับการวาดภาพ 2 มิติทั้งหมด (ไม่ใช่แค่การจัดองค์ประกอบเดสก์ท็อป) และมาพร้อมกับMac OS X เวอร์ชัน 10.4แต่ถูกปิดใช้งานโดยค่าเริ่มต้นจนกว่าจะมีการประกาศอย่างเป็นทางการว่าพร้อมใช้งานจริง Core Animation คือส่วนขยายของความพยายามนี้สำหรับ Leopard ( Mac OS X เวอร์ชัน 10.5 )
อินเทอร์เฟซเดสก์ท็อปหลายตัวที่ใช้ API 3 มิติได้รับการพัฒนาขึ้นเมื่อเร็ว ๆ นี้ ได้แก่ OpenCroquet และ Project Looking Glass ของ Sun Microsystems [1]ซึ่งใช้ประโยชน์จากการเร่งความเร็ว 3 มิติสำหรับซอฟต์แวร์ที่สร้างขึ้นภายในเฟรมเวิร์กของตนเอง แต่ดูเหมือนว่าจะไม่เร่งความเร็วแอปพลิเคชันเดสก์ท็อป 2 มิติที่มีอยู่ซึ่งแสดงผลภายในสภาพแวดล้อม (มักจะผ่านกลไกเช่นVNC )
ไมโครซอฟต์ได้พัฒนาเทคโนโลยีที่คล้ายกันโดยใช้DirectX เป็น พื้นฐาน โดยตั้งชื่อว่าDWMซึ่งเป็นส่วนหนึ่งของ ระบบปฏิบัติการ Windows Vistaเทคโนโลยีนี้ถูกนำเสนอต่อสาธารณชนเป็นครั้งแรกในงาน PDC ของไมโครซอฟต์ในเดือนตุลาคมปี 2003
ความพร้อมใช้งาน
ณ เดือนพฤษภาคม 2549 เซิร์ฟเวอร์ Xgl X (และส่วนประกอบที่เกี่ยวข้อง รวมถึงตัวจัดการการแสดงผลภาพ Compiz และเครื่องมือการกำหนดค่ากราฟิกที่เกี่ยวข้อง) ได้ถูกรวมไว้เป็นส่วนประกอบเสริมในระบบปฏิบัติการ Linux หลักรุ่นหนึ่ง คือSUSE 10.1 และรวมอยู่ในFrugalware LinuxหรือSUSE Linux Enterprise Desktop 10 ด้วย สามารถติดตั้ง Xgl ได้ค่อนข้างง่ายสำหรับUbuntu 6.06 LTS (Dapper Drake) และ 6.10 (Edgy Eft) และสำหรับFreespireโดยใช้แพ็กเกจไบนารีจากแหล่งเก็บข้อมูล ที่ไม่เป็นทางการ นอกจากนี้ Xgl ยังมีให้ใช้งานในรูปแบบแพ็กเกจแบบโอเวอร์เลย์ในGentoo Linuxและในรูปแบบ PKGBUILD สำหรับArch Linuxด้วย
Mandriva Linux 2007 มีแพ็กเกจอย่างเป็นทางการสำหรับใช้งานCompizโดยใช้ XGL และAIGLXนอกจากนี้ Mandriva ยังมีdrak3dซึ่งเป็นเครื่องมือสำหรับตั้งค่าเดสก์ท็อป 3 มิติได้ในสองคลิก
Ubuntu 6.10 "Edgy Eft" และเวอร์ชันที่ใหม่กว่า ใช้AIGLXเป็นค่าเริ่มต้น ไม่ใช่ XGL
Xgl ถูกลบออกจาก X11R7.5 ในปี 2552 เนื่องจากเป็นเวอร์ชันเซิร์ฟเวอร์ที่ไม่ได้รับการดูแลรักษา[ 12 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- เซกล์
- ข้อกำหนด EGL
- บทความ: สถานการณ์ปัจจุบันของกราฟิกใน Linux — ภาพรวมของแนวทางต่างๆ ในการทดแทน X server ในปัจจุบัน
- วิดีโอสาธิตการใช้งาน Compiz บน XGL
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เอ็กซ์แอล
XGL เป็นการ ใช้งาน เซิร์ฟเวอร์แสดงผล ที่ล้าสมัย ซึ่งรองรับ โปรโตคอล X Window System ที่ออกแบบมาเพื่อใช้ประโยชน์จากการ์ดกราฟิกสมัยใหม่ผ่าน ไดรเวอร์ OpenGL โดยวางซ้อนอยู่บน OpenGL [...
ประวัติศาสตร์
การพัฒนา Xgl เริ่มขึ้นในปี 2547 จนกระทั่งเปิดตัวในปี 2549 การพัฒนานั้นดำเนินการแบบเปิดเผยบนรายชื่อผู้รับจดหมายสาธารณะ แม้ว่าในช่วงไม่กี่เดือนสุดท้าย การพัฒนา Xgl จะเป็นแบบส่วนตัว [ 3 ] ในวันนั้น ซอร์สโค้ดของ Xgl ได้ถูกเปิดเผยต่อสาธารณะอีกครั้ง [ 4 ] [ 5 ]...
แบ็กเอนด์
OpenGL ไม่ได้ระบุวิธีการเริ่มต้นใช้งานจอแสดงผลและจัดการบริบทการวาดภาพ แต่การดำเนินการเหล่านี้จะถูกจัดการโดย API เฉพาะของระบบหน้าต่างดั้งเดิม ปัจจุบันมีวิธีการแก้ปัญหาการเริ่มต้นใช้งานนี้อยู่สองวิธีที่แตกต่างกัน โดยส่วนใหญ่แล้วโค้ดของแต่ละระบบจะเหมือนกัน...
Xglx
Xglx เป็นแบ็กเอนด์แรกที่ถูกนำมาใช้สำหรับสถาปัตยกรรมนี้ มันต้องการเซิร์ฟเวอร์ X ที่มีอยู่แล้วเพื่อใช้งาน และใช้ GLX ในการสร้างหน้าต่าง OpenGL ซึ่ง Xgl จะนำไปใช้ในลักษณะเดียวกับ Xnest โหมดนี้มีไว้สำหรับใช้ในการพัฒนาในอนาคตเท่านั้น...