「OpenGL」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを修正) |
(→インストール: 同期) |
||
| 9行目: | 9行目: | ||
== インストール == |
== インストール == |
||
| − | OpenGL を使 |
+ | OpenGL を使用するアプリケーションを実行するには、ハードウェア (GPU または CPU) に適したドライバを[[インストール]]する必要があります。 |
| + | {{Tip| |
||
| − | * {{Pkg|mesa}} はオープンソースの OpenGL 実装で、最新の OpenGL 仕様をサポートするために継続的に更新されています。Intel グラフィックス]]、[[ATI]]、[[AMDGPU|AMD]]、[[AMDGPU PRO|AMD PRO]] および [[NVIDIA]] のためのオープンソースドライバが集められています。また、ソフトウェアラスタライザーも提供します。パッケージに含まれるドライバは以下の通りです。 |
||
| + | * AMD(および ATI)の場合、特別な理由がない限りオープンソースドライバーの使用が推奨されます。 |
||
| − | ** {{ic|i915}} : GMA 916G および i830、i845、i865 統合 GPU シリーズ用です。 |
||
| + | * NVIDIA の場合、[https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler(NVE0/GK''XXX'')] シリーズより新しいカードではプロプライエタリ (独自) ドライバーを使用するのが推奨されます。一般的にパフォーマンスも向上します。 |
||
| − | ** {{ic|i965}} : Intel の Gen 4 ハードウェア以降に対応。インテルにより公式にサポートされています。 |
||
| + | }} |
||
| − | ** {{ic|iris}} : Intel の Gen8 ハードウェア以降に対応。インテルにより公式にサポートされています。 |
||
| − | ** {{ic|r100}} : AMD Radeon R100 GPU シリーズ用です。 |
||
| − | ** {{ic|r200}} : AMD Radeon R200 GPU シリーズ用。 |
||
| − | ** {{ic|r300}} : AMD Radeon R300, R400, R500 GPU シリーズ用。 |
||
| − | ** {{ic|r600}} : AMD Radeon HD 2000 GPU シリーズ以降に対応。AMD が公式にサポートしています。 |
||
| − | ** {{ic|radeonsi}} : AMD の Southern Island GPU 以降のシリーズ用。AMD が公式にサポートしています。 |
||
| − | ** {{ic|nouveau}} : [[Nouveau]] は [[NVIDIA]] 用のオープンソースドライバです。GPU の場合。 |
||
| − | ** {{ic|virgl}} : 仮想マシン用にホストと GPU を共有するための仮想 GPU ドライバです。 |
||
| − | ** {{ic|svga}} : VMware の仮想 GPU 用です。 |
||
| − | ** {{ic|zink}} : Gallium ライバで、vulkan 上で OpenGL を動作させることができます。 |
||
| − | ** {{ic|swrast}} : レガシーソフトウェア rasterizer です。 |
||
| − | ** {{ic|softpipe}} : ソフトウェア rasterizer、リファレンス Gallium ドライバです。 |
||
| − | ** {{ic|llvmpipe}} : ソフトウェア rasterizer、x86 JIT コード生成に LLVM を使用し、マルチスレッド化されています。 |
||
| − | ** {{ic|swr}} : AVX および AVX2 CPU 命令を使用する高性能ソフトウェア rasterizer [https://www.openswr.org/ OpenSWR] としても知られています。 |
||
| − | {{Note|mesa に適したドライバが自動的に選択されるはずですので、設定する必要はありません。}} |
||
| + | {{Note| |
||
| − | * {{Pkg|nvidia-utils}} は [[NVIDIA]] GPU 用のプロプライエタリドライバです。 |
||
| + | * Intel の Gen''N'' ハードウェアは CPU の世代ではなく、[[Wikipedia:List of Intel graphics processing units|GPU の世代]]を指します。 |
||
| + | * AMD (および ATI) GPU のファミリーを調べるには、[[Wikipedia:List of AMD graphics processing units#Features overview]] を参照してください。 |
||
| + | * NVIDIA GPU のコードネームを調べるには、[https://nouveau.freedesktop.org/CodeNames.html Nouveau プロジェクトのコードネームリスト] を確認してください。 |
||
| + | }} |
||
| + | [https://mesa3d.org/ Mesa] は、最新の OpenGL 仕様をサポートするオープンソースの OpenGL 実装です。Intel、AMD (旧 ATI)、NVIDIA の GPU 向けのオープンソースドライバを提供し、ソフトウェア [[Wikipedia:Rasterisation|ラスタライザ]](llvmpipe など)も備えています。 |
||
| − | * {{AUR|amdgpu-pro-libgl}} は [[AMDGPU PRO|AMD PRO]] GPU 用のプロプライエタリドライバです。 |
||
| + | Mesa には 2 つのパッケージがあり、それぞれ異なるドライバを含んでいます。 |
||
| − | {{Tip| |
||
| + | |||
| − | * AMD (および ATI) では、プロプライエタリなものを使用する非常に強い理由がない限り、オープンソースのドライバを使用することをお勧めします。 |
||
| + | * {{Pkg|mesa}} は、最新のハードウェア向けの Mesa パッケージで、以下のようなモダンなドライバーを含みます。 |
||
| − | * NVIDIA では、プロプライエタリドライバをインストールした方が、新しいカードや一般的なパフォーマンスが向上する場合がほとんどです。}} |
||
| + | ** {{ic|r300}} : AMD Radeon R300、R400、R500 GPU 向け。 |
||
| + | ** {{ic|r600}} : AMD Radeon R600 から Northern Islands までの GPU 向け (AMD 公式サポート) |
||
| + | ** {{ic|radeonsi}} : AMD Southern Island 以降の GPU 向け (AMD 公式サポート) |
||
| + | ** {{ic|nouveau}} : NVIDIA 向けオープンソースドライバー [[Nouveau]] |
||
| + | ** {{ic|virtio_gpu}} : [[QEMU]] ベースの VMM ([[KVM]] や [[Xen]] など) 向けの仮想 GPU ドライバ。 |
||
| + | ** {{ic|vmwgfx}} : [[VMware]] の仮想 GPU 向け。 |
||
| + | ** {{ic|i915}} : Intel Gen 3 GPU 向け。 |
||
| + | ** {{ic|crocus}} : Intel Gen 4 Gen 7 GPU 向け。 |
||
| + | ** {{ic|iris}} : Intel Gen 8 以降の GPU 向け (Intel 公式サポート) |
||
| + | ** {{ic|zink}} : [[Vulkan]] 上で OpenGL を実行するための Gallium ドライバー。 |
||
| + | ** {{ic|d3d12}} : [[WSL]] など、D3D12 のみをサポートするデバイス向けの OpenGL 3.3 ドライバー。 |
||
| + | ** {{ic|swrast}} : レガシーなソフトウェアラスタライザ。Mesa 22.0.0 で廃止されたが、ソースコードには残存 (ArchLinux では 24.1.1 で依然利用可能[https://gitlab.archlinux.org/archlinux/packaging/packages/mesa/-/blob/main/PKGBUILD?ref_type=heads#L140]) |
||
| + | ** {{ic|softpipe}} : ソフトウェアラスタライザかつ Gallium のリファレンスドライバ。 |
||
| + | ** {{ic|llvmpipe}} : LLVM を使用した x86 JIT コード生成によるマルチスレッド対応のソフトウェアラスタライザ。 |
||
| + | |||
| + | * {{Pkg|mesa-amber}} は、古いハードウェア向けのクラシック(Gallium3D 非対応)ドライバーを含むパッケージです。 |
||
| + | ** {{ic|i830}} : Intel Gen 2 GPU 向け({{ic|i965}} と同じバイナリ) |
||
| + | ** {{ic|i915}} : Intel Gen 3 GPU 向け({{ic|i965}} と同じバイナリ) |
||
| + | ** {{ic|i965}} : Intel Gen 4 Gen 11 GPU 向け(Intel 公式サポート) |
||
| + | ** {{ic|radeon}} : AMD Radeon R100 GPU 向け({{ic|r200}} と同じバイナリ) |
||
| + | ** {{ic|r200}} : AMD Radeon R200 GPU 向け。 |
||
| + | ** {{ic|nouveau_vieux}} : NVIDIA NV04(Fahrenheit)NV20(Kelvin)GPU 向け。 |
||
| + | ** {{ic|swrast}} : レガシーなソフトウェアラスタライザ。 |
||
| + | |||
| + | {{Note|Mesa を使用する場合、適切なドライバーは自動的に選択されるため、パッケージをインストールするだけで追加設定は不要です。}} |
||
| + | |||
| + | * {{Pkg|nvidia-utils}} : NVIDIA GPU 向けのプロプライエタリ (独自) ドライバ (OpenGL 実装を含む) |
||
| + | |||
| + | * {{AUR|amdgpu-pro-oglp}} : AMD GPU 向けの [[AMDGPU PRO|プロプライエタリドライバ]] |
||
== 検証 == |
== 検証 == |
||
2025年3月18日 (火) 09:32時点における版
wikipedia OpenGL から:
- OpenGL (Open Graphics Library) は、グラフィックスハードウェア向けの2次元/3次元コンピュータグラフィックスライブラリである。SGI 社内で自社の CG ワークステーション向けにクローズドに策定された API 仕様が改良されて公開されています。
詳しくは、Khronos をご覧ください。
インストール
OpenGL を使用するアプリケーションを実行するには、ハードウェア (GPU または CPU) に適したドライバをインストールする必要があります。
Mesa は、最新の OpenGL 仕様をサポートするオープンソースの OpenGL 実装です。Intel、AMD (旧 ATI)、NVIDIA の GPU 向けのオープンソースドライバを提供し、ソフトウェア ラスタライザ(llvmpipe など)も備えています。
Mesa には 2 つのパッケージがあり、それぞれ異なるドライバを含んでいます。
- mesa は、最新のハードウェア向けの Mesa パッケージで、以下のようなモダンなドライバーを含みます。
r300: AMD Radeon R300、R400、R500 GPU 向け。r600: AMD Radeon R600 から Northern Islands までの GPU 向け (AMD 公式サポート)radeonsi: AMD Southern Island 以降の GPU 向け (AMD 公式サポート)nouveau: NVIDIA 向けオープンソースドライバー Nouveauvirtio_gpu: QEMU ベースの VMM (KVM や Xen など) 向けの仮想 GPU ドライバ。vmwgfx: VMware の仮想 GPU 向け。i915: Intel Gen 3 GPU 向け。crocus: Intel Gen 4 Gen 7 GPU 向け。iris: Intel Gen 8 以降の GPU 向け (Intel 公式サポート)zink: Vulkan 上で OpenGL を実行するための Gallium ドライバー。d3d12: WSL など、D3D12 のみをサポートするデバイス向けの OpenGL 3.3 ドライバー。swrast: レガシーなソフトウェアラスタライザ。Mesa 22.0.0 で廃止されたが、ソースコードには残存 (ArchLinux では 24.1.1 で依然利用可能[1])softpipe: ソフトウェアラスタライザかつ Gallium のリファレンスドライバ。llvmpipe: LLVM を使用した x86 JIT コード生成によるマルチスレッド対応のソフトウェアラスタライザ。
- mesa-amber は、古いハードウェア向けのクラシック(Gallium3D 非対応)ドライバーを含むパッケージです。
i830: Intel Gen 2 GPU 向け(i965と同じバイナリ)i915: Intel Gen 3 GPU 向け(i965と同じバイナリ)i965: Intel Gen 4 Gen 11 GPU 向け(Intel 公式サポート)radeon: AMD Radeon R100 GPU 向け(r200と同じバイナリ)r200: AMD Radeon R200 GPU 向け。nouveau_vieux: NVIDIA NV04(Fahrenheit)NV20(Kelvin)GPU 向け。swrast: レガシーなソフトウェアラスタライザ。
- nvidia-utils : NVIDIA GPU 向けのプロプライエタリ (独自) ドライバ (OpenGL 実装を含む)
- amdgpu-pro-oglpAUR : AMD 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 では、[2] によると、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/ドライバ の組み合わせ、サポートされる拡張機能、能力などを提供します。