X O encaminhamento com renderização indireta falha com clientes mais recentes

7

Postar esta pergunta para um colega depois de um pouco de pesquisa. Ele quer se conectar a um antigo servidor Centos 4 via ssh -X (ou -Y ) e executar algum aplicativo X lá. Ele costumava rodar bem durante anos, mas atualizações recentes (tanto no Centos 7 quanto no Ubuntu) para seus PCs clientes agora tornam isso impossível. Seu aplicativo apenas trava, e tentar simplesmente executar glxgears leva a uma falha:

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  150 (GLX)
Minor opcode of failed request:  3 (X_GLXCreateContext)
Value in failed request:  0x0
Serial number of failed request:  19
Current serial number in output stream:  21

É realmente um problema de versão do cliente. Revertendo para o anterior Centos 6 no lado do cliente, faça-o funcionar novamente. Não há nada no log do X11 no lado do servidor. Eu corri strace glxgears sem perceber nada fora do comum. O que posso tentar diagnosticar ainda mais?

EDITAR: Em qualquer Linux moderno, a seguinte tentativa de forçar um contexto de renderização indireta falhará:

glxinfo -i
name of display: :0
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  154 (GLX)
Minor opcode of failed request:  24 (X_GLXCreateNewContext)
Value in failed request:  0x0
Serial number of failed request:  39
Current serial number in output stream:  40

Eu tentei o seguinte para reativar a renderização indireta. A menos que eu esteja enganado, tudo isso precisa ser feito na máquina do cliente:

  • nas seções Tela ou Dispositivo do /etc/X11/xorg.conf você adiciona:

    Opção "AllowIndirectGLXProtocol" "True"

  • em / usr / bin / startx (ou onde quer que o startx esteja localizado):

    defaultserverargs="+ iglx"

  • em /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf você muda a linha:

    xserver-command = X -core + iglx

  • antes de iniciar o KDE, por exemplo em .kde / env / igl.sh

    export LIBGL_ALWAYS_INDIRECT = 1

Nada disso funciona.

    
por dargaud 21.10.2016 / 14:45

1 resposta

3

Estação de trabalho Linux

Perversamente, muitas versões do GDM não oferecem uma forma de transmitir argumentos como +iglx codificar%. Em resposta, as novas versões do X.org têm uma opção Xorg (veja também exemplo IndirectGLX text ).

Na falta dessa opção, há uma solução alternativa para finalizar xorg.conf com um script de shell :

mv /usr/bin/Xorg /usr/bin/Xorg.original
echo -e '#!/usr/bin/env bash\nexec /usr/bin/Xorg.original "$@" +iglx' > /usr/bin/Xorg
chmod +x /usr/bin/Xorg
chcon --type=bin_t /usr/bin/Xorg

estação de trabalho macOS (XQuartz)

Basta executar

defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

e reinicie o XQuartz se ele estiver sendo executado. (Cuidado com os erros de digitação: não há verificação de erros nos nomes de domínios e variáveis).

    
por 20.09.2017 / 07:01

Tags