Microsoft เปิดตัวซอร์สโค้ดของเลเยอร์ D3D9On12 ที่ใช้ในการแปลคำสั่ง Direct3D 9 เป็น Direct3D 12

ข่าวดีจาก Microsoft และเมื่อไม่นานมานี้ ทำให้เป็นที่รู้จัก ผ่านบล็อกโพสต์ การเปิดซอร์สโค้ดของเลเยอร์ D3D9On12 ด้วยการใช้งานอุปกรณ์ DDI (Device Driver Interface) ซึ่งแปลคำสั่ง Direct3D 9 (D3D9) เป็นคำสั่ง Direct3D 12 (D3D12)

การย้ายครั้งนี้โดย Microsoft จะทำให้นักพัฒนาเปลี่ยนจาก DirectX11 เป็น DirectX12 สำหรับเกมได้ง่ายกว่าที่เคย เลเยอร์การแปล DX12 เป็นไลบรารีตัวช่วยสำหรับการแปลแนวคิดแบบกราฟิกและคำสั่งจากโดเมนสไตล์ DX11 เป็นโดเมนสไตล์ DX12

นานมาแล้วที่เราพูดถึงเลเยอร์การทำแผนที่ D3D9On12 ครั้งล่าสุด ในการอัปเดตอย่างรวดเร็ว จะจับคู่คำสั่ง D3D9 กับ D3D12 ซึ่งทำหน้าที่เป็น D3D9 Device Driver Interface (DDI) การมีเลเยอร์การแมปนี้ทำให้แอปพลิเคชัน D3D9 รุ่นเก่าทำงานบนระบบสมัยใหม่ที่อาจไม่มีไดรเวอร์ D3D9 ตั้งแต่บล็อกโพสต์ที่แล้ว เราได้เพิ่มการรองรับส่วนขยาย Alpha to Coverage แก้ไขข้อบกพร่องบางอย่าง และล้างฐานโค้ดสำหรับโอเพ่นซอร์ส.

นี่เป็นข่าวดีอย่างไม่ต้องสงสัยและนั่นก็คือ โครงการต่าง ๆ ที่ทำงานกับเลเยอร์สามารถได้รับประโยชน์เนื่องจากอนุญาตให้แอปพลิเคชันรุ่นเก่าทำงานในสภาพแวดล้อมที่รองรับ D3D12 เท่านั้น นั่นคือ ตัวอย่างเช่น สิ่งนี้มีประโยชน์ในการใช้ D3D9 ตามโปรเจ็กต์ vkd3d และ VKD3D-Protonเนื่องจากมีการนำ Direct3D 12 ไปใช้สำหรับ Linux ซึ่งทำงานโดยการแปลการเรียก D3D12 ไปยัง Vulkan graphics API

D3D9On12 เป็นเลเยอร์ที่จับคู่คำสั่งกราฟิกจาก D3D9 กับ D3D12 D3D9On12 ไม่ใช่การนำ D3D9 API ไปใช้งาน แต่เป็นการใช้งานโหมดผู้ใช้ D3D9 DDI (Device Driver Interface) นั่นหมายความว่าไม่ใช่ไบนารีที่เรียกว่า d3d9.dll แต่เรียกว่า d3d9on12.dll

เมื่อแอปพลิเคชันสร้างอุปกรณ์ D3D9 พวกเขาจะสามารถเลือกเป็นอุปกรณ์ D3D9On12 แทนที่จะเป็นอุปกรณ์ D3D9 ดั้งเดิม เมื่อสิ่งนี้เกิดขึ้น d3d9on12.dll จะถูกโหลดโดยรันไทม์ D3D9 และเริ่มต้น เมื่อแอปพลิเคชันเรียกใช้คำสั่งการแสดงผล D3D9 จะตรวจสอบคำสั่งเหล่านั้นแล้วแปลงคำสั่งเหล่านั้นเป็น DDI D3D9 และส่งไปยัง D3D9On12 เช่นเดียวกับไดรเวอร์ D3D9 ใดๆ

D3D9On12 จะใช้คำสั่งเหล่านี้และเปลี่ยนเป็นการเรียก API ของ D3D12 ซึ่งได้รับการตรวจสอบเพิ่มเติมโดยรันไทม์ D3D12 รวมถึงเลเยอร์ดีบัก D3D12 ซึ่งจะถูกแปลงเป็น D3D12 DDI และส่งไปยังไดรเวอร์ D3D12

นอกจากนี้ยังมีการกล่าวถึงว่า โครงการนี้ใช้รหัสของระบบย่อยที่คล้ายกันซึ่งรวมอยู่ใน Windows 10 ควรสังเกตว่าการเผยแพร่รหัส D3D9On12 จะให้โอกาส เพื่อให้ตัวแทนชุมชน มีส่วนร่วมในการแก้ไขข้อบกพร่องและเพิ่มการเพิ่มประสิทธิภาพ และยังสามารถใช้เป็นตัวอย่างในการศึกษาการใช้งานไดรเวอร์ D3D9 DDI และเฟรมเวิร์กสำหรับการสร้างเลเยอร์ดังกล่าวสำหรับการแปล API กราฟิกต่างๆ ใน ​​D3D12

ทำไมต้องโอเพ่นซอร์ส
D3D9On12 เป็นส่วนหนึ่งของ Windows 10 มาสองสามปีแล้ว และในช่วงเวลานั้นก็มีความเสถียรและความสามารถในการใช้งานเพิ่มขึ้น ทำให้เป็นโอเพ่นซอร์ส:

อนุญาตให้ชุมชนมีส่วนร่วมในการแก้ไขข้อบกพร่องเพิ่มเติมหรือปรับปรุงประสิทธิภาพ
เป็นอีกตัวอย่างหนึ่งของวิธีการใช้ D3D12TranslationLayer
ให้ผู้ที่สนใจดูว่าการใช้งาน D3D9 DDI เป็นอย่างไร

ในเวลาเดียวกัน แพ็คเกจ DXBC Signer ได้รับการเผยแพร่ที่ช่วยให้สามารถเซ็นชื่อไฟล์ DXBC สร้างโดยพลการโดยชุดเครื่องมือของบุคคลที่สาม D3D9On12 ใช้แพ็คเกจนี้เพื่อลงนาม DXBC ที่สร้างขึ้นโดยการแปลง shader เป็นโมเดลใหม่

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดของสิ่งพิมพ์ที่ Microsoft ทำในบล็อก ในลิงค์ต่อไปนี้.


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

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

*

*

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