2016-03-20 27 views
2

Çalışma zamanı tarafından oluşturulan gölgelendirici kodu için, derlenmiş Metal Shader Language (MSL) kodunu doğrudan (.metallib dosyasında bulunan ve newLibraryWithData:error: yöntemiyle kullanıldığı gibi) otomatik olarak oluşturmanın mümkün olup olmadığını araştırmak istiyorum. otomatik olarak insan tarafından okunabilir MSL kaynak kodu oluşturuluyor (newLibraryWithSource:options:error: yöntemiyle kullanıldığı gibi). Bunun içinMetal derlenmiş metallib shader dosyasının formatı?

Gerekçe iki kat şunlardır:

  1. derlenmiş kod biçimine bağlı olarak, oldukça insan ile karıştırmasını yerine, otomatik olarak oluştur derlenmiş shader kodu için bir program için daha basit ve daha temiz olabilir okunabilir format.
  2. Gölgelendirici derleme aşamasını kaldırmak, çalışma zamanı tarafından oluşturulan gölgelendiricilerin oluşturulmasını hızlandırabilir.

.metallib dosyasında olduğu gibi, belgelendirilmiş MSL kodunun biçimi için belge kullanılabilir mi? Ve derlenmiş biçim GPU özgüdür veya newLibraryWithData:error: yönteminde bir son derleme aşamasında GPU düzeyinde alınan bir ara dili biçiminde var mı?

cevap

2

metallib dosyalarının biçimi herkese açık olarak belgelenmemiştir. Kütüphane dosyaları esas olarak, cihaz-agnostik olan LLVM türevli bir ara dilde meta veri ve derlenmiş shader kodu içerir. Bu orta dili son makine koduna dönüştüren ikinci bir arka uç derleme adımı vardır. Doğrudan ara kodu oluşturmak mümkün değildir, ancak istediğiniz bir özellikse, Apple ile bir geliştirme isteği hatası oluşturmalısınız.

+0

Teşekkürler. İç yapıyı anlamak için kaynağınız nedir (örneğin ara dil artı meta, vb.)? –