OpenGL

提供: ArchWiki
2022年2月20日 (日) 16:45時点におけるKgx (トーク | 投稿記録)による版 (→‎OpenGL over Vulkan (Zink): 翻訳)
ナビゲーションに移動 検索に移動

wikipedia OpenGL から:

OpenGL (Open Graphics Library) は、2D および 3D のベクターグラフィックスをレンダリングするための、クロスランゲージ、クロスプラットフォームのアプリケーションプログラミングインターフェース(API)です。

詳しくは、Khronos をご覧ください。

インストール

OpenGL を使うアプリケーションを実行するには、あなたのハードウェア(GPU または CPU)用のドライバを インストール する必要があります。

  • mesa はオープンソースの OpenGL 実装で、最新の OpenGL 仕様をサポートするために継続的に更新されています。Intel グラフィックス]]、ATIAMDAMD PRO および NVIDIA のためのオープンソースドライバが集められています。また、ソフトウェアラスタライザーも提供します。パッケージに含まれるドライバは以下の通りです。
    • i915 : GMA 916G および i830、i845、i865 統合 GPU シリーズ用です。
    • i965 : Intel の Gen 4 ハードウェア以降に対応。インテルにより公式にサポートされています。
    • iris : Intel の Gen8 ハードウェア以降に対応。インテルにより公式にサポートされています。
    • AMD Radeon R100 GPU シリーズ用です。
    • AMD Radeon R200 GPU シリーズ用。
    • AMD Radeon R300, R400, R500 GPU シリーズ用。
    • AMD Radeon HD 2000 GPU シリーズ以降に対応。AMD が公式にサポートしています。
    • radeonsi : AMD の Southern Island GPU 以降のシリーズ用。AMD が公式にサポートしています。
    • nouveau : NouveauNVIDIA 用のオープンソースドライバです。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 としても知られています。
ノート: mesa に適したドライバが自動的に選択されるはずですので、設定する必要はありません。
ヒント:
  • AMD (および ATI) では、プロプライエタリなものを使用する非常に強い理由がない限り、オープンソースのドライバを使用することをお勧めします。
  • NVIDIA では、プロプライエタリドライバをインストールした方が、新しいカードや一般的なパフォーマンスが向上する場合がほとんどです。

検証

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 を見て下さい。

ノート: reddit post によると、異なるベンダーの2つの GPU を同時にうまく動作させることができるそうです。

Mesa

以下の 環境変数 を使用することで、使用されているドライバーを上書きすることができます。

MESA_LOADER_DRIVER_OVERRIDE=driver

デフォルトでは、mesa は /lib/dri/ にあるドライバを検索します。

$ ls /lib/dri/

driver_dri.so を除いたドライバ名です。もし失敗したら、llvmpipe にフォールバックします。

また、以下の 環境変数 を設定することで、OpenGL ソフトウェアラスタライザードライバを使用することができます。

LIBGL_ALWAYS_SOFTWARE=true
GALLIUM_DRIVER=driver

driversoftpipe, llvmpipe, swr のどれか1つです。

ヒント: これを書いている時点では、llvmpipe と swr は softpipe より高速です。

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%

Development

ノート: This section is for developers who wants to use OpenGL. End users do not need any thing from this section.

Using OpenGL in code requires functions loader, read more at Khronos.

この記事またはセクションは加筆を必要としています。
理由: Put list of packages relevant to OpenGL and in Arch repo (議論: トーク:OpenGL#)

OpenGL Hardware Database

GPUInfo provides user reported GPU/driver combinations, supported extensions, capabilities, etc.