3D-Beschleunigung auch im Linux-Kompatibilitätsmodus?

Ceres

Well-Known Member
Folgendes Problem: Ich habe mittlerweile eine funktionierende 3D-Hardwarebeschleunigung meines FreeBSD 8.2 (stable).
Nun habe ich 2 Spiele aus den Ports installiert, die im Linux-Binärkompatibilitätsmodus laufen. Die Spiele starten auch, nur scheint dort die 3D-Beschleunigung nicht zu funktionieren. Bereits die Menüs ruckeln etwas, so das an spielen gar nicht erst zu denken ist. Auch wenn ich die 3D-Beschleunigung im FreeBSD ausschalte ruckeln die Menüs genauso stark, weswegen ich davon ausgehe, dass mir im Kompatibilitätsmodus diese Beschleunigung nicht zur Verfügung steht.
Kann/Muss ich das erst aktivieren? Wenn ja, wie bekomme ich 3D-Unterstützung für Linux-Programme?

FreeBSD 8.2 stable
linux_base-f10
Radeon HD 2600XT mit radeon-Treiber und funktionierender 3D-Beschleunigung
 
Die frage ist eher, wird meine Karte durch die mit Xorg gelieferten Treiber unterstützt. Habe zwar keine Radeon, daher kann ich dir nicht sagen ob diese Karte unterstützt wird, aber wie sieht denn deine xorg.conf aus?

Ich greife im Zweifelsfall auf NVidia-Karten und dem Blob, da funktionieren die meisten Karten bis auf die ganz neuen. Da ist eventuel mit Glück ein neuer Treiber von NVidia zu holen, wo die Karten unterstützt schon werden. Muss natürlich dann manuell installiert werden.
 
Also... An sich geht freie 3D-Beschleunigung auch im Linuxulator. Allerdings gibt es eine drastische Einschränkung, die dich wahrscheinlich beißt: FreeBSD kann derzeit kein "Mixed Mode DRM", d.h. für funktionierende Beschleunigung muss der Kernel die gleiche Bittiefe wie die Anwendung haben. Oder anders gesagt, unter FreeBSD/amd64 sind 32-Bit Anwendungen unbeschleunigt. Und das sind alle Linuxanwendungen.

Es ist auch nicht absehbar, dass sich daran was ändert. Die DRM / DRI Sache ist einfach verdammt defekt implementiert. Linux "löst" dieses Problem, indem sie zwei DRM-Implementierungen parallel betreiben, eine für i386 und eine für amd64. Der Kernel wählt dann automagisch die korrekte aus. Unter FreeBSD wird man einen solchen Hack aus verschiedenen Gründen aber eher nicht sehen.

Das ernüchternde Fazit ist, dass derzeit unter FreeBSD/amd64 nur Nvidia Linux-Anwendungen beschleunigen kann, da man dort DRM umgeht und Mixed Mode unterstützt.
 
..., aber wie sieht denn deine xorg.conf aus?

Meine xorg.conf sieht folgendermaßen aus:
Code:
Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/local/lib/xorg/modules"
	FontPath     "/usr/local/lib/X11/fonts/misc/"
	FontPath     "/usr/local/lib/X11/fonts/TTF/"
	FontPath     "/usr/local/lib/X11/fonts/OTF"
	FontPath     "/usr/local/lib/X11/fonts/Type1/"
	FontPath     "/usr/local/lib/X11/fonts/100dpi/"
	FontPath     "/usr/local/lib/X11/fonts/75dpi/"

	FontPath	"/usr/local/lib/X11/fonts/URW/"
	FontPath	"/usr/local/lib/X11/fonts/freefont/"
	FontPath	"/usr/local/lib/X11/fonts/bitstream-vera/"
	FontPath	"/usr/loacl/lib/X11/fonts/webfonts/"
EndSection

Section "Module"
	Load  "extmod"
	Load  "record"
	Load  "dbe"
	Load  "glx"
	Load  "dri"
	Load  "dri2"

	Load	"freetype"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
	Option		"XkbLayout"	"de"
	Option		"XkbModel"	"pc105"
	Option		"XkbVariant"	"nodeadkeys"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/sysmouse"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	#DisplaySize	  370   300	# mm
	Identifier   "Monitor0"
	VendorName   "AIC"
	ModelName    "F-419"
	HorizSync    30.0 - 80.0
	VertRefresh  50.0 - 75.0
	Option	    "DPMS"
EndSection

