Xfce with Compiz-Fusion on ATI RS880 ATI HD4250

I have made some interesting (at least to me) observations regarding my ATI HD4250 and Compiz-Fusion today. I was wondering if any of the experts could help me interpret the data.

So, I wanted to see if I could get Compiz-Fusion to run over XFCE4 with an RS880 ATI card. Here is what I did.

After installing the base system 9.0-RELEASE, I installed mesa-demos-7.6.1, and dri-7.6.1. According to the output of glxinfo:
Code:
% glxinfo | grep render
IRQ's not enabled, falling back to busy waits: 2 0 <-- This line is concerning me.
direct rendering: Yes
OpenGL renderer string: Mesa DRI R600 (RS880 9712) 20090101  TCL
I should have Direct Rendering enabled, XFCE4's compositor works as it should, but compiz does not, and why are IRQ's not enabled? Is there a way to fix this?

A trip to the FreeBSD forums did yield a little information, and a further trip to The compiz wiki caused me to try this with AIGLX. I am thinking that there is something going on here that I just don't understand. Compiz with AIGLX enabled works, but Direct Rendering does not.
My xorg.conf:
Code:
Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
        Option  "AIGLX" "True"
EndSection

Section "Extensions"
	Option	"Composite"	"Enable"
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/"
EndSection

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

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection

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

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "LGD"
	ModelName    "LP156WH2-TLAA"
        ModeLine    "1366x768"  72.3 1366 1414 1446 1526 768 771 776 790
        Option  "DPMS"
EndSection

Section "DRI"
    Group   0    Mode    0660
EndSection

Section "Device"
        Option     "AccelMethod"    "EXA"  	
	Identifier  "Card0"
	Driver      "radeon"
	VendorName  "ATI Technologies Inc"
	BoardName   "RS880M [Mobility Radeon HD 4200 Series]"
	BusID       "PCI:1:5:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
        DefaultDepth 24
        Option  "AddARGBGLXVisuals" "True"
	SubSection  "Display"
		Viewport   0 0
		Depth     24
                Modes   "1366x768"
	EndSubSection
EndSection
If using AIGLX is the only way to do it, then that is how I will do it, but I was thinking that it might be possible with Direct Rendering.
 
GLX_EXT_texture_from_pixmap, necessary to run any 3D compositor, does not work via direct rendering (only AIGLX) with the open source radeon drivers on FreeBSD. It is only available via direct rendering on systems that support KMS. This is also true for IRQs.
 
Well, now I know the underlying reason behind ecomp and ecomorph not working either, aside from the linuxcentric code of course. I am curious though, why does XFCE4's compositor work without enabling AIGLX?

*EDIT*
Ecomp and ecomorph are now working. Using AIGLX was the key to getting them to work on FreeBSD. Compiling them however was another issue entirely.
 
So I guess 3D is the keyword here. I will take this to mean that XFCE4's compositor is 2D then. Is the case the same with xcompmgr? These are questions that have not come up for me before. I tried with ecomp and ecomorph in the past, and just chalked it up to there being quite a bit of linux specific code in Enlightenment. The compositor for XFCE did what I wanted, so I didn't really question it. For some reason the other day I wanted to fiddle with compiz. It works, caveat being that I am using AIGLX. And now some things I took for granted, seem to be things that I misunderstood in the first place. I wonder, are there some resources you can point me to that are a bit more in depth than the handbook on this issue? Specifically, DRM/DRI and KMS in general, how these relate to the FreeBSD kernel, how they might possibly be implemented, etc. I assumed that with the above output from glxinfo everything was good, and I had Direct Rendering and all was good with the world.
 
There isn't a whole lot that goes into detail that is still geared towards the average user.

http://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure_(DRI)
http://dri.freedesktop.org/wiki/DRM
http://www.phoronix.com/scan.php?page=article&item=kernel_modesetting&num=1
http://dri.sourceforge.net/doc/drm_low_level.html

Then, of course, there's the source code. It's mostly split between libdrm, mesa and the kernel (both FreeBSD and Linux). KMS is has been available in the linux world for a while now, and while someone is actively working on the Intel DRM KMS/DRM code, no one is working on the radeon KMS code.
 
I did read about the Intel KMS project on Phoronix. I have used KMS on Linux successfully with the very hardware that seems to be confusing me so much on FreeBSD. I actually switched back to FreeBSD recently. Since KMS worked on Linux, I had no questions about it. As it is not yet working on FreeBSD I have quite a few questions about it. Oh well, at least compiz works for now. Thanks for your time.
 
Back
Top