Ana içeriğe geç
Programlama

dxil-spirv kontrol akışı dönüştürücüsünü Mesa tabanlı yeni mimariyle yeniledi

Öne çıkanlar

  • dxil-spirv, 9 bin satırlık eski sezgisel CFG yapılandırıcısını Mesa'nın goto_if algoritmasıyla yeniledi.
  • RADV üzerinde yapılan ilk testler, yeni mimarinin performans kaybı yaratmadığını ortaya koydu.
  • Rastgele kontrol akışı üreten fuzzer aracı sayesinde Mesa projesindeki hatalar da giderildi.
  • PHI düğümleri ve switch blokları basitleştirilerek doğrudan değişken ve koşullu dallanma haline getirildi.

dxil-spirv projesinin geliştiricisi, DirectX Ara Dili (DXIL) kodlarını yapılandırılmış SPIR-V akışına dönüştüren kontrol akışı grafiği (CFG) bileşenini baştan yazdı. Yaklaşık 9 bin satırlık eski sezgisel mimarinin oyun güncellemeleri ve karmaşık gölgelendiriciler karşısında yetersiz kaldığını belirten geliştirici, insan tarafından okunabilir kod üretme hedefinden vazgeçerek doğrudan doğruluğa odaklandı. Yeni yaklaşım için Mesa projesinin OpenCL ortamında kullandığı yapılandırma algoritması temel alındı.

Geliştirici, ilk olarak Mesa sürücüsünde deneysel yollar açarak yapılandırılmamış kontrol akışının grafik gölgelendiricilerinde çalıştığını ve RADV sürücüsünde performans kaybı yaşanmadığını doğruladı. Ardından rastgele CFG üreten bir test ve fuzzer aracı geliştirerek GPU üzerinde bit seviyesinde doğruluk testleri gerçekleştirdi. Bu süreçte Mesa tarafında da çeşitli hatalar tespit edilerek upstream projeye iletildi. İleri yönlü akışın katmanlı seçim yapılarıyla ve dolaylı dallanmalarla çözülmesi sağlandı.

Yeni mimaride PHI düğümleri doğrudan geçici değişkenlere dönüştürülürken, switch blokları koşullu dallanmalara ayrıldı. Döngülerin ele alınmasında ise Mesa'nın döngü başlığını kendi hakimiyet sınırı olarak tanımlayan yaklaşımı uyarlandı. Uygulama, DXIL girdisinin indirgenebilir CFG yapısına dayanarak döngü içi ve dışı blokları ayrıştırdı, kırılmaları tek bir birleşme noktasına yönlendirdi ve maksimum yeniden yakınsama garantisi sundu.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.