Megosztás a következőn keresztül:


Predikáció

A predikáció egy olyan funkció, amely lehetővé teszi, hogy a GPU ne a CPU határozza meg, hogy ne rajzoljon, másoljon vagy küldjön el objektumot.

Áttekintés

A predikáció tipikus használata az elzáródás; ha egy határolókeret van rajzolva, és el van takarva, nyilvánvalóan nincs értelme magát az objektumot rajzolni. Ebben az esetben az objektum rajza "predikálható", ami lehetővé teszi a GPU tényleges rendereléséből való eltávolítását.

Ez elsőre redundánsnak tűnhet a standard mélységi teszt és a korai mélységi átlépés felett. A predikáció azonban képes eltávolítani magát a rajzparancsállapot többletterhelését, valamint a raszterizálást. Míg a korai mélységi átengedés eltávolítja a szükségtelen képpontokat, továbbra is végrehajthatja a csúcsokat, a burkolatot, a tartományt és a geometria-árnyékolókat, és meghívhatja a rögzített funkciójú bemeneti szerelvényeket, a tesselatort és a raszterizátort. Ha egy egyszerű határolókeretet vagy hasonló határoló kötetet rajzol – amely a valós modellnél egyszerűbben feldolgozható és raszterizálható –, elkerülheti a szükségtelen raszterizálást és feldolgozást.

A Direct3D 11-től eltérően a predikáció leválasztva van a lekérdezésekről, és a Direct3D 12-ben ki van bontva, hogy az alkalmazás az alkalmazás fejlesztője által esetleg eldöntendő indokok alapján predikálja az objektumokat (nem csak az elzárkózást).

SetPredication

A predikáció a pufferen belüli 64 bites érték alapján állítható be (lásd D3D12_PREDICATION_OP).

Amikor a GPU végrehajt egy SetPredication parancsot, az illeszti az értéket a pufferbe. A pufferben lévő adatok jövőbeli változásai visszamenőlegesen nem befolyásolják a predikációs állapotot.

Ha a puffer bemeneti paramétere NULL, akkor a predikáció le van tiltva.

A predikációs tippek nem szerepelnek a Direct3D 12 API-ban; és a predikáció engedélyezve van a közvetlen, számítási és másolási parancslistákon. A forráspuffer bármilyen halomtípusban (alapértelmezett, feltöltés, visszaolvasás, egyéni) lehet.

Az alapvető futtatókörnyezet a következőket ellenőrzi:

  • AlignedBufferOffset 8 bájt többszöröse
  • Az erőforrás puffer
  • A művelet az enumerálás érvényes tagja
  • SetPredication nem hívható meg csomagon belülről
  • A parancslista típusa támogatja a predikációt
  • Az eltolás nem haladja meg a puffer méretét

A hibakeresési réteg hibát ad ki, ha a forráspuffer nincs a D3D12_RESOURCE_STATE_PREDICATION (amely megegyezik D3D12_RESOURCE_STATE_INDIRECT_ARGUMENTés egyszerűen alias) állapotban.

A predikálható műveletek a következők:

ExecuteBundle nincs megadva. Ehelyett a fenti lista egyes műveleteit, amelyek a csomag oldalán találhatók, előre vannak dikálva.

Az ID3D12GraphicsCommandList metódusok ResolveQueryData, BeginQuery és EndQuery nincsenek predikálva.

számlálók és lekérdezések

teljesítménymérési

Predication-lekérdezések – útmutató