低レベル Graphics API Vulkan 登場

新しい低レベル API Vulkan がリリースされました。

Khronos Releases Vulkan 1.0 Specification

これでようやく各プラットフォームの API が出揃ったことになります。対応は下記の通り。

               Desktop                  Mobile
-------------------------------------------------
Metal          OS X                     iOS
Direct3D 12    Windows 10
Vulkan         Windows 7~, Linux       Android

Vulkan 最大の特徴は Platform の枠を超えて利用できることです。Android, Linux だけでなく Windows でも動作します。

Windows にはすでに DirectX12 がありますが Windows 10 以降が必須となっています。Windows 7 でも使える Vulkan は Windows 環境でも十分魅力的に映るかもしれません。

すでに Beta 版ドライバが公開されているため、比較的すぐに試してみることができます。
現時点で対応している GPU は下記の通り。(分かる範囲のみ)

GeForce Kepler/Maxwell       Windows, Linux, Android
RADEON GCN                   Windows
Intel HD Graphics Gen8~     Linux

GCN すべてに対応しているかどうかは未確認です。
Mobile GPU の場合 Vulkan に対応できるのは、予想通り OpenGL ES 3.1 以降になるようです。

Intel HD Graphics と低レベル API の対応

Metal         Intel HD Graphics Gen 7~       Ivy Bridge 以降
Direct3D 12   Intel HD Graphics Gen 7.5~     Haswell 以降
Vulkan        Intel HD Graphics Gen 8~       Broadwell 以降

Vulkan が動いているかどうかは vulkaninfo コマンドで調べることができます。
GeForce の場合 driver と同時にコマンドも install されました。

下記は GeForce GTX 960 の抜粋です。

===========
VULKAN INFO
===========

Vulkan API Version: 1.0.3


~
VkPhysicalDeviceFeatures:
=========================
        robustBufferAccess                      = 1
        fullDrawIndexUint32                     = 1
        imageCubeArray                          = 1
        independentBlend                        = 1
        geometryShader                          = 1
        tessellationShader                      = 1
        sampleRateShading                       = 1
        dualSrcBlend                            = 1
        logicOp                                 = 1
        multiDrawIndirect                       = 1
        drawIndirectFirstInstance               = 1
        depthClamp                              = 1
        depthBiasClamp                          = 1
        fillModeNonSolid                        = 1
        depthBounds                             = 1
        wideLines                               = 1
        largePoints                             = 1
        textureCompressionETC2                  = 0
        textureCompressionASTC_LDR              = 0
        textureCompressionBC                    = 1
        occlusionQueryPrecise                   = 1
        pipelineStatisticsQuery                 = 1
        vertexSideEffects                       = 1
        tessellationSideEffects                 = 1
        geometrySideEffects                     = 1
        shaderImageGatherExtended               = 1
        shaderStorageImageExtendedFormats       = 1
        shaderStorageImageMultisample           = 1
        shaderStorageImageReadWithoutFormat     = 1
        shaderStorageImageWriteWithoutFormat    = 1
        shaderUniformBufferArrayDynamicIndexing = 1
        shaderSampledImageArrayDynamicIndexing  = 1
        shaderStorageBufferArrayDynamicIndexing = 1
        shaderStorageImageArrayDynamicIndexing  = 1
        shaderClipDistance                      = 1
        shaderCullDistance                      = 1
        shaderFloat64                           = 1
        shaderInt64                             = 1
        shaderInt16                             = 0
        shaderResourceResidency                 = 1
        shaderResourceMinLod                    = 1
        alphaToOne                              = 1
        sparseBinding                           = 1
        sparseResidencyBuffer                   = 1
        sparseResidencyImage2D                  = 1
        sparseResidencyImage3D                  = 1
        sparseResidency2Samples                 = 1
        sparseResidency4Samples                 = 1
        sparseResidency8Samples                 = 1
        sparseResidency16Samples                = 1
        sparseResidencyAliased                  = 1
        variableMultisampleRate                 = 1
        iheritedQueries                         = 1
~

ヘッダファイルやツール類は Open Source として GitHub からダウンロードする形になるようです。
Vulkan-LoaderAndValidationLayers に含まれています。

GitHub: The Khronos Group

ビルドもできます。build には cmake と Python3 が必要。例えば glslang の場合下記の通り。

cd glslang
mkdir build
cd build
cmake .. -G "Visual Studio 14 Win64"
start glslang.sln

関連エントリ
AEP を取り込んだ OpenGL ES 3.2 は機能面で Desktop に並ぶ, Android は Vulkan へ
3D 低レベル API の現状 Direct3D 12/Metal
CPU 負荷が低い 新しい 3D API

関連ページ
3D Low overhead API (Low Level API) Metal/D3D12/Vulkan

低レベル Graphics API Vulkan 登場」への2件のフィードバック

  1. かみやん

    ついに!変化の始まりですね!
    普及を待たないといけない僕が使うのはまだまだ先になりそうだけど。

  2. oga 投稿作成者

    最後発だけあって全部入りになっているようです。
    ベータドライバの公開など思ったよりも動きが早いですね。

コメントは停止中です。