Dukungan OpenGL 4.6 dan OpenGL® ES 3.2
- M1 selama ini hanya mendukung OpenGL 4.1, tetapi sekarang sudah sepenuhnya mendukung OpenGL® 4.6 dan OpenGL® ES 3.2.
- Cukup instal Fedora untuk driver seri M1/M2 terbaru.
- Jika sudah terpasang, cukup upgrade dengan perintah
dnf upgrade --refresh.
- Berbeda dari driver 4.1 nonstandar milik vendor sebelumnya, driver Linux open source ini disertifikasi sesuai versi OpenGL terbaru, sehingga menjanjikan kompatibilitas luas dengan workload OpenGL modern seperti Blender, Ryujinx, dan Citra.
Sertifikasi driver dan dukungan standar
- Driver 4.6/3.2 yang tersertifikasi harus lulus lebih dari 100.000 pengujian untuk menjamin ketepatan.
- Daftar driver yang tersertifikasi secara resmi kini mencakup OpenGL 4.6 dan ES 3.2.
- Vendor tersebut masih belum mendukung standar grafis modern seperti OpenGL modern, tetapi perusahaan ini mendukungnya.
- Perusahaan ini secara terbuka menyatakan kecintaannya pada standar terbuka yang interoperabel, dan ingin memberi kebebasan kepada pengguna serta pengembang untuk menjalankan aplikasi di mana pun mereka inginkan tanpa port khusus.
Fitur baru di OpenGL 4.6
- OpenGL 4.6 menambahkan puluhan fitur wajib dibandingkan 4.1:
- Robustness
- SPIR-V
- Clip control
- Cull distance
- Compute shaders
- Transform feedback yang ditingkatkan
Masalah kompatibilitas M1 dengan standar grafis
- M1 kurang cocok dengan standar grafis yang lebih baru daripada OpenGL ES 3.1.
- Vulkan memang menjadikan beberapa fitur bersifat opsional, tetapi layer untuk DirectX dan OpenGL tidak memiliki fitur-fitur yang dibutuhkan.
- Di M1, belum ada solusi yang ada untuk melampaui set fitur OpenGL 4.1.
Cara menembus batas 4.1
- Diperlukan pendekatan baru untuk mengimplementasikan fitur baru tanpa dukungan hardware.
- Geometry shader, tessellation, dan transform feedback digantikan dengan compute shader.
- Cull distance digantikan dengan nilai interpolasi yang ditransformasikan.
- Clip control digantikan dengan epilog vertex shader.
Tantangan robustness
- Secara tradisional, GPU memprioritaskan performa mentah dibanding keamanan.
- Untuk aplikasi seperti browser web, trade-off semacam ini tidak diinginkan.
- Fitur robustness memungkinkan aplikasi memilih perilaku yang terdefinisi saat terjadi akses buffer di luar batas di shader, sehingga dapat mengurangi permukaan serangan dengan sedikit pengorbanan performa.
Robustness buffer
- API lain memiliki definisi berbeda tentang apa yang dikembalikan oleh load buffer di luar batas saat robustness diaktifkan.
- OpenGL menetapkan bahwa load di luar batas harus mengembalikan elemen terakhir dari buffer.
- Operasi tambahan untuk robustness dipindahkan ke preamble shader sehingga tidak menambah biaya pada shader utama.
Robustness gambar
- Robustness gambar mengharuskan load gambar di luar batas mengembalikan 0.
- Pada GPU M1, ada satu pengujian tunggal yang gagal pada load gambar mipmap.
- Solusi sementara untuk robustness adalah tidak melakukan load pada level yang tidak valid, atau melakukan load secara spekulatif lalu menggunakan operasi compare dan select.
Opini GN⁺
- Artikel ini membahas perkembangan penting dalam dukungan standar OpenGL terbaru di perangkat M1. Ini akan membawa kompatibilitas yang lebih luas dan peningkatan performa bagi pengguna Linux dan para pengembang.
- Fitur-fitur baru di OpenGL 4.6 dapat secara signifikan meningkatkan performa dan robustness aplikasi grafis, yang sangat penting khususnya di bidang pengembangan game dan komputasi berkinerja tinggi.
- Artikel ini merupakan contoh bagus tentang bagaimana driver open source dapat memberikan kepatuhan standar dan kompatibilitas yang lebih baik dibanding solusi komersial.
1 komentar
Komentar Hacker News