[この記事は Shannon Woods、テクニカルプログラムマネージャーによる Android Developers Blog の記事 "Low-overhead rendering with Vulkan" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
ゲームおよび 3D グラフィック アプリケーションの開発者がぶつかる大きな壁。それは、1 秒にも満たないごく短い時間に、どれだけ複雑なシーンを描画できるかということです。グラフィック開発では、レンダリングにおける GPU の効率的なデータ利用を実現するため、ほとんどの作業をデータの編成に費やします。一部のグラフィック プロセッサーのドライバーは実際に処理する前にそのすべてのデータを再編成することがあるため、どんなに慎重な開発者でも予期しえないボトルネックに直面することがあります。これらのドライバーを制御するために使用される API もマルチスレッドで使用するために設計されておらず、並列であればより効率的に実行できる呼び出しについて、ロックを同期する必要がでてきます。これらのすべてが CPU のオーバーヘッドとなり、本来ならばシーンの描画に費やしたい時間と能力がここで消費されてしまいます。

オーバーヘッド削減と、開発者の制御強化

CPU オーバーヘッドのいくつかの原因に対処して、開発者がレンダリングをより直接的に制御できるようにするために、新しい 3D レンダリング API である Vulkan™ を Android に導入するための作業が行われてきました。OpenGL™ ES と同様に、Vulkan は Khronos によって管理されている 3D グラフィックおよびレンダリングのオープン スタンダードです。Vulkan は、ドライバーの CPU オーバーヘッドを最小化するため、およびアプリケーションが GPU の動作をより直接的に制御できるように、設計されています。また、Vulkan は、複数のスレッドが作業を実行できるようにする(コマンド バッファーの作成を同時に行うなど)ことによって、より優れた並列処理が可能です。

API は想定内で作動してこそ本領を発揮する

さまざまなデバイスで動作するアプリケーションを一度に記述できるように、Android 5.0 Lollipop では OpenGL ES のための 5 万を超える新しいテストを含む Android の Compatibility Test Suite(CTS)を大幅に拡張、その後も多数追加されています。これはドライバーの問題を特定して修正するための広範なオープン ソースのテスト スイートを提供しており、開発者とエンド ユーザーにとってより堅牢で信頼できる操作性を生み出します。Vulkan に関しては、Android CTS で使用するための同様のテストを開発するだけでなく、開発したテストを Khronos に提供し、Vulkan 自体のオープン ソース適合テスト スイートで使用できるようにしています。これにより、Khronos は Vulkan のドライバーを複数のプラットフォームおよびハードウェアでテストでき、3D グラフィックのエコシステム全体の改善が可能です。

すべては開発者の選択

Vulkan を作成、テスト、および出荷するために鋭意作業中ですが、それと同時に OpenGL ES にも貢献してサポートする予定です。これにより開発者は、簡潔な OpenGL ES か、直接的な制御の Vulkan か、用途に応じて適切な API を選択できるようになります。どちらの API を選択した場合でも、開発者が快適に使用できることをお約束します。
Vulkan はまだ開発中ですが、仕様、テスト、およびツールは、準備ができ次第http://www.khronos.org/vulkan にリリースされる予定です。


Posted by Yoshifumi Yamaguchi - Developer Relations Team