ユーザ用ツール

サイト用ツール


vulkan

以前のリビジョンの文書です


Vulkan の情報

Driver

Windows 10 Linux Android
GeForce Fermi N N N
GeForce Kepler Y Y Y?
GeForce Maxwell Y Y Y?
GeForce Pascal Y Y ?
RADEON GCN 1.0/1.1/1.2 Y Y? ?
RADEON GCN Polaris Y Y ?
Intel HD Graphics Gen7 N Y ?
Intel HD Graphics Gen7.5 N Y ?
Intel HD Graphics Gen8 N Y ?
Intel HD Graphics Gen9 Y (beta) Y ?
PowerVR Series 6 Rogue N ? Y
Snapdragon Adreno 400 N ? Y

SDK install

Driver とヘッダファイルだけで構成されていた OpenGL と違い、Vulkan は Tool と Library が必要です。 SDK が用意されています。 直接 build することもできます。

Tool and Libraries の build

GitHub の code を直接ビルドすることができます。

Windows の Build 手順

  1. cmake, python3 の install
  2. glslang の build
    • Vulkan-LoaderAndValidationLayers の build に必要
  3. Vulkan-LoaderAndValidationLayers の build

glslang と Vulkan-LoaderAndValidationLayers は同じ階層に配置しておいてください。

> git clone https://github.com/KhronosGroup/glslang.git
> git clone https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git
> cd glslang
> mkdir build_win64
> cd build_win64
> cmake .. -G "Visual Studio 14 Win64"
  1. これで glslang.sln が生成されるので VisualStudio 上で build できます。
    • Solution Explorer 上で ALL_BUILD の上で右ボタンメニューを開いて Build
    • Command Line から msbuild を使っても構いません。
  2. Release, Debug ともに build したら INSTALL します。
    • Solution Explorer 上で INSTALL の上で右ボタンメニューを開いて Build
    • コマンド類は build_win64/install/bin に入ります

同じ手順を Vulkan-LoaderAndValidationLayers でも行います。

> cd Vulkan-LoaderAndValidationLayers
> mkdir build_win64
> cd build_win64
> cmake .. -G "Visual Studio 14 Win64"
  1. VULAKN.sln を開いて build します。
    • Solution Explorer 上で ALL_BUILD の上で右ボタンメニューを開いて Build
  2. 動作確認するには、cube や tri の上で右ボタンメニューを開いて Set as StartUp Project してから Build & 実行します

Shader Binary SPIR-V の作り方

glslangValidator -V <shader_source> -o <output_binary.spv>

入力ファイルの拡張子で shader type を判別するので注意が必要です。

  • .vert = VertexShader
  • .frag = PixelShader
  • .geom = GeometryShader
  • .tesc = HullShader
  • .tese = DomainShader
  • .comp = ComputeShader

公式リンク

以下旧情報

現在わかっている範囲でのまとめ。

Vulkan は新しい世代の 3D API です。特徴は下記の通り。

  • (1) Direct3D 12, Metal 同様の Low Overhead API
  • (2) Multi Platform 対応
  • (3) Desktop 及び Mobile 両対応

(1) Low Overhead API

Direct3D の低レベル API が Direct3D 12 であるように、Vulkan は位置づけ的には OpenGL の流れを汲む低レベル API に相当します。 ただし OpenGL との互換性はありません。

Direct3D 12 や Metal と同じように CPU 負荷を大幅に削減しており、効率化は動作速度を引き上げると同時にバッテリーへの負担も減らすことになります。

(2) Multi Platform 対応

Direct3D が Windows のみ、Metal が Apple platform のみサポートしているのに対して、Vulkan は唯一の Multi platform に対応した低レベル API となります。

(3) Desktop 及び Mobile 両対応

これも Direct3D 12, Metal 同様、新しい API の特徴です。Metal はすでに iOS/OS X の両方に対応していますし、Vulkan も Android が対応することを発表しています。

OpenGL との違い

  • 一新された API 。互換性の枷がない、わかりにくい global state がない。
  • Multi-Thread 対応
  • Shader のバイナリ形式のサポート。事前 Compile に対応
  • Mobile API と Desktop API の統合。ES のような細分化は開発の妨げになっていた。

Direct3D12/Metal との違い

  • OpenGL 同様 Platform を選ばない
    • Windows, Linux, Android など
    • 対応 GPU と Driver さえあれば Windows 7 でも動く (NVIDIA は XP 以降と表明)
      • Direct3D 12 : Windows 10 のみ
      • Metal : iOS/OS X のみ
  • 最後発であることのメリット
    • GCN 系 API である Mantle, Direct3D と、Rogue 系 API である Metal の両機能をサポート
    • 例えば GCN 系 Descriptor と Rogue の TBR(TBDR) 系 RenderPass 両方に対応している

対応 GPU

Direct3D12, Metal の対応状況からの推測では下記の通り。

  • Desktop
    • OpenGL 4.x 世代 (Direct3D11 世代)
      • Fermi 以降
      • GCN 以降
      • HD Graphics Gen7.5 以降 (Gen7 は不明)
  • Mobile
    • おそらく OpenGL ES 3.1 世代の GPU のうちメーカーが対応を表明したもの
      • ES3.1 以降と推測した理由は ComputeShader が必須となると考えられるため

API の系列

現在の低レベル API は下記の 2系列あります。

  • GCN アーキテクチャベース
    • Mantle
      • Direct3D 12
      • Vulkan
  • Rogue アーキテクチャベース
    • Metal iOS
      • Metal OSX

Vulkan の API セットは Direct3D 12 にある程度似ているものになると考えられます。

Direct3D 12 との比較

Direct3D 12 Vulkan Metal
RootSignature Pipeline Layout
Descriptor Heap Descriptor Pool
Descriptor Descriptor Set
CommandList Command Buffer CommandBuffer
CommandAllocator Command Pool
CommandQueue Command Queue CommandQueue
PipelineState Pipeline State PipelineState, DepthStencilState, RenderState
Render Pass RenderPassDesc (RenderCommandEncoder)
ResourceBarrier Pipeline Barrier (TextureBarrier)
vulkan.1474465828.txt.gz · 最終更新: 2016/09/21 22:50 by oga