前回までで、ParaViewについてはリモート接続での可視化はできたが、X window経由でのエラーが起きていた。

色々調べて行くと、ParaView固有の問題ではなく、そもそもX window経由でOpenGLを使用する事自体に問題があった。glxinfoを実行した結果は下記のとおり。

 

user@instance-1:~$ glxinfo

name of display: localhost:11.0

libGL error: No matching fbConfigs or visuals found

libGL error: failed to load driver: swrast

X Error of failed request:  GLXBadContext

  Major opcode of failed request:  149 (GLX)

  Minor opcode of failed request:  6 (X_GLXIsDirect)

  Serial number of failed request:  26

  Current serial number in output stream:  25

 

そこでまた色々調べると、下記のページにあるように、最近のXQuartzではセキュリティ上デフォルトでGLXが無効になっているらしい。

 

 

そこで、上記のページに従いGLXを有効にするようにMac側でdefaultsコマンドを実行し、XQuartzを再起動してGCPにログインしglxinfoを再度実行する。

 

(Mac上で)

bash-3.2$ defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

 

(XQuartzを再起動しGCPにログイン後)

user@instance-1:~$ glxinfo

name of display: localhost:11.0

libGL error: No matching fbConfigs or visuals found

libGL error: failed to load driver: swrast

display: localhost:11  screen: 0

direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)

server glx vendor string: SGI

server glx version string: 1.4

server glx extensions:

(省略)

OpenGL vendor string: Intel Inc.

OpenGL renderer string: Intel Iris OpenGL Engine

OpenGL version string: 1.4 (2.1 INTEL-10.36.32)

(省略)

 
未だ一部でエラーと出るものの、一応は「X Error of failed request:  GLXBadContext」のエラーは解決した模様。しかしながら、この状態でParaViewを実行してもOpenGLのバージョンが古いと言われてしまい、可視化しようとすると異常終了してしまった。恐らくは、Mac側のOpenGLのバージョンを上げる必要がありそう。正確には前回の記事でMac上でParaViewが正常に動作していたので、XQuartzが参照するOpenGLのライブラリが古いことが原因と思われる。
ちなみに、Mac版のParaViewを起動してAbout ParaViewメニューからOpenGLのバージョンを確認すると、下記のとおり。
OpenGL Vendor    Intel Inc.
OpenGL Version    4.1 INTEL-10.36.32
OpenGL Renderer Intel Iris OpenGL Engine
 
さらにGCPからログアウトしてXQuartzのターミナルからMac上のOpenGLのバージョンをglxinfoコマンドで確認すると、下記のとおり。

OpenGL vendor string: Intel Inc.

OpenGL renderer string: Intel Iris OpenGL Engine

OpenGL version string: 2.1 INTEL-10.36.32

 

なかなか奥が深そう…