ภูมิทัศน์ของการเขียนโปรแกรมกราฟิกกำลังเผชิญกับวิวัฒนาการที่น่าสนใจในด้านเครื่องมือ SPIR-V โดยมีการถกเถียงเกี่ยวกับการใช้งาน LLVM และการปรากฏตัวของทางเลือกใหม่อย่าง Hero C Compiler (HCC) การพัฒนานี้เกิดขึ้นในช่วงเวลาที่เฟรมเวิร์กสำหรับการเขียนโปรแกรม GPU กำลังมีความสำคัญมากขึ้นสำหรับแอปพลิเคชันกราฟิกสมัยใหม่
สถานะปัจจุบันของ SPIR-V ใน LLVM
การสนทนาในชุมชนล่าสุดเผยให้เห็นว่าการสนับสนุน SPIR-V ของ LLVM อยู่ในช่วงการเปลี่ยนผ่าน แม้ว่า LLVM จะรองรับ SPIR-V ในโหมดคำนวณ แต่การใช้งาน SPIR-V ในโหมดกราฟิกยังอยู่ในขั้นตอนเริ่มต้น โดยกำลังทดสอบผ่านส่วนหน้า HLSL ที่อยู่ระหว่างการพัฒนาใน Clang ถึงแม้ว่า Microsoft DirectX Shader Compiler จะใช้ LLVM เป็นฐานและสนับสนุนการส่งออก SPIR-V แต่มีรายงานว่ายังมีข้อจำกัดด้านเทคนิคและเวอร์ชัน
คอมไพเลอร์ HLSL ของ Microsoft สำหรับ dx12+ นั้นใช้ LLVM เป็นฐานและสนับสนุนการส่งออก SPIR-V... แต่ตามที่เข้าใจคือมันเป็นการแก้ไขแบบชั่วคราวที่ติดอยู่กับ LLVM เวอร์ชันเก่า และไม่สามารถอัพเดทเข้าสู่เวอร์ชันหลักได้
สถานะการพัฒนา LLVM SPIR-V:
- โหมดประมวลผล: รองรับอย่างสมบูรณ์
- โหมดกราฟิก: อยู่ในขั้นตอนการพัฒนาเริ่มต้น
- ส่วนหน้า HLSL: อยู่ระหว่างการพัฒนา
- คอมไพเลอร์เชดเดอร์ DirectX: อ้างอิงจากเวอร์ชัน LLVM รุ่นเก่า
คุณสมบัติของคอมไพเลอร์ Hero C:
- รองรับ Vulkan 1.3 ขึ้นไป
- รองรับภาษา C11
- สามารถคอมไพล์ SPIR-V โดยตรง
- รองรับเชดเดอร์แบบ Vertex, Pixel และ Compute
- ไม่รองรับการใช้พอยน์เตอร์ (ยกเว้นฟังก์ชันพิเศษภายในคอมไพเลอร์)
- ไม่รองรับฟังก์ชันพอยน์เตอร์
- รองรับแพลตฟอร์ม Windows และ Linux
Hero C Compiler ในฐานะทางเลือกใหม่
Hero C Compiler ได้ปรากฏตัวขึ้นในฐานะทางเลือกที่น่าสนใจ โดยนำเสนอการคอมไพล์จาก C ไปเป็น SPIR-V โดยตรงสำหรับ Vulkan API ต่างจากการใช้งาน LLVM ในปัจจุบัน HCC ใช้วิธีการที่ตรงไปตรงมามากกว่าด้วยการใช้ตัวระบุเฉพาะเช่น __hcc_vertex
แทนการใช้การกำหนดแอตทริบิวต์ที่ซับซ้อน การออกแบบนี้สะท้อนให้เห็นถึงการมุ่งเน้นความเรียบง่ายและความตรงไปตรงมาในการเขียนโปรแกรมเชดเดอร์
ข้อพิจารณาด้านประสิทธิภาพและการปรับแต่ง
ชุมชนได้หยิบยกประเด็นที่น่าสนใจเกี่ยวกับศักยภาพในการปรับแต่ง โดยนักพัฒนาบางคนเสนอให้สำรวจการปรับแต่งแบบ QBE สำหรับเป้าหมาย GPU อย่างไรก็ตาม ข้อจำกัดทางเทคนิค โดยเฉพาะในส่วนของการสนับสนุน SIMD ยังคงเป็นความท้าทายสำหรับการปรับใช้เทคนิคการปรับแต่งที่ออกแบบสำหรับ CPU มาใช้กับการคอมไพล์เชดเดอร์ GPU
มุมมองในอนาคต
ภูมิทัศน์ดูเหมือนจะกำลังพัฒนาอย่างรวดเร็ว โดยการประกาศล่าสุดของ Microsoft เกี่ยวกับ DirectX ที่จะนำ SPIR-V มาใช้ บ่งชี้ถึงการเปลี่ยนแปลงของอุตสาหกรรมที่มุ่งสู่การสร้างมาตรฐาน การเคลื่อนไหวนี้ ประกอบกับการปรากฏตัวของเครื่องมือทางเลือกอย่าง HCC บ่งชี้ถึงอนาคตที่การเขียนโปรแกรม GPU จะเข้าถึงได้ง่ายขึ้น ในขณะที่ยังคงรักษาความสามารถด้านประสิทธิภาพสูง
สรุปได้ว่า ในขณะที่ LLVM ยังคงพัฒนาการสนับสนุน SPIR-V อย่างต่อเนื่อง เครื่องมือใหม่อย่าง HCC กำลังนำเสนอแนวทางทางเลือกสำหรับนักพัฒนาที่ต้องการทำงานกับ API กราฟิกสมัยใหม่ โดยเฉพาะในระบบนิเวศของ Vulkan ความหลากหลายของตัวเลือกด้านเครื่องมืออาจเป็นประโยชน์ต่อชุมชนการเขียนโปรแกรมกราฟิกโดยรวม
แหล่งอ้างอิง: Hero C Compiler