Jak je to s DirectX 12 na Radeonech? (Trochu jinak :-)
Těžko říct, odkud se některé informace vzaly, v podstatě se objevily ve článcích o podpoře DirectX 12 / 12.1 napsaných podle tabulky ze slajdu Nvidie. Kdo údaje o Radeonech připojil jako první, už asi nepůjde vypátrat - jisté jsou jen dvě věci: (1) mnohé weby je převzaly (2) nejde (z valné části) o informace od AMD. Proto nebude od věci se k tématu vrátit a uvést ho trochu na pravou míru.
Nejdříve názvosloví. S novými verzemi DirectX to není úplně jednoduché, podporu technologií lze hodnotit v několika ohledech, které jsou na sobě v některých případech závislé, v jiných zcela nezávislé:
- DirectX - např. DirectX11, DirectX 11.2, DirectX 12…
- feature_level - např. feature_level 11_0, feature level 11_1 apod.
- cap bits - možnost využití jednotlivých technologií bez ohledu na feature_level
- Tiers - systém verzí (např. Tier 1, Tier 2, Tier 3) jednotlivých podporovaných technologií
DirectX
Vezměme to postupně: Pokud grafická karta podporuje DirectX 12, znamená to, že je hardwarově i softwarově (ovladačem) vybavena, aby byla schopná použít efektivnější softwarové rozhraní DirectX 12. To jí umožňuje snížit nároky na procesorový výkon, resp. dosahovat s daným procesorem vyššího počtu draw calls a tím i vyšších FPS. Mluvím o oněch výhodách, které jsou spojované s novou generací API (DX12, Mantle, Metal, Vulkan) a o nichž se toho napsalo opravdu hodně. Tato výhoda je využita, pokud karta podporuje DirectX 12 a to bez ohledu na verzi feature_level(u), bez ohledu na podporované technologie dostupné přes cap bits nebo verze jednotlivých technologií (Tiers).
feature_level
feature_level je jakýsi soubor technologií, který je prezentovaný jako celek. DirectX podporuje třeba technologie A, B, C, D, E, F, G a termínem feature_level rozumíme soubor některých technologií. Příklad: nadefinujme si třeba feature_level 99_9 jako soubor technologií A, B, C, D, E a F. Pokud grafická karta (hardware i ovladač) podporuje soubor těchto šesti technologií, podporuje feature_level 99_9. Pokud by podporovala např. A, B, C, D, E a G (namísto F), pak feature_level 99_9 nepodporuje.
Cap bits
Co se stane v případě, že hra vyžaduje technologie A, B, C, D, E, ale grafický čip nepodporuje feature_level 99_9? Nemusí se stát nic, bez ohledu na nepodporu feature_levelu jako celku je možné k jednotlivým podporovaným technologiím přistupovat a využívat je. Jde o systém cap bits, který byl v DirectX používán po léta, (tuším) s DirectX 10 zrušen a (tuším) s DirectX 11.1 slavnostně obnoven. Díky němu nemusí grafická karta podporovat kompletní celky technologií, aby k nim přes DirectX bylo možné přistupovat - je možné využívat i jednotlivé (často tzv. volitelné) technologie. S novými verzemi DirectX proto nedochází na fall-back na nejnižší plně podporovaný feature-level jako u DirectX 10 / 11, ale GPU+ ovladač+systém+hra podporující DirectX 12 vždy poběží pod DirectX 12.
Tiers
Nakonec je tu systém Tiers. Například technologie Resource Binding se postupně vyvíjela a existuje tak Resource Binding Tier 1, Resource Binding Tier 2 a Resource Binding Tier 3. Podpora jednotlivých verzí různých technologií může, ale také nemusí být vyžadována v rámci konkrétního feature_levelu.
Přehled technologií / parametrů vyžadovaných v rámci Resource Binding (Intel / Microsoft)
Například: feature_level 12_1 vyžaduje podporu pro Resource Binding Tier 2. Může však existovat (a existuje) grafické jádro, které podporuje feature_level 11_1 a zároveň umí pokročilejší Resource Binding Tier 3.
Úroveň podpory DirectX lze tedy hodnotit ze čtyř hledisek a není proto možné na základě zhodnocení jediného hlediska vynášet objektivní závěry. Dále je třeba zdůraznit, že feature_level ne vždy koresponduje s příslušnou verzí DirectX. Kupříkladu DirectX 11.2, která přinesla některé nové technologie, nemá přiřazený žádný feature_level. V praxi to nic neznamená, v takových případech jsou technologie buďto dostupné automaticky (omezení či odstranění některých limitů) nebo přes cap bits.
Přejděme ke konkrétnímu hardwaru. Všechny Radeony postavené na architektuře GCN (tzn. prakticky všechny vydané v posledních 3+ letech) podporují DirectX 12. Umožňují efektivnější využití procesorových prostředků (bez ohledu na další dílčí požadavky DX12 hry a bez ohledu na další podporované technologie). GCN Radeony podporují všechny nebo většinu technologií, které vyžaduje feature_level 12_0. Vysvětleme si to v tabulce:
GCN 1. gen („1.0“) | GCN 2. gen („1.1“) | GCN 3. gen („1.2“) | |
řady | HD 7700 HD 7800 HD 7900 R9 280 | HD 7790, R7 260 R7 240 / 250-no-X(?) | R9 285 Carrizo |
DirectX | 12 | 12 | 12 |
feature_level | 11_1 | 12 | 12 |
Resource binding | Tier 3 (+) | Tier 3 (+) | Tier 3 (+) |
Tiled resources | Tier 1 | Tier 2 | Tier 2 |
Typed UAV loads | (+) | ||
Stencil reference in PS | (+) | (+) | (+) |
Logical blend ops | |||
Max. sample count | 16 | 16 | 16 |
UAVs at every stage | |||
UAV slots | full heap (+) | full heap (+) | full heap (+) |
Double Precision | (+) | (+) | (+) |
Minimum FPP | 16bit (+) |
Tabulka uvádí technologie podporované na jednotlivých řadách grafických karet. Pokud budete pozorně porovnávat první a druhý sloupec, najdete jediný rozdíl. Tím je podpora Tiled resources Tier 1 v prvním sloupci (oproti Tier 2 ve druhém), což je zároveň jediným důvodem, pro který první generace GCN nepodporuje feature_level 12_0, ale „jen“ feature_level 11_1. Ostatní technologie z feature_level 12_0 jsou ale standardně dostupné, mnohé i ve vyšší než vyžadované verzi. Takové jsou označené symbolem (+).
Nabízí se otázka, zda bude absence Tiled resources Tier 2 pro první generaci GCN grafik nějak omezující. V rámci její životnosti pravděpodobně nijak. Důvodem je fakt, že ani architektura Kepler ani první generace Maxwellu Tiled resources Tier 2 neumějí, takže jej pravděpodobně vývojáři nebudou v dohledné době využívat (hra by na většině aktuálního hardwaru nefungovala).
APU a Radeony R7 265, R9 270 a R9 270X
Pak tu je ještě otázka podpory feature_levelů u APU a karet Radeon R7 265, Radeon R9 270 a Radeon R9 270X. U APU to je jednoduché. Bez ohledu na informace, které kolují internetem, nevydala AMD jediné APU, které by patřilo do první generace GCN - všechny moderní modely mají integrovanou grafiku GCN druhé generace (GCN „1.1“), která podporuje DirectX 12 feature_level 12_0.
Co se týká Radeonů s jádrem Curacao, tzn. R7 265 / R9 270 / R9 270X (ale i grafik s malým jádrem Mars / Oland) je situace složitější. AMD sama verzi GCN u těchto čipů nespecifikovala, takže údaje uváděné v recenzích a testech (GCN první generace alias GCN 1.0) jsou jen domněnkou. Faktem je, že AMD má na webu informace indikující, že jde ve skutečnosti o druhou generaci GCN (alias GCN 1.1). Výrobce totiž uvádí, že OpenCL 2.0 podporují pouze grafické čipy druhé generace GCN (GCN 1.1) a novější, přičemž v konkrétním výčtu OpenCL 2.0-kompatibilních modelů jsou uvedeny Radeony R9 270/270X s GPU Curacao, ale původní Radeony HD 7800 s GPU Pitcairn v seznamu nejsou. Je tudíž pravděpodobné, že se GPU Pitcairn a Curacao liší nejen v řadiči GDDR5 (Curacao nese verzi podporující novější / rychlejší paměťové čipy), ale že došlo též k aktualizaci GCN bloků o jednu generaci. Tato informace ale zatím čeká na potvrzení.
V kostce: Všechny grafické karty s architekturou GCN podporují DirectX 12 a jeho výhody. Všechna GCN APU podporují DirectX 12 feature_level 12_0. Samostatné grafické karty z druhé i třetí generace GCN podporují DirectX 12 feature_level 12_0. Grafická jádra z první generace GCN (HD 7700, 7800, 7900 a R9 280) podporují DirectX 12 feature_level 11_1. Z feature_level 12.0 jim schází technologie Tiled resources Tier 2. Její podporu ale nenabízejí ani modely GeForce, které těmto Radeonům konkurovaly. Uživatelská základna majitelů grafických karet podporujících Tiled resources Tier 2 (nebo lepších) není příliš velká, a tak se asi v dohledné době nedočkáme jejího masového využití, které by penalizovalo grafické čipy z generace Kepler, Maxwell 1 a GCN 1(.0).
Pokud vás téma zajímá podrobněji, doporučuji nahlédnout do této kapitoly na anglické Wikipedii, kterou nedávno aktualizoval člen Beyond3D fóra DmitriKo. V tabulkách najdete výčty technologií z jednotlivých feature_levelů i technologie podporované jednotlivými generacemi grafických karet AMD, Nvidie a Intelu. Mějte však na paměti, že zařazení modelů GPU postavených na čipech Curacao (R7 265 / R9 270 / R9 270X) a Mars / Oland (R7 240, R7 250 bez X) může být chybné a tyto mohou ve skutečnosti spadat o řadu výš.