Glide

A 3D API developed by the 3dfx company. Glide only works with Voodoo based 3D cards and in many ways it is very similar to OpenGL. You can write an entire 3D application using Glide and it should (in theory) run on any Voodoo based 3D card. Glide is now open source.

What's the relationship between Glide and DRI?

Right now the picture looks like this:

Client -> OpenGL / GLX -> Glide as HAL (DRI) -> hardware

In this layout the Glide (DRI) is really a hardware abstraction layer. The only API exposed it OpenGL and Glide (DRI) only works with OpenGL. It isn't useful by itself.

There are a few Glide only games. 3dfx would like to see those work. So the current solution, shown above, doesn't work since the Glide API isn't available. Instead we need:

Client -> Glide as API (DRI) -> hw

Right now Mesa does a bunch of the DRI work, and then hands that data down to Glide. Also Mesa does all the locking of the hardware. If we're going to remove Mesa, then Glide now has to do the DRI work, and we have to do something about the locking.

The solution is actually a bit more complicated. Glide wants to use all the memory as well. We don't want the X server to draw at all. Glide will turn off drawing in the X server and grab the lock and never let it go. That way no other 3D client can start up and the X server can still process keyboard events and such for you. When the Glide app goes away we just force a big refresh event for the whole screen.

I hope that explains it. We're really not trying to encourage people to use the Glide API, it is just to allow those existing games to run. We really want people to use OpenGL directly.

Another interesting project that a few people have discussed is removing Glide from the picture at all. Just let Mesa send the actual commands to the hardware. That's the way most of our drivers were written. It would simplify the install process (you don't need Glide separately) and it might improve performance a bit, and since we're only doing this for one type of hardware (Voodoo3+) Glide isn't doing that much as a hardware abstraction layer. It's some work. There's about 50 calls from Glide we use and those aren't simple, but it might be a good project for a few people to tackle.


CategoryGlossary, CategoryFaq