ATi Radeon X1950 Pro (R570)
Die Hardware:
So, ich beginne dann auch gleich mit einer ATi Radeon X1950 Pro. Die
Karte basiert auf dem R570 Chipsatz von ATI, der letzten vollständigen
Eigenentwicklung von ATi vor der Übernahme durch AMD. AMD wiederum hat
Anfang 2008 die komplette Hardwaredokumentation offen gelegt, was
inzwischen zu einer guten Unterstützung geführt hat.
Die Radeon X1950 Pro war Ende 2006 das Topmodell von ATi, heute zählt
die Karte zur oberen Mittelklasse. Da sie zur R500-Familie gehört, hat
sie noch eine dedizierte 2D-Einheit, welche weitgehend der
Vergängergenerationen R400 und R300 entspricht. Eine 2D-Unterstützung
war daher schon wenige Tage, nachdem die Spezifikationen offen lagen
möglich. Der 3D-Teil ist ein Hybrid, seitens der Hardware neuentwickelt
legt er den Grundstein für die Nachfolger R600 bis R800, auf logischer
Ebene dem R300 recht ähnlich ist er ähnlich zu programmieren. Initiales
3D gab es daher im Mai 2008. Inzwischen sind die Treiber einige
Versionen weiter und die Unterstützung weitestgehend von
Kinderkrankheiten geheilt.
Ich habe meine Karte neu gekauft, es gibt noch immer welche im Handel.
Der Preis ist mit ca. 85 Euro sehr moderat und der gebotenen Leistung
locker entsprechend. Meine von Asus gebaute Karte mit dem genauen Namen
"Asus EAX1995Pro" verfügt über einen PCI-Express Anschluss der ersten
Generation, 256 Megabyte GDDR3 Speicher und - das ist das vielleicht
wichtigste - einen selbstregelnden Lüfter. Dieser ist im Betrieb so
leise, das er im geschlossenen Gehäuse nicht hörbar ist, durch die
eigene Regelung das auch unter FreeBSD. Durch die moderate TDP von 65W
kann die Karte auch auf passive Kühlung umgebaut werden.
Wie jede moderne Grafikkarte belegt auch diese 2 Slots, bei meinem
Mainboard kein großes Problem. Sie ist recht lang, halbe PCI-Baulänge
und wird über einen PCIe-Stromanschluss gespeist. Zum Lieferumfang
gehören neben der Karte selbst ein Adapterkabel für den Strom und leider
nur ein DVI->DSUB-Adapter, obwohl die Karte über zwei DVI-Ausgänge
verfügt. Hinzu kommen das Anschlusskabel für den TV-Ausgang, Treiber-CDs
für Windows und ein hässliches CD-Etui.
Die Software:
Die R500 werden erst seit kurzem unterstützt, neue Versionen liefern
daher meist noch nennenswerte Verbesserungen. Daher entschied ich mich
für das Neueste, was ich ohne große Probleme in mein System integrieren
konnte.
DRM: Der DRM wird zwar mit dem Kernel ausgeliefert, steht aber alleine
da, kann also herumkopiert werden, wie man will. Ich kopierte also die
Verzeichnisse sys/dev/drm und sys/modules/drm aus CURRENT in die Sourcen
meines FreeBSD 7.1-p4 und baute die Module. Anschließend ludt ich sie,
der DRM griff sich die Karte und funktionierte. Genauer gesagt stammt
der DRM vom Abend des 30. März 2009.
Mesa3D: Mesa3D besteht aus der libGL, den DRI-Backend und einigen
Wrapperbibliotheken. Hier nahm ich das, was mitgeliefert wird, Version
7.3. Die neue Version 7.4 liefert nur einige Bugfixes, es war mit den
Portierungsaufwand nicht wert.
X.org: Ebenfalls direkt aus den Ports, in Form des xorg-server
1.5.3_8,1.
Die Treiber: Es gibt zwei Treiber, die die Karte unterstützen. Dies ist
einmal xf86-video-radeonhd. Ich testete ein Git-Head vom Abend des 30.
März 2009. Radeonhd ist ein neuer Treiber, extra für die neuen von
Spezifikationen von AMD/ATi geschrieben. Er unterstützt R500 und die
Nachfolger, befindet sich noch in sehr aktiver Entwicklung. Wer radeonhd
nutzen möchte, sollte daher Git nutzen und sich nicht auf die Ports
verlassen. Sie hängen der Realität zu weit hinterher. Radeonhd hat
jedoch die R500-Unterstützung weitgehend aus xf86-video-ati übernommen.
xf86-video-ati ist der ältere Treiber, er unterstützt alle ATI-Karten
seit der Rage 128. Entsprechend ist er reifer, aber auch komplexer und
entsprechend schwieriger zu optimieren. Seit einiger Zeit lassen die
Entwickler des radeonhd ihren Code auch zeitgleich in diesen älteren
treiber einfließen, weshalb eine Fusion der Projekte wahrscheinlicher
wird.
Ich testete beide Treiber mehrere Stunden. In Sachen Geschwindigekit und
Funktionalität sind sind gleich, es gibt praktisch keine Unterschiede.
Da der gleiche R500-Code genutzt wird, ist dies auch nicht weiter
verwunderlich. Ich entschied mich schließlich für xf86-video-ati, alles
weitere in diesem Bericht bezieht sich auf seine Version 6.12.1 aus den
Ports. Die Gründe sind einfach, ati wirkt reifer als radeonhd. Letzterer
stürzte mir mehrmals ab, ati nicht. Außerdem bringt ati oft neue
Versionen, die schnell in die Ports kommen. Man kann hier also
problemlos die Ports nutzen und spart sich das Gehampel mit Git.
Das Testsystem:
Alle Tests wurden auf einem AMD Phenom II 940 mit viermal 3GHz gemacht.
Als Mainboard kommt das Asus M3A-H/HDMI zum Einsatz, es basiert auf dem
AMD 780G Chipsatz, welcher über eine Hypridcrossfire-Onboard-Grafik
verfügt. Diese wird aber im Moment mehr schlecht als recht unterstützt,
das Hybridcrossfire geht gar nicht. Die Maschine verfügt über 8 Gigabyte
DDR2-800 RAM, die Software bilden FreeBSD/amd64 7.1-p4 mit den Ports vom 31.
März 2009.
2D-Modus
Der 2D-Modus ist in sofern wichtig, da man die meiste Zeit des Tages in
ihm arbeitet. Der Desktop sollte beschleunigt sein, also zügig
ansprechen und ein wenig Schnickschnack ist auch sehr wünschenswert.
Hier schlägt sich die Radeon sehr gut, es wird alles unterstützt. Dies
ist einmal die Beschleunigung durch XAA und EXA. Beide sind gleich
schnell, letzteres ist jedoch zu empfehlen. Es integriert besser mit
3D-Beschleunigung. Mehr dazu unten. Die Geschwindigkeit des Desktops ist
entsprechend gut, subjektiv reagiert er extrem schnell und ohne jede
Lags und Zähigkeiten. GTKPerf bewegt sich im oberen Mittelfeld, es gibt
deutlich schnellere Karten / Treiber, gerader der nVidia-Blob ist
hervorzuheben, aber auch deutlich schlechtere. Subjektiv bemerke ich zum
Spitzenfeld keinen Unterschied.
Code:
GtkPerf 0.40 - Starting testing: Thu Apr 2 08:53:40 2009
GtkEntry - time: 0,01
GtkComboBox - time: 0,37
GtkComboBoxEntry - time: 0,31
GtkSpinButton - time: 0,07
GtkProgressBar - time: 0,06
GtkToggleButton - time: 0,13
GtkCheckButton - time: 0,04
GtkRadioButton - time: 0,14
GtkTextView - Add text - time: 0,24
GtkTextView - Scroll - time: 0,16
GtkDrawingArea - Lines - time: 0,32
GtkDrawingArea - Circles - time: 0,32
GtkDrawingArea - Text - time: 1,05
GtkDrawingArea - Pixbufs - time: 0,08
---
Total time: 3,30
Auch randr ist voll unterstützt, es können die Auflösungen umgeschaltet
werden, das Bild gedreht und Monitore hinzugefügt und entfernt werden.
Entsprechend funktioniert Xinerama mit zwei Monitoren auch einwandfrei,
die Xinerama-Daten werden korrekt an die Programme übertragen.
Multimonitorbetrieb ist mit der Karte eine Freude.
Code:
DVI-1 disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
1680x1050 59.9*+ 60.0
1400x1050 60.0
1280x1024 75.0 60.0 60.0
1440x900 60.0
1280x960 60.0 60.0
1152x864 75.0 75.0
1024x768 75.1 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 75.0 60.0 59.9
720x400 70.1
XVideo aka xv ist ebenfalls voll unterstützt. Die Karte bietet 16 Ports,
es können also 16 Videos bis zu einer Größe von 2048x2048 parallel mit
voller Hardwarebeschleunigung abgespielt werden. Das Bild ist dabei sehr
klar und scharf, es gibt kein Verwaschen, keine Sprünge, keine Absätze,
keine Schlieren, kein Jitter und auch keine der unzähligen weiteren
Fehler. Ich kann problemlos zwei mit H.256 codierte 1080p-Videos
parallel abspielen und auf 1280er Breite hinabskalieren, die
CPU-Auslastung beträgt dabei lächerliche 3%.
Code:
X-Video Extension version 2.2
screen #0
Adaptor #0: "Radeon Textured Video"
number of ports: 16
port base: 57
operations supported: PutImage
supported visuals:
depth 24, visualID 0x21
number of attributes: 2
"XV_BICUBIC" (range 0 to 2)
client settable attribute
client gettable attribute (current value is 2)
"XV_VSYNC" (range 0 to 1)
client settable attribute
client gettable attribute (current value is 1)
maximum XvImage size: 4096 x 4096
Number of image formats: 4
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
Im 2D-Betrieb wird die Karte also perfekt unterstützt. Alle Funktionen
sind vorhanden, es gibt keine Fehler und nichts zu nörgeln.
3D-Beschleunigung
Ich bin ein 3D-Freak, ich habe sogar Träume in OpenGL. Daher war es für
mich in den letzten 18 Monaten eine Qual an einer Workstation zu sitzen,
die beim Wort 3D schon zu ruckeln begann, denn Beschleunigung hat sie
nicht. Die Anschaffung der X1950Pro sollte also vor allem dies Problem
lösen. Und, das kann ich vorwegnehmen, sie hat es gelöst.
Wie oben bereits gesagt, greift DRM die Karte, in Kombination mit Mesa
ab Version 7.3 - 7.2 hat die R500-Unterstützung anscheinend nur für
Linux, nicht aber für FreeBSD - ist es denn 3D-beschleunigt. Und dieses
3D funktioniert wirklich gut, große Macken die den Spaß verderben,
konnte ich nicht feststellen. Wer seinen Desktop mit XAA beschleunigt,
kann 2D und 3D nicht parallel nutzen, oder anders gesagt ist dann nur
eine 3D-Beschleunigung im Vollbild möglich. Anders bei EXA, hier können
OpenGL-Anwendungen im Fenster laufen. Da EXA auch sonst keine
Nebenwirkungen hat, würde ich stark zu ihm raten. Die Karte bietet 2
OpenGL-Renderflächen, jeweils in einer Größe von 2048x2048 Pixel. Es
können problemlos mehrere beschleunigte Fenster geöffnet werden, solange
diese gemeinsam nicht die Größe von zweimal 2048x2048 überschreiten. Ich
hatte viermal Quake II nebeneinander laufen, es ging problemlos.
Allerdings gibt es auch zwei Wermutstropfen. Einmal ist da die Tatsache,
dass im Moment nur OpenGL 1.3 hardwarebeschleunigt wird. In Zeiten von
OpenGL 3.1 ist das ein wenig marger, für 99% der Nutzer aber sicher
ausreichend. ich selbst hätte noch gern GLSL, wofür man aber OpenGL 2.1
bräuchte. Dies ist auch das, was die Karte in Hardware unterstützt, im
Rahmen des Galliumprojektes arbeitet man dort an entsprechender
Treiberunterstützung. Es ist recht wahrscheinlich, dass wir diese im
Laufe des Jahres noch sehen werden.
Dann ist dort der Linuxulator. Für 3D-Beschleunigung braucht man
mindestens Mesa3D 7.3, dier Linuxulator bringt als graphics/linux_dri
aber nur 7.0 mit. Daher kein 3D in ihm, entsprechend kein Doom 3 (was
aber dank OpenGL 1.3 eh nicht so toll laufen dürfte) oder RTCW. Eine
r300_dri.so aus Linux zu kopieren geht nicht, die Bibliothek muss
angepasst werden. Hier hilft nur warten und ich habe leider keine
Ahnung, ob dort eine Aktualisierung in Arbeit ist. Ich denke aber, dass
durch die Umstellung auf Linux 2.6.16 in -CURRENT in absehbarer Zeit ein
neues Linux-DRI kommen müsste.
In Sachen Leistung ist die Karte mehr als ich erhofft habe. Wie immer
ist sie langsamer als unter Windows, es schwangt zwischen 3% (Quake III)
und 28% (Quake II). Alles in allem ist das aber, wie ich gleich zeigen
werde, nicht kritisch. Und der noch junge Treiber bietet da sicher noch
Raum für Verbesserungen, die auch kommen werden. Um es klar zu sagen,
die Karte ist deutlich schneller als alles, was free3d.org listet. Im
Fenster ist die Darstellung etwa 5% langsamer als im Vollbild, das ist
normal.
Erst eimal die oben schon weitgehend erklärte Ausgabe von glxinfo:
Code:
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe,
GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_MESA_copy_sub_buffer
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_video_sync, GLX_SGIS_multisample,
GLX_SGIX_fbconfig
OpenGL vendor string: DRI R300 Project
OpenGL renderer string: Mesa DRI R300 20060815 TCL
OpenGL version string: 1.3 Mesa 7.3
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_imaging,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_point_parameters,
GL_ARB_shadow, GL_ARB_shadow_ambient, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_MESAX_texture_float, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos,
GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, GL_EXT_convolution,
GL_EXT_copy_texture, GL_EXT_draw_range_elements,
GL_EXT_gpu_program_parameters, GL_EXT_histogram, GL_EXT_multi_draw_arrays,
GL_EXT_packed_pixels, GL_EXT_point_parameters, GL_EXT_polygon_offset,
GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs,
GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,
GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate,
GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,
GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent,
GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program,
GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays
2 GLX Visuals
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x21 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x22 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
16 GLXFBConfigs:
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x71 0 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x72 0 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x73 0 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x74 0 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x75 0 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x76 0 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x77 0 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x78 0 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x81 0 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x82 0 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x83 0 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 0 0 None
0x84 0 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 0 0 Slow
0x85 0 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x86 0 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x87 0 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x88 0 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
glxgears:
Glxgears ist kein Benchmark, es ist genauso wie die anderen Mesa-Demos
lediglich ein Programm um OpenGL zu testen und Beispielcode zu geben.
Die Benchmarks sind sehr von der Größe des Fensters und seiner
Sichtbarkeit abhängig. Der besseren Vergleichbarkeit halber gebe ich
dennoch welche, aber bitte nicht so ernst nehmen. Das Fenster war in
Standardgröße und nicht verdeckt.
Code:
15624 frames in 5.0 seconds = 3124.631 FPS
15651 frames in 5.0 seconds = 3130.115 FPS
15647 frames in 5.0 seconds = 3129.247 FPS
15633 frames in 5.0 seconds = 3126.521 FPS
15633 frames in 5.0 seconds = 3126.416 FPS
15640 frames in 5.0 seconds = 3127.974 FPS
15648 frames in 5.0 seconds = 3129.584 FPS
15636 frames in 5.0 seconds = 3127.056 FPS
15624 frames in 5.0 seconds = 3124.772 FPS
15631 frames in 5.0 seconds = 3126.196 FPS
15631 frames in 5.0 seconds = 3126.149 FPS
15653 frames in 5.0 seconds = 3130.503 FPS
15656 frames in 5.0 seconds = 3131.007 FPS
15525 frames in 5.0 seconds = 3104.981 FPS
Quake III:
Quake III ist ein Klassiker, der auch heute noch gern gespielt wird und
als Quake Live gerade einen Neuaufguss erfahren hat. Das Spiel zeigt
das, was id Software so genial macht und was sie hoffentlich nach dem
stark unterbewerteten Doom III (Leute, durchspielen! Nicht nach 2 Level
in die Ecke werfen! Ihr werdet sehen, wie unheimlich das eigene Haus
plötzlich wird!) mit Rage wiederholen können. Ich bin kein guter Quake
III Spieler, die magischen 125 FPS sind mir ziemlich egal. Aber ja, er
schafft sie locker. Ich nutzte ioQuake3 in Revision 1515 aus dem SVN.
Ich habe es selbst gebaut und die Ports nicht genutzt, der Port ist
leider veraltet. Ich habe das Spiel in 1280x1024 bei maximalen Detail,
aber unverändertem cg_shadows laufen lassen. Getestet wurde die Demo
"four.dm3", aus fünf Läufen habe ich über Lauf 2,3 und 5 gemittelt. die
Läufe 1 bis 5 unterschieden sich aber eh nur hinter dem Komma. Erstmal
die Konsolenausgabe:
Code:
yamagi@saya:ttyp2 ~/spiele/quake3: ./ioquake3 [9:46:03]
ioq3 1.35_SVN1515M freebsd-x86_64 Mar 27 2009
----- FS_Startup -----
Current search path:
/home/yamagi/.q3a/baseq3
./baseq3/q3wpak4.pk3 (562 files)
./baseq3/q3wpak3.pk3 (447 files)
./baseq3/q3wpak2.pk3 (195 files)
./baseq3/q3wpak1.pk3 (396 files)
./baseq3/q3wpak0.pk3 (287 files)
./baseq3/q3wctf1.pk3 (116 files)
./baseq3/q3tourney7.pk3 (10 files)
./baseq3/pak8.pk3 (9 files)
./baseq3/pak7.pk3 (4 files)
./baseq3/pak6.pk3 (64 files)
./baseq3/pak5.pk3 (7 files)
./baseq3/pak4.pk3 (272 files)
./baseq3/pak3.pk3 (4 files)
./baseq3/pak2.pk3 (148 files)
./baseq3/pak1.pk3 (26 files)
./baseq3/pak0.pk3 (3539 files)
./baseq3
----------------------
6086 files in pk3 files
execing default.cfg
execing q3config.cfg
couldn't exec autoexec.cfg
Hunk_Clear: reset the hunk ok
----- Client Initialization -----
----- Initializing Renderer ----
-------------------------------
QKEY found.
----- Client Initialization Complete -----
----- R_Init -----
SDL using driver "x11"
Initializing OpenGL display
Estimated display aspect: 1.600
...setting mode 8: 1280 1024
Using 4/4/4 Color bits, 24 depth, 8 stencil display.
Available modes: '1680x1050 1440x900 720x400 640x480 800x600 832x624 1024x768 1152x864 1280x960 1400x1050 1280x1024'
GL_RENDERER: Mesa DRI R300 20060815 TCL
Initializing OpenGL extensions
...GL_EXT_texture_compression_s3tc not found
...GL_S3_s3tc not found
...using GL_EXT_texture_env_add
...using GL_ARB_multitexture
...using GL_EXT_compiled_vertex_array
...ignoring GL_EXT_texture_filter_anisotropic
GL_VENDOR: DRI R300 Project
GL_RENDERER: Mesa DRI R300 20060815 TCL
GL_VERSION: 1.3 Mesa 7.3
GL_EXTENSIONS: GL_ARB_depth_texture GL_ARB_fragment_program GL_ARB_imaging GL_ARB_multisample GL_ARB_multitexture GL_ARB_point_parameters GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_MESAX_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_rectangle GL_ARB_transpose_matrix GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_logic_op GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_EXT_convolution GL_EXT_copy_texture GL_EXT_draw_range_elements GL_EXT_gpu_program_parameters GL_EXT_histogram GL_EXT_multi_draw_arrays GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_polygon_offset GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texture GL_EXT_texture3D GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_vertex_array GL_APPLE_packed_pixels GL_ATI_blend_equation_separate GL_ATI_texture_env_combine3 GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_INGR_blend_func_separate GL_MESA_pack_invert GL_MESA_ycbcr_texture GL_MESA_window_pos GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texture_rectangle GL_NV_texgen_reflection GL_NV_vertex_program GL_OES_read_format GL_SGI_color_matrix GL_SGI_color_table GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow_ambient GL_SUN_multi_draw_arrays
GL_MAX_TEXTURE_SIZE: 4096
GL_MAX_TEXTURE_UNITS_ARB: 8
PIXELFORMAT: color(32-bits) Z(24-bit) stencil(8-bits)
MODE: 8, 1280 x 1024 fullscreen hz:N/A
GAMMA: hardware w/ 0 overbright bits
rendering primitives: single glDrawElements
texturemode: GL_LINEAR_MIPMAP_LINEAR
picmip: 0
texture bits: 32
multitexture: enabled
compiled vertex arrays: enabled
texenv add: enabled
compressed textures: disabled
Forcing glFinish
Initializing Shaders
----- finished R_Init -----
------ Initializing Sound ------
fcntl: Device not configured
Allocated 96 sources.
OpenAL default capture device is ''
grab_read_native Not implemented! (backends/alc_backend_bsd.c:409)
OpenAL capture device opened.
OpenAL info:
Vendor: OpenAL Community
Version: 1.1
Renderer: Software
AL Extensions: ALC_EXT_capture AL_EXT_capture AL_LOKI_quadriphonic AL_LOKI_play_position AL_LOKI_WAVE_format AL_LOKI_IMA_ADPCM_format AL_LOKI_buffer_data_callback ALC_LOKI_audio_channel
ALC Extensions:
Sound initialization successful.
--------------------------------
Loading vm file vm/ui.qvm...
total 0, hsize 1021, zero 1021, min 0, max 0
total 7862, hsize 1021, zero 10, min 0, max 25
VM file ui compiled to 2574196 bytes of code (0x81ac00000 - 0x81ae74774)
compilation took 0.967096 seconds
ui loaded in 1368576 bytes on the hunk
82 arenas parsed
32 bots parsed
--- Common Initialization Complete ---
Opening IP6 socket: [::]:27960
Opening IP socket: 0.0.0.0:27960
]\quit
----- CL_Shutdown -----
OpenAL capture device closed.
RE_Shutdown( 1 )
-----------------------
Und nund die Ergebnisse:
Code:
1260 frames 7.9 seconds 159.8 fps 3.0/6.3/15.0/1.3 ms
Quake II:
Quake II ist ein altes Spiel, es gehört zur ersten Generation
beschleunigter Spiele. Ich habe hier den Icculus-Port genutzt,
ebenfalls wieder selbst gebaut. Aufgrund seines Alters nutzt Quake II
einige alte, exotische GL-Extensions. Damit stellt es erfahrungsgemäß
Mesa3D vor eine schwere Aufgabe. Es könnte schneller laufen, wie oben
geschrieben ist es um 28% langsamer als unter Windows, aber immer noch
locker spielbar. Einmal die Ausgabe:
Code:
yamagi@saya:ttyp2 ~/spiele/quake2: ./quake2 [9:52:38]
Quake 2
Added packfile ./baseq2/pak0.pak (3307 files)
Added packfile ./baseq2/pak1.pak (279 files)
Added packfile ./baseq2/pak2.pak (2 files)
using /home/yamagi/.quake2/baseq2/ for writing
execing default.cfg
execing config.cfg
Console initialized.
------- sound initialization -------
sound sampling rate: 22050
------------------------------------
------- Loading ref_gl.so -------
LoadLibrary("./ref_gl.so")
Refresh: OpenGL 1.0
Using libGL.so for OpenGL...setting mode 3: 640 480
GL_VENDOR: DRI R300 Project
GL_RENDERER: Mesa DRI R300 20060815 TCL
GL_VERSION: 1.3 Mesa 7.3
GL_EXTENSIONS: GL_ARB_depth_texture GL_ARB_fragment_program GL_ARB_imaging GL_ARB_multisample GL_ARB_multitexture GL_ARB_point_parameters GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_MESAX_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_rectangle GL_ARB_transpose_matrix GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_window_pos GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_logic_op GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_EXT_convolution GL_EXT_copy_texture GL_EXT_draw_range_elements GL_EXT_gpu_program_parameters GL_EXT_histogram GL_EXT_multi_draw_arrays GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_polygon_offset GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texture GL_EXT_texture3D GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_vertex_array GL_APPLE_packed_pixels GL_ATI_blend_equation_separate GL_ATI_texture_env_combine3 GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_INGR_blend_func_separate GL_MESA_pack_invert GL_MESA_ycbcr_texture GL_MESA_window_pos GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texture_rectangle GL_NV_texgen_reflection GL_NV_vertex_program GL_OES_read_format GL_SGI_color_matrix GL_SGI_color_table GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow_ambient GL_SUN_multi_draw_arrays
...enabling GL_EXT_compiled_vertex_array
...ignoring GL_EXT_point_parameters
...GL_EXT_shared_texture_palette not found
...ignoring GL_ARB_multitexture
...GL_SGIS_multitexture not found
------------------------------------
CDAudio_Init: Unable to open default CD-ROM drive: Invalid CD-ROM drive index
------- Loading game.so -------
==== InitGame ====
------- Server Initialization -------
0 entities inhibited
0 teams with 0 entities
-------------------------------------
====== Quake2 Initialized ======
0.0.0.0:0: client_connect
==== ShutdownGame ====
Server was killed.
]quit
recursive shutdown
Dann der Benchmark, wieder 1280x1024 bei maximalen Details. Gemittelt
über Lauf 2,3 und 5 von 5 Läufen mit "demo1.dm2":
Code:
689 frames, 2.7 seconds: 255.2 fps
Blender:
Blender wurde in Version 2.48a getestet, als klassische OpenGL-Anwendung
ist es anspruchsvoll und für seine Zicken bekannt. Er leidet ein wenig
am fehlenden GLSL, aber das ist zu verschmerzen. Um Grafikfehler zu
vermeiden muss im Solidmode das linksseitige OpenGL-Lightning
abgeschaltet werden, die Objekte flackern sonst. Menüs werden korrekt
dargestellt, es gibt keine fehlenden Elemente oder schwarzen Flächen.
Die Drop-Down-Menüs könnten subjektiv gesehen ein wenig flüssiger sein,
aber das ist verschmerbar. Die Benchmarks wie immer über 5 Läufe,
gemittelt über Lauf 2,3 und 5:
Das ist nicht überragend schnell, allerdings ist die Navigation auch in
einer Szene mit 15.000.000 Polygonen noch ruckelfrei und Aussetzer
möglich. Daher auch für komplexere Aufgaben vollkommen ausreichend und
praktisch einsetzbar.
Powermanagement:
Die Karte hat wie alle R500 nur eingeschränktes Powermanagement, der
Treiber schrängt dies noch einmal ein. Der Lüfter ist selbstregelnd,
daher sehr leise, aber dies ist von Karte zu Karte unterschiedlich. Der
Stromverbrauch im Leerlauf beträgt 16W, unter Last bis zu 53W. Die Werte
sind angenähert und hinter dem Netzteil gemessen.
TV-Ausgang
Ich konnte ihn mangels Hardware - mein TV hat einen D-Sub - nicht
testen, aber nach Manpage und Mailingliste sollte er funktionieren.
VT-Switch
Funktioniert perfekt, sogar bei laufenden OpenGL-Anwendungen.
Fazit
Ich kaufte die Karte um 3D-Beschleunigung unter FreeBSD/amd64 zu
bekommen und ich bekam sie. Es läuft sehr gut, der Linuxulator und nur
OpenGL 1.3 trüben das Bild ein wenig, aber das ändert sich hoffentlich
bald. Auch im 2D-Betrieb ist die Karte hervorragend, das bei moderater
Leistungsaufnahme. Zumindest für eine Karte dieses Kalibers und ihrer
Generation. Alles in allem ein gutes Geschäft, da es die Karte nach wie
für für ca. 85 Euro neu zu erwerben gibt, gibt es nun keinen grund mehr
über mangelndes 3D unter FreeBSD/amd64 zu nörgeln. Moderne
Mittelklassekarten sind preislich in in ähnlichem Rahmen und auch nicht
schneller, aber schlechter unterstützt.
Noch ein paar Links:
Unterstützte Spiele, nicht ganz aktuell:
http://xorg.freedesktop.org/wiki/RadeonProgram
Features der Karten und Treiber:
http://xorg.freedesktop.org/wiki/RadeonFeature
Vergleichswerte:
http://www.free3d.org/