GPU doku ve VRAM'ı nasıl işler?


18

Aslında birbiriyle ilişkili bir grup soru:

  1. Sıkıştırılmış dokular (dxt5 / dxt1 vb.) Boru hattı oluşturulurken hiç tamamen açılmış mı?

  2. İlk sorunun cevabı doğruysa, birkaç büyük sıkıştırılmamış doku için bellek nasıl yönetilir?

  3. Modern GPU'da framebuffer VRAM'den farklı mıdır?

Yanıtlar:


29

DXT / BC / ETC gibi GPU sıkıştırılmış doku formatları , doğrudan sıkıştırılmış formlarından okunacak şekilde tasarlanmıştır. Ham bir RGBA tamponuna paketlerinin açılması gerekmez.

Bunun çalışma şekli, her bir metin bloğunun (genellikle 4x4) belirli sayıda bit kaplamasıdır - bu nedenle, tamponda belirli bir tekstili aramak için tam olarak ne kadar ilerlediğini biliyoruz - ve bu bloklar çevrenin tamamını okumadan açılabilir. / önceki doku bilgisi. GPU'lar, gölgelendiricilerinizden gelen doku örnekleme isteklerini yerine getirmek için yalnızca istenen texel bloklarını açan özel donanım içerir.

Bu, her bir texelin kapladığı alanın görüntüde (daha fazla veri alan ayrıntılı alanlar, daha az yer kaplayan öngörülebilir alanlar) değişebileceği jpg & png gibi formatların aksine, bu nedenle sıkıştırmak istediğiniz belirli bir texeli bulmak için tüm görüntü veya en azından büyük / dağıtılmış parçaları. Ancak, bir dokunun öngörülebilir alanlarını seçici bir şekilde sıkıştırabildikleri için, GPU uyumlu biçimlerden elde ettiğimizden daha fazla disk veya depolama alanı üzerinde depolama için görüntüleri daha küçük boyutlara sıkıştırma eğilimindedirler. Farklı kullanımlar için farklı stratejiler.


Genel olarak, birden fazla soru sormak birden fazla gönderi yoluyla yapılmalıdır, ancak bu oldukça kısa bir cevap olduğu için 3. maddeyi de vuracağım:

" Framebuffer ", ekrana sunmak istediğimiz oluşturulmuş görüntüyü saklamak için kullanmaya karar verdiğimiz belirli bir video belleği parçasıdır . JarkkoL'nin cevabındaki ayrıntıları not edin, bazı özel donanımlarda bu arabelleği , oluşturma hedeflerinin bant genişliği ihtiyaçları için optimize edilmiş mevcut video belleğimizin belirli bir bölümünde bulmayı seçebiliriz .


Sıkıştırma algoritmaları üzerindeki bu bağlantı son derece yararlı ve derinlemesine. Güzel bulmak!
Coburn

7

Sorularınızın cevapları gerçekten platforma bağlıdır. Genellikle BC formatları hafızada sıkıştırılmış formda tutulur ve dekompresyon uçuşta GPU doku birimleri tarafından yapılır, ancak istisnalar vardır. Yani Xbox 360, TU verileri almadan önce önbellek kullanımını şişirmeden önce önbellek için 4x4 piksel BC bloklarını sıkıştırdığı biliniyor. Gerçi yükün üzerine vram yapmak için tüm dokuyu açacak herhangi bir platform bilmiyorum, ancak eklenen bellek ve bant genişliği kullanımı nedeniyle çok şüphe duyuyorum.

Aynı şey çerçeve tamponları için de geçerlidir - platforma bağlıdır. Xbox 360'ta oluşturma hedefleri için kullanmanız gereken 10MB yüksek bant genişliğine sahip EDRAM vardı. Xbox One'da hala yüksek bant genişliği nedeniyle oluşturma hedefleri için tercih edilen 32MB özel ESRAM var (ve Xbox 360'takinin aksine alınabilir), ancak oluşturma hedefleri normal DDR3 bellekte de bulunabilir.

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.