Hi all,

A couple of weeks ago, I decided to install the latest version of
compiz on my old Thinkpad R50e, which has an intel 855GM integrated
graphics controller. I have Fedora 9 installed on it which comes with
X.org 7.3 which I configured to run in 16bit (DefaultDepth in
/etc/X11/xorg.conf). So I got the RPMs installed and ran it: the
screen turns into plain white and the desktop isn't useable anymore.
However, the 3D desktop cube is there and what I get is actually a
cube with white 4 faces/textures. I looked up the internet and I
managed to restore the normal behavior by disabling the EXA
acceleration and putting back XAA and changing the X server color
depth to 24bit.

Now, my goal is to get compiz working in 16bit mode since the X (and
the 855GM) is much faster when running in that mode. So I had
DefaultDepth changed back to 16bit again (glxinfo returns a list of
visuals which are 16bit only and it indicates that  direct rendering
is enabled) and then ran compiz: the windows decoration disappeared
(yes, I have emerald --replace specified in ccm and every other effect
working properly in that mode) and I have a lot of:

compiz (core) Warn: No GLXFBConfig for depth 32.

That message comes from bindPixmapToTexture, in src/texture.c:249, and
is caused by GLX failing to find a supported mode (which should be
provided by the DRI driver, intel in my case) for 32bit pixmaps. Since
it's not recommended to mess with X drivers at this point, I wondered
if it could be possible to get the involved pixmaps (that would be
used later for the decoration) constructed in 16bit (i.e the same
color depth used by the screen). I looked up the pixmap creation code
(associated with the warning message) and found that it's done in
decor_shadow_create, in compiz/libdecoration/decoration.c:1106 and
actually all pixmaps are created using:

XCreatePixmap (xdisplay, xroot, d_width, d_height, 32);
which states an explicit 32bit color depth for the pixmap.

The same goes for emerald with code like, in emerald/src/main.c:52

visual = gdk_visual_get_best_with_depth(32) and
pixmap = gdk_pixmap_new(NULL, w, h, 32);

My questions are:
1. Is it really required to have offscreen pixmaps created in 32bit?
2. If not, is it possible to replace those pieces of code by something like:

XGetWindowAttributes (xdisplay, xroot, &attr);
texture->pixmap = XCreatePixmap (xdisplay, xroot, d_width, d_height,
attr.depth)?

That way I can have a nice compiz experience/performance even on my old 855GM.

Regards,
Ilyes Gouta.
_______________________________________________
Dev mailing list
[email protected]
http://lists.compiz-fusion.org/mailman/listinfo/dev

Reply via email to