A DirectX 12 támogatásának demisztifikálása Windows 10 rendszerben: Amit az AMD, az Intel és az Nvidia tesz, és mit nem szállít

DirectX 12 logó

Most, hogy a Windows 10 végre szállít, a DirectX-kompatibilitás kérdése a marketing pontoktól a felhasználók számára kézzelfogható kérdéssé válik. Az AMD és az Nvidia több mint egy éve hirdetik, hogy a különböző idősebb GPU-családok az induláskor támogatják a DirectX 12-et. A közelmúltban azonban némi zűrzavar támadt arról, hogy az Intel, az AMD és az Nvidia milyen szintű támogatást kínál az új API-hoz, és mely termékek futtatják az erre támaszkodó közelgő játékokat. Úgy tűnik, hogy a jelenlegi zavart az AMD Robert Hallock észrevételei okozták, aki elismerte, hogy a különféle AMD GCN osztályú GPU-k a DirectX 12 különböző funkciószintjeit támogatják. Ez olyan állításokba keveredett, amelyek szerint az AMD nem támogatja a „teljes” DirectX 12-t A valóságban az Intel, az Nvidia és az AMD mindegyike támogatja a DirectX 12-et különböző funkciószinteken, és a piacon jelenleg egyetlen GPU sem támogatja az összes opcionális DirectX 12 képességet.

A DirectX szolgáltatásszintjei és a pontfrissítések nem ugyanazok

Az első dolog, amit meg kell érteni, hogy a DirectX funkciószintek nem ugyanazok, mint a DirectX pontfrissítések. A pontfrissítés (DirectX 10.1, DirectX 11.1 / 11.2) a szabványosított képességek további halmaza, amely lehetővé teszi a fejlesztők számára, hogy bizonyos feladatokat hatékonyabban hajtsanak végre, vagy speciális képességeket kínáljanak. A DirectX 10.1 például új szabványokat vezetett be a vizuális minőségre, új árnyékoló utasításokat és a kocka térkép tömbök támogatását. Nem volt elég jelentős frissítés ahhoz, hogy körülhatárolhassa a DirectX egy teljesen új verzióját, de elég nagy lépés volt ahhoz, hogy saját kiterjesztését indokolja.

A DirectX szolgáltatás szintje ezzel szemben meghatározza a GPU által nyújtott támogatás szintjét miközben továbbra is támogatja az alapul szolgáló specifikációt. Ezt a képességet először a DirectX 11-ben vezették be. A Microsoft meghatározza a szolgáltatás szintjétmint „a GPU funkcionalitásának jól meghatározott halmaza. Például a 9_1 funkciószint a Microsoft Direct3D 9 alkalmazásban megvalósított funkcionalitást valósítja meg, amely a ps_2_x és a vs_2_x árnyékoló modellek képességeit tárja fel, míg a 11_0 funkciószint a Direct3D 11-ben megvalósított funkciókat valósítja meg. '



Az alábbi ábra részleges példa a DirectX 11 szolgáltatásszintjeire, csak a lényeg szemléltetésére:

DX11-FeatureLevels

A funkciószintű funkció célja, hogy lehetővé tegye a fejlesztők számára, hogy egyetlen API-t célozzanak meg, ahelyett, hogy különálló kódalapokat fejlesztenének párhuzamosan, annak biztosítása érdekében, hogy a játék zökkenőmentesen fusson több GPU hardver generáción, ahelyett, hogy külön kódot írna a DX12, DX11, DX10, stb. A 9_3 funkciószintű DirectX 11 GPU nem tudta varázsütésre végrehajtani a DirectX 11 effektusokat, de igen tudott futtatni a játékokat DirectX 9 módban anélkül, hogy a fejlesztőnek teljesen külön motor implementációt kellene írnia annak lehetővé tételéhez. Így tudták a Civilization V-hez hasonló játékok DX11 vagy DX9 módban futni egy közös kódbázisról.

