Date: Tue, 07 Aug 2012 19:15:50 -0700 From: matt <sendtomatt@gmail.com> To: freebsd-x11@freebsd.org Subject: Problem with new Xorg, radeon & compiz/Kwin revisited Message-ID: <5021CBD6.6010607@gmail.com> In-Reply-To: <5021CA0E.6080608@gmail.com> References: <5021CA0E.6080608@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
A while back, I was having a strange issue with the new Xorg and compiz. In a nutshell, closing certain windows caused Xorg to exit on nasty signals. At the same time, a few users with Radeon cards were having issues with Kwin disabling opengl for no apparent reason. After some research, I had posted a patch seen in a debian mailing list as a possible solution, and it did indeed solve the immediate problem of crashing Xorg (and later I found out Kwin worked with OpenGL effects when the patch is applied). It was requested I file a PR but first investigate what issues such a patch might cause. I'm glad I waited, because there are a few. The medicine is a little worse than the disease. First, with Compiz & Xfce4, if X was told to shutdown while the previously affected programs (xfce4-terminal running under compiz & xfce4 was obvious), the machine would immediately reboot. This is obviously not good. So usually I would only logout after closing all windows (except Xfce4-panel and the root window). This would work, and the machine could be shut down from the TTY. Recently, I installed KDE4. I was so impressed that I was trying to use it as my "daily desktop". OpenGL Kwin was working fine. However, engaging the screen lock would reboot the machine, as well as the machine occasionally spontaneously rebooting. This was much worse than the above issue. The patch had one other odd effect, which was that Dri2 was disabled for some reason. I reverted the patch to xorg-server I had been running, and now Kwin will not start OpenGL mode, because it can't find an ARGBGLX visual. If Kwin is started alone, OpenGL suprisingly works. Xfce4+compiz crashes Xorg as before, however Dri2 is now enabled. The signal is a segfault at 0x0. AIGLX on/off have no effect. Here was the patch (I applied it manually looking at the file, the offsets are wrong for us): diff --git a/glx/glxdri.c b/glx/glxdri.c index 326f539..f6ef784 100644 --- a/glx/glxdri.c +++ b/glx/glxdri.c @@ -230,7 +230,7 @@ __glXDRIdrawableDestroy(__GLXdrawable *drawable) /* If the X window was destroyed, the dri DestroyWindow hook will * aready have taken care of this, so only call if pDraw isn't NULL. */ - if (drawable->pDraw != NULL) { + if (drawable->pDraw != NULL&& drawable->pDraw->type == DRAWABLE_WINDOW) { screen = (__GLXDRIscreen *) glxGetScreen(drawable->pDraw->pScreen); (*screen->core->destroyDrawable)(private->driDrawable); It seems like this shouldn't be having as much effect as it does. I can only guess the reboots are from memory problems resulting from lingering drawables? I can't explain the Dri2 interaction, nor can I explain Kwin's behavior (fairly new to KDE, last time I used it was last century :) ). For what it's worth, my driver is xf86-video-ati on a Radeon HD4650. I'm thoroughly confused by this problem and I'd welcome some help trying to solve the bug. Anyone else seeing problems with RV710 radeons and OpenGL compositing? Matt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5021CBD6.6010607>