The Cygwin/X X Server supports both software OpenGL rendering (using the mesa software renderer), and hardware accelerated OpenGL rendering (using the native Windows OpenGL (WGL) interface).
The X server command line options -wgl
and
-nowgl
turn on and off the use of the native Windows
OpenGL implementation.
Currently -wgl
is only supported in multiwindow mode, and
is on by default in that mode.
-wgl
has no effect if your display driver does not
support hardware-accelerated OpenGL.
The creation of indirect GLX contexts is disabled by default.
The +iglx
option is required to allow them.
Table 3-1. Summary of OpenGL rendering options
|
software rendering a |
hardware-accelerated rendering |
---|---|---|
indirect (Uses GLX protocol, limited to OpenGL 1.4) |
start server with export LIBGL_ALWAYS_INDIRECT=1 |
start server with export LIBGL_ALWAYS_INDIRECT=1 |
direct | export LIBGL_ALWAYS_SOFTWARE=1 |
start server with (local clients only) |
Notes: a. The software renderer used (e.g. llvmpipe, softpipe, swr) can be selected using the GALLIUM_DRIVER environment variable. |
Currently the default configurations are:
For local clients the default is direct, hardware-accelerated rendering.
To use software rendering, you must do export LIBGL_ALWAYS_SOFTWARE=1 before starting the client application.
For remote clients, Mesa's libGL prefers to use client-side software rendering and then transfer the rendered image to the server.
To force indirect rendering
(which takes place on the server), you must start the server with the
+iglx
option and do export
LIBGL_ALWAYS_INDIRECT=1 before starting the client application.
There is a performance trade-off between rendering performance and network latency, so you might wish to try both direct and indirect rendering and see which performs best in your specific circumstances.
If glxinfo | grep OpenGL outputs something mentioning your graphics card vendor, you have hardware-accelerated rendering. If it mentions Mesa, you have software rendering.
Please ensure you are using the latest display drivers for your graphics hardware before reporting any visual issues with WGL.
Note: Please report problems with specific OpenGL applications to the cygwin mailing list.
Known issues:
OpenGL drawing is just drawn on top of the X window. This works well enough when the OpenGL window is a top-level window, or is non-top-level and has no occluding relatives and is drawn after anything it occludes, but can mis-render in more complex scenarios.
OpenGL windows with static contents aren't re-drawn when occluded by a native Window and then exposed. Workaround: force the window to redraw, e.g. by resizing it.
When an OpenGL window is behind a native application window which uses layered windows for translucency, the OpenGL rendering is drawn over the top, flickering.
Rendering to GLX pixmaps is only partially implemented due to WGL limitations.