AMD, Intel és Nvidia: Ki mit támogat?

A GPU-k mely tulajdonságait támogató GPU-k azonosításának egyik problémája a DirectX API támogatás és a szolgáltatásszintű támogatás összetévesztése. Ez az Nvidia támogatási oldala például részletesen bemutatja, hogyan támogathatják a Fermi és a Kepler GPU-k a DirectX 11.1-et a 11_0 szolgáltatás szinten. Az ok, hogy a Kepler és a Fermi nem támogatja a DirectX 11.1-et a 11_1 funkciószintnél, az az oka, hogy a 11_1-hez szükséges képességek közül kettő nem érhető el a GPU-n. Az Nvidia némi fájdalommal rámutat arra, hogy a 11.1 DirectX frissítés valójában támogatást nyújt a Fermi által 2010-ben bevezetett egyes képességekhez.

A következő Microsoft bemutatja, hogy mely hardveres iterációk támogatják, hogy mely DirectX 12 szolgáltatásszinteket támogatják:

DX12FeatureLEvels

Nem világos, hogy a Microsoft miért sorolja a Keplert a DirectX 11_1 támogatására, míg az Nvidia az alábbiakban a DirectX 11_0-ra korlátozva mutatja be, de akárhogy is, a lényeg: a DirectX 12 támogatása árnyalatú, és minden gyártó különféle kártyacsaládjai között változó. Az AMD GCN 1.0 chipjei tartalmazzák a Zöld-foki-szigetet, Pitcairnt és Tahitit, valamint támogatják a 11_1 funkciószintet, míg Bonaire, Hawaii, Tonga (esetleg Oland) és Fidzsi-szigetek mind támogatni fogja a 12_0 funkciószintet. Az Nvidia különféle 4xx, 5xx, 6xx és 7xx családjai mind támogatják a DirectX 12-et 11_0 vagy 11_1 funkció szinten, a GTX 750 Ti pedig FL 12_0 támogatást kínál. Ne feledje, hogy az Oland egy furcsa típusú hibrid chip - lehet, hogy rendelkezik DirectX 12_0 szolgáltatással, de hiányzik belőle olyan funkciók, mint a TrueAudio és esetleg az XDMA támogatás.

A kérdést tovább összezavarják azok az állítások, amelyek szerint a Maxwell az egyetlen GPU a piacon, amely támogatja a „teljes” DirectX 12-et. Bár igaz, hogy a Maxwell az egyetlen GPU, amely támogatja a DirectX 12_1-et, az AMD az egyetlen vállalat, amely teljes 3. szintű erőforrás-kötés és aszinkron árnyékolók a szimultán grafikához és számításhoz. Ez nem azt jelenti, hogy az AMD vagy az Nvidia hazudik - ez azt jelenti, hogy a különféle kártyák bizonyos funkcióit és képességeit tökéletlenül rögzítik a funkciószintek, és hogy az egyik vagy másik GPU „teljes” DX12 hívása elmulasztja ezt a különbséget. Az Intel például a 11_1 funkciószintű ROV-t kínálja - amihez sem az AMD, sem az Nvidia nem képes.

Miért néz ki a DirectX 12 úgy, ahogy kinéz

A játékosok egyik általános problémája, hogy ha kártyáik csak a DirectX 12 11_1 vagy 12_0 formátumot támogatják, akkor kihagyják a DirectX 12 kínálatát. Fontos megjegyezni, hogy a DirectX 12 többszálú és multi-GPU képességei, amelyeket a mai napig megtekintettünk (és a Mantle-n keresztül bemutattunk), továbbra is teljesen elérhetőek minden funkciószintnél. A Kepler és a régebbi GCN GPU-k teljesen kihasználják a DirectX 12 által kínált új képességeket. Ennek ellenére vannak olyan speciális képességek, amelyeket a DirectX 12_0 és a 12_1 programokban sütnek, amelyekhez a régebbi kártyákkal rendelkező játékosok nem férhetnek hozzá - de mint a fenti diagramok mutatják, ez nem az AMD, az Nvidia vagy az Intel egyedülálló problémája. Egyetlen jelenlegi Intel IGP sem támogatja a DirectX 12_0-t, míg csak az Nvidia Maxwell hardvere támogatja a 12_0 vagy a 12_1 szoftvert.

