.[ ČeskéHry.cz ].
Jak se vyvijeji open-source drivery pro GPU

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 5. leden 2010, 16:57:02    Předmět: Odpovědět s citátem

VladR napsal:
Eosie napsal:
Jelikož mi zbývají cca 2+ roky studia, hodlám se spíš věnovat věcem, který bych se sám od sebe nenaučil. Času už je málo. :/
To AMD/ATI ma pobocku v Prahe na vyvoj driverov ?


VladR> Ne, je to moje hobby tzn. free. (asi jako když si někdo jiný píše engine...) Můj progress lze sledovat třeba tady: http://cgit.freedesktop.org/mesa/mesa/log/?qt=author&q=Marek . 3D driver je multiplatformní multi-3DAPI, ale GPU memory manager máme jenom pro Linux. 2 zaměstanci AMD/ATI tam commitují taky, ale do jiného driveru.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 5. leden 2010, 17:13:56    Předmět: Odpovědět s citátem

Netusil som, ze drivery ide robit ako open-source/free.

Kto ti to tam kontroluje, resp. ake automatizovane Q&A na tie drivery je ?

Posli nejaky link, kde sumarizuju ako to zacat, je to zaujimave.


Okrem ineho aj preto, ze pisaci driverov su nechutne dobre plateni Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 5. leden 2010, 19:21:33    Předmět: Odpovědět s citátem

VladR napsal:
Netusil som, ze drivery ide robit ako open-source/free.


Open source drivery se dělají proto, že některé systémy nemůžou distribuovat drivery s uzavřeným kódem (licenční problémy, Linux) anebo se systém příliš rychle mění a půl roku staré drivery už s ním nejsou kompatibilní (Linux). Open source drivery mají tu výhodu, že když někdo změní driver interface (to se děje neustále), tak zároveň upraví zdroják klidně i 10 driverů naráz, aby fungovaly i nadále.

VladR napsal:
Posli nejaky link, kde sumarizuju ako to zacat, je to zaujimave.


Nemám link. Prostě stáhneš zdrojáky projektu Mesa a začneš psát kód. Projektu šéfuje VMWare, drivery si tam vyvijí Intel, AMD/ATI, Redhat a dobrovolníci (nadšenci). VMWare má pod kontrolou celou infrastrukturu a píše dost kódu, který mohou používat různý drivery. Redhat má 2 zaměstnance alokovaný jako výpomoc pro AMD a nějaký další zaměstance na reverse-engineering NVIDIA driverů (jde jim to dost dobře). Je to objektový a v čistým C.

