web-dev-qa-db-ja.com

ubuntu 16.04は、OpenGLプログラムの実行中に「失敗したリクエストのXエラー:BadValue(整数パラメータが動作範囲外)」を返します

ボードには2つの2つのグラフィックカードがあります。1つはIntel CPUに統合され、もう1つはnvidiaカードです。

私はデスクトップをレンダリングするために統合されたものを使用し、Cudaで計算するためにNVカードを使用したいです。 「nvidia-modprobe」をインストールした後、「NVIDIA Xサーバー設定」で統合されたものを使用するように切り替えました。

しかし、glxinfoを実行するとglxに問題があります。

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

Xorgでlibglx.soにログインします

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

Glxを正しく実行する方法はありますか?

17
hangkongwang

解決した、私は欲しいものをセットアップしました。以下に示す回答を GitHub に投稿しました。

  1. すべてのNvidiaパッケージを削除し、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. Cuda8をインストールします。必要がある:

    Crtl + Alt + F1キーを押します。

    Sudo service lightdm stop  
    Sudo init 3  
    

    Cuda8 .runファイルを使用してインストールした後、nvidiaカードドライバーをインストールするかどうかを確認するプロンプトが表示されます。

    はいを選択します。

    Nvidia openglをインストールする場合、プロンプトが表示されますか?

    いいえ、これは重要な選択です。ここで「はい」と言うと、「mesa *」ライブラリが対象になります。

    この後、デフォルトを選択します。

    インストール後、再起動します。

    Sudo reboot
    
10
hangkongwang

ヘッドレスサーバーでOpenGLを使用しようとすると、この質問に到達した人には:NVIDIA GLXドライバーがインストールされているが、実際にサーバーにNVIDIAカードがない場合(AWS Deep Learning Base AMIを使用している場合など) GPUのないマシンで)。

確認するには、+iglxglxinfoの実行を許可する必要があります)を使用してXサーバーを実行し、glxinfo出力(たとえばxvfb-run -s '-screen 0 1400x900x24 +iglx' glxinfo)がclient glx vendor string: NVIDIA Corporationを報告する。その場合は、NVIDIAのもの​​を使用せずにAMIに切り替えてみてください。

3
Matthew Rahtz

NVIDIAドライバを340.12にダウングレードします

以前はデフォルトで384.11でした。

これは、software-properties-gtk [追加ドライバー]タブから簡単に実行できます。

次に再起動します。

Ubuntu 16.04、NVIDIA Corporation GF119 [NVS 310]。

同様のSteam問題もあります: SteamはUbuntu 16.04で起動しません

この問題は、最小限のGLUT Hello Worldで再現可能です。

#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:問題はもう発生しません

しばらくこれを持っていませんでした、可能であればUbuntuをアップグレードしてください。現在、390.116で完全に動作しています。

Lenovo ThinkPad P51で開始するには、いくつかのマイナーなBIOSオプションの変更が必要でした: nVidia 384.90のインストール後、「NVIDIA Persistence Daemonを開始しました」というメッセージでUbuntu 17.10ブートが停止しました

このエラーが発生する別の状況は、chroot環境で実行中にOpenGLウィンドウを実行しようとしている場合です。 この投稿 には、lightdmのxserver-commandに+ iglxを追加する提案があり、これで問題が解決しました。他の回答がグーグルで目立って表示されなかったため、この回答を表示するためにここに配置しました。

1
aleksk

同じエラーメッセージが表示されましたが、原因はglutInitContextVersion(4、0);でした。ハードウェアがOpenGL 4.0をサポートしていなかったため、呼び出しをglutInitContextVersion(3、3);に変更しました。そして物事はうまくなりました。独自のNVidiaドライバーを使用しています。

0
vollitwr