Alyssa Rosenzweig, M1 için açık kaynaklı bir grafik sürücüsü geliştirme çabalarında, kısa süre önce M1’in GPU’sunun işleme hattında bir tuhaflık buldu . Giderek daha karmaşık 3D geometriler oluşturuyordu ve sonunda GPU hatasını gideren bir tavşana ulaştı.
Temel olarak — ve lütfen bunun ve söyleyeceğim diğer her şeyin aşırı basitleştirme olduğuna dikkat edin — sorun GPU’nun belleğe yetersiz erişimiyle başlar. Güçlü bir GPU’dur, ancak atasını paylaştığı A serisi iPhone SoC gibi, verimliliği korumak için kısayollar kullanır.
Ayrı bir GPU’nun yaptığı gibi doğrudan çerçeve arabelleğine işlemek yerine, M1 bir çerçevenin iki geçişini alır: ilki köşeleri bulur ve ikincisi diğer her şeyi yapar. Açıkçası, ikinci geçiş çok daha yoğundur, bu nedenle geçişler arasında, özel donanım çerçeveyi döşemelere (temelde mini çerçeveler) ayırır ve ikinci geçiş her seferinde bir döşeme alınır.
Döşeme, yeterli bellek kaynağına sahip olmama sorununu çözer, ancak döşemeleri daha sonra bir çerçeveye yeniden birleştirebilmek için GPU’nun tüm tepe noktası verilerinin bir arabelleğini tutması gerekir. Rosenzweig, bu arabellek taştığında, oluşturmanın çalışmayacağını buldu. Yukarıdaki ilk tavşana bakın.
Apple’ın sunumlarından birinde, arabellek dolduğunda GPU’nun kısmi bir oluşturma – yani tavşanın yarısını – verdiği açıklanmıştır. Apple’ın yazılımında, söz konusu arabelleğe parametre arabelleği adı verilir , bu ad görünüşte Imagination’ın PowerVR belgelerinden alınmıştır.
Imagination , Arm gibi diğer şirketlere lisans verdiği işlemcileri tasarlayan İngiltere merkezli bir şirkettir. Apple, 2020’nin başında şirketle Apple’ın geniş bir IP yelpazesini lisanslamasına izin veren bir anlaşma imzaladı. 2020’nin sonunda piyasaya sürülen M1’in, GPU’su için bir tür temel olarak PowerVR GPU mimarisini kullandığı açık.
Her neyse, tavşana dönelim. Tahmin edebileceğiniz gibi, tüm tavşanın bir görüntüsünü oluşturmak için kısmi görüntüler bir araya eklenebilir (ama elbette arada bir düzine ekstra adımla).
Ancak bu render hala tam olarak doğru değil. Tavşanın ayağında eserler görebilirsiniz. Bunun nedeni, çerçevenin farklı bölümlerinin bir renk arabelleği ve bir derinlik arabelleği arasında bölünmesi ve ikincisinin kısmi oluşturmalarla yüklendiğinde hatalı davranması olduğu ortaya çıkıyor.
Apple’ın sürücüsünden bir ters mühendislik yapılandırması sorunu çözer ve ardından nihayet tavşanı oluşturabilirsiniz (aşağıda).
Bir görüntü oluşturmak için tüm bu döngülerden geçen sadece Rosenzweig’in M1 için açık kaynaklı grafik sürücüsü değil: GPU da tam olarak bu şekilde çalışıyor. Mimarisi muhtemelen 3D oluşturma düşünülerek tasarlanmamıştı, ancak buna rağmen Apple, Apple’ın iddia ettiği gibi, onları en son ayrı GPU’lara rakip olabilecek bir şeye dönüştürdü . Serin.
Tavşan oluşturmanın daha derinlemesine (ve teknik olarak doğru) bir açıklaması ve M1’deki diğer keşifler için Rosenzweig’in blogunu ve Asahi Linux web sitesini kontrol ettiğinizden emin olun.