Döşeme tabanlı (ertelenmiş) renderleme için veri yapıları


18

Döşenmiş oluşturma, modern mobil GPU mimarilerinde, görüntü alanını küçük (ör. 32x32 piksel) döşemelerin düzenli bir ızgarasına bölerek bellek erişiminin tutarlılığını artırmak için kullanılır. Her bir döşemeyle ilişkili ilkelleri izlemek için kullanılan veri yapılarının türleri hakkında bilgi azdır, ancak birçok ilkelin keyfi olarak herhangi bir döşemenin üzerine gelebileceğini göz önünde bulundurur.

Bir sürücü geliştiricisinin bakış açısından, bir döşemeye ait ilkel kümeleri temsil etmek için yaygın olarak hangi veri yapıları kullanılır ve bu tür yapılar, belirli bir döşemeyle çakışan geometriye göre dinamik olarak tahsis edilir / yeniden boyutlandırılır mı?


3
Gerçekten ilginç bir soru ve nitrit-cesur ayrıntıların çoğunun gizli sos olduğundan şüphelenmeme rağmen, bu araştırma yapmak ve bir özet yazmak isteyen herkes için iyi bir atlama noktası olabilir: blog.imgtec.com/powervr/…
John Calsbeek

Yanıtlar:


11

John'un bahsettiği blog yazısı oldukça iyi bir başlangıç ​​(eğer kendim söylesem!), Ama yardımcı olabilecek biraz ekstra ayrıntı var.

PowerVR mimarisi için, tüm köşe gölgeleme ve döşeme işlemi tamamlandıktan sonra, döşeme başına verileri depolayan - ara sıra liste veya parametre arabelleği (PB) olarak adlandırılan - ara veri yapısı aslında çoğunlukla tarafından oluşturulur ve yönetilir. sürücü yerine donanım.

PB'nin bellek içi yapıları fiziksel olarak ikiye ayrılır. İlk olarak, tepe özellikleri de dahil olmak üzere dönüştürülmüş köşe verisi blokları. Bloklar sıkıştırılmıştır ve tahmin edebileceğiniz gibi, çoğunlukla paketlenmiş ve sıkıştırılmış kayan nokta verisidir. İkinci bellek içi yapı, etkili bir liste listesi olan döşeme verileridir.

Bu veri yapısındaki üst düzey listeye bölge denir ve belirli bir ilkel blok için bir seferde tek bir döşemeden ziyade bir döşemeyi kodlayabilir. Bu nedenle bölge, ekran döşemelerinin, döşeme durumlarının ve ardından o bölgede geometriyi tutan sıkıştırılmış blokların bir listesidir. Bölgeler rasterleştiricinin üzerinde çalıştığı şeydir ve bazı durumlarda rasterlerin boş bölgeleri ziyaret etmeleri için iyi bir neden olsa da, boş döşemelerin otomatik olarak atlandığını hayal edebilirsiniz.

GPU'nun PB için kullandığı bellek, tüm modern PowerVR uygulamalarında dinamik olarak ayrılmıştır. Bu belleğe bir işaretçi sürücü tarafından sağlanır ve sürücü, GPU'nun yardımıyla, gerektiği gibi boyutlandırır. Bu mekanizma, sık sık yeniden tahsis etme ve tahsis edilen PB alanı miktarını en aza indirme arasında bir takastır.

Modern GPU'lar bellek dolaylılığını en aza indirgemek için gerçekten çok çalışıyorlar, ancak rasterleştirme aşamasını beslemek için PB'yi yürümek gerçekten zor olduğu ve başka seçeneğin olmadığı durumlardan biridir. Neyse ki kovalayan işaretçi, iyi önbelleklenen ve çekirdeğe akan büyük blokları sarar.

Diğer mimariler PowerVR ile tam olarak aynı şekilde çalışmaz, çünkü PB'nin mimarimizde olduğu gibi olmasının bir nedeni, uyguladığımız tamamen ertelenmiş piksel gölgeleme konseptine yardımcı olmaktır, ancak genel konsept, farkında olduğum mobil alan.

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.