WinGlide FAQ

Last updated September 2, 1999


What is WinGlide?
Does WinGlide work with the 3DNow! enhanced version of Quake II?
Does WinGlide work with Microsoft Flight Simulator 98?

Does WinGlide have any 3DNow! optimizations?
Why are the images displayed by Overlay WinGlide mode not visible when doing a screen capture?
Does WinGlide work with 3D Studio MAX R2?
Will installing WinGlide reduce full screen performance?

Does WinGlide work with a Voodoo Rush, Voodoo Banshee, or Voodoo3 based card?
Why won't new versions of WinGlide work with SLI mode?


Go back to Chris' WinGlide Page


What is WinGlide?
WinGlide allows Voodoo and Voodoo2 graphics cards to output to a window. WinGlide is often used with a 3Dfx MiniGL or 3Dfx OpenGL Beta 2.1, and this combination will allow some games and other applications that use OpenGL to use a Voodoo or Voodoo2 for accelerated windowed rendering. Note that because of the way 3Dfx OpenGL Beta 2.1 works with WinGlide, there are many OpenGL applications that cannot work with this combination.

To support windowed rendering, WinGlide has to move each frame from the 3Dfx card to the primary display adapter and because of certain hardware issues, windowed performance will be much lower than full screen performance but it will often be a lot faster than using software rendering.

When WinGlide is used with 3Dfx OpenGL Beta 2.1, using OpenGL to render to a single window is supported but multiple windows are not supported. Application that use OpenGL to render to multiple windows will probably not work at all with this combination or they may not work correctly. A list of unsupported features and known problems that may cause certain applications to have problems with 3Dfx OpenGL Beta 2.1 is contained in the release notes that come with 3Dfx OpenGL Beta 2.1.

WinGlide now supports different modes of operation that add additional features and/or improve performance. Check the main page for more information about features specific to these various modes that WinGlide supports.


Does WinGlide work with the 3DNow! enhanced version of Quake II?
No. The file 3dfxglam.dll from the 3DNow! enhanced version of Quake II appears to have glide2x.dll functionality integrated into it. Because of this, it does not load glide2x.dll and therefore cannot load WinGlide.

Dana Neff sent in some config files for Quake II that make it easy to switch between full screen with 3DNow! enhancements and windowed without 3DNow! enhancements. Although the benefits of 3DNow! will not be available while running windowed, these config files make it easy to use WinGlide with a 3DNow! enhanced Quake II setup.

Hotkey bindings for switching between full screen and windowed are added to autoexec.cfg:

bind f5 "exec window.cfg"
bind f6 "exec fullscreen.cfg"
Commands for switching to the 3dfxgl driver that works with WinGlide and switching to a windowed video mode are placed in window.cfg:
set vid_ref "gl"
set gl_driver "3dfxgl"
set vid_fullscreen "0"
set gl_mode "0"
Commands for switching to the 3DNow! enhanced driver for optimal performance and switching to a full screen video mode are placed in fullscreen.cfg:
set gl_mode "4"
set gl_driver "3dfxglam"
set vid_ref "glam"
set vid_fullscreen "1"

Does WinGlide work with Microsoft Flight Simulator 98?
No. Microsoft Flight Simulator 98 uses Direct3D but WinGlide does not work with Direct3D.


Does WinGlide have any 3DNow! optimizations?
No. 3DNow! instructions will not be able to significantly improve WinGlide performance. Almost all of the 3DNow! instructions are used for floating point operations but WinGlide does not do much floating point math and the floating point math it does do is not in the very performance critical parts of the code. The new 3DNow! fast emms instruction and the new prefetch instruction will also not be able to significantly improve WinGlide's performance.


Why are the images displayed by Overlay WinGlide mode not visible when doing a screen capture?
Whether a screen capture may not appear to work correctly when using Overlay WinGlide mode depends on how the video card being used with WinGlide implements overlay support and what program was used to do the screen capture. When many video cards display the contents of an overlay surface, the image in the overlay surface is never copied into the memory storing the primary surface. Many screen capture programs will just grab the primary surface and get the image displayed behind the overlay surface being used by WinGlide instead of the image in the overlay surface. This is why you might see a plain colored rectangle in a screen capture when using Overlay WinGlide mode instead of the image you saw being displayed by WinGlide when looking at the monitor.

Note that the screen capture issue mentioned above is related to hardware overlay support. There will not be any problems like this with screen captures when using other WinGlide modes that do not use hardware overlay surfaces.


Does WinGlide work with 3D Studio MAX R2?
No. 3Dfx OpenGL Beta 2.1, which can be used with WinGlide and a Voodoo or Voodoo2 based card to provide OpenGL rendering in a window, only supports one OpenGL rendering context but 3D Studio MAX R2 uses more than one rendering context. The multiple rendering contexts combined with the multiple threads used by 3DS MAX R2 can cause a lot of problems when used with a WinGlide and 3Dfx OpenGL Beta 2.1 combination. I believe other 3Dfx OpenGL drivers like the Mesa Voodoo driver have similar single context limitations when being used with a Voodoo or Voodoo2 based card.


