[1.7] Call for Testing - Accelerated GL (AIGLX) for the Cygwin/X X server

Jon TURNEY jon.turney@dronecode.org.uk
Tue Jun 30 17:38:00 GMT 2009


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 [1], 
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 :-)



Notes:
* 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...

http://www.dronecode.org.uk/glxgears_is_not_a_benchmark_3.png


[1] http://cygwin.com/ml/cygwin-xfree/2009-06/msg00076.html

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/



More information about the Cygwin-xfree mailing list