2 puan yazan GN⁺ 2024-02-15 | 1 yorum | WhatsApp'ta paylaş

OpenGL 4.6 ve OpenGL® ES 3.2 desteği

  • M1 uzun süredir yalnızca OpenGL 4.1'i destekliyordu, ancak artık OpenGL® 4.6 ve OpenGL® ES 3.2'yi tamamen destekliyor.
  • En güncel M1/M2 serisi sürücüler için Fedora kurmanız yeterli.
  • Zaten kuruluysa, yalnızca dnf upgrade --refresh komutuyla yükseltme yapılabilir.
  • Mevcut üreticinin standart dışı 4.1 sürücülerinin aksine, bu açık kaynaklı Linux sürücüleri en güncel OpenGL sürümlerine göre sertifikalandırıldı ve Blender, Ryujinx, Citra gibi modern OpenGL iş yükleriyle geniş uyumluluk vadediyor.

Sürücü sertifikasyonu ve standart desteği

  • Sertifikalı 4.6/3.2 sürücülerin doğruluğu garanti etmek için 100.000'den fazla testi geçmesi gerekiyor.
  • Resmen sertifikalandırılmış sürücü listesine artık OpenGL 4.6 ve ES 3.2 de dahil edildi.
  • Üretici hâlâ modern OpenGL gibi grafik standartlarını desteklemiyor, ancak bu şirket destekliyor.
  • Şirket, birlikte çalışabilir açık standartlara olan bağlılığını açıkça ifade ediyor ve kullanıcılarla geliştiricilere, özel portlar olmadan uygulamaları istedikleri yerde çalıştırma özgürlüğü sunmak istiyor.

OpenGL 4.6'daki yenilikler

  • OpenGL 4.6, 4.1'e kıyasla onlarca zorunlu özellik ekliyor:
    • Robustness (sağlamlık)
    • SPIR-V
    • Clip control
    • Cull distance
    • Compute shaders
    • Geliştirilmiş transform feedback

M1 ve grafik standartlarıyla uyumluluk sorunu

  • M1, OpenGL ES 3.1'den daha yeni grafik standartlarıyla pek uyumlu değil.
  • Vulkan bazı özellikleri isteğe bağlı hâle getiriyor, ancak DirectX ve OpenGL için katmanlarda gerekli özellikler eksik kalıyor.
  • M1 üzerinde OpenGL 4.1 özellik kümesinin ötesine geçen mevcut bir çözüm bulunmuyor.

4.1 engelini aşma yöntemi

  • Donanım desteği olmadan yeni özellikleri uygulamak için yeni yöntemlere ihtiyaç var.
  • Geometri shader'ları, tessellation ve transform feedback, compute shader'larla değiştiriliyor.
  • Cull distance, dönüştürülmüş enterpolasyon değerleriyle değiştiriliyor.
  • Clip control, vertex shader epiloguyla değiştiriliyor.

Sağlamlıkla ilgili zorluklar

  • Geleneksel olarak GPU'lar güvenlikten çok ham performansa öncelik verir.
  • Web tarayıcısı gibi uygulamalar için bu ödünleşim tercih edilir değildir.
  • Sağlamlık özellikleri, shader'da tampon dışı erişim gerçekleştiğinde uygulamanın tanımlı bir davranış seçmesine izin vererek performanstan bir miktar ödün verip saldırı yüzeyini azaltabilir.

Tampon sağlamlığı

  • Farklı API'ler, sağlamlık etkin olduğunda tampon sınırları dışındaki yüklemelerin ne döndüreceğini farklı şekilde tanımlar.
  • OpenGL, sınır dışı yüklemenin tamponun son öğesini döndürmesini sağlar.
  • Sağlamlık için ek işlemler shader'ın preamble kısmına taşınır, böylece ana shader için ek maliyet oluşmaz.

Görüntü sağlamlığı

  • Görüntü sağlamlığı, sınır dışı görüntü yüklemelerinin 0 döndürmesini gerektirir.
  • M1 GPU'da mip'lenmiş görüntü yüklemelerinin başarısız olduğu tek bir test vardır.
  • Sağlamlık için geçici çözüm; geçersiz seviyelerden yükleme yapmamak ya da spekülatif yükleme sonrası karşılaştırma ve seçim işlemleri kullanmaktır.

