I když si na klasickém AmigaOS 4.1 FE zahrajete hodně pěkných her, chtěla bych, stejně jako kdysi u Sama440ep-flex vyzkoušet AmiguOne XE s moderními PCIe kartami. Pak totiž můžeme spustit i hry vyžadující modernější API.
V článku takénarazíte na kuriózní osdtavce, nazvané Alchymistcký koutek. Můžete je klidně přeskočit, mají význam jen pro demonstraci schopností AmigyOne XE s U-Bootem 1.1.1 jakémukoli testerovi zamotat hlavu a ztížit práci.
1. Co budeme zkoušet
U AmigyOne XE můžeme použít karty pro tři různé sběrnice: PCI, AGP a PCIe.
PCI grafické karty jsem využila pro debugování PCIe grafických karet, ale rychlost zkoušet nebudeme. Všechny podporované PCI jsou méně výkonné než AGP.
AGP karty fungují nativně v AGP slotu, nejrychlejší plně podporovaná AmigaOSem 4.1 FE je Radeon 9000 PRO s čipem RV250. U těchto karet můžeme využít klasické knihovny AmigaOSu jako Warp3D a MiniGL.
Teoreticky by měly v AmigaOS fungovat i rychlejší karty stejné generace Radeon 8500 či Fire GL 8800 s čipem R200. Ony sice fungují, ale způsobují grafické artefakty, takže jsou nepoužitelné.
Nejrychlejší AGP karta kterou můžeme do XE zapojit je pak o generaci novější Radeon 9800 PRO ( čip R350 ), ale u té ovladače podporují hardwarově pouze SDL, takže ji také zkoušet nebudeme.
PCIe karty Radeon Southern Island ( HD7xxx, R7 xxx, R9 xxx) umožňují použití moderních ovladačů Warp3D Nova a Ogles2 ( jsou součást sw balíčku Enhancer od A-Eonu). Tyto karty jsou několikanásobně výkonnější a existuje na ně množství moderních her a aplikací. Co takhle zahrát si na XE novinku Doom3 (Dhewm3) od HunoPPC ?
2. A nejprve opět trochu teorie
Tentokrát jen stručně ( podrobněji je vše v článku o Samovi, kdo chce může si to tam přečíst https://www.amigaportal.cz/node/149415 ):
2.1 Grafické ovladače
Warp3D a MiniGL: 3D ovladače v AmigaOS 4.1 FE.
Warp3DNova a Ogles2: nové 3D API pro moderní karty.
GL4ES: OpenGL 2.x/1.5, GL ES 2.0/1.1 a omezeně OpenGL3.x. Transition library, široce podporovaná u zařízení jako Pandora, ODroid, OrangePI, CHIP, Raspberry PI, Android, umožňuje snadnou portaci nového softwaru.
MiniGL4GL4ES: důležitá komponenta pro moderní karty, jde o MiniGL API stejné jako klasické, ale přesměrovává výpočty na Warp3DNova, takže i PCIe karty mohou spustit MiniGL aplikace. Je to sice jen rychlý wrapper, neumožňuje například spustit více MiniGL aplikací najednou, ale hodí se.
2.2 Jak vypadá PCI v AmigaOne XE
PCI sběrnice v AmigaOne XE řídí northbridge a proto se na něj podíváme blíže.
Takto vypadá jednoduché schema zapojení northbridge Articia S od Mai Logic v počítači AmigaOne XE. Kromě toho že umí připojit až dva PPC procesory ( případně i MIPS nebo x86 ) a má podporu pro 2x 1 GB RAM nás zajímá hlavně to že je arbitrem pro dvě PCI sběrnice:
vlastnosti PCI bus 0:
- 32-bit, 66/33 MHz PCI interface.
- 3.3V I/O (5V tolerance).
- arbitr pro 5 externích PCI zařízení, optimalizováno pro PCI výkon.
Na tomto řadiči je v AmizeOne interně připojen southbridge a 100 MbE NIC a dále jsou k dispozici tři rozšiřující PCI sloty.
vlastnosti PCI bus 1:
- interface lze konfigurovat pro módy 32-bit AGP nebo 32-bit 66/33 MHz PCI.
- AGP mód podporuje sideband addressing, rychlosti AGP x1 nebo x2 a GART.
- PCI mód má arbitr pro 2 externí PCI zařízení.
Na tomto řadiči není interně nic připojeno, ale jsou k dispozici dva rozšiřující sloty: AGP a PCI.
Z tohoto zapojení nám teoreticky plyne několik maličkostí:
- tři sloty na PCI bus 0 můžeme využít jen v módu 33 MHz, protože sběrnice již obsahuje 33 MHz zařízení ( NIC a southbridge ).
- na PCI bus 1 lze v PCI módu teoreticky provozovat dvě zařízení současně.
- v PCI bus 1 v AGP slotu můžeme používat pouze 3.3V karty, tedy ty co umí AGP x1 či AGP x2 ( ty co mají na sběrnici dva zářezy, nebo zářez vpředu ). I když lze do AGP slotu fyzicky strčit novější AGP karty co jsou pouze x4 a x8 ( mají zářez vzadu ), nedělejte to. Jsou na 1.5 či 0.8V a nemusely by to přežít.
- ve všech PCI slotech lze používat pouze 5V karty ( zářez vzadu ), nebo univerzální 5V/3.3V ( dva zářezy ). Articia S by sice uměla i čistě 3.3V karty, ale PCI sběrnice na motherboardu má jen 5V a nikoli 3.3V.
3. Co všechno budeme potřebovat pro použití PCIe karty
Zatímco samozřejmě pro PCI či AGP karty máme již vše na motherboardu, pro PCIe karty budeme opět potřebovat připravit několik věcí.
3.1 PCI-to-PCIe bridge
Tak především budeme opět potřebovat PCI-PCIe bridge. A opět se ukáže že nefunguje doporučený PEX 8111/8112 s optimalizovaným HW ovladačem, ale pouze transparetní - u mě s čipem P17C9X.
Jak už víme, při použití jakéhokoli PCI-PCIe bridge dojde ke zpomalení přenosu na sběrnici a zvýšení latence - čip musí transformovat paralelní 32-bitový PCI provoz na 1 bitový sériový u PCIe.
A dále potřebujeme PCIe x1 - PCIe x16 riser, hlavně kvůli napájení. Naše PCI sběrnice dává jen 25 W a PCIe karty neutáhne. Tady už naštěstí ke zpomalení nedochází, jde o čistě sériovou linku ( přesněji řečeno u PCIe jsou linky vždy v páru - jedna pro Rx, druhá pro Tx ).
3.2 ovladače
Potřebujeme předem nainstalovat do AmigaOS ovladač HD karet RadeonHD.chip ( autor Hans de Ruyter ).
A dále bychom měli mít pro testování her i Warp3DNova a ogles2.library, vše je součást Enhanceru.
Zde musím zmínit že nejlépe OOTB funguje na AmizeOne XE Enhancer 1.5, obsahující RadeonHD.chip v.2.22. S novějšími verzemi z Enhanceru 2.0 a 2.2 nefungují i některé další hry ( jako třeba ioquake3 ).
3.3 ostatní
Pro počáteční zprovoznění PCIe karty je nezbytné zapnout debugging přes sériovou linku ( os4_cmdline nastavit na: debuglevel=7 serial ) a spojit kabelem s jinou Amigou s terminálem Term, či s PC s TeraTermem.
A jak už jsem zmínila v předchozím článku, v U-Boot je vhodné vypnout všechna nepotřebná zařízení, zejména USB.
A užitečný bude také program SYS:Utilities/Ranger, který použijeme na prohlížení PCI sběrnice.
Po zprovoznění PCIe karty pro vlastní testování rychlosti pak opět nastavíme debuglevel=0.
3.4 Firmware U-boot
Abychom mohli použít grafickou kartu v PCI slotu musíme nejprve nastavit U-Boot. Konkrétně konfiguraci AGP / PCI řadiče a také videovýstup.
V menu "Video settings" můžeme nastavit z které karty půjde při bootování videovýstup, máme k dispozici možnosti "Boot from AGP" nebo "Boot from PCI".
Toto menu je nutné nastavit v případě použití dvou grafických karet a jak jsem psala v prvním článku, je takové podivné a někdy trochu zavádějící.
"Boot from AGP" - obvykle znamená, že videovýstup při bootu půjde z grafické karty připojené na do AGP nebo PCI 66 MHz- tedy PCI bus 1.
"Boot from PCI" - obvykle znamená, že videovýstup při bootu půjde z grafické karty připojené na PCI 0 bus, tedy PCI 33 MHz.
Ale takto to funguje pouze pokud obě karty zapojíte na VGA.
Pokud se pokusíte zapojit dvě grafické karty současně do AGP a PCI 66 MHz slotu, tedy obě na PCI bus 1 ( v PCI módu! ), máte smůlu to U-boot neumí a nerozpozná ani jednu.
A malá odbočka - kolik grafických karet U-boot skutečně našel poznáme v serialdebugu:
Dvě karty:
Code:
VGA: 0 .. 1 ..
Code:
VGA: 0 ..
Code:
VGA: NOT PRESENT
Code:
VGA:
Pokud máme jen jednu grafickou kartu ( nebo U-Boot jen jednu rozpozná ), tak jde videovýstup většinou přes ni bez ohledu na nastavení "Video settings". Nebo také nejde vůbec.
Důležitá je také skutečnost, že jde pouze o videovýstup při bootování. AmigaOS si poté nastaví výstup podle sebe, tedy dle údajů v SYS:Prefs/Monitors a Screenmode. Jen doplním že pokud máte v DEVS:Monitors jen jeden monitor, tak AmigaOS vidí jen jednu kartu, tu samou co U-boot. Pokud tam máte i další monitor PCIGraphics ( viz. návod Hanse na dvě grafické karty v AOS ), můžete ve Screenmode vybrat kde bude Workbench zobrazen.
Alchymistický koutek 1:
Tady ve skutečnosti je opět třeba znalostí alchymie. Záměr autorů U-Bootu je sice zřejmý, ale bohužel, nevyšel zcela, jako v těchto případech:
Při nastavení "Boot from PCI"
a konfiguraci karet AGP slot: AGPgfx+VGA Kabel, PCI 33 slot: PCIgfx+DVI kabel
bootuje pouze z AGP karty.
Pokud pak nastavíme "Boot from AGP"
a kartám přehodíme kabely: AGP slot: AGPgfx+DVI kabel, PCI 33 slot: PCIgfx+VGA kabel,
bottujeme vesele z PCI karty. Krása že?
A takových situací kdy U-Boot použije opačnou kartu než je nastaveno se dá najít více. Takže pokud máme karty dvě, holt musíme obětovat nějaký čas na zkoušení nastavení "Video settings".
Tady ve skutečnosti je opět třeba znalostí alchymie. Záměr autorů U-Bootu je sice zřejmý, ale bohužel, nevyšel zcela, jako v těchto případech:
Při nastavení "Boot from PCI"
a konfiguraci karet AGP slot: AGPgfx+VGA Kabel, PCI 33 slot: PCIgfx+DVI kabel
bootuje pouze z AGP karty.
Pokud pak nastavíme "Boot from AGP"
a kartám přehodíme kabely: AGP slot: AGPgfx+DVI kabel, PCI 33 slot: PCIgfx+VGA kabel,
bottujeme vesele z PCI karty. Krása že?
A takových situací kdy U-Boot použije opačnou kartu než je nastaveno se dá najít více. Takže pokud máme karty dvě, holt musíme obětovat nějaký čas na zkoušení nastavení "Video settings".
První je "IRQ level" pro PCI přerušení. Tím se teď zabývat nebudeme, bude to nejspíš v dalším článku.
Druhá, pro nás důležitejší část je "AGP bridge".
Jedná se o nastavení módu pro PCI bus 1.
"AGP Bus" - "on" znamená AGP mód, můžeme použít pouze jedinou kartu a to AGP. Ono totiž AGP ve skutečnosti není sběrnice, ale dedikované point-to-point připojení jediné karty k řadiči.
"AGP Bus" - "off" zmamená PCI mód, můžeme použít oba konektory, tedy AGP kartu ( v PCI módu ) nebo PCI 66 MHz kartu.
Tohle je OPRAVDU NUTNÉ nastavit na "off" pokud máme v PCI 66 MHz slotu grafickou ( či jakoukoli jinou ) kartu, jinak může dojít ke zničení karty. Naštěstí ta PCI karta o které jsem si minule myslela že jsem ji zničila v AGP módu je naživu. Jen se přehřála a potřebovala si odpočinout.
"Sideband enable" - pokud jsme v AGP módu, používáme urychlení sideband addressing.
"AGP Speed" - "1x" nebo "2x" vysvětlení nepotřebuje. Opět pouze pro AGP mód.
3.5 Odbočka, více různých konfigurací systému
( úplně se to netýká zkoušení karet, kdo chcete tak to přeskočte )
Při zkoušení grafických karet fungujících na různých sběrnicích se neobejdete bez zkoušení různých ovladačů. Někdy je pak těžké dostat systém zpět do původního stavu, protože samozřejmě zapomenete co všechno jste kde změnili a zálohu před každým krokem neděláte. Když jsem systém už asi potřetí instalovala od začátku a načisto, udělala jsem si raději více konfigurací systému.
Chtěla jsem tyto bootovací konfigurace:
- čistý AmigaOS 4.1 fe, updatovaný
- AmigaOS 4.1 fe, updatovaný + Enhancer 1.5
- AmigaOS 4.1 fe, updatovaný + Enhancer 2.0
- AmigaOS 4.1 fe, updatovaný + Enhancer 2.2
Na AmigaOne XE je tohle o dost pracnější než třeba na X1000 nebo na Pegasu 2, ale jde to také. Pracné je to kvůli vlastnostem first-level a second-level bootloaderu (slb_v2).
First-level ( je součást U-boot ) funguje totiž tak, že postupně prohlíží bootovací zařízení v pořadí jak jste je zadali v "Amiga multiboot options" ( např. pořadí IDE DVD, IDE HDD, ... ) a zastaví se na prvním které najde a další zařízení v pořadí ( třeba PCI IDE či PCI SATA ) už neprohlíží.
Pokud zrovna nepoužije kouzelnou hlášku "No SLB found", tak z disku načte slb_v2 ( ten je zapsán při instalaci systému na HDD ) a spustí jej.
SLB hledá na disku z kterého se spustil bootovací kernel ( přesněji jde o oddíl s nastaveným boot flagem, nejvyšší bootovací prioritou a s adresářem Kickstart/ s moduly kernelu ). Na další disky se také již nedívá.
Pokud v našem případě ( IDE HDD ) budete mít na disku více oddílů se systémy viz výše, máte smůlu. SLB protě vezme ten s nejvyšší prioritou či ten první, když mají prioritu stejnou a z něj nabootuje. Nedá Vám vybrat. Musíme na to jinak. Prostě všechny kernely dát na jeden bootovací oddíl.
Jak víte z minulého článku, mám na IDE sběrnici CF kartu již s moduly kernelu. Původně to bylo z nouze, protože má Amiga odmítá bootovat přímo ze SATA karty, ale teď toho využijeme.
Na CF mám jediný FFS oddíl BootCF: a v něm čtyři adresáře pro čtyři různé kernely, odpovídající těm systémům výše:
/Kickstart
/KickstartE15
/KickstartE20
/KickstartE22
Na SATA disku pak čtyři systémové disky, opět analogicky:
DH0: System:
DH0E15: SystemE15:
DH0E20: SystemE20:
DH0E22: SystemE22:
Další postup je nainstalovat z CD na DH0: AmigaOS 4.1 fe, udělat všechny updaty a nastavení ( a NetFS! ) a nezapomenout pak adresář System:Kickstart/ zkopírovat na CF kartu BootCF:Kickstart/
Do ostatních /Kickstart* a System*: zkopírujeme totéž jako základ na který pak budeme instalovat různé verze Enhanceru.
Pro kopírování ( a i pro zálohování ) používám nejraději program BackUp ( autor Daniel Westerberg, Onyxsoft.se ). Je sice 68k pro AmigaOS 2.x, ale umí jako jeden z mála správně kopírovat i symbolické linky. Má GUI i jej lze použít z shellu.
Dále je do všech adresářů /Kickstart* třeba doplnit do příslušných adresářů soubory "BootDevice", obsahující jména disků odkud chceme bootovat takto:
Code:
echo DH0 > BootCF:Kickstart/BootDevice ... echo DH0E22 > BootCF:KickstartE22/BootDevice
Toto zajistí že po načtení kernelu se bude bootovat z disku zapsaného v souboru BootDevice, bez ohledu na nastavené bootovací priority.
Pak nastává to nejpracnější:
Protože slb_v2 umí načíst jen jednu konfiguraci kernelu ze souboru /Kikstart/Kicklayout ( soubor Kicklayout obsahuje jména všech modulů které se mají načíst ), musíme do tohoto prvního Kicklayoutu zapsat všechny varianty kernelových modulů které budeme chtít použít.
Začneme tím že si v tomto primárním Kicklayoutu změníme řádek "LABEL ..." na svoje pojmenování, u mě "LABEL AmigaOS 4.1 Final"
Pak k tomuto souboru připojíme ( třeba příkazem join ) soubor /KickstartE15/Kicklayout, v příslušné části změníme řádek na "LABEL AmigaOS4.1fe - Enhancer 1.5" a pak změníme i všechny následující řádky s moduly "MODULE/Kickstart/..." na "MODULE/KickstartE15/...".
A znovu totéž pro KickstartE20 i KickstartE22. Tak dostaneme jeden dlouhý /Kickstart/Kicklayout se čtyřmi konfiguracemi kernelů a bootovacích disků.
Přiznám se, že poprvé jsem to všechno editovala ručně, ale pak po instalacích Enhancerů ( a tedy i dalších malých změnách v jednotlivých kernelech ) jsem si napsala skript, který pomocí textového stream editoru "sed" udělá patřičné změny v textu MODULE/Kickstart -> MODULE/KickstartExx a pak soubory spojí.
Ufff. Děsné že? Ale vyplatí se to. A vyplatí se také si ty čtyři čisté instalace zazálohovat. A má to pak i výhodu, že v U-Boot preferencích se dá zvolit konfigurace ze které chcete primárně bootovat ( na obrázku ta červená ), tak nemusíte pořád číhat u monitoru abyste nezmeškali výběr botovacího systému.
4. PCIe grafická karta s PCI-to-PCIe bridgem v PCI 66 MHz slotu
Když to vše máme, konečně můžeme jít na zkoušení. Znovu zkontrolujeme že máme v U-Bootu "AGP Bus" nastaven na "off" a zapojíme PCI-PCIe bridge a kartu HD7xxx do PCI 66 MHz slotu.
Následně zjistíme že karta v PCI 66 MHz nefunguje. Nezobrazí se U-Boot, automaticky probíhá bootovací sekvence a ukončí se hláškou:
Code:
Booting configuration AmigaOS 4.1 Final graphics.library AltiVec/VMX enabled graphics.library PPC74xx optimizations enabled graphics.library cannot configure your graphics board! Either your board is not supported or there's a configuration problem. Did you install PCIGraphics.kmod?
Když jsem to později vyzkoušela se druhou PCI grafickou kartou v PCI 33 MHz slotu bylo jasné proč tomu tak je:
Modře vybraná část 01.01.00 je samotný PCI-PCIe bridge. Víc systém nevidí. Žádný VGA řadič za ním. Bohužel, a tuto skutečnost potvrzuje na foru i Hans, U-Boot nedokáže inicializovat grafickou kartu za bridgem na sběrnici PCI bus 1 ( 66 MHz ). Dál je na obrázku u adresy 00.08.00 PCI karta Radeon 9250 v 33 MHz slotu z které Workbench běží.
5. PCIe grafická karta s PCI-to-PCIe bridgem v PCI 33 MHz slotu
Nejprve zmíním, že pokud máte AmiguOne XE s provedeným DMA-fix, tak se Vám nejspíš nepovede připojit PCIe grafickou kartu ani do PCI 33 MHz slotu.
DMA-fix totiž způsobuje další nezdokumentované vedlejší efekty. Aby se vůbec mohlo povést s fixnutou Amigou připojit do PCI grafickou kartu, je nutné zakázat USB, zakázat DMA pro IDE ( i když jste kvůli tomu DMA-fix dělali ) a někdy také interní síťový NIC. A i tak se kartu povede zprovoznit jen výjimečně. Takže DMA-unfix je nutnost. Toto je také důvod, proč se k Micro A1-C nedaří připojit externí grafickou kartu - Micro má DMA-fix již z výroby. http://hdrlab.org.nz/projects/amiga-...r-amigaos-4-x/
Moje amiga je teď už DMA-unfixed, tak můžeme vesele testovat.
A jako obvykle, trocha alchymie se sloty:
Alchymistický koutek č.2:
Když dáme PCIe grafickou kartu do PCI 33 slotu a ostatní sloty neosadíne vůbec, U-Boot sice krásně funguje, ale systém opět hlásí:
A ano, Radeon.chip i PCIGraphics.chip jsou tam kde mají být.
Pokud ale kartu doplníme libovolnou PCI kartou ať už v 33 nebo 66 MHz slotu, PCIe grafická karta funguje. Asi se chudinka bojí, přeci jen je dělaná pro moderní PCIe počítače a teď ji nutí jít do takového historického motherboardu samotnou.
Takže prostě ne technika, ale opět alchymie. Nesmíte se nechat odradit a kombinovat a zkoušet různé sloty a varianty.
Když dáme PCIe grafickou kartu do PCI 33 slotu a ostatní sloty neosadíne vůbec, U-Boot sice krásně funguje, ale systém opět hlásí:
Code:
Either your board is not supported or there's a configuration problem. Did you install PCIGraphics.kmod?
Pokud ale kartu doplníme libovolnou PCI kartou ať už v 33 nebo 66 MHz slotu, PCIe grafická karta funguje. Asi se chudinka bojí, přeci jen je dělaná pro moderní PCIe počítače a teď ji nutí jít do takového historického motherboardu samotnou.
Takže prostě ne technika, ale opět alchymie. Nesmíte se nechat odradit a kombinovat a zkoušet různé sloty a varianty.
Code:
graphics.library AltiVec/VMX enabled graphics.library PPC74xx optimizations enabled RadeonHD.card (0): RadeonHD.chip 2.22 (25.3.2017) RadeonHD (2): Graphics card name is: Radeon HD 7700 Series RadeonHD (2): Identified the chipset as: VERDE .... RadeonHD.chip (0): Connector[2] DVI-I 1: RadeonHD.chip (0): Type: RHD_CONNECTOR_DVI RadeonHD.chip (0): DDC bus: RHD I2C line 3 RadeonHD.chip (0): HPD: RHD_HPD_1 (monitor connected) .... RadeonHD.chip (0): RadeonHD card successfully opened
Bylo tedy třeba použít transparentní PCI-PCIe bridge s čipem P17C9X, který fungoval.
No fungoval, ale ne optimálně:
Code:
RadeonHD.chip (0): RadeonHD card successfully opened RadeonHD.chip (0): UBoot has not initialized the graphics card's interrupt line. Disabling interrupts. RadeonHD.chip (0): Please upgrade your UBoot firmware.
V levé části je modře vybráno zařízení 02.00.00 - PCIe karta HD7750. Napravo v červěné elipse je nastaveno Interrupt: Line 0xFF. Hodhoty 0xFF a 0x00 jsou neplatné, karta pak negeneruje přerušení.
Za to nemohou žádné ovladače ani sama karta, toto je skutečně práce U-Bootu.
A je to celkem nemilé, protože bez interuptů bude karta ještě pomalejší. Takže to už máme pomalejší 33 MHz PCI slot, zpoždění na PCI-PCIe bridgi a teď ještě jsme bez interuptů.
Dále je na obrázku PCI adresa 00.08.00, to je náš PCI-PCIe bridge v prvním PCI 33 MHz slotu. Všiměte si že za bridgem nám vznikla další PCI sběrnice ( 02.xx.xx ) a na ní je jako první zařízení 02.00.00 naše PCIe grafická karta. Karta obsahuje i Audio device 02.00.01, na který ovšem AmigaOS nemá ovladač.
A aby PCIe karta nebyla sama, v PCI 66 MHz slotu ( 01.01.00 až .02 ) vidíme ještě USB 2.0 kartu.
6. Využití PCI 66 MHz slotu pro jiné karty
Když už do 66 MHz slotu nedáme PCIe grafickou kartu, chtěli bychom jej využít pro něco jiného. Třeba SATA řadič, tomu by to mohlo prospět na rychlosti.
Jenže jak se ukázalo, zapojit jiné karty než grafické do PCI 66 MHz slotu se úplně nedaří. Buď byly nefunkční, protože U-Boot někdy kartu nerozpoznal:
Jako zde v případě USB 2.0 karty ( 01.01.00 Undefined ).
Nebo U-Boot kartu rozpoznal:
Dokonce kartě i správně přidělil přerušení ( Line: 0x0A ) jako zde u SATA,
V AmigaOS je správně přidělený interupt vidět i v interrupt handleru ( 26: sii3114ide IRQ handler ), ale karta stějně nefungovala.
V MediaToolboxu je připojený SATA disk sice vidět, ale bez detailů a status je "not supported". Namontovat žádný oddíl nelze. A takto to vypadalo v debuglogu:
Code:
[sii3114ide/scsi_get_capacity] cant get drive capacity from unit 0 [sii3114ide/cmd_custom] direct command 236 returned -1, ec 31
V této kongiguraci funguje z karty ping i DNS dotazy, ale cokoli složitějšího ne.
Tady vidíte otevřené sockety při načítání stránek seznam.cz. Sice se správně otevřou, ale žádný provoz nenásleduje. Prostě je tam něco divného.
Ani vlastně nevím, která část je za to odpovědná. U-boot interupty přidělí, v AmigaOS je interrupt handler správně nastaven, ale ovladače fungují jen velmi částečně.
Někdo z trojice motherboard, U-Boot a ovladače AmigaOS prostě vůbec nepočítá s tím, že by na PCI bus 1 mohlo být něco jiného než ( jedna ) grafická karta. Škoda. Takže nám nejspíš odpadla jedna ze dvou výhod které AmigaOne XE má vůči Pegasosu 2.
7. A konečně i to slíbené porovnání AGP a PCI-e karet.
Při testování se ukázalo, že nativní Warp3D driver pro PCIe karty (Warp3D-Southern Island) nefunguje v AmigaOne XE úplně ideálně. Tedy spíš prakticky vždy spadne. To u Sam440 ani X1000 tak velká nekompatibilita není. To by bylo hodně špatné, nemohli bychom pak použít ani MiniGL, což je většina klasických 3D her. Naštěstí pro MiniGL existuje náhrada, MiniGL4GL4ES. Tento wrapper přesměruje všechna volání MiniGL funkcí z Warp3D na Warp3DNova a aplikace můžeme vesele používat.
V testech budeme porovnávat pouze nejvýkonnější AGP a PCIe karty: Radeon 9000 PRO a R9 270X.
Pro testování rychlostí je AGP karta nastavena na AGP, x2, sideband, dále je vypnut sériový debuglog i všechny komodity.
7.1 GfxBench2D, GfxBench2D Copy to VRAM
Pokud jste kdysi četli o kartách v Sam440ep-flex, tak výsledky nejsou překvapivé.
Zatímco R9 270X má výrazně lepší celkové skóre, tedy hlavně 2D/compositing, tak Radeon 9000 PRO má rychlejší zápis do VRAM, protože PCIe karta je zpomalena PCI-PCIe bridgem:
A pro zajímavost jsou zde uvedeny i výsledky pokud je AGP karta Radeon 9000 PRO v módu AGP x1 nebo v PCI 66 MHz módu. Sami vidíte že je to prakticky jedno. "Copy to VRAM" ( 95.3 MB/s ) a "Write Pixel Array" ( 111 MB/s ) jsou všude identické a celkové výsledky "GfxBench2D" se liší jen nepatrně ( AGPx2: 1854.52, AGPx1: 1831.39, PCI: 1830.17 ).
Articia S se sice honosí že umí AGP x2, ale reálně je o dost pomalejší než PCI 66 MHz na Pegasu 2 ( ano, i když má Pegasos 2 AGP slot, je ve skutečnosti v PCI módu, northbridge Marwell Discovery 2 umí jen PCI ). Alespoň že je naše Articia S rychlejší než její dvojče v Pegasu 1 a také než Sam440ep-flex.
Teoretické maximální rychlosti sběrnic jsou PCI 33 MHz: 133 MB/s, PCI 66 MHz: 266 MB/s, AGP x1 opět 266 MB/s a AGP x2: 533 MB/s. Rychlost AGP x2 v XE nedosahuje ani rychlosti PCI 33 MHz, tak nás možná nemusí až tak mrzet, že je naše PCIe karta jen v PCI 33 MHz slotu.
7.2 Cow3D - Warp3D a Warp3D Nova
R9 270X s Warp3D padá (Warp3D-Southern Island opravdu není ideální na XE ) a Warp3DNova je jak víme podstatně rychlejší ( a to zase neumí Radeon 9000 PRO ).
7.3 SDLBench
R9 270X dosahuje jen 53 % rychlosti Radeon 9000 PRO. PCIe bridge a chybějící interupty jsou velké zpomalení.
7.4 MPlayer
Testováno s MickJT-MPlayer a trailerem z filmu Serenity-HDDVDTrailer.mp4, 1280x720 pix, codec H.264.
Tady je pro mě celkem překvapivě rychlejší Radeon 9000 PRO. Toto jsou kompletní výsledky:
Radeon 9000 PRO:
Code:
[VO=p96_pip]: VC: 194.186s VO: 57.643s A: 0.000s Sys: 6.350s = 258.180s
Code:
[VO=comp_yuv2]: VC: 191.750s VO: 109.399s A: 0.000s Sys: 6.500s = 307.649s
Pro srovnání Sam440ep 733 MHz se R9 270X:
Code:
VO: [comp_yuv2]: VC: 241.269s VO: 67.617s A: 0.000s Sys: 2.347s = 311.233s
I když jsme tedy rychlejší než na Sam440ep-flex, ani na AmigaOne XE si HD videa bez framedropů nepřehrajete. Skutečná délka filmu je totiž 139 sekund.
7.5 FPS hry
GLQuake (MiniGL): na PCIe katrách nelze spustit ( a to ani na X1000 a Sam440 ). Ani s klasickým MiniGL ani s wrapperem MiniGL4GL4ES.
ioQuake3 (MiniGL/SDL2): rychlejší je Radeon 9000 PRO.
Tower57 ( compositing ): compositing umí lépe PCIe karty.
Wings Battlefield Demo ( Warp3D, Compositing ): zde je rychlejší karta R9 270X. A mohla by být ještě rychlejší. Radeon 9000 PRO používá Warp3D verzi R100-R200, ale u R9 270X Warp3D verze pro Radeon7xxx padá, tak je třeba použít pomalejší compositing. Nicméně je třeba říci že renderování krajiny u čipů R100 a R200 není moc hezké ani kvalitní, takže na AGP kartách Vás hra tolik nepotěší.
1941 (SDL): rychlejší je Radeon 9000 PRO, i když ne o tolik jak by naznačoval test SDLBench.
Spencer (MiniGL, OpenGLES2): hra si sama vybere nejrychlejší rozhraní a na výsledku je to vidět - R9 270X s Ogles2 je výrazně rychlejší.
RTCW (MiniGL): R9 270X 12 FPS, Radeon 9000 PRO 9 FPS. Opět na nejvyšší detaily.
HCraft (GL4ES): tato hra funguje pochopitelně pouze na moderní kartě.
7.6 Html 3D
Test grafiky webových stránek wirple.com/bmark je u obou karet stejný - 14 FPS na začátku testu 1, Total score 21. Takže tu ani není graf.
7.7 Emulátory
V nejpoužívanějších emulátorech je rychlejší AGP karta, ale nijak dramaticky E-UAE o 5% a DOSBox o 10%.
Chtěla jsem ještě vyzkoušet na PCIe kartě Doom3, ale zatím se to nepovedlo. Potřebuje totiž nejnovější Enhancer 2.2 a s tím si XE úplně nerozumí.
8. Dát a nebo nedat PCIe kartu do XE?
Výhody:
+ na PCIe kartách je compositing je výrazně rychlejší. Jsou také o deset let mladší.
+ možnost použití Warp3D Nova a Ogles2 ve hrách a programech. Výhod zde sice není mnoho, ale tato má dosti velkou váhu, protože vývoj AmigaOS 4 od Hyperionu nepokračuje příliš rychle a to hlavní se dnes odehrává ve světě Enhanceru od A-Eonu.
Nevýhody:
- nutnost osazení PCIe grafické karty do pomalejšího 33 MHz slotu.
- nefunkčnost jiných než grafických karet v PCI 66 MHz slotu, čímž si efektivně snížíme počet rozšiřujících karet. A navíc jelikož máme DMA-unfix, další 33 MHz slot bychom měli obsadit SATA řadičem. Přeci jen, interní IDE bez DMA je opravdu pomalé. Takže na další rozšíření zbyde jen jeden PCI slot.
- RadeonHD funguje bez interuptů pomaleji.
- ne všechny klasické aplikace fungují na PCIe kartách.
- poslední verze RadeonHD.chip a Warp3DNova již nejspíš nejsou betatestovány s AmigaOne XE, což naznačuje že se ve vývoji pro XE nebude pokračovat. Tedy ono se není vůbec čemu divit, uživatelů PCIe karet na AmigaOne XE mnoho nebude, jestli vůbec nějací. Škoda.
9. A konec:
Zatímco u Sama440ep-flex jsem moderní karty doporučila, tak u AmigaOne XE tak úplně nemohu a to zejména kvůli posledním dvěma mínusům. PCIe karta je zde jen pro toho, kdo opravdu nemůže být bez některé své Ogles2 / Warp3DNova hry či aplikace.
A ještě v jednom podobném případě bych PCIe kartu doporučila - pokud by se Vám ji nějakým zázrakem podařilo zprovoznit v Micro A1-C. Vestavěná karta Radeon 7000 se 32 MB VRAM je dnes již opravdu nedostačující.
Já tedy zatím zůstávám u AGP a Radeon 9000 PRO. Z nejnovějších her se mi nejvíc líbí Tower57 a ten mohu hrát i s AGP, byť o 4 FPS pomaleji.
A jěště poznámka k výběru karty. Radeon 9000 Pro běžně seženete buď s VRAM 132 MB s taktem 250 MHz ( s touto jsou dělány testy ), nebo se 64 MB a 275 MHz. Já bych dala přednost první variantě kvůli větší VRAM.
Naštěstí jem teď narazila na variantu Hercules 3D Prophet 9000 Pro, která má 132 MB + 260 MHz VRAM. Jen se špatně schání.
Moje dojmy ze zkoušení jsou smíšené. Na jedné straně je XE stroj dostatečně rychlý, když si s ním pohrajete tak i stabilní, schopný používat i moderní karty. Na druhou stranu je vidět, že vývoj AmigyOne XE byl tenkrát opravdu trnitý a v časovém stresu, takže je leccos navrženo jen na konkrétní použití. Nepočítá se s tím, že by na PCI bus 1 ( AGP + PCI 66 ) mohly být dvě grafické karty. Nepočítá se ani s tím, že by tam mělo být vůbec cokoli jiného než grafická karta. U-Boot se chová při práci s PCI pokaždé trochu jinak.
Sice jsem minule slíbila že tento článek bude technický až příliš, ale to se moc nepovedlo. Kdybych sem dala i tu technickou část, byl by moc dlouhý. Takže si to nechám do dalšího ( možná ) pokračování o PCI subsystému a interuptech. Podíváme se, jestli by se přeci jen nedalo s těmi interupty něco dělat.
A pro ty co vydrželi až sem, ještě zajímavé příhody z oblasti alchymie.
Alchymistický koutek č.3:
Během zkoušení jsem například narazila i na takové opravdové kuriozity:
Osazení samotné karty Radeon 9250 na PCI PCI bus 0 ( 33 MHz ), do prvního slotu, tedy všechny ostatní sloty nezapojeny, způsobí zajímavý vedlejší efekt:
Uboot vidí DVD v interním ATA řadiči a1ide:0 ( primary master ) ale nevidí SSD (s IDE převodníkem) v a1ide:2 ( secondary master ). Stačí doplnit kartu, a hele, už vidí obě zařízení.
Podobný případ:
Konfigurace PCI 33 slot 1: SATA, slot 2: PCIe bridge+gfx. Testuji celý den, funguje. Druhý den zapnu, U-Boot v pohodě, ale AmigaOS nemůže bootovat, nevidí SATA SSD. Stačí přehodit PCIe bridge+gfx do PCI 33 slot 3 a hurá, vše jak má být.
A do třetice na stejné téma:
Konfigurace PCI 66: USB, PCI 33 slot 1: SATA, slot 2: PCIe bridge+gfx. Opět stejný scénář, dlouhodobě funguje, pak stačí na pár hodin vypnout a AmigaOS nemůže bootovat, nevidí SATA SSD. Stačí vyndat USB kartu a hurá, jedeme dál.
Musím si někde sehnat černou kočku, pergamen a křivule. Moždíř a líh do kahanu už mám.
Během zkoušení jsem například narazila i na takové opravdové kuriozity:
Osazení samotné karty Radeon 9250 na PCI PCI bus 0 ( 33 MHz ), do prvního slotu, tedy všechny ostatní sloty nezapojeny, způsobí zajímavý vedlejší efekt:
Uboot vidí DVD v interním ATA řadiči a1ide:0 ( primary master ) ale nevidí SSD (s IDE převodníkem) v a1ide:2 ( secondary master ). Stačí doplnit kartu, a hele, už vidí obě zařízení.
Podobný případ:
Konfigurace PCI 33 slot 1: SATA, slot 2: PCIe bridge+gfx. Testuji celý den, funguje. Druhý den zapnu, U-Boot v pohodě, ale AmigaOS nemůže bootovat, nevidí SATA SSD. Stačí přehodit PCIe bridge+gfx do PCI 33 slot 3 a hurá, vše jak má být.
A do třetice na stejné téma:
Konfigurace PCI 66: USB, PCI 33 slot 1: SATA, slot 2: PCIe bridge+gfx. Opět stejný scénář, dlouhodobě funguje, pak stačí na pár hodin vypnout a AmigaOS nemůže bootovat, nevidí SATA SSD. Stačí vyndat USB kartu a hurá, jedeme dál.
Musím si někde sehnat černou kočku, pergamen a křivule. Moždíř a líh do kahanu už mám.
Pošlu SZ.
to jsem ani nevěděla, všechny mé gfx s více pamětí jsou PCIe s 1GB+ a tam právě vidím 256 MB.
A dá se nějak poznat na grafické kartě jestli je to 1x 256 nebo 2x128?
Těm řádkům a blokům u pamětí nějak nerozumím.
A jinak na 128 MB je v pohodě i na rozlišení 1920x1080, triplebuffer. Já trošku bojuji se 64 MB u Mac Mini, ale to se ještě dá. Zato těch 32 MB u Micro A1-C už je hodně nepohodlné.