A non-technical overview of the Xgl implementation, and how it relates to Compiz and the nVidia driver, has been published by Emanuele Tamponi. Interestingly, the article mentions that Compiz requires Mesa to implement the infamous GLX_EXT_texture_from_pixmap function; but since the new beta driver from nVidia implements said function, you can now have Compiz in 3D glory without Xgl or AIGLX (howto).
Hmm… Correct me if I’m wrong but surely this how-to is explaining how to use the new nVidia driver with AIGLX (hence the Xorg 7.1 requirement)?
Yes it is, 7.1 comes with AIGLX.
“you can now have Compiz in 3D glory without Xgl or AIGLX”
This is wrong, you need Xgl or AIGLX to run compiz and AIGLX needs the EXT_Texture_from_Pixmap extension to work. Xgl can use mesa for this extension but it’s very slow scrolling and smooth scrolling is even worse.
Edited 2006-09-26 17:30
I believe(memory fuzy) that: You need EXT_Texture_from_Pixmap to run compiz and not (aiglx or Xgl)
Aiglx provides as the name says , accelerated indirect rendering and Xgl could provide EXT_Texture_from_Pixmap without the need for it to be in the driver.
nvidia driver already provided accelerated indirect rendering but didn’t yet provide EXT_Texture_from_Pixmap.
This is wrong, you need Xgl or AIGLX to run compiz and AIGLX needs the EXT_Texture_from_Pixmap extension to work. Xgl can use mesa for this extension but it’s very slow scrolling and smooth scrolling is even worse.
Many of the compiz packages are compiled against Mesa, but I downloaded Beryl from svn and compiled it, it doesn’t default to compile against Mesa anymore. I can’t exactly explain the technical details, but a couple of the devs discussed it on the nv News thread announcing the beta driver and why it does not require Xgl/AIGLX.
So I’ve got Beryl running with the new nVidia driver, without running Xgl or enabling AIGLX. Prior to compiling Beryl, I used a patched compiz-quinn that also worked. The standard compiz-quinn did not.
The nVidia howto mentions how to determine whether the compiz package is compatible; many of the existing compiz-quinn packages will not work, but you can compile from svn or use one of the patched ones.
I’m using an ancient adapter (nVidia GeoForce2 Go/32MB) on my old laptop, and my 3d desktop is noticeably more responsive and smoother than my former Xgl/Compiz-quinn combo, though I’ve still got some issues with openGL performance.
http://www.nvnews.net/vbulletin/showpost.php?p=996264&postcount=28
Note title. Confusing at first, I had things completely backwards.
GLX_EXT_texture_from_pixmap is a needed function from AIGLX to get support from device drivers.
Link mentioned 78 days ago on my obscure blog 😉
http://beranger.org/index.php?article=1267
don’t worry, the article is older
… in understanding how stable XGL is. Many folks that I talk to have concluded that XGL is still about 6 months away from being truly stable enough for daily use. That’s been my experience, too. I’ve had a bunch of crashes so far, decided to turn it off for the time being.
“in understanding how stable XGL is.”
Been rock solid for me after about a month of use. A lot of my system is self compiled, so it might be better integrated than others. But, in any case, I’ve never had a crash or glitch since setting it up.
You’re fortunate. I had several crashes a day until recently, when I turned it off.
Luckily there is no need for Xglx, or rather, there will be no need for Xgl in the future if you’re unwilling to use beta drivers or do not possess an nVidia card.
czubin is correct. What AIGLX basically *does* in the 3D accelerated desktop case is provide the GLX_EXT_TEXTURE_FROM_PIXMAP extension for drivers that use the X.org DRI subsystem – e.g. the free ATI and Intel drivers. The NVIDIA driver doesn’t use the X.org DRI subsystem, it handles everything itself, and provides the extension directly itself. If you run compiz on top of the new NVIDIA drivers, you’re not using AIGLX. (You can do a ‘grep AIGLX /var/log/Xorg.0.log’ to confirm this, if you like. On a system which uses AIGLX, like my desktop with the ATI free driver, it’ll give you a bunch of output. On a system running compiz on top of the new NVIDIA driver, it’ll give you nothing).
I always ask the same, no one seems to be able to answer.
Does Xgl do lines/rects/pixmap registering/etc (all x server side stuff) using opengl?
Or just does everything using sotware to finally load the thing into an X texture and render it?
The answer in how it works I think is sort of like this:
Xcalls -> OpenGL -> display
OpenGL -> OpenGL -> display
What I’m wondering about this setup is how good will be the font rendering with OpenGL?
Font rendering usually depends on knowing where the pixels are for a better rendering..
It’s same, as long as your windows aren’t transformed in which case it looks blurry as bitmaps are scaled and interpolated (but it’s only visible during effects, normally bitmaps-to-screen pixels are 1:1).
Possible paths are:
Xrender – it should givbe almost identical results whether it is hw accelerated or not (uses shaders where implemented – Xgl, exa ?)
Cairo – should look same across backends, glitz should use shaders.
Old X way(client renders fonts to pixmaps) – should look same as it isn’t hardware
Shaders are key to good hardware antialiasing in 3D engines (as existing AA used in games doesn’t have good precision yet). Software will of course look same in all cases.
With Avalon they should have ability to send vector data to compositor so it rasterizes fonts etc. directlty to screen, AFAIK, so you can e.g magnify or transform window without any interpolation effects. Of course I’m not certain if they already implement this somewhere, but something similar would be a nice addition to X API and would maybe also reduce memory consumption as bitmaps in video memory can be large.
OK, nice to know that this was well thought in the normal case, a bit disapointing that in case of zooming the result won’t look good in Xgl.
ALSO… I guess one of the best way’s I have heard it explained is that the Xorg xserver was ported to OpenGL.
So it does all its rendering now through OpenGL, and one benifit is that you NO LONGER NEED XDRIVERS for your video card….so no more of that X/DRI stuff for video cards to support.
…you just have to have openGL drivers for your video card which apparently is simpler for vendors to implement in the long run since they do it now anyway.
So it does all its rendering now through OpenGL, and one benifit is that you NO LONGER NEED XDRIVERS for your video card….so no more of that X/DRI stuff for video cards to support.
The video cards still need DRI support, because the OpenGL stack depends on it. You no longer need X drivers, however.
Of course, that’s all theoretical. You still need X drivers for Xglx, because you still need an X server underneath Xglx for the OpenGL stack. This requirement will remain until the distance future in which Xegl comes out, when the GL stack will be able to do modesetting, memory management, etc, without the help of the Xorg server and its X 2D driver.
I’m using right now the 9625 beta drivers which has GLX_EXT_texture_from_pixmap needed by Compiz, this don’t use AIGLX code at all, neither XGL, It’s running really well, I am so happy!!!
It look like Nvidia improved their drivers significantly. They now obviously implement their own GL compositing redirection support inside of XAA driver/OpenGL stack, so no need for aiglx/xgl.
IIRC, they were talking at XdevConf that this work is in progress. Reason is that they want to support current X functionallity that big vendors use (overlays) but also DIRECT RENDERING in composited desktop, while having seamlessly integrated 3D accelerated compiz-like effects. Well done, Nvidia.
This approach of course doesn’t make sense for DRI, as it might mean duplicating work on the same abstraction level in different X.Org drivers. That is why AIGLX/Xgl will, through Mesa GL, use DRI. I suppose that even direct rendering support with compositing effects will be possible after some of currently ongoing development for DRI gets done (and goes in mainline DRI/Mesa). Now if AMD only forces ATI to improve proprietary linux drivers (or open source it!)…