Döşeme Tabanlı Görüntü Oluşturma GPU'sunda Doku Önbelleği nasıl çalışır?


9

Önbellek döşemeye dayalı oluşturma ile nasıl çalışır?

Bunun için önbellek isabet oranını nasıl artıracağına dair ipuçları var mı? (örneğin, fayanslar yatay olarak işlenirse ve aynı dokuya sahip dikey üçgen segmentlerim varsa, önbellek için üçgenleri yatay olarak düzenlediğimden daha kötü çalışır mı?)


1
Üçgenlerin dikey ve yatay düzeniyle ne demek istiyorsun?
Mokosha

@Mokosha üzgünüm, bu bir şekilde fark edilmedi. Şimdi gördüm. Bu pratik bir sorudan daha teoriktir ve şimdi bunun mantıklı olup olmadığını bile bilmiyorum. Her neyse, demek istediğim, bir üçgenin fayans (x, y) ve (x + 1, y) ile kesiştiğini ve bu iki karonun birbiri ardına işlendiğini söyleyin. Doku önbelleği için kesişen (x, y) ve (x, y + 1) üçgenlerim varsa daha iyi olur mu? (Kenar piksellerinden ve üçgenlerin yerleşimi nedeniyle fayans işlemesi aynı olmadığından)
Felipe Lira

Yanıtlar:


19

Döşeme tabanlı bir GPU olsun ya da olmasın, doku önbellek mimarisini gerçekten etkilemez. Dokuların bellek düzeni, tüm GPU'larda Morton düzeninin veya Hilbert eğrisinin bir lezzeti gibi görünecektir .

Sonuç olarak, GPU bellek sistemi önbellek satırlarını getirdiği için eşkenar üçgenlere yakın üçgenler oluşturmak daha etkilidir.

Açıkça, kiremit sınırlarında, iki kez metin almanız gerekebilir. Döşeme kenarlıkları yalnızca "az" piksel olduğu için bunun küçük bir maliyeti vardır.

Muhtemelen masaüstü GPU'ları aşağıdaki gibi deneylerin gösterdiği gibi döşeme tabanlı GPU'lara aynı şekilde davranır: http://www.g-truc.net/post-0597.html

Karoların boyutu farklıdır, ancak her iki mimari de parçaları farklı boyutlardaki karolar hiyerarşisine dönüştürür.

Döşeme tabanlı GPU'ları kodlarken önerim her zaman akılda tutulmasıdır:

  1. Gerçekten gerekmedikçe çerçeve arabelleği nesnelerini değiştirmeyin.
  2. Yeni bir framebuffer nesnesini bağlarken, mevcut framebuffer'ın içeriğini kaydetmeniz gerekmiyorsa atın. Yeni çerçeve arabelleğinin içeriğini yüklemek istemiyorsanız, çerçeve arabelleğini temizlemelisiniz.

Düzenlemeyi kastettiğim gibi olmadığından ikinci öğeyi güncelledim. Aksi takdirde, harika görünüyor!
Christophe

Merhaba Christophe, "ikizkenar" yerine "eşkenar üçgen" mi demek istediniz? "Hilbert" yerine adresleme donanımda çok daha kolay olduğu için "Morton" sipariş söyleyebilirim .
Simon F

@Christophe teşekkürler! Bu gerçekten faydalı. Sınır pikselleri için doku önbelleği önemli değil mi? Merak ettiğim şey buydu. Yani, fayans (x, y) ve (x + 1, y) ile kesişen bir üçgenim varsa ve GPU sadece rasterleştirilmiş döşemeyi (x, y). Sonraki (farklı bir Yürütme Birimi tarafından işlenirse bile, döşemenin (x + 1, y) olacağını varsayarsak, bu üçgen için metin örneklerken doku önbelleğinden yararlanamayacağım mı?)
Felipe Lira

Ayrıca Hilbert modelini merak ettim. Her zaman bunun blok sıkıştırılmış dokular için geçerli olduğunu varsaydım. Bu tüm dokular için geçerli mi? PS: Ben de son paragrafı takip etmedim.
Felipe Lira

PVRTC, doku bloklarını morton düzeninde
ashleysmithgpu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.