Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Abu85

    HÁZIGAZDA

    válasz b. #2 üzenetére

    Ugyanaz a kettő, csak más a neve. Amiért érdemes az RDNA-hoz használt driveres fordítgatást bevezetését megfontolni, az az, hogy maga a mesh shading megváltoztatja a futószalagot. Ergo, ha erre írsz egy játékot, akkor minden picit is régebbi hardveren futtathatatlan lesz. Egyszerűen hiányozni fognak az alkalmazásból a vertex/geometry shaderek. Innen még több év mire ezt natívan támogatni fogják, mert előbb meg kell várni, amíg mindenhonnan eltűnnek a csak vertex/geometry futószalagot használó hardverek. Addig is a megfelelő hardverek működhetnének hatékonyabban, mert a vertex és a geometry shadereket is be lehet fordítani surface és primitive shaderbe, anélkül, hogy a programnak ezt az új modellt natívan támogatnia kellene. Ezt az AMD az RDNA óta csinálja, és számottevő előnyt jelent a korábbi technikai prezijük alapján.
    Ergo ilyen formában vagy több évig egy kihasználatlan hardverelem lesz a GPU-kban ez a rendszer, vagy csinálnak egy átmenetet driverből, hogy vertex/geometry shadereket jobb módokba lehessen a GPU-n hardveresen futtatni. Ettől még lehet használni a mesh shadert is natívan, csak annyira eltér maga a futószalagdizájn, hogy ha erre építed a játékot, akkor a potenciális vásárlóbázis 99%-át kizárod. Nem fog elindulni a hardvereiken.
    Az NV Turing esetében nem tudni, hogy ezt meg lehet-e egyszerűen oldani (valószínűleg lehet valamit tenni, csak le kell tesztelni), de a következő generációs GeForce-okon már teszten van egy ilyen működési mód, mert nyilván az NV is utánaszámolt, hogy mire kikopok a legacy futószalag, az legalább 5-6 év, addig azért jó lenne az új hardveres képességet bevezetni, ha natívan nem megy, akkor úgy ahogy az AMD csinálja: driverből.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

  • Abu85

    HÁZIGAZDA

    válasz b. #4 üzenetére

    Persze, hogy nem zárja ki. De kell hozzá a fordító, ami befordítja a régi futószalagra írt kódot az új hardveres módra. A Turing csak úgy támogatja jelenleg, hogy natívan kell megírnod a kódot. Mint írtam az új GeForce-nál van a gyártóknál olyan dokumentum, ami szerint az már támogatni fogja a driverből való átfordítást is, ahogy az AMD csinálja az RDNA-val. Ez a logikus lépés, mert tényleg kb. 5-6 év, mire egy játék natív mesh shadert fog használni. Ezt nem olyan egyszerű bedobni mint egy szimpla effektet, ez nem csak egy extra lépcső, itt a futószalag teljesen más. Az a kérdés, hogy a Turingra tudnak-e valamit driveresen mókolni, hogy arra is lehessen úgy fordítani a vertex/geometry shadert, hogy az végül a hardveren az új geometriai módon fusson. Ezt még nem csinálták meg, és nem is nagyon ismert maga a hardver, hogy az elméleti lehetőségre lehessen mondani valamit. Majd meglátjuk, elképzelhető, hogy az NV kitalál valamit, és végül meg tudják csinálják olyanra, amilyet az AMD mókol. És hangsúlyozom, ez nem zárja ki, hogy futhasson a natív kód, ilyen formában azt éred el, hogy a legacy kód jobb működési módban kerül végrehajtásra.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

  • Abu85

    HÁZIGAZDA

    válasz b. #6 üzenetére

    Bocsánat, arra nem biztos, hogy emlékszem. Az melyik is?

    Szerk.: [link] - erre gondolsz? Ennek igazából semmi köze a mesh shadinghez. Arról szól, hogy a HLSL-ben megírt SM6.5-ös kódokat már le lehet fordítani SPIR-V-re. Arra jó, hogy az RT shadert nem kell GLSL-ben megírni, vagy ebbe konvertálni, hanem egyszerűen jó a HLSL-ben írt kód, és Spiregg-gel generálhatsz belőle SPIR-V-t.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

  • Abu85

    HÁZIGAZDA

    válasz b. #10 üzenetére

    Ez nem fordító, hanem futószalag. Picit bővebben arról van szó itt, hogy a geometriai futószalagja az API-nak megváltozik. Van egy régi legacy futószalag, és egy új next-gen futószalag. Na most a legacy futószalaghoz neked vertex/geometry shader kódokra van szükséged. Ezeket lefordítod DXIL-re vagy SPIR-V-re (API-tól függőn), azaz valamilyen IR-re. Azokat szállítod az alkalmazással, és a drivernek a shader fordítója az IR-t lefordítja az adott hardver vISA-jára, amiből generálható az ISA kód. Na most, ha te mesh shadert akarsz támogatni, akkor mesh shadert kell írni. Ilyenkor ugyanaz játszódik le. A kódot szállítod valamilyen IR-ben, most éppen DXIL-ben, és a driver fordítója abból fordít vISA-t, majd generál egy ISA kódot.

    Na most a két futószalag egymással egyáltalán nem kompatibilis. Az AMD az RDNA-nál erre azt találta ki, hogy veszi az API-tól függő IR-re lefordított vertex/geometry shader kódokat, majd azokat ellenőrzi a driverben, és a kódoknak azt a részét, amivel sebességet lehet nyerni nem legacy futószalagra fordítja be, hanem átkonvertálja NGG kóddá, és onnan a fordító NGG módnak megfelelő vISA-t fordít, amiből lesz egy ISA kód generálva. Tehát effektíve legacy kódokkal célozzák a next-gen futószalagot. Így nekik nem szükséges megvárni a mesh shadert tartalmazó játékokat, mert a vertex/geometry shadereket is tudják surface/primitive lépcsőkbe fordítani, vagyis minden ma meglévő játékkal működtetni tudják az erre vonatkozó hardverelemeiket.

    Arra tértem ki a hírben, hogy mivel sok-sok év mire natív mesh shadert tartalmazó játék érkezik, a futószalagok inkompatibilitása miatt, így hasznos lehet a driverben azt csinálni, amit az AMD csinál, mert így a hardverbe épített részegységek nem maradnak porfogók.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

  • szmörlock007

    aktív tag

    válasz b. #4 üzenetére

    "Az igazi az ha hardveresen is és szoftveresen is támogatni tudod a mesh shadingot. Turingon pontosan így van AMD -n pedig PC-n jelenleg nincs ilyen hardver..."
    Úgy tudom, hogy a primitive shader az kb ugyanaz mint a mesh shader nvidiánál csak más néven nem? Az ugye még a Vegánál jött be. De lehet, hogy hirtelen most keverem valamivel.

    [ Szerkesztve ]

  • Abu85

    HÁZIGAZDA

    válasz b. #12 üzenetére

    Nem is lehet kompatibilis a két futószalag, ha teljesen mások a futószalaglépcsők.

    Marhára nem gyorsításról van szó. Ez egy kibaszott nagy faszság, bárkitől is olvastad. Ezek pont olyan shader lépcsők, mint a korábbiak. Az a különbség, hogy amíg a korábbiakat nem tervezték wave terminológiára, addig az újakat így alakították ki, ergo jobban fordíthatók az új kódok a mai hardverekre. Úgy működik majd rajtuk a számítás, mint egy compute shadernél. Tehát nem valami GPU-s hardverelemtől lesz gyorsabb az egész, hanem attól, hogy wave terminológiát használó kódot írhatsz rá. Az AMD sem csinál mást az átfordításnál, mint veszi a vertex/geometry shadereket D3BC/DXIL IR-jeit, és átkonvertálja őket olyanná, amit aztán a fordító be tud fordítani úgy, hogy ne a legacy geometry módokon menjen a feldolgozás. Persze írhatod eleve ilyenre is a kódot, csak ahogy többször is leírtam már, az ilyen kód nem kompatibilis visszafelé, tehát ha ilyet csinálsz, akkor a vásárlóbázis 99%-a nem tudja elindítani a programot. Emiatt jeleztem, hogy ez egy sok-sok éves átmenet lesz, ameddig lehetne azt csinálni, hogy a driver legacy vertex/geometry shadereket fordítana next-gen geometry módokra. De ez messze nem hardveres gyorsításról szól, hanem az ALU-k jobb kihasználásáról. Kevesebb üresjárat, jobb használata a gyorsítótáraknak, stb.

    (#15) b. : Nem képes egyik hardver sem gyorsításra. Ezek ALU műveletek, nem fixfunkciós hardverhez kötődnek. Pontosan ugyanolyan sebességgel fut egy operáció, mint a legacy futószalagon, az a leglényegesebb különbség a hardveren történő feldolgozásnál, hogy van wave intrinsics.

    (#22) hapakj: Sehonnan. De abból ki lehet indulni, hogy a Vega esetében sem működött az átfordítás. Ott az AMD azt rontotta el, hogy a primitive shader a hardveren belül egy külön hardverállapothoz kötött rendszer volt, és volt mellette a legacy mód. Az RDNA csupán annyiban módosult ehhez képest, hogy ehhez NGG módhoz köthető lépcsők hardverállapottól függetlenek lettek, tehát a működésükhöz a hardver bármilyen állapotban lehet. Ugyanez volt a GCN-nél a stateless compute, és szintén stateless lett az NGG. A régivel az volt a gond, hogy nem tudsz mindent átfordítani az új rendszerbe, és ekkor a hardver gyakorlatilag egy csomó állapotváltásra kényszerül, tehát magát az átfordítást meg lehet csinálni, csak a végeredmény jóval lassabb lesz, mintha végig a legacy pipeline-t használnád. A Turing is egy önálló hardverállapothoz köti a mesh shadinget, tehát nem képes stateless szinten kezelni ezeket a kódokat. Ez a Vegához hasonlóan nagyon bonyolítja az átfordítás driveres megoldását, mert a gyakorlatban rengeteg alkalmazás lassabb lesz átfordítással, mintha csak legacy pipeline működne. Az új generációs architektúra már több lépcsőre is bevezeti a stateless feldolgozást, amit az AMD csinál a GCN óta a compute-tal, és az RDNA óta az NGG móddal is.

    (#24) Petykemano: Lehet PC-ként használni a boxokat, csak lassabbak sokkal. De az Xbox Series X elvileg nem kap mono hozzáférést. Lesz a DirectX 12 Ultimate, és az csupán annyival lesz kiegészítve, hogy a megírt shadert szállíthatod binárisan. De ettől maga magasabb szintű kód teljesen megegyezhet PC-n és boxon, csak PC-re nyilván mindenképpen DXIL-t kell szállítani. A többi lehetőség szempontjából az Xbox egyáltalán nem PC. A memóriát még mindig közvetlenül érheti el a fejlesztő. De azért az nagyon nagy szó, hogy 100-200 ezer sornyi shader kódot elég az Xboxra megírni, és ugyanaz jó PC-re. A leképezőnél is nagyon nagy lesz a kód újrahasznosíthatósága, akár majdnem teljes.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

Új hozzászólás Aktív témák