2 poin oleh GN⁺ 2024-02-15 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-02-15
Komentar Hacker News
  • Alyssa Rosenzweig adalah sosok yang terus berkontribusi pada komunitas, dan dengan membaca postingan blognya kita bisa mempelajari hal-hal tentang bagian dalam perangkat keras grafis modern yang sebelumnya tidak kita ketahui. Upaya seperti ini membuktikan bahwa kemampuan lebih penting daripada kata-kata, dan hanya dengan membaca blognya saja sudah memicu banyak pemikiran. Pesan pentingnya ada di kalimat kedua, bukan yang terakhir, dan pembaca akan terseret masuk ke lubang kelinci dan menikmati dunia manipulasi bit.
  • Chip M1 kurang cocok dengan standar grafis yang lebih baru daripada OpenGL ES 3.1, dan meskipun Vulkan dapat menggunakan beberapa fitur secara opsional, fitur yang dibutuhkan untuk pelapisan bagi DirectX dan OpenGL masih belum ada. Di M1 tidak ada solusi yang melampaui set fitur OpenGL 4.1. Ada rasa penasaran soal dampak performanya, terutama jika dibandingkan dengan Metal di macOS.
  • Menurut saya lucu bahwa dalam pemrograman grafis, mengubah akses di luar batas dari trap menjadi pengembalian data acak disebut sebagai 'robustness'.
  • Suatu hari nanti Apple akan menghentikan OpenGL 3.3 core, dan karena itu semua orang juga mungkin akan meninggalkannya. Secara umum OpenGL memang dikatakan lebih mudah digunakan daripada Vulkan, tetapi jika terlalu rumit, itu bisa menjadi hambatan bagi pengembang yang kurang berpengalaman untuk memanfaatkan GPU, dan hal ini bisa membuat sebagian pengembang game indie patah semangat. Memakai Unity dan Unreal memang umum, tetapi membuat game dari nol justru terasa dianggap aneh. Kondisi pengembangan game open source terkadang terasa sangat putus asa, dan kemunculan API grafis generasi berikutnya membuat situasi semakin sulit.
  • Ini berkaitan dengan Fedora untuk chip M1, dan akan sangat mengejutkan jika ini diimplementasikan di macOS. Ada rasa penasaran tentang pekerjaan seperti apa yang dibutuhkan untuk mencapainya.
  • Saya penasaran mengapa tidak menargetkan Vulkan terlebih dahulu. Vulkan tampaknya menjadi target yang lebih penting saat ini, dan implementasi OpenGL juga sudah ada.
  • Bagaimana cara menembus batas 4.1? Untuk mengimplementasikan fitur baru tanpa dukungan perangkat keras, dibutuhkan pendekatan baru. Geometry shader, tessellation, dan transform feedback diimplementasikan dengan compute shader, cull distance dengan nilai interpolasi yang telah ditransformasikan, dan clip control dengan epilog vertex shader. Saya penasaran seberapa banyak pekerjaan seperti ini dilakukan di kode GPU M1, dan sejauh mana implementasi fitur melalui fitur lain bisa digunakan kembali.
  • Satu lagi rekomendasi, artikel lain yang ingin saya pahami lebih baik dalam konteks dengan bekal pengetahuan dan kesabaran yang lebih besar. Meski begitu, tulisan Alyssa tetap enak dibaca.
  • Gila juga bahwa satu-satunya alasan OpenGL dipakai untuk gaming 3D adalah karena pada tahun 90-an John Carmack begitu ngotot memakainya untuk Quake II.