Tvrzení
Predikace je funkce, která gpu namísto procesoru umožňuje určit, že nebude kreslit, kopírovat nebo odesílat objekt.
- přehled
- SetPredication
- související témata
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:
- DrawInstanced
- DrawIndexedInstanced
- dispatch
- CopyTextureRegion
- CopyBufferRegion
- CopyResource
- CopyTiles
- ResolveSubresource
- ClearDepthStencilView
- ClearRenderTargetView
- ClearUnorderedAccessViewUint
- ClearUnorderedAccessViewFloat
- executeIndirect
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é.
Související témata