Aracılığıyla paylaş


Tanımlayıcı Yığınlarını Ayarlama ve Doldurma

Bir komut listesinde ayarlanabilen tanımlayıcı yığın türleri, tanımlayıcı tabloların kullanılabilmesi için tanımlayıcılar içerenlerdir (her seferinde en fazla bir tane).

Tanımlayıcı yığınlarını ayarlama

Komut listesinde ayarlanabilen tanımlayıcı yığını türleri şunlardır:

D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV
D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER

Komut listesine ayarlanan yığınlar, gölgelendirici tarafından görülebilir olarak oluşturulmuş olmalıdır. Üç tür komut listesi vardır: DIRECT, BUNDLE ve COMPUTE.

Bir komut listesinde bir tanımlayıcı yığını ayarlandıktan sonra, tanımlayıcı tablolarını tanımlayan sonraki çağrılar geçerli tanımlayıcı yığınına başvurur. Tanım tablosunun durumu, bir komut listesinin başında ve bir komut listesinde tanımlayıcı yığınları değiştirildikten sonra belirsizdir. Aynı tanımlayıcı yığınının yedekli olarak ayarlanması, tanımlayıcı tablo ayarlarının tanımsız hale getirmesine neden olmaz.

Bir pakette ise tanımlayıcı yığınları yalnızca bir kez ayarlanabilir (aynı yığını iki kez ayaran yedekli çağrılar hata üretmez); aksi takdirde, davranış tanımlanmamıştır. Herhangi bir komut listesi paketi çağırdığında ayarlanan tanımlayıcı yığınlarının durumla eşleşmesi gerekir; aksi takdirde, davranış tanımlanmamıştır. Bu, paketlerin komut listesinin tanımlayıcı tablo ayarlarını devralmasına ve düzenlemesine olanak tanır. Tanımlayıcı tabloları değiştirmeyen (yalnızca bunları devralan) paketlerin bir tanımlayıcı yığını ayarlaması gerekmez ve yalnızca çağıran komut listesinden devralır.

Tanımlayıcı yığınları ayarlandığında (ID3D12GraphicsCommandList::SetDescriptorHeapskullanılarak), kullanılan tüm yığınlar tek bir çağrıda ayarlanır (ve daha önce ayarlanan tüm yığınlar çağrı tarafından ayarlanmamıştır). Çağrıda yukarıda listelenen her türden en fazla bir yığın ayarlanabilir.

Tanımlayıcı yığınlarını doldurmak

Bir uygulama bir tanımlayıcı yığını oluşturduktan sonra cihazdaki yöntemleri kullanarak doğrudan yığına tanımlayıcılar oluşturabilir veya tanımlayıcıları bir yerden diğerine kopyalayabilir.

Tanımlayıcı yığın belleğinin ilk içeriği tanımlanmamış olduğundan GPU veya sürücüden işleme için başlatılmamış belleğe başvurmasını istemek cihaz sıfırlama gibi tanımsız sonuçlara neden olabilir.

Uygulama bir tanımlayıcı yığınını CPU görünür olacak şekilde yapılandırırsa, CPU yığında tanımlayıcılar oluşturmak ve bir yerden bir yere (yığınlar arasında dahil) doğrudan ve serbest iş parçacıklı bir biçimde kopyalamak için yöntemler çağırabilir. SHADER_VISIBLE olarak yapılandırılmışsa yığın, CPU tarafından okunamaz.

Tanımlayıcı Yığınları