Diit.cz - Novinky a informace o hardware, software a internetu

Jak je to s DirectX 12 na Radeonech? (Trochu jinak :-)

V posledních dnech se objevila řada informací ohledně podpory DirectX 12 na nových GeForce. K nim mnohé zahraniční weby připojily i informace o Radeonech. Ty však k pravdě mají daleko…

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“) 
řadyHD 7700
HD 7800
HD 7900
R9 280

HD 7790, R7 260

R7 240 / 250-no-X(?)
R7 265(?)
R7 270(?)
R9 290, R9 295
Kabini, Temash, Beema,
Mullins, Kaveri, Carrizo-L

R9 285
Carrizo
DirectX12 12 12 
feature_level11_112 12 
Resource bindingTier 3 (+) Tier 3 (+)Tier 3 (+)
Tiled resourcesTier 1Tier 2Tier 2
Typed UAV loads (+)
Stencil reference in PS (+) (+) (+)
Logical blend ops
Max. sample count161616
UAVs at every stage
UAV slotsfull heap (+)full heap (+)full heap (+)
Double Precision (+) (+) (+)
Minimum FPP16bit (+)

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ýš.

Tagy: 

Diskuse ke článku Jak je to s DirectX 12 na Radeonech? (Trochu jinak :-)

Pátek, 6 Listopad 2015 - 23:58 | Plnovous | xixixi :)
Úterý, 9 Červen 2015 - 09:40 | Michal Hak | to neni smajlik. to je dvojtecka a spojovnik. Na...
Úterý, 9 Červen 2015 - 06:38 | TyNyT | Mně to naopak přijde jako velmi trefný nadpis,...
Pondělí, 8 Červen 2015 - 22:10 | Daniel de Sade | Je jen škoda, že se neumíš vyjadřovat bez...
Pondělí, 8 Červen 2015 - 20:35 | Daniel de Sade | Při čtení nadpisu jsem si nebyl jistý, jestli...
Pondělí, 8 Červen 2015 - 19:30 | Robokovich | No, reknu to strucne. Diky prevelice, tohle bylo...
Pondělí, 8 Červen 2015 - 17:48 | Jack Weber | Pěkně hutná polívčička. Kéž by se všechny...
Pondělí, 8 Červen 2015 - 17:46 | dajan | velmi pekne vyjasnenie situacie, hodina pravdy...
Pondělí, 8 Červen 2015 - 16:21 | Psycho Mantis | n1 je pěkné se dozvědět, jak to vlastně je a ne...

Zobrazit diskusi