This is the mail archive of the
mailing list for the Cygwin XFree86 project.
[1.7] Call for Testing - Accelerated GL (AIGLX) for the Cygwin/X X server
- From: Jon TURNEY <jon dot turney at dronecode dot org dot uk>
- To: cygwin-xfree at cygwin dot com
- Date: Tue, 30 Jun 2009 18:38:07 +0100
- Subject: [1.7] Call for Testing - Accelerated GL (AIGLX) for the Cygwin/X X server
- Reply-to: cygwin-xfree at cygwin dot com
I've made a git repo available on freedesktop.org which contains the work I've
been doing to add hardware-accelerated indirect GLX to the Cygwin/X server,
which is basically a complete rewrite as the code has rusted severely due to
server changes since the last time it was touched.
This can be built using the instructions from my previous mail ,
substituting the following git commands to checkout from the cygwin-aiglx branch
$ git clone git://anongit.freedesktop.org/~jturney/xserver
$ cd xserver
$ git checkout -b cygwin-aiglx origin/cygwin-aiglx
As this work is based on the server-1.6-branch (with all the cygwin patches
applied), in order to build this, you will need the various updated
dependencies for that, which have recently been released for Cygwin 1.7
Some mesa demos seem to work for me, I'm really interested in this stage in
discovering if it works at all for other people (especially since I probably
get to deal with some graphics-card vendor specific issues at some stage). I
don't think we're at the stage of trying real applications yet :-)
* At the moment, testing with remote Linux clients is easier (see below), but
it seems that mesa's libGL prefers to use client-side swrast and transfer the
image to the server using xlib. To force the use of GLX so rendering is
indirect (takes place on the server), and thus can be accelerated, set the
environment variable LIBGL_ALWAYS_INDIRECT.
* For local clients, Cygwin's current libGL is built --with-driver=x11, but
the code to use GLX in that driver looks like it's been disabled since 2005,
so it *always* uses client-side swrast and transfers the image using xlib, and
there is no option to make it use indirect (server-side) rendering. I have a
separate patch-set to make it possible to build a Cygwin libGL
--with-driver=dri --with-dri-driver=swrast, so that LIBGL_ALWAYS_INDIRECT can
be used, as above.
As the mesa patch-set is really ugly at the moment, and as a convenience,
pointing 1.7's setup.exe at http://www.dronecode.org.uk/cygwin/ should enable
you to install an updated libGL1 package built with those patches (the source
is also available if you wish to see the gruesome details). There's also an
additional mesademos package which contains a large number of GL test programs
included with the mesa source which are not normally shipped.
* You need to provide the command line option '-wgl' to the X server to turn
on the code which uses native Windows OpenGL to implement GLX. If you don't
use this option to turn the code on, you will carry on using software rendering.
* If you have followed the above instructions successfully, 'glxinfo | grep
OpenGL' should return something mentioning your graphics card vendor. If it
mentions Mesa, you still have software rendering
* As before, only multiwindow/mwextwm modes are supported. Software rendering
is always used on screens which do not have 1 native window per X window.
There's no way I know of to tell the native OpenGL to transform/clip to the
portion of the native window occupied by the X window in the single root
native window modes.
* Known issues: pixmap drawables don't have the right contents when read by
XGetImage. Don't even think of using this on a multi-monitor system :-)
* Not working: overlays, pixmap textures, multisample do not work, and those
features should not be offered by the server. It looks like it should be
possible to implement some of these using various WGL extensions, but I'd like
to test the core a bit first...
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html