OpenGL 4.6 および OpenGL® ES 3.2 サポート
- M1は長らくOpenGL 4.1のみをサポートしていたが、現在はOpenGL® 4.6およびOpenGL® ES 3.2を完全にサポートしている。
- 最新のM1/M2シリーズ向けドライバのためにFedoraをインストールすればよい。
- すでにインストール済みの場合は、単に
dnf upgrade --refresh コマンドでアップグレードできる。
- 既存ベンダーの非標準な4.1ドライバとは異なり、これらのオープンソースLinuxドライバは最新のOpenGLバージョンに合わせて認証されており、Blender、Ryujinx、CitraのようなモダンなOpenGLワークロードとの幅広い互換性を約束する。
ドライバ認証と標準サポート
- 認証済みの4.6/3.2ドライバは、正確性を保証するために100,000件以上のテストに合格する必要がある。
- 公式に認証されたドライバ一覧に、OpenGL 4.6およびES 3.2が新たに含まれた。
- ベンダーは依然としてモダンなOpenGLのようなグラフィックス標準をサポートしていないが、この会社はサポートしている。
- この会社は、相互運用可能なオープン標準への愛着を公に表明し、ユーザーと開発者が特別なポートなしに望む場所でアプリケーションを実行できる自由を提供したいとしている。
OpenGL 4.6の新機能
- OpenGL 4.6は4.1と比べて数十の必須機能を追加している:
- Robustness(堅牢性)
- SPIR-V
- Clip control
- Cull distance
- Compute shaders
- Upgraded transform feedback
M1とグラフィックス標準の互換性問題
- M1はOpenGL ES 3.1より新しいグラフィックス標準にはあまり適していない。
- Vulkanは一部の機能をオプション化しているが、DirectXやOpenGL向けのレイヤーには必要な機能が欠けている。
- M1では、OpenGL 4.1の機能セットを超える既存ソリューションが存在しない。
4.1の壁を越える方法
- ハードウェアサポートなしで新機能を実装するには、新しい方法が必要になる。
- ジオメトリシェーダー、テッセレーション、トランスフォームフィードバックはコンピュートシェーダーで置き換えられる。
- Cull distanceは変換された補間値で置き換えられる。
- Clip controlは頂点シェーダーのエピローグで置き換えられる。
堅牢性の課題
- 伝統的にGPUは安全性より生の性能を優先してきた。
- Webブラウザのようなアプリケーションでは、このようなトレードオフは望ましくない。
- 堅牢性機能は、シェーダーでバッファ範囲外アクセスが発生した場合にアプリケーションで定義された動作を選べるようにすることで、性能をわずかに犠牲にしつつ攻撃面を減らせる。
バッファ堅牢性
- 他のAPIでは、堅牢性が有効なときにバッファ範囲外ロードが何を返すかの定義が異なる。
- OpenGLでは、範囲外ロードはバッファの最後の要素を返す。
- 堅牢性のための追加演算はシェーダーのプリアンブルへ移されるため、メインシェーダーにはコストがかからない。
画像堅牢性
- 画像堅牢性では、範囲外の画像ロードが0を返すことが求められる。
- M1 GPUでは、ミップされた画像ロードが失敗する単一のテストがある。
- 堅牢性のための回避策としては、無効なレベルでロードしないか、推測的にロードしたうえで比較および選択演算を使う方法がある。
GN⁺の意見
- この記事は、M1デバイスで最新のOpenGL標準をサポートする重要な進展を扱っている。これはLinuxユーザーや開発者に、より広い互換性と性能向上をもたらすだろう。
- OpenGL 4.6の新機能は、グラフィックスアプリケーションの性能と堅牢性を大きく向上させる可能性があり、特にゲーム開発や高性能コンピューティング分野で重要である。
- この記事は、オープンソースドライバが商用ソリューションと比べて、いかに優れた標準準拠と互換性を提供できるかを示す好例である。
1件のコメント
Hacker Newsのコメント