Viditelné popisovače shaderu – haldy
Viditelné haldy popisovače shaderu jsou haldy popisovače, na které lze odkazovat shadery prostřednictvím tabulek popisovače.
- přehled
- Příklad
- související témata
Přehled
Haldy popisovače, na které lze odkazovat shadery prostřednictvím tabulek popisovačů, přicházejí v několika variantách: Jeden typ haldy, D3D12_SRV_UAV_CBV_DESCRIPTOR_HEAP, může obsahovat zobrazení prostředků Shader, neuspořádaná zobrazení přístupu a zobrazení konstantní vyrovnávací paměti, všechny intermixované. Jakékoli dané umístění v haldě může být libovolný z uvedených typů popisovačů. Další typ haldy, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, ukládá pouze vzorkovníky, což odráží skutečnost, že pro většinu hardwaru se vzorkovníky spravují odděleně od SRV, UAV, CBV.
Haldy popisovače těchto typů mohou být požadovány, aby byly při vytváření haldy viditelné nebo ne (druhá – non shader viditelná – může být užitečná pro přípravné deskriptory na procesoru). Pokud se požaduje, aby byl shader viditelný, může mít každý z výše uvedených typů haldy omezení velikosti hardwaru pro přidělení haldy jednotlivých popisovačů.
Aplikace mohou vytvořit libovolný počet hald popisovačů a nestínovat viditelné popisovače nejsou omezeny velikostí. Pokud je viditelná halda popisovače shaderu vytvořená aplikací menší než limit velikosti hardwaru, ovladač se může rozhodnout, že podlokuje haldu popisovače z větší podkladové haldy deskriptoru, aby se několik hald popisovače rozhraní API vešly do jedné haldy popisovače hardwaru. Důvodem může být to, že u některého hardwaru se přepínání mezi haldou popisovače hardwaru během provádění vyžaduje čekání GPU na nečinnost (aby se zajistilo, že se dokončí odkazy GPU na haldu dříve deskriptoru). Pokud se všechny haldy popisovače, které aplikace vytvoří, zapadají do maximální kapacity příslušné haldy hardwaru, nedojde k žádným takovým čekáním při přepínání hald rozhraní API při vykreslování. Aplikace však musí umožňovat možnost, že přepnutí aktuální haldy deskriptoru může mít za následek čekání na nečinnost.
Aby se zabránilo ovlivnění tímto možným čekáním na nečinnost na přepínači haldy deskriptoru, můžou aplikace využít výhody přerušení při vykreslování, které by způsobily nečinnost GPU z jiných důvodů, protože čas na přepínání haldy popisovače, protože čekání na nečinnost se stejně děje.
Mechanismus a sémantika pro identifikaci haldy popisovače pro shadery během záznamu seznamu příkazů nebo svazku jsou popsány v referenčních informacích k rozhraní API.
Příklad
Následující obrázek ukazuje dvě haldy popisovače odkazující na dvě samostatné 2D textury uložené ve dvou slotech velké výchozí haldy. K haldě popisovače, která je viditelná shaderem, má přístup grafický kanál (včetně shaderů), a proto je pro kanál k dispozici 2D textura.
Poznámka
U hardwaru GPU často dochází k omezení množství místní paměti GPU zapisovatelné procesorem procesoru (označované jako paměť v kombinovaném zápisu) pro haldy deskriptoru. Tento limit je obvykle přibližně 96 MB pro všechny procesy. Jeden milion haldy popisovače člena s 32bajtovými popisovači by například použil 32 MB. Ovladač se v případě potřeby vrátí zpět do systémové paměti, i když je vhodné nevytvářejte velký počet velkých hald popisovače.
Související témata