O ubuntu 16.04 fornece "X Erro de falha na solicitação: BadValue (parâmetro inteiro fora do intervalo para operação)" ao executar programas OpenGL

18

Eu tenho duas duas placas gráficas a bordo, uma é a integração no processador Intel, uma é a placa nvidia.

Eu quero usar a integração para renderizar desktop, o cartão NV para calcular com cuda. Eu mudo para usar a integração em "Configurações do servidor NVIDIA X", depois de instalar o "nvidia-modprobe", ele funcionou como eu queria.

mas onde está um problema com o glx, quando executo o glxinfo.

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:  37
Current serial number in output stream:  38

No log do xorg, libglx.so em

[     3.597] (II) "glx" will be loaded by default.
[     3.597] (II) LoadModule: "glx"
[     3.599] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.612] (II) Module glx: vendor="X.Org Foundation"

Existe uma maneira de obter o glx rodando corretamente?

hangkongwang
fonte

Respostas:

10

Resolvido, eu configurei o que quero. Publiquei a resposta mostrada abaixo no GitHub .

  1. Remova todos os pacotes da Nvidia e reinstale os pacotes do xorg.

    sudo apt-get purge nvidia*  
    sudo apt-get install --reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core   
    sudo dpkg-reconfigure xserver-xorg   
    
  2. Instale o cuda8. Você precisa:

    Pressione as teclas Crtl + Alt + F1.

    sudo service lightdm stop  
    sudo init 3  
    

    Eu uso o arquivo cuda8 .run para instalá-lo e, em seguida, instalá-lo perguntará se você deseja instalar o driver da placa de vídeo nvidia ?.

    Escolha sim.

    Será perguntado se você deseja instalar o nvidia opengl?

    Escolha não, esta é uma escolha crucial, se você disser "sim" aqui, ele cobrirá as bibliotecas "mesa *".

    Depois disso, escolha o padrão.

    Após a instalação, reinicie.

    sudo reboot
    
hangkongwang
fonte
2
Continue com isso - recebi um erro semelhante causado por atualizações gráficas. Uma reinicialização simples o corrigiu no meu computador sem precisar desinstalar / reinstalar os drivers da nvidia.
Pterosaur
11
Na verdade isso parece um monte de trabalho que pode não ser necessário ... tive um problema semelhante, e teve que fixar o número mod chave (usado Mod1 vez de Mod4)
Anel Ø
Ocorreu um erro semelhante ao executar aplicativos wine OpenGL (glxgears e glxinfo estavam sendo executados sem nenhum problema) e a solução foi simplesmente atualizar do nvidia-410 (Ubuntu 18.04) para o nvidia-415 (encontrado no "drivers de gráficos" ppa , versão 415.27-0ubuntu0 ~ gpu18.04.1). Espero que isso ajude alguém no futuro.
Avio
3

Para quem chega a essa pergunta tentando usar o OpenGL em um servidor sem cabeçalho: você também pode receber essa mensagem se tiver drivers NVIDIA GLX instalados, mas na verdade não tiver uma placa NVIDIA no servidor (por exemplo, se estiver usando a AMI da AWS Deep Learning Base em uma máquina sem uma GPU).

Para confirmar, tente executar um servidor X com +iglx(o que deve permitir glxinfoa execução) e veja se a glxinfosaída (por exemplo xvfb-run -s '-screen 0 1400x900x24 +iglx' glxinfo) relata client glx vendor string: NVIDIA Corporation. Se isso acontecer, tente mudar para uma AMI sem nenhum material da NVIDIA.

Matthew Rahtz
fonte
3

Faça o downgrade do driver NVIDIA para 340.12

Anteriormente, era 384,11 por padrão.

Isso pode ser feito facilmente na software-properties-gtkguia "drivers adicionais".

Então reinicie.

Ubuntu 16.04, NVIDIA Corporation GF119 [NVS 310].

Há também um problema semelhante no Steam em: O Steam não inicia no Ubuntu 16.04

O problema é reproduzível com um mundo GLUT olá mínimo:

#include <stdlib.h>

#include <GL/glut.h>

int main(int argc, char *argv[]) {
    glutInit(&argc, argv);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(200, 100);
    glutCreateWindow(argv[0]);
    glutMainLoop();
    return EXIT_SUCCESS;
}

Ubuntu 19.04: o problema não acontece mais

Não há muito tempo, basta atualizar o Ubuntu, se puder. Atualmente em 390.116 funcionando perfeitamente.

Foram necessárias algumas pequenas alterações nas opções do BIOS para iniciar no Lenovo ThinkPad P51: Inicialização do Ubuntu 17.10 travada na mensagem "Iniciado o NVIDIA Persistence Daemon" após a instalação da nVidia 384.90

Ciro Santilli adicionou uma nova foto
fonte
1

Outra situação em que esse erro pode ocorrer é quando você está tentando executar janelas OpenGL enquanto executa em um ambiente chroot. Este post tem uma sugestão para adicionar + iglx no comando xserver para lightdm, que resolveu o problema para mim. Colocar esta resposta aqui para ter visibilidade, pois a outra resposta não apareceu de maneira destacada no Google.

aleksk
fonte
0

Eu tive a mesma mensagem de erro, mas foi causada por glutInitContextVersion (4, 0); porque meu hardware não suporta OpenGL 4.0, mudei a chamada para glutInitContextVersion (3, 3); e as coisas ficaram bem. Estou usando um driver proprietário da NVidia.

vollitwr
fonte
11
Você poderia explicar como fez isso?
Zanna 11/09
glutInitContextVersioné indefinido: no freeglut3-dev 2.8.1, Ubuntu 15.10, relacionado: stackoverflow.com/questions/22055522/… Mas essa é uma pista interessante.
Ciro Santilli escreveu:
Mas eu também tentei glfwWindowHint(GLFW_CONTEXT_VERSIONe não resolveu o problema :-( stackoverflow.com/questions/18113270/…
Ciro Santilli foi consultado