Sdílet prostřednictvím


Tvrzení

Predikace je funkce, která gpu namísto procesoru umožňuje určit, že nebude kreslit, kopírovat nebo odesílat objekt.

Přehled

Typické použití predikace je s okluzí; pokud je ohraničující rámeček nakreslený a je odlehlý, není zřejmě žádný bod nakreslení samotného objektu. V této situaci může být výkres objektu "predikován", což umožňuje jeho odebrání ze skutečného vykreslování GPU.

Zpočátku to může vypadat jako nadbytečné nad standardní hloubkovou zkouškou a předčasné propustné hloubky. Predikace ale může odebrat režii samotného stavu příkazu kreslení a rastrování. I když časná hloubka odstraní nepotřebné pixely, může stále spouštět vrcholy, trupu, domény a geometrické shadery a vyvolat vstupní assembler s pevnou funkcí, tesselátor a rasterizátor. Nakreslením jednoduchého ohraničujícího rámečku nebo podobného ohraničujícího svazku , který je jednodušší zpracovat a rastrovat než skutečný model, se vyhnete zbytečné rasterizaci a zpracování.

Na rozdíl od Direct3D 11 je predikace oddělená od dotazů a je rozšířena v Direct3D 12, aby mohla aplikace predikovat objekty na základě jakéhokoli důvodu, o které se vývojář aplikace může rozhodnout (nejen oclusion).

Nastavenípredikace

Predikace se dá nastavit na základě hodnoty 64bitových bitů v rámci vyrovnávací paměti (viz D3D12_PREDICATION_OP).

Když GPU spustí SetPredication příkaz přichytí hodnotu do vyrovnávací paměti. Budoucí změny dat v vyrovnávací paměti nemají zpětně vliv na stav predikace.

Pokud je vyrovnávací paměť vstupního parametru NULL, je predikace zakázaná.

Predikační rady nejsou v rozhraní API Direct3D 12 přítomny; a predikace je povolená pro přímé, výpočetní a kopírovat seznamy příkazů. Zdrojová vyrovnávací paměť může být v libovolném typu haldy (výchozí, nahrání, zpětné čtení, vlastní).

Základní modul runtime ověří následující:

  • AlignedBufferOffset je násobkem 8 bajtů.
  • Prostředek je vyrovnávací paměť.
  • Operace je platným členem výčtu.
  • SetPredication nelze volat z balíčku.
  • Typ seznamu příkazů podporuje predikaci.
  • Posun nepřekračuje velikost vyrovnávací paměti.

Ladicí vrstva vydá chybu, pokud zdrojová vyrovnávací paměť není v D3D12_RESOURCE_STATE_PREDICATION (což je stejné jako D3D12_RESOURCE_STATE_INDIRECT_ARGUMENTa jednoduše alias).

Sada operací, které lze predikovat, jsou:

ExecuteBundle není predikovaný sám. Místo toho jsou jednotlivé operace ze seznamu výše, které jsou obsaženy na straně svazku, predikovány.

Metody ID3D12GraphicsCommandList ResolveQueryData, BeginQuery aEndQuery nejsou predikované.

Čítače a dotazy

měření výkonu

průchozí dotazů predikace