OpenGL
wikipedia OpenGL から:
- OpenGL (Open Graphics Library) は、グラフィックスハードウェア向けの2次元/3次元コンピュータグラフィックスライブラリである。SGI 社内で自社の CG ワークステーション向けにクローズドに策定された API 仕様が改良されて公開されています。
詳しくは、Khronos をご覧ください。
インストール
OpenGL を使うアプリケーションを実行するには、あなたのハードウェア(GPU または CPU)用のドライバを インストール する必要があります。
- mesa はオープンソースの OpenGL 実装で、最新の OpenGL 仕様をサポートするために継続的に更新されています。Intel グラフィックス]]、ATI、AMD、AMD PRO および NVIDIA のためのオープンソースドライバが集められています。また、ソフトウェアラスタライザーも提供します。パッケージに含まれるドライバは以下の通りです。
i915
: GMA 916G および i830、i845、i865 統合 GPU シリーズ用です。i965
: Intel の Gen 4 ハードウェア以降に対応。インテルにより公式にサポートされています。iris
: Intel の Gen8 ハードウェア以降に対応。インテルにより公式にサポートされています。r100
: AMD Radeon R100 GPU シリーズ用です。r200
: AMD Radeon R200 GPU シリーズ用。r300
: AMD Radeon R300, R400, R500 GPU シリーズ用。r600
: AMD Radeon HD 2000 GPU シリーズ以降に対応。AMD が公式にサポートしています。radeonsi
: AMD の Southern Island GPU 以降のシリーズ用。AMD が公式にサポートしています。nouveau
: Nouveau は NVIDIA 用のオープンソースドライバです。GPU の場合。virgl
: 仮想マシン用にホストと GPU を共有するための仮想 GPU ドライバです。svga
: VMware の仮想 GPU 用です。zink
: Gallium ライバで、vulkan 上で OpenGL を動作させることができます。swrast
: レガシーソフトウェア rasterizer です。softpipe
: ソフトウェア rasterizer、リファレンス Gallium ドライバです。llvmpipe
: ソフトウェア rasterizer、x86 JIT コード生成に LLVM を使用し、マルチスレッド化されています。swr
: AVX および AVX2 CPU 命令を使用する高性能ソフトウェア rasterizer OpenSWR としても知られています。
- nvidia-utils は NVIDIA GPU 用のプロプライエタリドライバです。
- amdgpu-pro-libglAUR は AMD PRO GPU 用のプロプライエタリドライバです。
検証
OpenGL のインストールを確認するには、 mesa-utils glxinfo
を使用すると、次のような出力が得られるはずです。
$ glxinfo | grep OpenGL
OpenGL vendor string: X.Org OpenGL renderer string: AMD RV620 (DRM 2.50.0 / 5.10.12-arch1-1, LLVM 11.0.1) OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.4 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 20.3.4 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.4 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions:
(もちろん、設定によって異なる値で)
同じパッケージから glxgears
も試せます。3つの歯車が回転しているのが見えるはずです。
ドライバの切り替え
ハイブリッドグラフィック については、PRIME を見て下さい。
Mesa
以下の 環境変数 を使用することで、使用されているドライバーを上書きすることができます。
MESA_LOADER_DRIVER_OVERRIDE=driver
デフォルトでは、mesa は /lib/dri/
にあるドライバを検索します。
$ ls /lib/dri/
driver
は _dri.so
を除いたドライバ名です。もし失敗したら、llvmpipe にフォールバックします。
また、以下の 環境変数 を設定することで、OpenGL ソフトウェアラスタライザードライバを使用することができます。
LIBGL_ALWAYS_SOFTWARE=true GALLIUM_DRIVER=driver
driver
は softpipe
, llvmpipe
, swr
のどれか1つです。
OpenGL over Vulkan (Zink)
もし、何らかの問題(RadeonSI や Iris のバグなど)が発生した場合は、Zink を使用してみてください。
AMD RX 6700 XT では、[1] によると、RadeonSI と比較してゲームによって FPS が 58-105% になるそうです。
2021-11-30 現在、最新のドライバ 495.44 と mesa-gitAUR の master ブランチでも多くのアプリケーションが NVIDIA GPU で動きません。Copper DRI 拡張(アップストリーム未対応)と組み合わせると、RTX 2070 では Tomb Raider の平均 FPS が 20% 高くなります。
$ env __GLX_VENDOR_LIBRARY_NAME=mesa MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink %app%
開発
OpenGL をコードで使うには、関数ローダーが必要です。詳しくは、Khronos を参照してください。
OpenGL ハードウェアデータベース
GPUInfo は、ユーザーが報告した GPU/ドライバ の組み合わせ、サポートされる拡張機能、能力などを提供します。