Section "Monitor"
	Identifier	"Monitor1"
	Option		"RightOf" "Monitor0"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "NoAccel"            	# [<bool>]
        #Option     "SWcursor"           	# [<bool>]
        #Option     "Dac6Bit"            	# [<bool>]
        #Option     "Dac8Bit"            	# [<bool>]
        #Option     "BusType"            	# [<str>]
        #Option     "CPPIOMode"          	# [<bool>]
        #Option     "CPusecTimeout"      	# <i>
        #Option     "AGPMode"            	# <i>
        #Option     "AGPFastWrite"       	# [<bool>]
        #Option     "AGPSize"            	# <i>
        #Option     "GARTSize"           	# <i>
        #Option     "RingSize"           	# <i>
        #Option     "BufferSize"         	# <i>
        #Option     "EnableDepthMoves"   	# [<bool>]
        #Option     "EnablePageFlip"     	# [<bool>]
        #Option     "NoBackBuffer"       	# [<bool>]
        #Option     "DMAForXv"           	# [<bool>]
        #Option     "FBTexPercent"       	# <i>
        #Option     "DepthBits"          	# <i>
        #Option     "PCIAPERSize"        	# <i>
        #Option     "AccelDFS"           	# [<bool>]
        #Option     "IgnoreEDID"         	# [<bool>]
        #Option     "CustomEDID"         	# [<str>]
        #Option     "DisplayPriority"    	# [<str>]
        #Option     "PanelSize"          	# [<str>]
        #Option     "ForceMinDotClock"   	# <freq>
        #Option     "ColorTiling"        	# [<bool>]
        #Option     "VideoKey"           	# <i>
        #Option     "RageTheatreCrystal" 	# <i>
        #Option     "RageTheatreTunerPort" 	# <i>
        #Option     "RageTheatreCompositePort" 	# <i>
        #Option     "RageTheatreSVideoPort" 	# <i>
        #Option     "TunerType"          	# <i>
        #Option     "RageTheatreMicrocPath" 	# <str>
        #Option     "RageTheatreMicrocType" 	# <str>
        #Option     "ScalerWidth"        	# <i>
        #Option     "RenderAccel"        	# [<bool>]
        #Option     "SubPixelOrder"      	# [<str>]
        #Option     "ShowCache"          	# [<bool>]
        #Option     "ClockGating"        	# [<bool>]
        #Option     "VGAAccess"          	# [<bool>]
        #Option     "ReverseDDC"         	# [<bool>]
        #Option     "LVDSProbePLL"       	# [<bool>]
        Option     "AccelMethod"       		"EXA" 
        Option     "DRI"                	"true"
        #Option     "ConnectorTable"     	# <str>
        #Option     "DefaultConnectorTable" 	# [<bool>]
        #Option     "DefaultTMDSPLL"     	# [<bool>]
        #Option     "TVDACLoadDetect"    	# [<bool>]
        #Option     "ForceTVOut"         	# [<bool>]
        #Option     "TVStandard"         	# <str>
        #Option     "IgnoreLidStatus"    	# [<bool>]
        #Option     "DefaultTVDACAdj"    	# [<bool>]
        #Option     "Int10"              	# [<bool>]
        #Option     "EXAVSync"           	# [<bool>]
        #Option     "ATOMTVOut"          	# [<bool>]
        #Option     "R4xxATOM"           	# [<bool>]
        #Option     "ForceLowPowerMode"  	# [<bool>]
        #Option     "DynamicPM"          	# [<bool>]
        #Option     "NewPLL"             	# [<bool>]
        #Option     "ZaphodHeads"        	# <str>
	Identifier  "Card0"
	Driver      "radeon"
	VendorName  "ATI Technologies Inc"
	BoardName   "RV630 [Radeon HD 2600XT]"
	BusID       "PCI:5:0:0"
	Option		"Monitor-DVI-0"	"Monitor0"
	Option		"Monitor-DVI-1"	"Monitor1"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	Monitor		"Monitor1"
	SubSection "Display"
		Virtual		3840 1200
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes	"1920x1200"
		Virtual	3840 1200
	EndSubSection
EndSection

Section "ServerFlags"
	Option		"AutoAddDevices"	"off"
EndSection

Section "DRI"
	Mode	0666
EndSection

#Section "Extensions"
#	Option		"Composite"	"Enable"
#EndSection

...
Das ernüchternde Fazit ist, dass derzeit unter FreeBSD/amd64 nur Nvidia Linux-Anwendungen beschleunigen kann, da man dort DRM umgeht und Mixed Mode unterstützt.

Ich habe vergessen zuerwähnen, dass ich i386 nutze. Also gehe ich mal davon aus, dass es an dem von dir genannten fehlenden "Mixed Mode DRM" nicht liegen kann.
 
Ja, da sollte es dann gehen. Wobei ich magels praktischer Erfahrung nicht mehr dazu sagen kann :/
 
Ich kann da an deiner xorg.conf nichts auffälliges entdecken. Wenn du sagts, du hast die 3D-Beschleunigung zum laufen bekommen. Was eventuell bei BzFlag, Cube und Warsow der fall ist und bei dir aber linux-enemy-territory nicht läuft, könnte eventell linux-dri bei deiner Installation fehlen.
 