Dokumentace ke všem DX9 a DX10 GPU od ATI je dostupná free (třeba http://www.x.org/docs/AMD/ ), k DX11 GPU se teprve píše. Ze začátku možná není snadné se v ní vyznat. Ke GPU od Intelu je dokumentace asi taky, ale nevím kde.

Je tam víc infrastruktur, pro které můžeš psát drivery, ale je lepší používat tu nejnovější tj. Gallium3D. To funguje tak, že každý driver dělí na 3 části:
- winsys (1-2k LoC).: Správa paměti a odesílání příkazů na GPU, obvykle přímá komunikace s kernelem.
- pipe driver (10k-30k LoC): Implementuje 3D API podobné D3D9 a D3D10 bez fixed-function pipeline. Pipe driver typicky generuje command stream pro GPU command processor, používá přímo winsys a může používat pomocné moduly (např. software vertex processing, když hardware nemá vertex processor). Obsahuje taky shader compiler a optimizer, který dostává shader v nějakém pseudo-assembleru a převádí ho do strojového kódu, to je asi nejtěžší část. Generování samotného command streamu je už docela jednoduchá, přímočará (a zajímavá!) záležitost.
- state tracker (10k-1M LoC): Implementuje nějaké API nad pipe driver interface a winsys interface. Právě je tam OpenGL, OpenCL, OpenGL ES, OpenVG, X.Org 2D/Video akcelerace. VMWare tvrdí, že mají i Direct3D9 state tracker a winsys pro Windows, ale že zdrojáky neuvolní.

Tyhle 3 části složíš a máš driver. Když dám dohromady třeba Linuxový winsys pro Radeony, pipe driver pro DX9 Radeony a OpenGL state tracker, dostanu kompletní OpenGL 3D driver pro Linux a DX9 Radeony. Volitelně můžeš zkompilovat více driverů do jednoho (třeba všechny Radeon drivery), a konkretní pipe driver si vybereš ve winsys třeba podle Device ID.

VladR napsal:
Kto ti to tam kontroluje, resp. ake automatizovane Q&A na tie drivery je ?

Pro OpenGL máme piglit, obsahuje automatizovaných asi 170 testů grafiky a přes 400 testů GLSL a ASM compileru. V mesa/progs jsou pak neautomatizované testy tj. dema (nejenom pro OpenGL). Jinak já ještě testuju nějaké hry (Enemy Territory, Quake 3). Driver se dá snadno debugovat, protože je to jenom knihovna, např. rozhážu si v driveru breakpointy a spustím Quake 3. Wink

Do QA taky patří review zdrojáků. Změny mimo driver nebo změny, kterými si nejsem jistý, se obvykle posílají na mailing list, kde se k tomu několik lidí obvykle vyjádří. V rámci driveru to záleží na domluvě, ale jelikož ještě nemám commit access, všechny moje zdrojáky jdou přes jednoho kolegu a jako committer samozřejmě bere zodpovědnost za to, co commituje. Výjimečně se commity vrací k přepracování nebo dokonce odmítají (sen každého vývojáře Laughing).

VladR napsal:
Okrem ineho aj preto, ze pisaci driverov su nechutne dobre plateni Smile

O tom nevím, ale vím, že kdybych to chtěl dělat za prachy, musel bych asi vycestovat. Wink V ČR možná v Brně v Redhatu.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 5. leden 2010, 19:42:27    Předmět: Odpovědět s citátem

Obavam sa, ze toto je najzaujimavejsi post, ktory sa za posledne (aj nasledovne) 3 roky v Popelnici objavi(l) Wink

U mna to dokonca zaujmom predci aj pracu v Inteli, lebo ja mozem take to low-level brutalne piplanie Twisted Evil

K tym platom - to bolo myslene v porovnani s hernymi developermi.

Nejaky start-up mimo gamedev ti kludne da aj o 30% vyssi plat (ale stabilitu ma nulovu, na rozdiel od AMD/nVidie).



Cize, ak to chapem spravne, tak v tych driveroch kludne mozes aj sam nejaku funkcionalitu zoptimalizovat, aby bezala pre usera na karte rychlejsie, tak ? Kolko kodu je v ASM ?
Pozeram, ze tam ide pisat aj driver pre Intelacky gfx chipset- to je zaujimave.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1821

PříspěvekZaslal: 5. leden 2010, 20:32:00    Předmět: Odpovědět s citátem

Na GDS typek z nVidie hovoril, ze ludi ako Eosie urcite chcu na fulltime vyvoj, myslim ze niekde v Svajciarsku (pevne dufajme, ze v nejakom kantone, kde hovoria ludskym jazykom, rozumej nemeckom kantone Very Happy). Eo - smelo do toho! (no joke)
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 5. leden 2010, 20:53:38    Předmět: Odpovědět s citátem

VladR napsal:
Cize, ak to chapem spravne, tak v tych driveroch kludne mozes aj sam nejaku funkcionalitu zoptimalizovat, aby bezala pre usera na karte rychlejsie?

Přesně tak. Hardware je tady pro tebe 3D API a máš docela volnost (v cestě ti budou stát akorát týpci, co na tom dělají s tebou Wink). HW nemusí podporovat úplně všechno, takže musíme některé věci simulovat vkládáním dodatečných instrukcí do shaderu (např. shadow samplery v OpenGL).

VladR napsal:
Kolko kodu je v ASM ?

Žádný, píšeme to v čistým C s ručním ale velmi elegantním OOP. Příkazy na GPU včetně shaderů se posílají v poli, které naplníš předem danýma konstantama. Můžeš si klidně udělat parser na command stream a podívat se, co oficiální ATI drivery posílají na GPU (kernel to může odposlouchávat) a inspirovat se. Wink

VladR napsal:
Pozeram, ze tam ide pisat aj driver pre Intelacky gfx chipset- to je zaujimave.

Můžeš dělat i drivery pro NVIDIA hw. Reverse-engineering není tak těžkej. Změníš třeba jeden stav v OpenGL a podíváš se, kterej registr se změnil v command streamu na jakou hodnotu. Hodně bádání a hodně sraní, ovšem nemálo lidí to dělá a hodně úspěšně.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vozka



Založen: 28. 07. 2007
Příspěvky: 229

PříspěvekZaslal: 5. leden 2010, 21:25:40    Předmět: Odpovědět s citátem

Já ty informace od Eosieho taky oceňuju, ale nechtěl by to nějaký mod splitnout? Je to dost OT a původní topic mi v tuhle chvíli na to přijde moc aktuální.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 5. leden 2010, 21:39:00    Předmět: Odpovědět s citátem

Eosie: Na kterou řadu grafáren vyvíjíš ovladače ty? Na tu starší (tuším, že r300), kde už neexistuje proprietární alternativa, nebo na nějakou novější, pro kterou jsou i proprietární ovladače?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 5. leden 2010, 22:54:33    Předmět: Odpovědět s citátem

r3xx-r5xx, tj ta starší. Ale v distribucích to nenajdeš, Gallium3D je docela v plenkách, ovšem už teď má víc funkcí než cokoliv jinýho open source (první ATI GL2.1 open source driver) a běhá nám tam čímdál víc her (před týdnem se tam objevila podpora geometry shaderů a VMWare nás nutí je podporovat přes software vertex processing, to tam už je taky implementovaný v modulu, jenom to nepoužíváme). Nicméně kolega už začal dělat na r6xx-r8xx driveru (Radeon HD) a já se k němu připojím, až budu mít to GPU. Jeden týpek z AMD prohlásil, že by se taky přidal. Wink
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 6. leden 2010, 01:17:10    Předmět: Odpovědět s citátem

pcmaster napsal:
Na GDS typek z nVidie hovoril, ze ludi ako Eosie urcite chcu na fulltime vyvoj, myslim ze niekde v Svajciarsku (pevne dufajme, ze v nejakom kantone, kde hovoria ludskym jazykom, rozumej nemeckom kantone Very Happy). Eo - smelo do toho! (no joke)


Zadne takove, Eosie ted bude makat pulrok v INRIA a pak jej chci vyuzivat jeste ja Smile.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna