Problem with Cygwin/X from remote Linux

Jon TURNEY jon.turney@dronecode.org.uk
Fri Oct 3 16:52:00 GMT 2014


On 03/10/2014 05:19, Chris Carlson wrote:
>>> I discovered there are no visuals available to remote X connections that
>>> support OpenGL double buffering.  There used to be, but no longer.
[...]
> I thought the two logs that you requested were a bit large for this
> e-mail, so I put them on my web site.  You can access them as:

Thanks.

So, this is the set visuals that the X server supports.

> GL_VERSION:     3.1.0 - Build 8.15.10.2455
> GL_VENDOR:      Intel
> GL_RENDERER:    Intel(R) HD Graphics Family
[...]
> pxf vis  fb                      render         Ste                     aux    accum        MS    drawable             Group/
> idx  ID  ID VisualType Depth Lvl RGB CI DB Swap reo  R  G  B  A   Z  S  buf AR AG AB AA  bufs num  W P Pb  Float Trans Caveat
> -----------------------------------------------------------------------------------------------------------------------------
>   1  51  42 TrueColor    32   0   y   .  .       .   8  8  8  8   0  0   0   0  0  0  0    0    0  y . y     .     .     2
>   2  52  43 TrueColor    32   0   y   .  y xchg  .   8  8  8  8   0  0   0  16 16 16 16    0    0  y . y     .     .     2
>   3  53  44 TrueColor    32   0   y   .  .       .   8  8  8  8  24  8   0   0  0  0  0    0    0  y . y     .     .     2
>   4  21  45 TrueColor    32   0   y   .  y xchg  .   8  8  8  8  24  8   0  16 16 16 16    0    0  y . y     .     .     2
>   5  54  46 TrueColor    32   0   y   .  .       .   8  8  8  8  16  0   0   0  0  0  0    0    0  y . y     .     .     2
>   6  55  47 TrueColor    32   0   y   .  y xchg  .   8  8  8  8  16  0   0  16 16 16 16    0    0  y . y     .     .     2
>   7  56  48 TrueColor    32   0   y   .  y copy  .   8  8  8  8   0  0   0  16 16 16 16    0    0  y . y     .     .     2
>   8  57  49 TrueColor    32   0   y   .  y copy  .   8  8  8  8  16  0   0  16 16 16 16    0    0  y . y     .     .     2
>   9  41  4a TrueColor    32   0   y   .  y copy  .   8  8  8  8  24  8   0  16 16 16 16    0    0  y . y     .     .     2
>  10  58  4b TrueColor    32   0   y   .  .       .   8  8  8  8   0  0   0   0  0  0  0    1    4  y . y     .     .     2
>  11  59  4c TrueColor    32   0   y   .  y xchg  .   8  8  8  8   0  0   0  16 16 16 16    1    4  y . y     .     .     2
>  12  5a  4d TrueColor    32   0   y   .  .       .   8  8  8  8  16  0   0   0  0  0  0    1    4  y . y     .     .     2
>  13  5b  4e TrueColor    32   0   y   .  y xchg  .   8  8  8  8  16  0   0  16 16 16 16    1    4  y . y     .     .     2
>  14  5c  4f TrueColor    32   0   y   .  .       .   8  8  8  8  24  8   0   0  0  0  0    1    4  y . y     .     .     2
>  15  5d  50 TrueColor    32   0   y   .  y xchg  .   8  8  8  8  24  8   0  16 16 16 16    1    4  y . y     .     .     2

The mesa software renderer on the remote host constructs the set of 
visuals the client gets offered by picking the visuals from the server's 
set of visuals which match one of it's visuals

> OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x300)
> OpenGL version string: 2.1 Mesa 8.0.4
[...]
>     visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
>   id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
> ----------------------------------------------------------------------------
> 0x051 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
> 0x053 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None

Unfortunately this set is small, and indeed doesn't contain any 
double-buffered visuals.

Workarounds are to use either start Cygwin X server with -nowgl (so it 
too uses the software renderer and will offer a set of visual which is 
probably exactly the same), or to run the client with the 
LIBGL_ALWAYS_INDIRECT env var set (so that indirect rendering is used 
and the remote client has access to the actual set of visuals the server 
supports)

I think the real fix to this is to fix the remote libGL, either so it 
matches visuals less precisely, or so it offers more visuals which can 
match, but this is not simple.

> Believe it or not, I just so happen to have an XWin.0.log from my old,
> old, old version of Cygwin.  It was:
>
> Package: version 1.15.1-2 built 2014-05-06

Now I can reproduce this, it seems that this can be an unfortunate 
side-effect of the "Improve visual matching with a remote libGL by not 
reporting pbuffer size limits" change in 1.15.1-3 [1], which was 
intended to have the opposite effect, if previously no visuals at all 
were matching, so the software renderer was disabled, and we were 
falling back to indirect rendering.

[1] https://cygwin.com/ml/cygwin-xfree-announce/2014-06/msg00002.html

-- 
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

--
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