Ich kann da an deiner xorg.conf nichts auffälliges entdecken. Wenn du sagts, du hast die 3D-Beschleunigung zum laufen bekommen. Was eventuell bei BzFlag, Cube und Warsow der fall ist und bei dir aber linux-enemy-territory nicht läuft, könnte eventell linux-dri bei deiner Installation fehlen.

linux-dri-7.4_1 ist installiert. Oder wird für linux-base-f10 (welches ich einsetze) auch linux-f10-dri benötigt? Allerdings ist das erst in Version 7.2 verfügbar und beißt sich mit dem linux-dri-7.4_1.
Vielleicht bringe ich im Folgenden auch etwas durcheinander, aber: Für die 3D-Beschleunigung mit dem radeon-Treiber wird unter FreeBSD ja definitiv Mesa-7.6 benötigt. Mit 7.4 funktioniert es nicht. linux-dri bringt aber nur libraries aus Mesa-7.4 mit. Kann es sein, dass dort die 3D-Unterstützung nicht greift, da die Linuxanwendungen auf ältere libraries zugreifen? Oder ist das gerade absoluter Scchwachsinn, was ich hier erzähle?
 
Nimm mal das linux-f10-dri, das ist für das fedora 10 das richtige, das linux-dri-7.4_1 kannst du deinstallieren.
 
Nimm mal das linux-f10-dri, das ist für das fedora 10 das richtige, das linux-dri-7.4_1 kannst du deinstallieren.

Macht die ganze Sache nur noch schlimmer insofern, dass die Spiele gar nicht mehr starten, sondern es mehrere Fehlermeldungen gibt.

Es handelt sich übrigens bei den Spielen um Defcon und Darwinia, ich glaube das hatte ich bisher nicht erwähnt. Vielleicht kann/möchte mal jemand von euch das testen, der eine funktionierende 3D-Beschleunigung und Linuxkompatibilität hat. Die Spiele gibt es unter games/linux-defcon/ und games/linux-darwinia-demo/
 
Na hoppla, das ahnte ich nicht, die brauchen ja beide noch das graphics/linux-dri74, ok, dann muss es drauf. Das Fedora 10 DRI ist ja scheinbar noch älter als das linux-dri. Die stehen da auf dem Mesa 7.2. Merkwürdig.

Edit: Da bleibt dir nur offen, zu warten bis die Base vom Fedroa 12 in die Ports kommt, oder bis es eine neue port graphics/linux-dri76 geben wird.
 
Zuletzt bearbeitet:
Edit: Da bleibt dir nur offen, zu warten bis die Base vom Fedroa 12 in die Ports kommt, oder bis es eine neue port graphics/linux-dri76 geben wird.

Also lag ich deiner Meinung nach gar nicht so verkehrt mit der Vermutung weiter oben, dass es an Mesa 7.6 liegt, die definitiv für 3D benötigt wird (in meinem Fall) und der 7.4, die im Moment in den Linuxports ist?
Die letzte Änderung ist ja von vor 18 Monaten bei linux-dri-7.4. Vielleicht tut sich da bald etwas oder ich versuche mir die Dateien selbst zusammen zu suchen.
 
Ja tut mir leid, ist in der Tat so. Hab ja angenommen, das der Port linux-f10-dri den 7.6er enthält. War aber voll daneben geschossen von mir.
Hab das auch schon mit Yamagi bsprochen. Besser fährst du mit einer Nvidia-Karte. Mit den Radeon-Zeugs wirste auf kurz oder lang nicht glücklich.
 
Vielen Dank für eure Hilfe!

Schade, dass die Radeon-Karten noch solche Probleme bereiten. Wäre zwar schön gewesen, wenn es geklappt hätte, aber nur deswegen werde ich mir im Moment keine Nvidia-Karte kaufen. Erst, wenn sowieso ein neuer Computer oder eine neue Grafikkarte fällig wird. Der Rest funktioniert ja weitestgehend.
 
Du könntest noch versuchen dir eine Mesa 7.6 libGL für Linux zu "organisieren" und reinzukopieren... Wahrscheinlich wirst du aber noch mindestens eine libdrm brauchen und auch dann ist nicht garantiert, dass es funktioniert.
 
Naja, vieleicht wird ja das linux-dri76 inzwischen in den ports sein. Wirst dann sehen ob es dann geht. Wirst ja nicht der einzige mit solch einer Karte sein, der die 3D-Beschleunigung haben möchte oder gar braucht.
 
Ich kann bestätigen, dass games/ut2004-demo auf FreeBSD 8.2/amd64 mit Nvidia Blob sehr gut funktioniert.
 
Zurück
Oben