A GTX 980 Ti legújabb dobja azt jelenti, hogy a Kepler a 11_0, és nem a 11_1 szolgáltatási szintre korlátozódik.

A GTX 980 Ti legújabb dobja azt jelenti, hogy a Kepler a 11_0, és nem a 11_1 szolgáltatási szintre korlátozódik.

Annak megértéséhez, hogy a Microsoft miért építette a DirectX 12-et úgy, ahogyan tette, fontolja meg az alternatívát. A DirectX 11 előtt minden új DirectX verziót új hardverkövetelményekhez kötöttek. Időnként előfordulhat, hogy az AMD vagy az Nvidia egy sajátos funkciót implementál a hardverben, mielőtt az egy jövőbeli DirectX szabvány részévé vált volna, de a grafikus kártyákat rögzítették az indításkor támogatott DirectX API-khoz. A funkciószintek által biztosított rugalmasság nélkül az egyetlen játékos teheti használja ki a DX12 előnyeit azok lennének, akik GCN 1.1, 1.2 vagy Maxwell GPU-t vásároltak. Mindenki más, beleértve a valamivel régebbi kártyákkal rendelkező emberek millióit is, kimaradt volna a hidegből.

A funkciószintek hozzáadása és a DX12 részeként történő megvalósítása azt jelenti, hogy emberek milliói jelentős előnyöket fognak látni az új API itt és most történő bevezetéséből. Nem, a régebbi GPU-k nem biztos, hogy minden egyes DX12 szolgáltatást támogatnak, de végül senkinek sem kell választania a DX11-ben remekül kinéző játék vagy a félgörcsös DX12 verzió között a grafikus kártya megvalósítási problémái miatt. Amikor az AMD, az Nvidia és az Intel a DirectX 12 támogatásáról beszélnek régebbi hardvereken, a legfontosabb funkciókról beszélnek - alacsonyabb általános API-król, jobb CPU-kihasználtságról és multi-GPU funkcionalitás. A tényleges funkciószintek, amelyek meghatározzák, hogy a 12_1 különbözik a 11_0-tól, érdekesek és hasznosak bizonyos esetekben, de nem azok a képességek alakítják majd igazán, hogy a játékosok hogyan tapasztalják meg a játékot az API-val.

Ahogy nagyon kevés olyan játék van, amelyhez DirectX 11.2 vagy 11.1 szükséges (offhand, egyikre sem tudok gondolni), nagyon kevés olyan DirectX 12 cím is lesz, amely a DirectX 12 FL 12_0 vagy 12_1 parancsot írja elő. Nem mondom, hogy ilyen játékok soha nem fognak megtörténni, de ez évek múlva lesz, jóval azután, hogy a jelenlegi GPU-kat lecserélték a modern hardverekre. Ha rendelkezik GCN 1.0, Fermi vagy Kepler kártyával, megkapja a legfontosabb DirectX 12 funkciókat. Ezért hozta létre a Microsoft olyan funkciószinteket, amelyeket a régebbi GPU-k használhattak - ha a Fermi, a Kepler és a régebbi GCN 1.0 kártyák nem tudnák kihasználni a DirectX 12 alapvető előnyeit, akkor a Microsoft eleve nem kvalifikálta volna őket a használatukra. Az API-t célirányosan úgy tervezték, hogy lehetővé tegye a visszamenőleges kompatibilitást annak érdekében, hogy a fejlesztők hajlandók legyenek megcélozni.

Copyright © Minden Jog Fenntartva | 2007es.com