Aracılığıyla paylaş


Ön koşul

Ön koşul, CPU yerine GPU'ya nesne çizmemeyi, kopyalamamayı veya göndermemeyi belirlemeyi sağlayan bir özelliktir.

Genel bakış

Tipik prediksiyon kullanımı, tıkanıklık iledir; sınırlayıcı bir kutu çizilirse ve tıkanırsa, nesnenin kendisini çizmenin bir anlamı olmadığı açıktır. Bu durumda, nesnenin çizimi "önceden oluşturulmuş" olabilir ve gpu tarafından gerçek işlemeden kaldırılmasını sağlar.

İlk başta, standart derinlik testinin yanı sıra erken derinlik geçişinin üzerinde ve üzerinde yedekli görünebilir. Ancak ön koşul, çizim komut durumunun ek yükünü ve rasterleştirmeyi kaldırabilir. Erken derinlik geçişi gereksiz pikselleri kaldırır, ancak yine de köşe, gövde, etki alanı ve geometri gölgelendiricilerini yürütebilir ve sabit işlevli giriş derleyicisi, tesselator ve rasterizer'ı çağırabilir. Basit bir sınırlayıcı kutu veya benzer bir sınırlayıcı birim çizerek (gerçek modelden daha kolay işlenebilir ve rasterleştirilebilir), gereksiz tarama ve işlemeden kaçınırsınız.

Direct3D 11'den farklı olarak, ön koşul sorgulardan ayrıştırılır ve direct3D 12'de uygulamanın uygulama geliştiricisinin karar verebileceği herhangi bir nedene bağlı olarak nesneleri koşullandırabilmesi için genişletilir (yalnızca gizliliğe değil).

SetPredication

Ön koşul, bir arabellek içindeki 64 bit değerine göre ayarlanabilir (D3D12_PREDICATION_OPbakın).

GPU bir SetPredication komutu yürüttüğünde arabelleğe değeri tutturur. Arabellekteki verilerde gelecekteki değişiklikler, geçmişe dönük olarak koşul durumunu etkilemez.

Arabellek giriş parametresi NULL ise, ön koşul devre dışı bırakılır.

Direct3D 12 API'sinde koşul ipuçları yoktur; ve doğrudan, işlem ve kopyalama komut listelerinde ön koşula izin verilir. Kaynak arabellek herhangi bir yığın türünde olabilir (varsayılan, karşıya yükleme, geri okuma, özel).

Çekirdek çalışma zamanı aşağıdakileri doğrular:

  • AlignedBufferOffset 8 bayt'ın katıdır
  • Kaynak bir arabellektir
  • İşlem, numaralandırmanın geçerli bir üyesidir
  • SetPredication bir paket içinden çağrılamaz
  • Komut listesi türü, koşulu destekler
  • Uzaklık arabellek boyutunu aşmıyor

Kaynak arabellek D3D12_RESOURCE_STATE_PREDICATION (D3D12_RESOURCE_STATE_INDIRECT_ARGUMENTve yalnızca diğer adla aynıdır) değilse hata ayıklama katmanı hata oluşturur.

Ön koşullanabilen işlem kümesi şunlardır:

  • DrawInstanced
  • DrawIndexedInstanced
  • Dağıtma
  • CopyTextureRegion
  • CopyBufferRegion
  • CopyResource
  • CopyTiles
  • ResolveSubresource
  • ClearDepthStencilView
  • ClearRenderTargetView
  • ClearUnorderedAccessViewUint
  • ClearUnorderedAccessViewFloat
  • ExecuteIndirect

ExecuteBundle kendisi için geçerli değildir. Bunun yerine, yukarıdaki listeden gelen ve paketin yanında yer alan tek tek işlemler önceden sıralanır.

ResolveQueryData, BeginQuery ve EndQueryID3D12GraphicsCommandList yöntemleri önceden belirtilmemiştir.

sayaçları ve sorguları

Performans Ölçümü

Predication sorguları