ผู้พัฒนา Collabora นำเสนอตัวควบคุม Gallium ใหม่สำหรับ Mesa

ตัวควบคุม Collabora

เมื่อเร็ว ๆ นี้ นักพัฒนา Collabora เปิดตัวแล้ว ผ่านบล็อกโพสต์ไฟล์ ตัวควบคุม Gallium ใหม่สำหรับ Mesa ที่ใช้ชั้นกลาง เพื่อจัดระเบียบ OpenCL 1.2 และ OpenGL 3.3 API เกี่ยวกับไดรเวอร์ที่รองรับ DirectX 12 (D3D12) และซอร์สโค้ดเผยแพร่ภายใต้ใบอนุญาต MIT

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

ในบล็อกโพสต์ของพวกเขานักพัฒนาแบ่งปัน:

ในช่วงสองสามเดือนที่ผ่านมาเราได้ทำงานในโครงการใหม่ที่น่าตื่นเต้นสองโครงการที่ Collabora และในที่สุดก็ถึงเวลาแบ่งปันข้อมูลเกี่ยวกับพวกเขากับโลก

ของแผนทันทีเป็นที่สังเกตความสำเร็จของการอนุมัติการทดสอบที่สมบูรณ์ของ รองรับ OpenCL 1.2 และ OpenGL 3.3, การตรวจสอบความเข้ากันได้กับแอปพลิเคชันและการรวมแนวทางปฏิบัติที่ดีที่สุดไว้ในองค์ประกอบหลักของ Mesa

เกี่ยวกับคอนโทรลเลอร์ใหม่

การพัฒนาคอนโทรลเลอร์ใหม่ดำเนินการร่วมกับวิศวกรของ Microsoft เพื่อพัฒนาเครื่องมือ D3D11On12 ไปยังชุดการถ่ายโอน D3D11 และไลบรารี D3D12 D3D12TranslationLayer รวมถึงการใช้งานกราฟิกดั้งเดิมที่อยู่ด้านบนของ D3D12

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

งานนี้ต่อยอดจากผลงานก่อนหน้านี้มากมาย ก่อนอื่นเรากำลังสร้างสิ่งนี้โดยใช้ Mesa 3D โดยมีอินเทอร์เฟซ Gallium เป็นพื้นฐานสำหรับเลเยอร์ OpenGL และ NIR เป็นพื้นฐานสำหรับคอมไพเลอร์ OpenCL นอกจากนี้เรายังใช้ LLVM และตัวแปล Khronos SPIRV-LLVM เป็นคอมไพเลอร์

นอกจากนี้เรายังใช้ประโยชน์จากประสบการณ์ของ Microsoft ในการสร้างเลเยอร์การแปล D3D12 ตลอดจนประสบการณ์ของเราเองในการพัฒนา Zink

ซอร์สโค้ด OpenCL ถูกคอมไพล์โดย clang เป็นรหัสเทียม LLVM ระดับกลาง (LLVM IR) ซึ่งจะถูกแปลงเป็นการแสดงระดับกลางของเคอร์เนล OpenCL ในรูปแบบ SPIR-V

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

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

ไดรเวอร์ Gallium ยอมรับคำสั่ง OpenGL และด้วยการมีส่วนร่วมของตัวแปล NIR-to-DXIL จะสร้างบัฟเฟอร์คำสั่งที่ทำงานบน GPU โดยใช้ไดรเวอร์ D3D12

ในที่สุด นักพัฒนากล่าวว่านี่เป็นงานในช่วงต้น และคาดว่าคอนโทรลเลอร์จะปรับปรุงเมื่อเวลาผ่านไป:

นี่เป็นเพียงการประกาศและยังมีงานอีกมากที่ต้องทำ เรามีบางอย่างที่ใช้ได้ผลในบางกรณีในขณะนี้ แต่เราเพิ่งเริ่มขูดพื้นผิว

ก่อนอื่นเราต้องไปถึงระดับของคุณสมบัติที่เราต้องการ เป้าหมายของเราในเวลานี้คือการผ่านการทดสอบความสอดคล้องสำหรับ OpenCL 1.2 และ OpenGL 3.3 เรามีหนทางอีกยาวไกล แต่ด้วยการทำงานหนักและหยาดเหงื่อเล็กน้อยฉันมั่นใจว่าเราจะไปถึงที่นั่น

หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม คุณสามารถตรวจสอบบันทึกต้นฉบับได้ใน ลิงค์ต่อไปนี้ หรือสำหรับผู้ที่สนใจตรวจสอบซอร์สโค้ดก็สามารถทำได้ จากลิงค์นี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา