En pahalı görüntü oluşturma geçişlerinizi belirleyin

AGI Frame Profiler, uygulamanızın tek bir çerçevesini oluşturmak için kullanılan oluşturma geçişlerini ayrı ayrı incelemenize olanak tanır. Bunu, her grafik API çağrısını yürütmek için gerekli tüm duruma müdahale edip kaydederek gerçekleştirir. Vulkan'da bu işlem, Vulkan’ın katman sistemi kullanılarak yerel olarak yapılıyor. OpenGL'de komutlara ANGLE kullanılarak müdahale edilir. ANGLE, OpenGL komutlarını Vulkan çağrılarına dönüştürerek donanımda yürütülebilmelerini sağlar.

Adreno cihazlar

Pahalı oluşturma geçişlerinizi belirlemek için önce pencerenin üst kısmında AGI'nin zaman çizelgesi görünümüne bakın. Bu, belirli bir karenin bileşimini oluşturan tüm oluşturma geçişlerini kronolojik olarak gösterir. Bu, GPU Sırası bilgilerine sahip olsaydınız System Profiler'da göreceğiniz görünümle aynıdır. Ayrıca, oluşturma geçişi hakkında temel bilgiler de sunar (ör. oluşturulan çerçeve arabelleklerinin çözünürlüğü). Bu bilgiler, oluşturma geçişinin kendisinde neler olduğuna dair bilgi sağlayabilir.

Kare Zaman Çizelgesi görünümü
Şekil 1. Kare Zaman Çizelgesi görünümü

Oluşturma başarılarınızı incelemek için kullanabileceğiniz ilk kriter, bunların ne kadar zaman harcadıklarıdır. En uzun oluşturma geçişi, büyük olasılıkla iyileştirme potansiyeli en yüksek olan oluşturma geçişi olacaktır. Bu nedenle, buna göz atarak başlayın.

Kare zaman çizelgesi görünümünde oluşturma işleminin en uzun geçilmesini belirleme
Şekil 2. Kare Zaman Çizelgesi görünümünde oluşturma işleminin en uzun sürmesini belirleme

İlgili oluşturma geçişiyle ilgili GPU dilimi, oluşturma geçişi içinde neler olduğuna dair birtakım bilgiler sunar:

  1. Gruplama: Köşelerin, ekranda geldikleri yere göre kutulara yerleştirildiği yerler
  2. Oluşturma: Piksellerin veya parçaların gölgelendirildiği yer
  3. GMEM yükleme/depolama: Bir çerçeve arabelleğinin içeriği dahili GPU belleğinden ana belleğe yüklendiğinde veya depolandığında

Her birinin oluşturma geçişi için ne kadar sürdüğüne bakarak olası performans sorunlarının nerede olabileceği konusunda bir fikir edinebilirsiniz. Örneğin:

  • Binning zamanın büyük bir kısmını kapsıyorsa bu durum, köşe verilerinin çok fazla köşe noktası, büyük köşe veya köşe noktası ile ilgili başka sorunlara işaret ettiği bir performans sorununa işaret eder.
  • Oluşturma işlemi çoğu zamanı kapsıyorsa bu, gölgelendirmenin yetersiz kaldığına işaret eder. Olası nedenler; karmaşık gölgelendiriciler, çok fazla doku getirme, gerekli olmadığında yüksek çözünürlüklü bir çerçeve arabelleği oluşturma veya diğer ilgili sorunlar olabilir.

GMEM yüklemeleri ve mağazaları da akılda tutulması gereken noktalardır. Bir şeyleri grafik belleğinden ana belleğe taşımak pahalı olduğundan, yük veya depolama işlemi miktarını en aza indirmek de performansı artırır. Bunun yaygın bir örneği, derinliği/şablon arabelleğini ana belleğe yazan bir GMEM depolama derinliği/şablonudur. Gelecekteki oluşturma işlemlerinde bu arabelleği kullanmazsanız bu depolama işlemi ortadan kaldırılabilir ve kare süresi ile bellek bant genişliğinden tasarruf edersiniz.

GMEM yüklemelerini ve depolarını tanımlama
Şekil 3. GMEM yüklemelerini ve depolarını tanımlama

Büyük oluşturma geçişi incelemesi

Oluşturma geçişi sırasında verilen tüm ayrı çizim komutlarını görmek için:

  1. Zaman çizelgesinde oluşturma kartını tıklayın. Bu işlem, Çerçeve Profil Aracı'nın Komutlar bölmesinde bulunan hiyerarşide oluşturma kaydını açar.

  2. Oluşturma kartı sırasında verilen tüm çizim komutlarının gösterildiği oluşturma kartının menüsünü tıklayın. Bu bir OpenGL uygulamasıysa daha da derine inebilir ve ANGLE tarafından verilen Vulkan komutlarını görebilirsiniz.

Komut bölmesi
Şekil 4. Komut bölmesi

Çizim çağrılarından birini seçin. Bu işlem, bu çizim sırasında bağlanmış tüm framebuffer eklerini ve ekli çerçeve arabelleğinde çizimin nihai sonucunu gösteren Framebuffer bölmesini açar. Burada, AGI'yı hem önceki hem sonraki çekiliş çağrılarını açmak ve ikisi arasındaki farkı karşılaştırmak için kullanabilirsiniz. Görsel olarak neredeyse aynıysa bu, nihai resme katkısı olmayan bir çizim çağrısını elemek için bir fırsat olduğunu gösterir.

Komutlar bölmesinden tek tek çizim çağrılarını seçme
Şekil 5. Komutlar bölmesinde tek tek çizim çağrılarını seçme

Bu çizim için Ardışık düzen bölmesi açıldığında, bu çizim çağrısını yürütmek için grafik ardışık düzeni tarafından kullanılan durum gösterilir.

Ardışık düzen bölmesi
Şekil 6. Ardışık düzen bölmesi

Giriş Derleyici, köşe verilerinin bu çizime nasıl bağlandığı hakkında bilgi sağlar. Binning'in oluşturma işleminizin süresinin büyük bir bölümünü kapladığını fark ettiyseniz bu alanı araştırmak iyi olur. Burada köşe biçimi, çizilen köşe noktalarının sayısı ve köşe noktalarının belleğe nasıl yerleştirildiği hakkında bilgi edinebilirsiniz. Bu konu hakkında daha fazla bilgi için Köşe biçimlerini analiz etme bölümüne bakın.

Ardışık Düzen bölmesinde Giriş Derleyici bölümü
Şekil 7. Ardışık düzen bölmesinde Giriş Derleyici bölümü

Vertex Shader bölümü, bu çizim sırasında kullandığınız köşe gölgelendirici hakkında bilgi sağlar ve birleştirmenin bir sorun olarak tanımlanıp tanımlanmadığını öğrenmek için iyi bir yer olabilir. Kullanılan gölgelendiricinin SPIR-V ve derlenmiş GLSL'sini görebilir ve bu çağrı için bağlı Tek Tip Arabelleğe bakabilirsiniz. Daha fazla ayrıntı için Gölgelendirici performansını analiz etme bölümüne bakın.

Ardışık düzen bölmesinde Köşe Gölgelendirici bölümü
Şekil 8. Ardışık düzen bölmesindeki Vertex Shader bölümü

Rasterizleyici bölümü, ardışık düzenin daha sabit fonksiyonlu kurulumuyla ilgili bilgileri gösterir ve daha çok görüntü alanı, makas, derinlik durumu ve poligon modu gibi sabit işlevli durumlarda hata ayıklama amacıyla kullanılabilir.

Ardışık düzen bölmesindeki pikselleştirici bölümü
Şekil 9. Ardışık düzen bölmesindeki Rasterizer bölümü

Parça Gölgelendirici bölümü, Vertex Gölgelendirici bölümünde bulunan ancak Parça Gölgelendirici'ye özgü olan bilgilerin çoğunu sağlar. Bu durumda, hangi dokuların sınırlandığını görebilir ve tutma yerini tıklayarak bunları inceleyebilirsiniz.

Ardışık düzen bölmesinde Parça Gölgelendirici bölümü
Şekil 10. Ardışık düzen bölmesindeki Parça Gölgelendirici bölümü

Daha küçük oluşturma kontrolü incelemesi

GPU performansınızı iyileştirmek için kullanabileceğiniz bir başka ölçüt de daha küçük oluşturma kartı gruplarına bakmaktır. Genel olarak, GPU'nun bir oluşturma aktarımından diğerine durumu güncellemesi zaman aldığından, oluşturma geçişi miktarını mümkün olduğunca en aza indirmek istersiniz. Bu küçük oluşturma geçişleri genellikle gölge haritaları oluşturmak, gauss bulanıklığı uygulamak, parlaklığı tahmin etmek, işleme sonrası efektlerini yapmak veya kullanıcı arayüzünü oluşturmak gibi işlemler için kullanılır. Bunlardan bazıları potansiyel olarak tek bir oluşturma işleminde birleştirilebilir, hatta toplam görüntüyü maliyeti karşılayacak kadar etkilemiyorsa tamamen ortadan kaldırılabilir.

Yerel çözünürlük arabelleğini küçültmek için kullanılan daha küçük oluşturma biletleri
Şekil 11. Yerel çözünürlük arabelleğini küçültmek için kullanılan daha küçük oluşturma geçişleri