This is the mail archive of the cygwin-xfree mailing list for the Cygwin XFree86 project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

I've made a git repo available on 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://
$ 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 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:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]