Lanskap pemrograman grafis sedang mengalami evolusi menarik dalam perangkat SPIR-V, dengan diskusi yang berpusat pada implementasi LLVM dan munculnya alternatif baru seperti Hero C Compiler (HCC). Perkembangan ini terjadi di saat kerangka kerja pemrograman GPU menjadi semakin penting untuk aplikasi grafis modern.
Status SPIR-V LLVM Saat Ini
Diskusi komunitas terkini mengungkapkan bahwa dukungan LLVM untuk SPIR-V sedang dalam masa transisi. Meskipun LLVM mendukung SPIR-V mode komputasi, implementasi SPIR-V mode grafisnya masih dalam tahap awal, yang sedang diuji melalui front-end HLSL yang masih dalam pengembangan di Clang. Microsoft DirectX Shader Compiler, meskipun berbasis LLVM dan mendukung output SPIR-V, dilaporkan terbatas oleh masalah teknis dan keterbatasan versi.
Compiler HLSL Microsoft untuk dx12+ berbasis LLVM dan mendukung output spir-v... Meski menurut pemahaman saya, ini merupakan hasil kerja yang tidak optimal dan terjebak pada versi lama LLVM, serta tidak dalam kondisi yang memungkinkan untuk diintegrasikan ke upstream
Status Implementasi LLVM SPIR-V Utama:
- Mode komputasi: Didukung sepenuhnya
- Mode grafis: Tahap awal implementasi
- Front-end HLSL: Sedang dalam pengembangan
- Kompilator Shader DirectX: Berbasis versi LLVM yang lebih lama
Fitur-fitur Kompilator Hero C:
- Dukungan Vulkan 1.3+
- Penargetan C11
- Kompilasi SPIR-V langsung
- Dukungan shader Vertex, Pixel & Compute
- Tidak ada dukungan pointer (kecuali intrinsik kompilator)
- Tidak ada pointer fungsi
- Dukungan platform Windows & Linux
Hero C Compiler sebagai Alternatif
Hero C Compiler telah muncul sebagai alternatif yang menjanjikan, menawarkan kompilasi C-ke-SPIR-V langsung untuk API grafis Vulkan. Berbeda dengan implementasi LLVM saat ini, HCC mengambil pendekatan yang lebih sederhana dengan mengimplementasikan fungsi shader menggunakan spesifier khusus seperti __hcc_vertex
daripada menggunakan anotasi atribut yang kompleks. Pilihan desain ini mencerminkan fokus pada kesederhanaan dan langsung dalam pemrograman shader.
Pertimbangan Performa dan Optimisasi
Komunitas telah mengangkat poin-poin menarik tentang potensi optimisasi, dengan beberapa pengembang menyarankan eksplorasi optimisasi seperti QBE untuk target GPU. Namun, keterbatasan teknis, terutama seputar dukungan SIMD, menghadirkan tantangan untuk adaptasi langsung teknik optimisasi berorientasi CPU ke kompilasi shader GPU.
Prospek Masa Depan
Lanskap tampaknya berkembang pesat, dengan pengumuman terbaru Microsoft tentang DirectX yang mengadopsi SPIR-V menunjukkan pergeseran industri yang lebih luas menuju standardisasi. Pergerakan ini, dikombinasikan dengan munculnya alat alternatif seperti HCC, menunjukkan masa depan di mana pemrograman GPU menjadi lebih mudah diakses sambil mempertahankan kemampuan kinerja tinggi.
Sebagai kesimpulan, sementara LLVM terus mengembangkan dukungan SPIR-V-nya, alat-alat baru seperti HCC menyediakan jalur alternatif bagi pengembang yang ingin bekerja dengan API grafis modern, khususnya dalam ekosistem Vulkan. Keberagaman dalam pilihan perangkat ini mungkin akan terbukti bermanfaat bagi komunitas pemrograman grafis secara keseluruhan.
Sumber: Hero C Compiler