GN⁺ görüşü

  • Bu yazı, M1 cihazlarda en güncel OpenGL standardının desteklenmesine yönelik önemli bir ilerlemeyi ele alıyor. Bu, Linux kullanıcıları ve geliştiricileri için daha geniş uyumluluk ve daha iyi performans anlamına geliyor.
  • OpenGL 4.6'nın yeni özellikleri, grafik uygulamalarının performansını ve sağlamlığını ciddi ölçüde iyileştirebilir; bu özellikle oyun geliştirme ve yüksek performanslı hesaplama alanlarında önemlidir.
  • Yazı, açık kaynaklı sürücülerin ticari çözümlere kıyasla nasıl daha iyi standart uyumu ve uyumluluk sunabildiğini gösteren iyi bir örnek.

1 yorum

 
GN⁺ 2024-02-15
Hacker News görüşleri
  • Alyssa Rosenzweig, topluluğa sürekli katkıda bulunan biri; blog yazılarını okursanız modern grafik donanımının iç yapısı hakkında daha önce bilmediğiniz şeyler öğrenebilirsiniz. Bu tür çabalar, yeteneğin laftan daha önemli olduğunu gösteriyor ve sadece blogu okumak bile insanı çok düşündürüyor. Asıl önemli mesaj son cümlede değil, ikinci cümlede; okur da tavşan deliğine düşüp bit manipülasyonu dünyasının tadını çıkarıyor.
  • M1 çipi, OpenGL ES 3.1'den daha yeni grafik standartlarına pek uygun değil; Vulkan bazı özelliklerin seçmeli kullanımına izin veriyor ama DirectX ve OpenGL için katmanlama yaparken gereken bazı özellikler eksik. M1'de OpenGL 4.1 özellik setini aşan bir çözüm yok. Bunun performans etkisini, özellikle macOS'taki Metal ile karşılaştırıldığında, merak ediyorum.
  • Grafik programlamada sınır dışı erişimi trap'ten rastgele veri döndürmeye çevirmeye "robustness" denmesinin komik olduğunu düşünüyorum.
  • Bir gün Apple OpenGL 3.3 core'u kaldıracak ve bunun sonucunda herkes de onu bırakabilir. Genelde OpenGL'in Vulkan'dan daha kolay kullanıldığı söylenir ama fazla karmaşıklaştığında daha az deneyimli geliştiriciler için GPU'dan yararlanma konusunda bir engel haline gelebilir; bu da bazı bağımsız oyun geliştiricilerini caydırabilir. Unity ve Unreal kullanmak yaygın ama sıfırdan oyun yapmak nedense garip karşılanıyor. Açık kaynak oyun geliştirmenin mevcut durumu bazen gerçekten çok umutsuz geliyor ve yeni nesil grafik API'lerinin gelişi işleri daha da zorlaştırıyor.
  • Bu, M1 çipi için Fedora ile ilgili; bunu macOS'ta gerçekleştirmek gerçekten şaşırtıcı olurdu. Bunu başarmak için ne tür çalışmalar gerektiğini merak ediyorum.
  • Neden önce Vulkan hedeflenmiyor, merak ediyorum. Günümüzde daha önemli hedef Vulkan gibi görünüyor ve zaten mevcut OpenGL uygulamaları da var.
  • 4.1 bariyeri nasıl aşılacak? Donanım desteği olmadan yeni özellikleri uygulamak için yeni yöntemler gerekiyor. Geometry shader, tessellation ve transform feedback compute shader ile; cull distance dönüştürülmüş enterpolasyon değerleriyle; clip control ise vertex shader'ın epilogu ile uygulanıyor. Bunların ne kadarının M1 GPU kodunda yapıldığını ve diğer özellikler üzerinden yapılan bu uygulamaların ne kadar yeniden kullanılabildiğini merak ediyorum.
  • Bir başka tavsiye daha; daha fazla bilgi ve sabırla, bağlam içinde daha iyi anlamak isteyeceğim başka bir yazı. Buna rağmen Alyssa'nın yazıları keyifle okunuyor.
  • OpenGL'in 3D oyunlarda kullanılmasının tek nedeninin, 90'larda John Carmack'ın Quake II için ona takıntılı olması olması bayağı çılgınca.