イベント
[GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに
先日他界した俳優Leonard Nimoy(レナード・ニモイ)さんが「Star Trek」(スター・トレック)で演じていたMr.Spock(Mr.スポック)の故郷から,奇しくもこのタイミングで名前が取られたというVulkanは,OpenGLのアーキテクチャをアップグレードした“OpenGL 5.0”ではなく,一から開発が始まったAPIだ。
そんなVulkanの特徴は,「複数のCommand Buffer(コマンドバッファ)をマルチスレッドで同時に生成し,別途走る単体のスレッドでコマンドキューへ載せて,GPUへ送る」という処理系を備えている点にある。CPUがマルチスレッド化されたことを前提に効率化が図られているわけだ。
※先の記事でお伝えしているとおり,Vulkanでは要素技術としてMantleを採用することがAMDから発表された。
OpenGL時代,各グラフィックスドライバは(C言語に似た)GLSL(OpenGL Shading Language)で書かれたシェーダプログラムをコンパイルするために完全版のコンパイラを持っておく必要があり,ここがバグの温床となっていた。
それに対してVulkanでは,デベロッパ側で,「SPIR-V」と呼ばれる中間言語へコンパイルする仕様になった。DirectX(というかDirect3D)に近い実装になったともいえるだろう。
このSPIR-Vは,もともとCompute Shader向けに用意されていた「SPIR」の後継に当たるもので,それゆえ,SPIR-Vは,Vulkanと同時に発表された「OpenCL 2.1」からも利用できる。グラフィックスシェーダプログラムであろうと,コンピュートシェーダプログラムであろうと,あるいはそれ以外のプログラムであろうと,SPIR-VはVulkanおよびOpenCLから利用できるようになる。簡単にいうと,SPIR-Vは,VulkanとOpenCL 2.1の統合をもたらす存在なのだ。
なお,Khronosの会長であるNeil Trevett(ニール・トレヴェット)氏によれば,Vulkanの登場後も,既存のOpenGLおよびOpenGL ESはVulkanの下位モデル的なAPIとして存続し,Khronosとしてもサポートを行い,また,継続してアップデートを行っていくとのことだった。いわく,「Vulkanのローレベル制御がすべてのプログラムに適しているとは考えていない。ドライバに負担をかける作業が必要なソフトも少なからず存在している」(Trevett氏)。
すでにお伝えしているとおり,現地時間3月5日には,Vulkanに関するいくつかのセッションが予定されている。4Gamerではそのレポートをお伝えするつもりでいるので,楽しみにしておいてほしい。