PI Releases DRI to XF86
Frank LaMonica of
Precision Insight
wrote in to say that they have released the code
to their Direct Rendering Infrastructure to the XF86 project.
I saw this thing in action at LinuxExpo- very smooth quakin'
going on. This is a great step in the right direction of having
a fast standard 3D desktop under X. Works with Mesa's GL,
and SGIs GLX.
There's the overhead of running the X server (in terms of memory usage), and any time an additional layer of software is involved, the additional overhead is never zero (although D3D comes close). This is not to say that using GLX is a bad thing, but it will probably always be slightly slower than a non-X solution.
How important is 2D to you?
TNT2 is far ahead of g200 in 3d, but if you want REALLY GOOD 2d, i wouldn't get a TNT2. At least w/ the original TNT, people found that trying a TNT at really high resolutions (> 1280) degraded picture quality because OEM's skimped on filters. If 2D is REALLY important and you have a big screen, go for a Matrox card. But otherwise, get a TNT2, they are really good in 3D. I'd wait though for a few months and see what the g400 is doing and any newer cards.
My experience has been that X does impose a small performance hit on 3d rendering. This may just be the specific driver implementations and not something inherent in X, I don't know for certain. I do suspect that the network transparent nature of X, while adding wonderful flexibility, sacrifices some of the speed you can get by having an API that talks directly to the metal. I'll need to learn more about PI's DRI before I form an oppinion.
My main gripe, however, is with the memory that X soaks up, especially when you are running a decent window manager and/or desktop environment. Not a big deal if you are running latest and greates hardware, but I would like to write games that scale down to older hardware.
From a philosophical standpoint, I think graphics acceleration should be handled with an abstraction layer / API that sits right on top the hardware and then the windowing system sits on top of that. Graphics can then be accessed by both X and non-X apps.
GGI does this, and in fact goes a step farther. X itself can be used as a visual target by GGI apps. GGI can sit both under and on top of X, and apps transparently figure out what enviroment they are running in. When I run my game engine, for example, GGI automatically figures out if I am in X windows or on the console and loads the correct visual target automatically. I did not have to write code for this, it is a built in part of GGI's functionality.
I guess what I am saying here is that, from an architectural standpoint, GGI rocks. It is designed to be very portable and flexible. Writing GGI apps is a breeze (much easier than DirectX in my oppinion). I encourage anyone writing highly graphical apps (such as games) to check it out.
Thad
The Bolachek Journals
I think if you go to the www.nvidia.com site there is a faq, probably be able to find a mailing list from there, I would suspect.
I don't see the point in thinking of desktops as spacially positioned. I don't move left or right to get to the next desktop, I hit Alt-Fx (or whatever). I like to think of the desktop I switch to as replacing the current one and the current one just disappears. I don't care where it goes as long as I can get it back by hitting one of my key combinations.
This is something I've been thinking about a bit and may actually become feasible soon, with 4xAGP and non-square textures and texture sizes of up to 4096x4096 (eg. Matrox G400). Think of it like this: The window, and what you see on it is one texture-mapped polygon. When you rotate, zoom or perform some other operation on the window the polygon (or rather, the texture mapped on it) will become blurry because of zooming/stretching/filtering the poly, but this doesn't matter. When the window is dropped down in its new position the texture is redrawn according to the polygon's current dimension.
Using this 3d-accelerated approach, other neat things could be done; Transparency virtually free (alpha), cool light effects, or what about seeing all the letters on a page as bump maps?
Exactly. Now, where do we get these textures from? Does an X server keep some sort of cache that could be shuffled off into texture memory?
I don't know where you got the impression that AGP textures sit in system memory. Even in the very latest 3D boards they use onboard texture ram. You may get system memory textures with SGI hardware, but I for one can't afford SGI hardware.
Also, the problem I was referring to was a problem with X, not with hardware. X can clip and draw 2d rectanglar windows, nothing more. It can't work on windows with perspective. You could possibly do some very very nasty hacks with XShape, but there would be horrendous performance.
Remember X uses the principle of windows within windows, each window a 2d shape with a clipping area. You simply can't force a 3d interface into this model. You'd need a completely redesigned system that knew about depth, had 3 coords for a point, etc. This is because the root window and the window manager both use X as well: they aren't special cases which get exempted from the rules.
In other words, your idea is fine, but it doesn't mesh with the reality of the situation.
There are two fsn binaries on SGI's ftp site, you have to grab the one that is not COFF. I've run this puppy on a 6.3 O2 without a problem.
P.S.: I've heard someone is actually working on a GPL'ed clone of fsn (gfsn?). Now that + Xfree4.0 + fast 3D card would kick large quantities of arse }:-)
You might want to have a look at GDK/GTK+ and probably Imlib, since these libs are very portable and hide a lot of the basic X programming from you while providing you with a nice cacheing mechanism for pixmaps.
See http://www.gtk.org for GDK and GTK+
and http://http://www.labs.redhat.com/imlib/ for Imlib.
Need? What is this "Need".
These are computer bud! Need never entered the picture in the first place! Bah! If you have the CPU time, why not have a 3d window mangler, with sound, and peely windows and rotating menus and other worthless but buzzword compliant stuff! =)
"Computers will never truly be free until the last windows user is strangled with the entrails of the last mac user."
You might want to have a look at GDK/GTK+
and probably Imlib, since these libs are
very portable and hide a lot of the basic
X programming from you while providing you
with a nice cacheing mechanism for pixmaps.
See http://www.gtk.org for GDK and GTK+
and http://www.labs.redhat.com/imlib/ for Imlib.
The only real choice from what I can tell is voodoo.
Maybe Accelerated-X works but costs $300 - you can buy a top of the line VooDoo3 for less!
What is the likelyhood of this working on top of the Kernel Frame Buffer? It strikes me as conceptually possible with future versions of FBDev which will supposedly include some degree of acceleration to run XF86_FBDev on top of the accelerated FBDev which would remove any need for multiple X servers to run on various hardware with the implementation of a modular driver on the FBDev level. The upcoming release of XF86v4 may address this issue by implementing modular binary (loadable module ?) drivers, this could also be done on the FBDev level possibly using compatible driver interfaces allowing developers and vendors to release one version of a driver and more options to the end users!!!
If the PI DRI could happily coexist with this environment it could greatly ease X and X w/acceleration setup to the point of being almost trivial
With an accelerated FBDev GGI could also use that as the target achieving hardware acceleration for fullscreen and (X-)windowed apps. Would GLX have to be ported to XGGI? This would theoretically make hardware acceleration available on any linux platform regardless of hardware as long as the FBDev was available for its hardware.
I suppose at this point I would have to call out to any coders/hackers interested in this idea to get cracking at the FBDev code as I have no idea where to start implementing something like this and have been trying to figure it out for a while now. (I am sick of waiting for someone else to do something that might never happen.)
--cable
(behind a firewall does anyone hear your screams?)
Zoming/shrinking windows doesn't need any fancy 3D
routines, just good old fashioned 2D scaling, which is built
into the hardware of almost every graphics cards that have
been released during the last 2-3 years.
This hardware is for instance used by Windows' Media
Player to automatically rescale animations to the current
window size with virtually no CPU penalty at all...
/Tord
Posted by stodge:
What product are you using for drawing the graphics? I'm in Air Traffic Control systems, and I've seen two products that seemed reasonably quick for Linux for radars/situation displays - Intermaphics (Gallium) and ODS (Orthagon). You won't get the same graphics performance in this when comparing Linux to NT because the graphics subsystem I believe is in the Kernel in NT. I saw proof this.
And when the graphics subsystem crashes..it takes :-)
down the whole system...one of my favorite features of DirectX
Err..do you really want _binary only_ drivers?
Daryll Straus is only one person; how long will
it take for him to port his drivers to the
new architecture? I'd say nVidia and Matrox are
your best bets..as long as Matrox releases the
specs for their "warp speed" triangle setup
engine.
Does this mean I'll finally get to use a version of enlightenment that lets me push and pull windows further and closer to me?
I just wondered, will this code be helpful for the people developing non-X graphics systems too ?
Will they be able to make use of any proprietary binary accelerators released for this architecture ?
Anyone porting the nvidia drivers to this?
At least in Enlightenment, and probably most other window managers you can have *huge* numbers of deskstops both vertically and horzontally, as well as several stacked on top of each other... Think of it as Z layers of X*Y desktops.
---
Ilmari
Remove the capital letters from the e-mail-address
© ilmari. All rights reserved, all wrongs reversed
You guys Rock! Thank you for your Generous contribution.
I know its a work in in progress, but now this sets the stage for some killer 3d Apps.
Do not read this
Provided you have the right version of Irix, of course :-)
SGI's 3D Filesystem Navigator (fsn)
Everyone notice the blurb on PI's website thanking Red Hat for funding the DRI project? I'm not normally a big Red hat booster - Debian is more compatible with my preferences - but I have to admit that funding this kind of work is a very Good Thing for linux, and I think it's important that Red Hat gets some recognition for their positive contributions. This is the plus side of having more big-business (read: money) involvement in Linux.
What about GGI/KGI ?
PI, you guys Rock! Thank you for your Generous contribution.
I know its a work in in progress, but now this sets the stage for some killer 3d Apps.
Do not read this
I'm very hapy with all the stuff going on
on Linux about 3D/mesa/GLX/...
But I have a question about 2D graphics on X.
Is their any good (open) API for doing 2D
graphics (and imaging) on X ?
X iteself is rather basic in it's functionalities,
and is painfully slooooooowwwwww.
Here at my job we're doing radar simulation.
We use off the shelf PC, Xwindows, Solaris/Linux.
But the drawing are way too slow. The clien-server
stuff, packaging of the data slow everthing down.
(Understand that we run locally, DISPLAY=:0.0
so that we use shared memory instead of network
stack).
Maybe we don't use correctly X ?
anybody has pointers ?
thanks
Pascal.
How 'bout a 2nd 'mouse' which is really just a small cluster of programmable keys, allowing you to perform 2-handed mouse/kybd manipulations (ala quake +mlook) without using the actual keyboard.
I know, it's yet another piece of crap to clutter up the desk. Maybe a footswitch to toggle the mouse between 2/3d?
**>>BELCH
That's exactly my sentiment as well. The mouse wheel would be perfect for a 3D window manager. No need to minimize windows, just zip them into the distant Z direction using the mouse wheel. Control/Shift-Mouse wheel and you could *move* through the Z direction, eliminating the need for virtual desktops. Kind of like a first person 3d shooter game, except the walls would be your xterms ;). Some mice have two wheels and you could use the horizontal one to spin the window around the Y axis or whatever.
:(.
I've actually met a guy at the local LUG that wrote an extension to X that allowed for 3D windows (you would use a combination of keyboard/mouse to move the window in the z direction), but it usually crashed within a few minutes and was dog slow
--- A Jesus Fish eating a Darwin Fish only proves Darwin's point.
Mice are pretty horrible for 3D, granted, but I kinda like my logitech trackman marble+ trackball...
It's got the trackball for 2 axes, and the mouse wheel for the third. Any intellimouse, of course, has the same wheel , but the marble+ "feels" pretty good compared to the mouse(this is entirely subjective) X calls the mouse wheel the z-axis - as in ZAxisMapping 4 5 in XF86Config to get the mouse wheel working in the first place.
Choice of masters is not freedom.
To add to that info, hw accel is available for the VooDoo(Graphics,2,Rush,3) chipsets.
sure, its binary-only, sure, its glx only, but its quite playable for me in quake2 with a celeron @ 450 and a v3 2000 agp.
Seems to me that the mouse wheel (which I love) could do that job quite intuitively. Wheel up to push, wheel down to pull.
Well, actually, the wheel is better used for rate-of-climb control... you can grab with the left button, then use the mouse to drive around in 3D space using an Ultima-Underworld style control system, towing your 3D objects with you. (I've been doing it for a few years now:) Err, that's if you want to fly around inside your windows. If you want to sit in one place and pull them around, then when you want is thumbwheel towards you for pull and away for push, leaving your fingers free for grabbing.
BTW, flying around inside a windowing system is LOTS of fun, once you've done it you'll find 2D graphics kinda dull...
Life's a bitch but somebody's gotta do it.
How about get rid of the mouse entirely and add a device that can track your hands in 3D space. Maybe a quickcam on either side of the monitor, maybe some sonar thing.
Delineate a cube in front of your computer that becomes your "Desktop" You reach into your desktop to manipulate windows.
Better yet, combine this concept with the eyeglass mounted displays and actually project the display into 3D, right on your retinas.
Well, I may be a bit bias, since I have a TNT, but the way I see it, nVidia seems to be the most commited to the linux community. They make very high quality chipsets and are the hottest graphics company out there, so the commercial muscle out there will be behind nVidia getting those drivers to the masses. I dont know too much about Matrox, but I am gaining respect for them also. But at this time, my choice for a good high quality 3D solution would be a TNT2 card. Might I suggest Hercules' Ultra TNT2 cards (http://www.hercules.com)
Are you sure you want to use "X," "fast," and "standard" all in the same sentence? You might as well go ahead and say "Windows never crashes" as say "X is fast."
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I'd been following PI's plans for a while, and I'm indeed pleased to see they've punched in a milestone. CG freaks here know that GLX is an important OpenGL extension, don't we? And of course it'd be the clean way to code 3d apps, making use of your hardware.
Now we can start coding some 3d apps, demos, games. Where was my OpenGL book?
--exa--
I have a question to add:
:-)
I currently have a Matrox Millenium G200 (great 2D card), and a rather old Voodoo 1 for the 3D stuff. I want to upgrade my 3D capabilities soon, so I'll be looking a new card. In light of recent events, 3DFX is no longer an option
Now, both the G200 and the nVidia TNT2 are 2D/3D combos, right? From what I've read, the TNT2 is a much better 3D card than the G200, is that the case?
Sooo, should I buy a TNT2 and get rid of the G200? Or is the G200 going to be sufficient? Let's assume performance is more important than cost for now, which should I go for?
multithreaded DRI drivers using multithreaded XFree86 server using multithreaded Glibc runing on multithreaded kernel, looks like a bright future for us with 2 or more CPU's in our box :)
I'd always thought that OpenGL rendering pipeline mimicked SGI's gfx hardware. :) Of course the OpenGL API is designed to give the maximum performance and still have you write portable code. Although the number of OpenGL features, extensions (and some SGI oddities) make it a bit large, I think OpenGL is the *ONLY* decent low level graphics API that lets you code *realtime* 2d/3d graphics; especially if you're not going for a software renderer. [it's okay to forget about DirectX ]
I'd checked the design documents when PI released them and they did seem reasonable. Lacking only a few features (at least at first release), the GNU/Linux platform is going to be excellent for 3d. We'll be seeing a lot of catchy 3d stuff: modelers, games, demos, window managers, etc. I think that the GL support in GUI toolkits will just make it better (like the one for GTK+)...
--exa--
As long as the discussion is focused on X, 3D, and video cards and such, I'd like someone to help me get back up to speed on some things.
I definitely don't want this to turn into a chipset war, but a fast summary of who's making what, whose drivers are being open sourced or will be (3dfx, nVidia, Matrox, etc.), the state of 2D support and potential for 3D would be very helpful.
Mostly because I'm budgeting for a new system later this summer (granted, the pace of things may make forecasts difficult) and I'd like something rock-solid under 2D and hopefully with a bright future as far as 3D is concerned.
Thanks for any offerings.
Seems to me that the mouse wheel (which I love) could do that job quite intuitively. Wheel up to push, wheel down to pull.