Collabora พัฒนาส่วนเสริมสำหรับการรัน OpenCL และ OpenGL บน DirectX

บริษัทร่วมมือ นำเสนอ ไดรเวอร์ Gallium ใหม่สำหรับ Mesa ซึ่งใช้เลเยอร์สำหรับการจัดระเบียบการทำงานของ OpenCL 1.2 และ OpenGL 3.3 APIs นอกเหนือจากไดรเวอร์ที่รองรับ DirectX 12 (D3D12) รหัส การตีพิมพ์ ภายใต้ใบอนุญาต MIT

ไดรเวอร์ที่นำเสนอช่วยให้คุณสามารถใช้ Mesa บนอุปกรณ์ที่ไม่รองรับ OpenCL และ OpenGL โดยกำเนิด และยังเป็นจุดเริ่มต้นสำหรับการย้ายแอปพลิเคชัน OpenGL/OpenCL เพื่อทำงานบน D3D12 สำหรับผู้ผลิต GPU ระบบย่อยทำให้สามารถให้การสนับสนุน OpenCL และ OpenGL ได้ หากมีเฉพาะไดรเวอร์ที่รองรับ D3D12 เท่านั้น

หนึ่งในแผนเร่งด่วนคือการบรรลุผลสำเร็จในการผ่านการทดสอบความเข้ากันได้ของ OpenCL 1.2 และ OpenGL 3.3 อย่างเต็มรูปแบบ การตรวจสอบความเข้ากันได้กับแอปพลิเคชัน และการรวมการพัฒนาไว้ในองค์ประกอบหลักของ Mesa การพัฒนาดำเนินการร่วมกับวิศวกรของ Microsoft ที่กำลังพัฒนา เปิด เครื่องมือ D3D11On12 สำหรับการถ่ายโอนเกมจาก D3D11 ไปยัง D3D12 และไลบรารี D3D12TranslationLayerซึ่งใช้กราฟิกดั้งเดิมมาตรฐานที่ด้านบนของ D3D12

การใช้งานประกอบด้วยไดรเวอร์ Gallium, คอมไพเลอร์ OpenCL, รันไทม์ OpenCL และคอมไพเลอร์เชเดอร์ NIR-to-DXIL ซึ่งจะแปลงการแสดงระดับกลางของเชเดอร์ NIR ที่ใช้ใน Mesa ให้เป็นรูปแบบไบนารี DXIL (DirectX Intermediate Language) ที่รองรับใน DirectX 12 และอิงตาม บิตโค้ด LLVM 3.7 (คอมไพเลอร์ DirectX Shader จาก Microsoft นั้นเป็นทางแยกขยายของ LLVM 3.7) คอมไพเลอร์ OpenCL จัดทำขึ้นตามการพัฒนาของโครงการ LLVM และเครื่องมือ สไปร์ฟ-LLVM.

แหล่งที่มาที่มีส่วนขยาย OpenCL จะถูกคอมไพล์โดยใช้เสียงดังกราวเป็นรหัสหลอกระดับกลาง LLVM (LLVM IR) ซึ่งจะถูกแปลงเป็นการแสดงระดับกลางของเคอร์เนล OpenCL ในรูปแบบ SPIR-V แกนในการเป็นตัวแทน SPIR-V จะถูกส่งผ่านไปยัง Mesa ซึ่งแปลเป็นรูปแบบ NIR ปรับให้เหมาะสมและส่งไปยัง NIR-to-DXIL เพื่อสร้างตัวเชเดอร์การคำนวณในรูปแบบ DXIL เหมาะสำหรับการประมวลผลบน GPU ที่ใช้รันไทม์ที่ใช้ DirectX 12
แทนที่จะเป็น Clover การใช้งาน OpenCL ที่ใช้ใน Mesa จะมีการเสนอรันไทม์ OpenCL ใหม่ ซึ่งช่วยให้สามารถแปลงโดยตรงไปยัง DirectX 12 API ได้มากขึ้น

Collabora พัฒนาส่วนเสริมสำหรับการรัน OpenCL และ OpenGL บน DirectX

ไดรเวอร์ OpenCL และ OpenGL ได้รับการจัดเตรียมโดยใช้อินเทอร์เฟซ Gallium ที่ให้ไว้ใน Mesa ซึ่งช่วยให้คุณสามารถสร้างไดรเวอร์โดยไม่ต้องลงรายละเอียดเฉพาะของ OpenGL และแปลการเรียก OpenGL ในสาระสำคัญให้ใกล้เคียงกับกราฟิกดั้งเดิมที่ GPU สมัยใหม่ใช้งานมากขึ้น ไดรเวอร์ Gallium ยอมรับคำสั่ง OpenGL และเมื่อใช้ตัวแปล NIR-to-DXIL
สร้างบัฟเฟอร์คำสั่งที่ดำเนินการบน GPU โดยใช้ไดรเวอร์ D3D12

ที่มา: opennet.ru

เพิ่มความคิดเห็น