Will installing WinGlide reduce full screen performance?
Installing WinGlide can reduce full screen performance but the performance hit is extremely small. The way WinGlide works, regardless of whether windowed mode is being used or not, it must do some processing to pass any function call to glide2x.dll through to the glide2x.dll in the system directory. This processing is what can slow things down a tiny bit when WinGlide is installed and a full screen video mode is being used. Starting with WinGlide v0.96, some optimizations were added to WinGlide that made this already small performance hit even smaller. I ran some benchmarks on my computer with a Diamond Monster 3D and a Pentium II running at 266MHz, and I didn't see any full screen performance hit at all when WinGlide was installed because my 3Dfx card was the bottleneck. The extra instructions that were WinGlide overhead were executed by the CPU during part of the time it would have been waiting on the 3Dfx card to finish drawing triangles anyway. On systems with a faster 3Dfx card and/or a slower processor, a very small full screen performance hit may be observed when WinGlide is installed. How big or small the performance hit is depends on the specific system configuration but it is small enough that it should not be noticed at all in typical situations unless running a benchmark that can distinguish between small performance differences.


Does WinGlide work with a Voodoo Rush, Voodoo Banshee, or Voodoo3 based card?
WinGlide is designed to work with most Voodoo Graphics and Voodoo2 based 3D only addon video cards. It is not designed to work with and should not be used with any of the video cards based on 2D/3D chipsets from 3dfx such as those that use the Voodoo Rush, Voodoo Banshee, or Vodooo3 chipset. Windowed support for these 2D/3D video cards should be provided entirely by the display drivers for the card. If you have one of these 2D/3D video cards and are having trouble with windowed support, you may want to see if there are any newer display drivers that might be able to fix this issue.

I have not been able to try using WinGlide with a video cards that uses a 2D/3D chipset from 3dfx to see if it might work or to see how it fails if it does not work. I doubt that it would work at all, but I don't know for sure. If some of these video cards and their display drivers had enough backwards compatibility in them and WinGlide did happen to work, it would be very far from an optimal solution for windowed support.

Why won't new versions of WinGlide work with SLI mode?
Although the original WinGlide v0.5 can work with SLI mode, my newer optimized versions of WinGlide will not work when SLI mode in use. A limitation in the Glide API when SLI mode is in use presents a major problem for my optimized versions of WinGlide. If you want to run a recent version of WinGlide with an SLI system and there is an easy way to temporarily disable SLI (such as an environment variable or a checkbox on a display settings tab), you should do this and only run with a single card when using WinGlide. Although half of the potential fill rate is lost when doing this, in most cases, overall performance will be better than if a less optimized WinGlide that worked around the SLI mode Glide limitation was used. Keep reading if you are interested in more detailed technical information about why it works out this way.

WinGlide provides windowed output by reading frames back from the 3dfx card and then writing them to the primary display adapter. When using the Glide API to read frames back from a 3dfx card, there is a limitation that is present when SLI mode is in use. There are two ways to read the contents of the back buffer from a 3dfx card using Glide: Locking the frame buffer for direct access or using the grLfbReadRegion function. Unfortunately, it is not possible to lock the back buffer when SLI mode is in use. The only way to read back data from the back buffer on an SLI system with current releases of both Glide 2.x and Glide 3.x is to use the grLfbReadRegion function. Using the grLfbReadRegion function to copy part of the back buffer into memory instead of locking the back buffer for direct access causes some problems for WinGlide:
    1. On a lot of typical PC hardware (probably a large majority of it), the grLfbReadRegion function can only read back data from a 3dfx Voodoo Graphics or Voodoo2 based card approximately twice as slow as some of my optimized code. Although SLI can provide twice the fill rate, the 2X performance penalty when reading frames back from the 3dfx card will, in most cases, hurt performance more than the 2X fill rate will help it. Although I haven't run any grLfbReadRegion benchmarks with the very latest drivers from 3dfx, I have no reason to believe the performance of this function is significantly better than when I last tested it. Even if this function did perform better, reading frames back this way would cause other problems for WinGlide.
    2. Not having direct frame buffer access would prevent WinGlide from efficiently implementing its important gamma correction feature. WinGlide currently gamma corrects data from the 3dfx card in between reading it from the 3dfx card and writing it to main memory (or directly to the primary display adapter depending on which mode is being used). Since reading frames back from the 3dfx card is already very slow and accessing main memory is slow relative to current CPU and cache speeds, a lot of the CPU cycles WinGlide needs for gamma correction are free when it can apply the gamma correction in between reading data from the 3dfx card and writing it to main memory. It would not be possible for WinGlide to do efficient gamma correction like this if the grLfbReadRegion function were used. If grLfbReadRegion were used, first the grLfbReadRegion function would copy the entire frame to main memory and then WinGlide would need to make a second pass across all of the data in the frame to apply the gamma correction. Performance could be improved a bit by processing each frame in smaller portions rather than all at once to keep things fitting well in the caches, but this would make things much more complicated and it would still be necessary to make a second pass across the data in the frame to apply the gamma correction.



Copyright 1999 Chris Dohnal